Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Состоится бесплатный мастер-класс по программированию под ZX Spectrum c использованием эмулятора

Ненормальное программирование *Assembler *Демосцена
Добро пожаловать на серию бесплатных семинаров от разработчиков, участвующих в фестивале ChaosConstructions.

7 декабря, сообщества Embedded, B4CKSP4CE и сообщество ChaosConstructions Demoparty откроют серию семинаров, посвященных демосцене, полностью некоммерческому и соревновательному спортивному виду искусства, позволяющему делать яркие и красивые спецэффекты, открывая новые возможности старой платформы ZX Spectrum.

Всего голосов 19: ↑19 и ↓0 +19
Просмотры 3.8K
Комментарии 13

Полиглоты

Ненормальное программирование *
Есть люди-полиглоты, которые отличаются тем, что знают несколько языков. А есть программы-полиглоты, исходный код которых интерпретируется или компилируется независимо от языка.

Вся прелесть полиглота в том, что один и тот же исходный код можно сохранить как сишный файл, скомпилировать его, и порадоваться результату работы. А можно этот же файл запустить как bash-скрипт и увидеть точно такой же результат работы!
Читать дальше →
Всего голосов 149: ↑136 и ↓13 +123
Просмотры 3.4K
Комментарии 66

Полиглоты в продакшн Питона

Python *
Сразу, в порядке завлекалочки. Нашей целью будет научиться писать программы-полиглоты, способные интерпретироваться сразу на нескольких языках программирования (одним, «базовым» из которых является Python). При этом, в случае интерпретации на одном из них, программа будет генерировать другую программу, функционально схожую (или даже эквивалентную) той, которая выполняется в случае интерпретации на другом языке.

И самое интересное: подходы, используемые при написании этой программы, будут интересны не столько академически, сколько практически — при разработке программы с использованием этих подходов разработка будет проще и удобнее (хоть поначалу и чуточку непривычно), а программа будет эффективнее, чем без них.

Впрочем, это звучит страшнее, чем является.

Поехали?
Всего голосов 68: ↑60 и ↓8 +52
Просмотры 5.8K
Комментарии 20

Ненормальное программирование. Может так писал Бог?

Чулан

Допустим надо написать Мир. Запрограммировать.
Как бы тогда назывался среда программирования?

