Как стать автором
Обновить
90.9

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

Извращения с кодом

Сначала показывать
Порог рейтинга
Уровень сложности

Звучащий код — пишем музыку на языке ByteBeat

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 492
Блог компании Undefined DIY fest Ненормальное программирование *Brainfuck *Демосцена
Туториал

Дорогой Хабр, через два месяца мне предстоит организовать и провести фестиваль компьютерного искусства, поэтому я уже сейчас собираю информацию про необычные проявления демоцены, на которые обычно никто не обращает внимания. Язык программирования для генеративной музыки ByteBeat — это как раз то, что я ищу.

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

Послушать пример из заглавной картинки: [sarpnt][greggman]

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Новости

Задачи второго этапа олимпиады «IT-Планеты» по PostgreSQL

Время на прочтение 16 мин
Количество просмотров 1.4K
Блог компании Postgres Professional Ненормальное программирование *PostgreSQL *SQL *

В этом году наша компания впервые провела конкурс по базам данных в рамках международной олимпиады IT-Планета по информационным технологиям. Раньше на олимпиаде использовалась СУБД Oracle; наш коллега Евгений Бредня в свое время делился таким опытом.

Олимпиада проходила в три этапа. Первым шел заочный теоретический тест, который преодолели примерно двести человек из двух тысяч зарегистрировавшихся.

На втором этапе участникам было предложено подумать над пятью задачами, каждую из которых следовало решить одним SQL-запросом. Этот этап также проводился заочно: на раздумья было дано примерно три недели. Условия всех задач были опубликованы одновременно, но у каждой был свой крайний срок; поэтому первыми шли задачи полегче, чтобы на более сложные осталось больше времени. Задачи проверялись на корректность (автоматическими тестами) и на качество кода (вручную). По результатам мы отобрали двадцать человек для последнего, очного этапа.

Третий этап состоялся 27 мая в Сочи. К сожалению, из двадцати приглашенных приехать смогли только четырнадцать; между ними и состоялось соревнование. Задачи этого этапа также предполагали решение одним запросом, но сами задания были объединены общей темой, навеянной игрой Го, и строились так, что решение одной задачи помогало подступиться к следующей.

Я занимался придумыванием задач для второго и третьего этапов. Хочу поблагодарить участников олимпиады, которым пришлось их решать, организаторов, собравших нас вместе, и своих коллег: Дарью Рисухину, взвалившую на себя все оргвопросы, Евгения Моргунова, предоставившего задания для первого этапа, а также всех помогавших мне с задачами.

Поговорим о втором этапе
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 0

Bot-Games.Fun — игровая платформа для AI

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 1.9K
Ненормальное программирование *Спортивное программирование *Разработка игр *Go *Искусственный интеллект

Почти год назад я рассказывал о платформе HighLoad.Fun, где можно посоревноваться в оптимизации кода, но не упомянул Bot-Games.Fun - платформу, где нужно написать своего AI бота для участия в играх. Основное отличие от других аналогичных платформ - код бота не надо загружать на сервер, его нужно запускать на своём железе, что открывает широчайшие возможности по используемым технологиям и затраченным ресурсам на просчёт следующего хода. А ещё все игры с открытым кодом, можно влиять на правила, улучшать плеер, воспроизводящий игры, можно довольно просто написать свою игру, как это сделать расскажу под катом, а заодно и про архитектуру проекта.

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 3

Зачем в Switch SDK три разных sin?

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 7.8K
Ненормальное программирование *C++ *Игры и игровые консоли

