Некоторое время назад, примерно с 2008 года, у меня был хобби-проект по воссозданию довольно знаменитого конце ХХ века ситибилдера Caesar III ©, в процессе работы над игрой был написан ряд статей по механике игры и её внутреннему устройству (например эта).
Рубрика «ненормальное программирование» - 50
Caesar3 все таки open
2017-11-09 в 11:17, admin, рубрики: C, caesar3, open source, археология кода, Дизайн игр, ненормальное программирование, разработка игрРазработка высокоскоростного ведического умножителя с использованием техник ведической математики
2017-11-07 в 2:15, admin, рубрики: fpga, веды, математика, ненормальное программирование
Реферат: Эта статья посвящена разработке высокоскоростного ведического умножителя, использующего технику древнееиндийской ведической математики, модифицированной для улучшения быстродействия.
Ведическая математика — это древняя система математики с уникальной системой вычислений, основанной на 16-и сутрах. В статье показана эффективность Урдхва Триагбхайам (Urdhva Triyagbhyam) — ведического метода умножения, и выделяется разница с обычным умножением. Метод основан на параллельной генерации независимых произведений, устранении шагов с нулевым результатом и масштабировании к старшим битам с использованием алгоритма Карацубы (Karatsuba), совместимого с различными типами данных. Сутра Урдхва Триагбхайам является самым эффективным алгоритмом, дающим минимальную задержку для умножения всех типов чисел, и больших, и малых. Далее приводится код алгоритма на Verilog HDL для умножения 32х32 бита и реализация на FPGA с помощью Xilinx Synthesis Tool на Spartan 3E с выводом результата на LCD. Синтез результата показывает, что время вычислений для произведения 32х32 бита равно 31.526 ns.
Ключевые слова: ведическая математика, сутра урдхва триагбхайам, алгоритм Карацубы-Офмана
Читать полностью »
Бестиарий С++. Справочник по загадочным персонажам
2017-11-03 в 13:46, admin, рубрики: c++, worst practices, Блог компании Mail.Ru Group, Компиляторы, ненормальное программирование, никто не читает теги, Программирование
В C++ в изобилии встречаются подводные камни, ловушки, оговорки и западни. В подземельях С++ скрываются многочисленные подозрительные персонажи. Хэллоуин — правильное время для встречи с некоторыми представителями этой многочисленной своры чудовищ.
Perfect shuffle
2017-11-02 в 4:55, admin, рубрики: perfect shuffle, Алгоритмы, математика, ненормальное программирование, синергетика, фракталы, хаос, энтропия
Меня всегда привлекали элементарные алгоритмы, с помощью которых можно создавать сложные паттерны. Есть в таких алгоритмах что-то фундаментальное. Один из таких алгоритмов — Perfect Shuffle. Посмотрим на его необычные свойства, а также попробуем нарисовать несколько впечатляющих фракталов с помощью этого алгоритма.
Дальше много картинок, gif-анимации и немного музыки.
Читать полностью »
Не путайте разработку ПО и программирование
2017-11-01 в 9:25, admin, рубрики: Alconost, Блог компании Alconost, инженер, Карьера в IT-индустрии, качество кода, ненормальное программирование, Программирование, разработка по, разработка программного обеспечения, разработчик, Совершенный код, создание программКаждый разработчик ПО умеет программировать, но не каждый программист может разрабатывать ПО
Большинство может легко научиться готовить, но когда нужно накормить большое число людей, мы нанимаем повара.
Возможно, кому-то больше нравится говорить не «разработчик», а инженер-программист, ведь инженер — это звучит гордо! Или нет? К счастью, эта статья не о терминах. Если мой термин вам не нравится — подставьте свой: «автор ПО», «мастер ПО»… и даже «творец приложений»!
Говоря «разработчик ПО», я имею в виду человека, для которого написание качественного ПО — профессия. Человека, который использует в своей работе научные подходы и статистику и считает свое занятие чем-то большим, чем просто зарабатывание денег.
Чтобы стать разработчиком, уметь программировать недостаточно.
Научить программировать можно любого — это легко. Писать простые программы, которые работают у конкретных людей на конкретных машинах, может почти кто угодно, но никто не гарантирует, что те же программы будут работать в других условиях.
Мне нравится такая аналогия: каждый может ради собственного развлечения петь в ду́ше, но вы же не ставите треки с записями этого пения на вечеринке — вы обращаетесь к произведениям профессиональных музыкантов.
Хотите еще аналогий? Пожалуйста:
- В школе нас обучили математике и письму, но это не сделало нас математиками и писателями.
- Большинство может легко научиться готовить, но когда нужно накормить большое число людей, мы нанимаем повара.
- Никто не зовет соседа — мастера на все руки построить дом с нуля.
Главная задача этого текста — донести, что создание простых программ серьезно отличается от разработки ПО.
Переведено в AlconostЧитать полностью »
Реализация «Тетриса» в игре «Жизнь»
2017-10-31 в 10:50, admin, рубрики: Conway's game of Life, Алгоритмы, игра жизнь, клеточные автоматы, ненормальное программирование, разработка игрТо, что начиналось как приключение, закончилось одиссеей.
Задача по созданию тетрис-процессора размером 2 940 928 x 10 295 296
Этот проект стал кульминацией труда множества пользователей в течение последних полутора лет. Хотя состав команды со временем менялся, в написании этой статьи принимали участие следующие авторы:
- PhiNotPi
- El'endia Starman
- K Zhang
- Muddyfish
- Kritixi Lithos
- Mego
- Quartata
Также мы хотим поблагодарить 7H3_H4CK3R, Conor O'Brien и многих других пользователей, вложивших свои труд в решение этой задачи.
Из-за беспрецедентного масштаба этой задачи, статья разделена на несколько частей, написанных членами команды. Каждый участник писал о своей отдельной подтеме, приблизительно соответствующей тем областям проекта, в которых был задействован.
Стоит также заглянуть в GitHub нашей организации, в котором мы выложили весь код, написанный для решения задачи. Вопросы можно задавать в нашем чате разработки.
Читать полностью »
Vim спустя 15 лет
2017-10-25 в 12:32, admin, рубрики: tmux, vim, Блог компании Mail.Ru Group, Графические оболочки, ненормальное программирование, никто не читает теги, Совершенный код
Мои предыдущие посты об использовании Vim (1, 2) читатели приняли хорошо, и пришло время обновления. В Vim 8 появилось много очень нужной функциональности, а новые сайты сообществ вроде VimAwesome облегчили поиск и выбор плагинов. В последнее время я много работаю с Vim и организовал рабочий процесс исходя из максимальной эффективности, вот снимок моей текущей работы.
Вкратце:
- FZF и FZF.vim — для поиска файлов.
- ack.vim и
ag
— для поиска файлов. - Vim + tmux — ключ к победе.
- Благодаря асинхронности ALE — это новый Syntastic.
- …И многое другое. Об этом ниже.
Модули вместо микросервисов
2017-10-25 в 0:55, admin, рубрики: api, microservice architecture, Microservices, modules, monolith, Анализ и проектирование систем, Микросервисная архитектура, микросервисы, модули, монолит, ненормальное программирование, ПрограммированиеТермин "модуль" (module) взят из статьи Modules vs. microservices. Так же для описания чего-то среднего между микросервисами и монолитами иногда используют термины "микролит" (microlith) или "моносервис" (monoservice). Но, не смотря на то, что термин "модуль" и так уже нагружен общеизвестным смыслом, на мой взгляд он подходит лучше других вариантов.
Монолит и микросервисы это очень разные подходы, поэтому в любой попытке взять лучшее от обоих критически важен баланс — что взять, а что нет. Иначе получится монстр вроде OSGi.
Я пишу микросервисы с 2009 года, но применять модули вместо микросервисов в реальных проектах пока не пробовал — всё описанное далее это моё предположение о том, каким должен быть вышеупомянутый баланс, и оно нуждается как в теоретической критике так и в проверке практикой.
Создание платформера для виртуальной консоли TIC-80
2017-10-24 в 10:14, admin, рубрики: tic-80, вымышленные консоли, ненормальное программирование, платформеры, разработка игр8 Bit Panda, игра для вымышленной консоли TIC-80.
Это пост о том, как я написал 8-bit panda, простой платформер в классическом стиле для вымышленной консоли TIC-80.
Поиграть в готовую игру можно здесь.
Если вы любитель ретро-игр и вам нравится программирование, то есть вероятность, что вы уже знакомы с последним трендом: вымышленными консолями. Если же нет, то стоит посмотреть на их самых известных представителей: PICO-8 и TIC-80.
Я выбрал TIC-80, потому что она бесплатна и активно разрабатывается, имеет более широкое соотношение сторон экрана (240x136), чем PICO-8 и может выполнять экспорт на множество платформ, в том числе HTML, Android и двоичные файлы для PC.
В этой статье я расскажу, как я написал для TIC-80 простой платформер 8 Bit Panda.
Читать полностью »
Каррирование и частичное применение на C++14
2017-10-22 в 22:36, admin, рубрики: c++, C++14, карринг, каррирование, ненормальное программирование, Программирование, ФП, функциональное программирование, частичное применениеВ этой статье я расскажу об одном из вариантов каррирования и частичного применения функций в любимом мною C++, покажу свою экспериментальную реализацию сего действа и объясню без математики, на пальцах, что такое вообще каррирование и что же под капотом у kari.hpp, с помощью которой мы и будем каррировать функции. Ну и как тут принято: заинтересовавшихся — прошу под кат.