Так… думаем…
Что у нас в мире главное?
Правильно — информация!
Information — длинно. Во — inform. 6 — букв :(
Добавляем седьмую, получаем — inform7.

Гуглим —

есть!



www.inform7.com


image



Все как всегда бесплатно и есть под все платформы
I7_5Z71_OSX.dmg
Mac OS X version

I7_5Z71_Windows.exe
Windows version

I7_5Z71_Linux_all.tar.gz
Linux version

Устанавливаем.
Ну что напишем?
Hello word или Notepad?
Голосуем…



Понял! C Hello word все просто. Значит Notepad.
Блокнот это тип вещи. Блокнот имеет упорядоченный текст, который называется заметка. Обычно заметка в блокноте это "".<br>


Так… не проходит. Ах да, все языки программирования на английском! Пишем:…

Читать дальше →
Всего голосов 54: ↑36 и ↓18 +18
Просмотры 1K
Комментарии 29

Ненормальное программирование. Разработка IF игр

Ненормальное программирование *

Разработка игр



Кто не мечтал попробывать разработать собственную игру. Мы будем создавать игру в стиле interactive fiction Сюжет я взял на сайте одной из систем программирования RTADS. Система локализована на русский язык и содержит полный набор средств и руководств для программирования. Но… Программировать мы будем в другой системе Inform7 Она мне больше нравится, т.к. я люблю английский. Итак сюжет.

Сюжет


… В качестве примера мы разработаем игру, действие которой будет происходить в небольшом аэропорту. Наш аэропорт будет иметь терминал, центральный зал, а также выходы к самолетам.
Продолжить программировать
Всего голосов 69: ↑61 и ↓8 +53
Просмотры 19K
Комментарии 30

Свой сапер на своих батниках

Ненормальное программирование *
image

Однажды захотелось мне написать Minesweeper… на батниках. И я его написал.

Встречайте!!! Minesweeper for cmd.exe

Итак, особенности данного продукта:
  • Оригинальное лого
  • Двухцветный текстовой графический интерфейс (фон — чёрный, текст — серый)
  • Возможность воспроизведения программы практически на любом компьютере
В общем, это настоящий сапер (а не те жалкие подобия — KMines и сапер for Windows) для настоящих мужчин. И далее вы сможете прочитать как сделать свой крутой сапер.
Читать дальше →
Всего голосов 241: ↑227 и ↓14 +213
Просмотры 11K
Комментарии 118

Свои судоку на своих батниках

Ненормальное программирование *
image
С предыдущего хабратопика я понял, что хабражителям очень понравился сапер на своих батниках и поэтому рискнул написать еще одну игру, а именно — Судоку. И опять же, на своих батниках.
Как и Minesweeper, Sudoku for cmd.exe имеет ряд следующих преимуществ:
  • Оригинальное лого
  • Двухцветный текстовой графический интерфейс (фон — чёрный, текст — серый)
  • Возможность воспроизведения программы практически на любом компьютере
В общем, это Судоку для настоящих мужчин. И скачать эту замечательную игру вы можете прямо сейчас, воспользовавшись этими ссылками: Plain Text | Google Docs
Читать дальше →
Всего голосов 103: ↑83 и ↓20 +63
Просмотры 4.5K
Комментарии 51

Все знают что "++i + ++i" — плохо, но что-же за ширмой?

Ненормальное программирование *
Баг, выглядывающий из-за ширмы на вас о_ОНесомненно, все программисты знают что использование выражений, подобных тому что приведено в заглавии поста, не то что нежелательно, а строго противопоказано. Такие конструкции, поведение компилятора в которых не определено, могут принести множество трудноуловимых ошибок и нежелательных последствий. Но уверен, многим начинающим программистам хотелось бы по глубже понять эту проблему и, заглянув за ширму компилятора, узнать что же именно происходит в таких случаях. Изучению одного из примеров подобного кода я и посвящаю этот пост. Добро пожаловать под кат :)
Читать дальше →
Всего голосов 118: ↑100 и ↓18 +82
Просмотры 20K
Комментарии 85

TBDB, или пишем базу данных на BASH

Ненормальное программирование *
Изначально была идея написать скрипт, который помогал бы просто и универсально работать с некими группами данных в домашних скриптах-написал-и-забыл.
И вот перед вами милая и прекрасная страшная и ужасная, но простая и удобная база данных для хранения небольшого количества данных в несложных домашних скриптах.

TBDB, она же — Terrible Bash Data Base.

Движок базы состоит из одного баш скрипта.
Читать дальше →
Всего голосов 74: ↑66 и ↓8 +58
Просмотры 3.5K
Комментарии 43

История сумасшествия или свой морской бой на BrainFuck`e

Ненормальное программирование *

Доброго времени суток, хабралюди. Перед Вами самадиогностика безнадёжного BrainFuck больного.
Те, кто всё понял из названия и не хотят читать весь пост целиком могут скачать игру и BFDev и сразу перейти под кат в конец поста к разделу «Как играть». В посте рассказано как я заболел BrainFuck`ом, а также описан процесс создания игры «Морской бой» на этом замечательном языке.

Читать дальше →
Всего голосов 196: ↑179 и ↓17 +162
Просмотры 12K
Комментарии 66

Нормальный алгоритм Маркова для деления чисел

