Обновить
144.94

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

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

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

Property в С++ на С++ (без применения препроцессора)

Время на прочтение2 мин
Количество просмотров2.1K
Навеяно статьей Property в C++

За пять минут размышлений, как обойтись без директив препроцессора, появилось нечто…

Может ли это «нечто» быть полезным, осмысливать лень. Есть масса недостатков, нет доступа по имени, зато без макросов )

up: геттер-сеттер — сделаны методами класса
Исходник

Программирование без использования условных конструкций

Время на прочтение3 мин
Количество просмотров35K
Один знакомый заявил мне, что любая программа может быть написана без использования if/else. Я, конечно, тут же возмутился и сформулировал ему (а заодно и себе) простейшую задачу: написать программу, которая будет радоваться, если на вход ей подать, например, слово «печенька», и огорчаться в противном случае; но при этом нельзя использовать никаких конструкций, изменяющих направление программы — то есть она должна быть строго линейной. Решение под катом.
Читать дальше →

Вычисление простых чисел на шаблонах C++

Время на прочтение4 мин
Количество просмотров23K
В этом посте я расскажу как сделать совершенно бесполезную вещь — вычислять простые числа при помощи шаблонов C++.

Алгоритмы проиллюстрированы кодом на Scheme, поэтому осторожно: скобочки!

Читать дальше →

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

Время на прочтение2 мин
Количество просмотров1.6K
Вечер добрый, хабралюди.

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

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

Читать дальше →

Умелец добавил еще один дисплей к Nexus One

Время на прочтение1 мин
Количество просмотров1.5K


Видимо, на все руки мастеру по имени Брайан Джипсон (Brian Jepson) действительно не хватало дополнительного дисплея, и он решил приделать к своему Nexus One еще один небольшой экранчик. Зачем? По словам Брайана, чтобы можно было просматривать поступившие во время игры сообщения. Выглядит все это довольно монстрообразно, но если чего-то очень хочется, обязательно нужно попробовать это сделать, правильно? Под хабракатом немного технических деталей и ссылки на исходники ПО, которое позволяет всей этой груде деталей работать.

Читать дальше →

Нездоровый минимализм: ide

Время на прочтение4 мин
Количество просмотров4.1K
При программировании на common lisp стандартной средой разработки является SLIME. Пожалуй единственным главным недостатком SLIME является emacs, особенно для поклонников vi. Конечно же есть поделки и для vim, но сам vim тоже не верх минимализма.

Под катом минимальный ide для интерпретируемых сред без блэкджека и шлюх.

мне интересно

Интерпретатор Brainfuck на BAT

Время на прочтение6 мин
Количество просмотров4K
Простота языка Brainfuck порождает множество реализаций его исполнения. На хабре уже были интерпретаторы и компиляторы на различных языках программирования, даже на Bash. Мне показалось, что несправедливо обойти еще один командный процессор. А именно командные файлы семейства WindowsNT, они же батники. При написании данного интерпретатора была поставлена цель реализовать всё только на встроенном «языке» консоли.

Читать дальше →

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

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

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

Поиск гамильтонова пути с помощью мембранной системы за полиномиальное время

Время на прочтение9 мин
Количество просмотров6.1K
Составление алгоритмов в рамках той или иной классической алгоритмической модели (машины Тьюринга и Поста, нормальные алгоритмы Маркова, счетчиковые машины Минского и т.д.) смело можно относить к ненормальному программированию в силу исключительной минимальности выразительных средств этих моделей. Не исключением из данного правила является и такая относительно новая алгоритмическая модель, как мембранные системы или P-системы, придуманная румынским ученым Георгием Пауном чуть более десяти лет назад. Целью этого нововведения было исследование вычислительных возможностей клеткоподобных структур (имеются в виду биологические клетки), а вообще вся эта деятельность была инспирирована знаменитым опытом Адлемана по решению задачи о поиске Гамильтонова пути с помощью ДНК-вычислений. Как это ни странно, но данный топик посвящен как раз решению (к сожалению, виртуальному) той же самой задачи, но уже с помощью простейшей мембранной системы. Итак, под катом читатель найдет 1) краткое описание того, что такое мембранные системы; 2) как «программировать» такое «железо»; 3) мембранный алгоритм решения задачи о гамильтоновом пути, обладающий полиномиальным временем выполнения.
Читать дальше →

Многопользовательский чат на BAT

Время на прочтение3 мин
Количество просмотров22K
Был период, когда в универе задали сделать несколько чатов. В зависимости от вариантов, были заданы различные способы взаимодействия программ от сокетов до майлслотов (mailslot). Когда задания были прикончены, остались силы взяться за скрипты BAT. Вот что получилось…



Всё что нужно для запуска:
1. Взять код по ссылке в конце статьи
2. Сохранить код в файл *.bat
3. Положить файл в сетевую папку
4. Запустить файл с разных компов (можно и с одного)

В комментариях предложили использовать совместно с DropBox, но говорят — что работает весьма не быстро.
Читать дальше →

Кто разводит рыбок? Или решение загадки Эйнштейна регулярным языком

Время на прочтение5 мин
Количество просмотров37K
Многие сталкивались с головоломкой про пять разноцветных домов, в каждом из которых живет человек со своими любимыми животным, напитком и сигаретами. Эта загадка приписывается Эйнштейну, хотя прямых подтверждений этому нет. Полный текст этой головоломки есть на википедии.



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

Интересно? Прошу под кат.

Путеводитель по календарю или ликбез для не особо продвинутых