Работая в компании Gaijin несколько лет назад, мне довелось поучаствовать в портировании пары игр компании на консоль Nintendo Switch, тогда вовсю завоевывающую новые рынки. Для меня это стало первым крупным проектом на этой платформе. А с учетом, что ни команда, ни разработчик движка с платформой, системой сборки и вообще экосистемой Нинтендо знакомы не были, то все грабли приходилось искать и бережно на них наступать. Чтобы опробовать возможности новой платформы, параллельно с портированием игры, был написан внутренний middleware (связка dagor engine + nxsdk + jam) и код обрастал всевозможными тестами, build matrix, бенчмарками, прогоном стабильности и другими внутренними проверками. Надо отметить что на момент 2018 года, в самом switch sdk не было реализовано часть posix функций вроде poll и send/receive, и большая часть функций для работы с файлами, posix прослойку нужно было писать самим. Дошли тогда руки и до написания различных бенчмарков для функций стандартной библиотеки, и были замечены некоторые аномалии в поведении части тригонометрических функций в различных режимах сборки. Для справки, sdk использует урезанный вариант musl libc (https://www.musl-libc.org/), все статически линкуется в один большой бинарник clang'ом от Нинтендо 9 версии (2018 год), который потом запускается на консоли. Доступа к исходникам самой libc в исполнении Нинтендо у нас не было, но всегда можно посмотреть дизасм и боле менее представить что происходит.

Раскопки на месте
Всего голосов 56: ↑56 и ↓0 +56
Комментарии 9

Истории

Альбом биперной музыки Ear Shaver и история его создания

Уровень сложности Средний
Время на прочтение 15 мин
Количество просмотров 2.6K
Ненормальное программирование *Assembler *Демосцена Старое железо Звук

Этой весной выпустил свой новый альбом биперной музыки для ZX Spectrum 48K — Ear Shaver. Послушать без дополнительных прелюдий можно в прикреплённом видео или на разнообразных музыкальных площадках.

Читать далее
Всего голосов 37: ↑37 и ↓0 +37
Комментарии 35

Ломаем хаскелем Brainfuck

Уровень сложности Сложный
Время на прочтение 28 мин
Количество просмотров 8.6K
Ненормальное программирование *Haskell *Компиляторы *Brainfuck *

Немного о bfc


Brainfuck — очень глупый язык. Там есть лента из 30к ячеек, по байту каждая. Команды bfc это:


  • Передвижение по ленте влево и вправо (символы < и >)
  • Увеличение и уменьшение значения в ячейке (символы + и -)
  • Ввод и вывод текущей ячейки (символы . и ,)
  • И цикл while, который продолжается пока значение в текущей ячейке не ноль. [ и ] это начало и конец цикла соответственно

Программировать на bfc сложно. Но, как известно, любую проблему можно решить добавлением слоя абстракции (кроме проблемы большого количества абстракций).

Читать дальше →
Всего голосов 82: ↑82 и ↓0 +82
Комментарии 17

Демо BACK TO THE PET — дневник разработки

Уровень сложности Средний
Время на прочтение 54 мин
Количество просмотров 1.3K
Ненормальное программирование *Assembler *Демосцена Старое железо

В 2022 году я написал и выставил на CAFe 2022 полноформатное демо для редкой в наших краях платформы, одного из древнейших персональных компьютеров — Commodore PET 4032. Монохромный текстовый режим 40x25 без возможности загрузки шрифта, никаких аппаратных скроллов, однобитный бипер на выходе последовательного порта, 32 килобайта ОЗУ, в которые помещается все 4 минуты демо без дозагрузок.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 5

Физическая программная археология

Уровень сложности Простой
Время на прочтение 13 мин
Количество просмотров 8K
Ненормальное программирование *Программирование *Fortran *Научно-популярное Физика
Кейс

Спонтанный эксперимент по воплощению в жизнь заклинания из древнего манускрипта. Реализация кода на АЛГОЛ-60, напечатанного в статье 1976 года, и перезапуск его на FORTRAN-90.

Читать далее
Всего голосов 79: ↑79 и ↓0 +79
Комментарии 35

Area 5150 — демо для PC XT/CGA и музыка для PC Speaker

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 2.3K
Ненормальное программирование *Assembler *Демосцена Старое железо

Демогруппы CRTC и Hornet, выпустившие нашумевшее в 2015 году демо 8088 MPH (публикация на Хабре), меняющее представление о возможностях PC XT и CGA, собрались с силами и выпустили своё свежайшее творение на ту же тему - Area 5150. Оно выставлялось на демопати Evoke 2022 и заняло там первое место в категории демо для альтернативных платформ (куда свалено в кучу всё, что не современный PC), обойдя даже весьма креативную работу 420 Years Of Teletext.

Читать далее
Всего голосов 41: ↑41 и ↓0 +41
Комментарии 4

Программирование для Palm OS: ставим CodeWarrior и оживляем ТСД

Уровень сложности Средний
Время на прочтение 30 мин
Количество просмотров 4.4K
Блог компании Timeweb Cloud Ненормальное программирование *C *Гаджеты Старое железо
Туториал
Приветствую всех!

Немало ушедших в историю платформ успели мы повидать. И столько же ещё будет у нас впереди. Но сейчас поговорим не о чём-то реликтовом и экзотическом, а о КПК, что наверняка успели застать многие пользователи данного ресурса. Эти девайсы имели массу поклонников, не удивлюсь, если кто-то до сих пор пользуется таким. Тем интереснее будет поговорить о разработке софта для данной ОС.



Итак, в сегодняшней статье рассмотрим разработку софта для КПК под управлением легендарной Palm OS. Узнаем, где взять весь нужный софт, как собрать свою программу. Поговорим о некоторых аспектах программирования для этих железок. Традиционно будет много интересного.
Читать дальше →
Всего голосов 54: ↑54 и ↓0 +54
Комментарии 26

Linux на esp32s3

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 19K
Ненормальное программирование *Системное программирование *Программирование микроконтроллеров *

Вопрос о том, можно ли загрузить линукс на микроконтроллерах Espressif я
впервые услышал в 2015, в период бума esp8266. Тогда мой ответ на него
был: "нет, не это ядро и не на этом железе". Но прошло 8 лет и ответ
изменился на "да, и у меня есть рабочий пример". Дальше рассказ о том,
как это произошло.

Читать далее
Всего голосов 150: ↑149 и ↓1 +148
Комментарии 18

Как писать ненормальный код и зачем это может быть нужно

Время на прочтение 5 мин
Количество просмотров 12K
Ненормальное программирование *Тестирование IT-систем *Тестирование веб-сервисов *Clojure *
Роадмэп

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

Читать далее
Всего голосов 27: ↑24 и ↓3 +21
Комментарии 35

Из лягушек в автоматизаторы — мое решение

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 4.4K
Ненормальное программирование *Open source *JavaScript *Node.JS *
Из песочницы

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

Проект находится в открытом доступе и распространяется по лицензии MIT. К сожалению, он так и не дорос до широкой публики, по причине того, что у меня не остается времени на его разработку.

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

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

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 9

SQL HowTo: замена в строке по набору

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 2.3K
Блог компании Тензор Ненормальное программирование *PostgreSQL *Программирование *SQL *
Туториал

Решим сегодня простую, казалось бы, задачу: как на PostgreSQL можно в строке провести замены по набору пар строк. То есть в исходной строке 'abcdaaabbbcccdcba' заменить, например, 'а' -> 'x', 'bb' -> 'y', 'ccc' -> 'z' и получить 'xbcdxxxybzdcbx'.

Фактически, мы попробуем создать аналог str_replace или strtr.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 4

Визуальное программирование vs DSL

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 2.7K
Блог компании lsFusion Ненормальное программирование *Программирование *Визуальное программирование *

В последнее время набирают популярность low-code и no-code платформы. В них для разработки приложений предлагается использовать визуальное программирование. При таком подходе, разработчики, в качестве которых выступают обычные бизнес-пользователи, вместо написания программного кода создают приложение при помощи мыши в графическом интерфейсе. Также визуальное программирование в некотором виде используется, например, в Конфигураторе 1С.

Однако, возникает вопрос. Какие преимущества дает визуальное программирование по сравнению с Domain Specific Language ? Безусловно это зависит области применения. С одной стороны, в классических языках визуальное программирование практически не используется. В то же время при разработке графического интерфейса такой подход конечно же имеет много преимуществ. Однако, при создании интерфейсов, например, с помощью популярной библиотеки React все-таки больше используется плоский код.

Читать далее
Всего голосов 22: ↑19 и ↓3 +16
Комментарии 27

Tree Oriented Programming

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 3K
Ненормальное программирование *Программирование *Совершенный код *ООП *

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

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

В сущности, композиция, это составление объекта из других, каждый из которых также состоит из других объектов. И, если задумаетесь, то обнаружите, что удивительным образом по-другому то и быть не может. Злые языки поговаривают, что бывают всякие очарованные кварки и иже с ними бозоны с лептонами, которые уже не делятся. Но это неточно.

Что получится, если попытаться описать составной объект? Как ни старайся, ничего другого, кроме древовидной структуры у вас не получится. Отсюда первый принцип:

Читать далее
Всего голосов 25: ↑10 и ↓15 -5
Комментарии 69

Генерируем пифагоровы тройки на RxJS

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 1.6K
Ненормальное программирование *JavaScript *TypeScript *

В пятницу можно смешивать всё и со всем!

Мы смешаем пифагоровы тройки и библиотеку RxJS.

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

Такие числа известны людям с очень древних времён. Например, их использовали ещё в Египте, откуда до нас дошла самая известная пифагорова тройка — это числа 3, 4 и 5.

RxJS — это библиотека для реактивного программирования. Она поможет сделать генерацию троек красивой и простой.

Сразу замечу, что статья претендует только на развлекающую роль

Продолжить генерацию текста...
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 1

Как я намайнил первое* в мире биткоин**-стихотворение

Уровень сложности Простой
Время на прочтение 15 мин
Количество просмотров 8.5K
Ненормальное программирование *JavaScript *Node.JS *Криптовалюты

Привет, Хабр. Так получилось, что по специальности я программист, а по призванию — поэт. Не просто рифмую палку с селёдкой, а публикуюсь в литературных журналах, взял парочку небольших премий — в общем, это немного больше, чем хобби.

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

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

Испить мёда поэзии
Всего голосов 119: ↑113 и ↓6 +107
Комментарии 46

Платье с цветами на сервоприводах

Время на прочтение 11 мин
Количество просмотров 2.9K
Блог компании Cloud4Y Ненормальное программирование *Разработка под Arduino *DIY или Сделай сам
Обзор
Перевод

Девушки в ИТ-сфере — не такое уж и редкое явление. Что интересно, даже будучи суровыми технарями, они сохраняют способность создавать какие-то красивые милые вещи. Так, например, Рехана Аль-Солтане (Rehana Al-Soltane) сшила элегантное вечернее платье с цветами, которые способны распускаться и закрываться по её команде. Да и корона у неё необычная. Интересно? Тогда давайте посмотрим, как всё это реализовано.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 6

Что умеет Try Catch в ABAP?

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 1.2K
Ненормальное программирование *Программирование *ERP-системы *
Из песочницы

Привет, сейчас мы коснёмся лучшего языка программирования ABAP, ещё бы. А точнее возможностей TRY...CATCH в разрезе данного языка. Вроде что-то «пытается» , что-то «ловит», но не всё так очевидно...

Читать далее
Рейтинг 0
Комментарии 9

Вклад авторов