Ненормальное программирование *
Из песочницы
Добрый день. Хотелось бы поделиться с Вами очень интересным вариантом ненормального прграммирования — составлением нормальных алгоритмов Маркова. Этот вариант программирования может служить великолепным умственным отдыхом от привычных языков и сред программирования.
Студенты, которых я имею возможность учить, кричат криком, что это сложно, но только до первого собственными руками сделанного рабочего алгоритма, потом это перетекает в очень интересные алгоритмические задачки.
Собственно, к теме этого поста: наша задача написать нормальный алгоритм Маркова для деления двух целых чисел с точностью 4 знака после запятой(для задания чисел пользуемся унарной системой исчисления). Например, вход: |/||||, выход: 0.25.
При этом у нас есть только одна операция — замена одной подстроки в исходной строке на другую. Кому интересно что это такое и как это работает — добро пожаловать под кат.
Читать дальше →
Всего голосов 62: ↑53 и ↓9 +44
Просмотры 24K
Комментарии 35

Как я наказал Firaxis или история о том, как перебрать бинарный движок через глушитель

Ненормальное программирование *
Из песочницы
image

Речь пойдёт о далёком 2005 году, когда только-только вышла Civilization4 от Sid Meier. К тому времени я плотно висел в Civilization3, прошёл её раз дцать на самых разных картах, и тут вышла долгожданная четвёрка. Это были годы P3-512Mb для mid-end и P4-1Gb в hi-end. Только топовые конфиги в те годы имели два гига памяти на борту.

Civilization 4 вышла с графикой уровня года 2002-2003го, что в принципе нормально для мэинстрима тех времён, особенно учитывая что это пошаговая стратегия, а не шутер. Но жрала с течением игры до 900Mb оперативки, что приводило к жуткому свопу, особенно на больших картах, особенно к концу игры, особенно на ноутбуках. Народ недоумевал, я тоже. Учитывая, что в те же годы вышел Far Cry с куда более красивой графикой, и который вполне игрался на максимуме даже с 512Mb на борту, такое поведение Civilization 4 выглядело крайне странным. Захотелось разобраться и покарать…
Читать дальше →
Всего голосов 551: ↑547 и ↓4 +543
Просмотры 105K
Комментарии 177

Программирование на машине Поста

Ненормальное программирование *
Из песочницы
Недавно на хабре появилось сразу два материала, посвященных языкам из «большой четверки тьюринговых трясин»: про алгоритм Маркова и Brainfuck. Думаю, для полноты картины будет интересно сравнить эти эзотерические системы с еще одним важным алгоритмическим примитивом — машиной Поста, которой я как раз занимаюсь.

Машина Поста (wiki; для простоты оттуда же взят вариант синтаксиса) похожа на всем известную машину Тьюринга, однако обладает интересными особенностями. Она содержит лишь 6 команд, кроме того, в ячейки-биты памяти могут записываться лишь 2 символа (двоичное кодирование информации). «Естественно», никакой дополнительной памяти, не зря же эзотерикой зовется!

Таким образом, при программировании на машине Поста помимо необходимости совладать с оккамовским синтаксисом надо думать о том, как записать на ленте все промежуточные результаты, не потеряв по пути обратную тропинку к остаткам входных данных. Почему «остаткам»? Зачастую ввиду отсутствия дополнительной памяти приходится обрабатывать входные данные итеративно (а иногда и рекурсивно). Надеюсь, вышеизложенное убедительно доказывает, что написание привычных алгоритмов на машине Поста — неплохая разминка для мозгов и весьма увлекательное занятие.
Читать дальше →
Всего голосов 29: ↑25 и ↓4 +21
Просмотры 33K
Комментарии 18

Шаблонная магия, метафункция IsValidExpression

C++ *
Доброго времени суток, уважаемое Хабрасообщество.

Сегодня я хочу поделиться одним интересным приемом, который позволяет определять компилируемость любого конкретного выражения.

Пример:
/* Определяем метафункцию HasF, которая позволяет определить наличие функции f() у любого класса. */
DECLARE_IS_VALID_EXPRESSION(
    HasF,
    ( ( U * ) NULL )->f() /* Это выражение компилируемо только если присутствует U::f() */ );
 
struct Foo{ void f(); };    
struct Bar{};
 
BOOST_STATIC_ASSERT( HasF< A >::value );  /* Тут константа HasF< A >::value будет true */
BOOST_STATIC_ASSERT( !HasF< B >::value ); /* Тут константа HasF< A >::value будет false */