Время на прочтение4 мин
Количество просмотров50K
«В июле 2011 5 пятниц, 5 суббот, 5 воскресений. Такое бывает раз в 823 года»

Наверняка, вы не раз уже встречали подобные «откровения» в интернете, в первую очередь в твиттере. Пару раз в году обязательно начинается флуд на тему того, какое это редкое событие — 5 пятниц, суббот и воскресений в одном месяце.

Причина этой радости прекрасно понятна — ведь, выходит, в этом месяце больше, чем обычно, выходных и дней, в которые принято напиваться! Вот только запаздывает осознание того, что от этого таких дней в году больше не становится.
Читать дальше →

Пишем интерпретатор для своего эзотерического языка (часть 2)

Время на прочтение5 мин
Количество просмотров1.7K
Напомню, что в предыдущей статье я поставил задачу написать интерпретатор для надстройки над Brainfuck. Естественно, что для начала нужно было реализовать сам Brainfuck, и только затем переходить к надстройке. Благо в предыдущей статье эта часть была реализована. Собственно опишем то, что следует реализовать в этой части:
  1. Понятие функции(процедуры).
  2. Комментарии.

Читать дальше →

Ближайшие события

Рекурсивный zip-архив

Время на прочтение5 мин
Количество просмотров40K
Многие хабрапользователи наверняка знакомы с квайнами — программами, выводящими собственный исходный код. Сегодня я хочу показать как сделать интересный вариант квайна — ZIP-архив, который распаковывается сам в себя.

Читать дальше →

Кросс-языковое программирование

Время на прочтение1 мин
Количество просмотров1.7K
Читая статью в вики про Квайны вспомнил, что давно, очень много кликов тому назад — не помню уже ссылки, читал как один умелец описывал процесс создания исходного текста программы(скрипта) работающего в двух разных языках. Если мне не изменяет память, это был некий bat-ник, который успешно компилировался в turbo pascale-е.

Предлагаю в качестве разминки для ума скинуть в комментарии примеры (если таковые возможны).
Читать дальше →

Драм-машина на Perl в 120 строк

Время на прочтение3 мин
Количество просмотров2.3K
Попробуем написать простенькую драм-машину на перле используя MIDI и Tkx в качестве графического тулкита.

image

Основные возможности
  1. 47 инструментов, одновременно может быть использовано 4.
  2. Управление с клавиатуры.
  3. Регулятор громкости.
  4. Регулятор BPM от 60 до 600 ударов в минуту.


Читать дальше →

Книга о мухах за $23,698,655.93

Время на прочтение3 мин
Количество просмотров16K
Несколько недель назад один доктор из моей лаборатории зашёл на Амазон чтобы купить копию книги Питера Лоуренса The Making of a Fly — классический труд по биологии развития, с которым мы — и другие биологи, работающие с дрозофилами — сверяемся регулярно. Книга, вышедшая в 1992 году, уже не переиздаётся. Но на Амазоне было в продаже 17 копий: 15 использованных от $35.54 и две новых, от $1,730,045.91 (+$3.99 за доставку).
Полтора миллиона долларов за книгу о мухах?

Пишем интерпретатор для своего эзотерического языка

Время на прочтение4 мин
Количество просмотров5.1K
За основу я взял язык Brainfuck он настолько мал, что можно немного расширив получить практически новый и достаточно функциональный язык программирования. И при этом не потерять изюминку исходного языка – мой язык будет все так же терзать мозг программиста, как и его родитель!

Итак, Brainfuck. Вкратце, идея такая, есть N регистров/ячеек. У программиста есть доступ к ним всем но перемещения по ним делаются явным образом. Т.е. из ячейки 2 нельзя перейти к ячейке 7 сразу, нужно последовательно.

“Ключевые слова” языка:

  • > – перейти на ячейку вправо.
  • < – перейти на ячейку влево.
  • + – увеличить значение ячейки на единицу.
  • — – уменьшить значение ячейки на единицу.
  • , – прочесть значение в ячейку со стандартного устройства ввода.
  • . – напечатать значение ячейки стандартным устройством вывода.
  • [ – начать цикл while если значение текущей ячейки не равно 0 и перейти к следующей ячейке.
  • ] – конец блока while. Продолжить цикл, если значение “условной” ячейки не равно 0 ( “условная ячейка” — ячейка на которой начался цикл ).

Читать дальше →

Пи в языках программирования

Время на прочтение3 мин
Количество просмотров13K
14 марта — всемирный день числа Пи. Придуманный в 1989 году и официально признанный в 2009, этот день отмечают многими способами, из которых самые популярные — поедание круглых пирогов и обсуждение вещей, связанных с числом Пи. Было бы странно, если бы не нашлось пары-тройки языков программирования, основанных на числе Пи или хотя бы названных в его честь. О них я и расскажу — надо же поддержать традицию :-)

1. Pi — диалект Brainfuck


У Brainfuck множество диалектов практически на все случаи жизни, диалект Pi среди них тоже есть. Команды языка записываются в число Пи в виде неправильных цифр в случайных разрядах следующим образом.

Читать дальше →

Эмулятор РАМ-машины

Время на прочтение3 мин
Количество просмотров11K

РАМ-машина — абстрактная вычислительная машина, обладающая полнотой по Тьюрингу, и принадлежащая классу регистровых машин. Она эквивалентна универсальной машине Тьюринга, при этом более наглядна и удобна в доказательстве корректности алгоритмов. В этом топике я расскажу, как она устроена и приложу ссылки на работающую имплементацию эмулятора РАМ-машины с некоторыми интересными примерами.
Читать дальше →

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