Как Вы уже, наверное, догадались мы будем думать как написать макрос DECLARE_IS_VALID_EXPRESSION.
Читать дальше →
Всего голосов 32: ↑29 и ↓3 +26
Просмотры 2.1K
Комментарии 14

Закономерные случайности

Ненормальное программирование *
Увлекаясь компьютерной графикой, заметил, что комбинация правил и случайности может давать неожиданно красивые результаты.

С одной стороны, глядя на такие изображения очевидно их компьютерное происхождение, с другой — фактор случайности делает их неповторимыми и непредсказуемыми.

Еще подметил, что многократное повторение даже неказистых форм создает гармоничные рисунки, если видеть их целиком.





Красиво, но траффик...
Всего голосов 152: ↑145 и ↓7 +138
Просмотры 3.9K
Комментарии 84

Взлом программы однокомандного процессора

Ненормальное программирование *
Разного рода "ненормальное" программирование весьма популярно среди любителей поломать голову над разными задачками. Порой программу для очередной "ненормальной" среды программирования уже нереально написать вручную, а надо писать генератор, создающий код.

В задаче, что предлагаю я, программы все еще можно писать вручную на некотором высокоуровневом макроассемблере.

Итак, имеется модель некоторого виртуального процессора, выполняющего только одну логическую операцию — Стрелку Пирса.
Читать дальше →
Всего голосов 49: ↑43 и ↓6 +37
Просмотры 1.7K
Комментарии 13

Теория чисел in TeX-way

LaTeX *Математика *
Теория чисел и TeXДемонстрируем некоторые особенности написания TeX-макросов, встраивая в TeX калькулятор теоретико-числовых функций.

Постановка задачи


Время от времени мне приходится набирать очередной текст, сопровождаемый примерами вычисления теоретико-числовых функций: функция Эйлера φ, функция делителей τ, функция Кармайкла λ. Раньше это делалось так: запускаем любимый калькулятор (мой выбор — PARI/GP), в нем все считаем и копируем выкладки в ТеХ. Изменились исходные данные — снова в калькулятор и обратно. Много возни, много шансов забыть заменить какой-то промежуточный результат. Да и просто мышкой махать надоедает. Хочется автоматизировать этот процесс хотя бы для самых распространенных функций, чтобы можно было написать
$\phi(1001)=\Phi(1001)$
и получить на печати
\phi(1001)=720

Читать дальше →
Всего голосов 66: ↑65 и ↓1 +64
Просмотры 4.6K
Комментарии 16

Передача файла сигналами

Ненормальное программирование *
Добрый день, хабражители. Наверняка все знают что такое сигналы в Linux и для чего они нужны. Но сегодня, я хотел бы рассказать о, как мне кажется, нетрадиционном их применении.

Задача очень надуманная и направленна на тренировку своих навыков работы с сигналами и, немножко, побитовыми операциями. В общем, задача:
Программа должна порождать процесс, который посредством только сигналов передавал родителю файл, указанный в качестве аргумента командной строки. Родитель выводит полученный файл в stdout.
Читать дальше →
Всего голосов 49: ↑46 и ↓3 +43
Просмотры 12K
Комментарии 34

Учимся верстать под… QIP?

Ненормальное программирование *
Из песочницы
Вечер добрый, хабралюди.

Сегодня, после долгих недель мучений, на меня снизошло озарение. Раньше постоянно замечал, что скопированный в сообщение аськи код очень часто терял часть символов и видоизменял текст. Озарением послужило то, что начиная с Infium 9044, этот мессенджер поддерживает BB-codes.

Гугление поддерживаемых кодов привело к тому, что была найдена страница с перечнем всех поддерживаемых кодов (ссылка внизу топика), среди которых было [table](вспоминаете былые времена верстки на таблицах?). Ниже краткое описание того, как сверстать красивое рекламное (и не только) сообщение для отправки через QIP.

Читать дальше →
Всего голосов 10: ↑7 и ↓3 +4
Просмотры 1K
Комментарии 16