to post messages and comments.

Блоггер point-666.livejournal.com перемешал строчки двух стихотворений: «Бармаглот» Л. Кэррола и «В Музее В. И. Ленина» С. Михалкова. Получилось забавно:

Варкалось, хливкие шорьки
Стреляют на ходу.
И хрюкотали зелюки
В семнадцатом году.

Рабочий тащит пулемет.
Высоких полон дум.
Висит плакат: «Долой господ!
Под дерево Тумтум!»

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

А как умел он говорить,
Он так свирлеп и дик,
Какой простор он мог открыть,
Злопастный Брандашмыг!

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

О светозарный мальчик мой,
Хранимый под стеклом!
О храброславленный герой,
Как много зим прошло!

Варкалось, хливкие шорьки
Сюда за правдой шли.
И хрюкотали зелюки —
Беседу с ним вели.

point-666.livejournal.com

Сергей Михалков «В Музее В.И.Ленина»: world-art.ru
Льюис Кэрролл «Бармаглот» Перевод с английского Д. Орловской: logrys.net

@CaufMAN: *programming *oberon
Любопытно, а как местные уважаемые доны относятся к наследию товарища Никлауса Вирта в виде языков семейства оберона?
#2822358 (166 replies) juick.com

@Mazdaywik:
Скажу свои несколько слов^Wабзацев про Оберон.

Единственный эпитет, который его характеризует, — дубовый. Дубовый (в смысле простой и надёжный) императивный язык программирования с элементами ООП. Дубовая архитектура виртовской операционной системы Оберон (чем-то напоминает ранние 16-разрядные Windows). Дубовый стиль написания программ. Дубовое сообщество дубовых программистов.

Язык Оберон-2 вмещает в себя минимальное подмножество средств императивного (структурного, процедурного) программирования + минимальное ООП — тем он хорош в образовательном процессе (сам не пробовал, но попробовать хочу). Если какие-нибудь другие компактные языки программирования типа C или Scheme при обучении позволяют проводить надёжную селекцию студентов (отличать отличников от двоечников), то Оберон наоборот, научит сносно программировать и троечника. Также хорош как учебное пособие по курсу компиляторов — вполне реально (если студент не разгильдяй) написать самоприменимый компилятор в двоичный код в рамках курсового проекта.

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

Язык с одной стороны довольно низкоуровневый, близкий к примитивам железа, с другой стороны, с защитой от дурака: нельзя испортить память, нельзя вылезти за границы массива и т. д. (хотя есть встроенный псевдомодуль SYSTEM, предоставляющий низкоуровневые средтва).

Программы тоже получаются на нём дубовые. Нет исключений и неструктурных переходов, поэтому код выполняется строго последовательно. Нет макросов, перегрузки операторов, поэтому нельзя написать красивый DSL. Нет поддержки обобщённого программирования, поэтому если пишется тип объектов, которые будут объединяться в коллекцию, сразу пишется поле next для объединения в односвязный список. Если нужно отсортировать элементы, пишется вручную алгоритм сортировки. Поэтому программисты на Обероне хорошо знают алгоритмы. В общем, язык дубовый, как ранняя Java, только ещё дубовее. В общем, если нужно написать надёжную дубовую программу, Оберон вам в помощь.

Да и программисты дубовые. Чтение форума oberoncore.ru позволяет изучить т. н. парадокс блаба на практике. Оберонщики хорошо знают алгоритмы, хорошо владеют императивной объектно-ориентированной парадигмой, некоторые этому даже учат школьников и студентов. Но вот за пределами своей компетенции полностью некомпетентны: «зачем нам эта фича, мы и без неё прекрасно обходимся, она сложная, провоцирует ошибки, её можно заменить такими-то дубовыми конструкциями Оберона…».

P.S. Извините за стену текста.
#2822358/146 juick.com

@anton0xf:
лучший коммент по теме. жаль рекомендаций комментариев нет.
#2822358/149 juick.com

Ссылка: github.com

Таки выложил репозиторий Модульного Рефала на GitHub. На данный момент компилятор малоюзабелен (работает только под Windows, перед использованием в файле compile_mr.cfg следует прописать путь к текущей папке, нет руководства пользователя), но важен тут сам факт.

Репозиторий делал я долго, но он точно отображает ход развития проекта с 2007 года.

У коммитов с 2007 до 2011 года долгая история.
• В тот период я не пользовался системами контроля версий, но прилежно делал бекапы в виде архивов RAR.
• Потом я случайно убил раздел с этими бекапами.
• Восстановил (самописной утилитой), но имена файлов потерялись — пришлось вручную разбирать, какой из архивов полный, а какой разностный, а также восстанавливать временные штампы по содержимому. Хотя, полдюжины архивов сохранилось в другой папке, их коммиты в истории выделяются другим именем файла.
• Затем написал утилиту (велосипед № 2), которая из набора архивов строит репозиторий Git с линейной историей.
• Но на самом деле история нелинейная, ибо я писал компилятор то дома, то с работы, а затем все архивы скинул в одну кучу. Пришлось вручную перелопачивать историю, вставляя в нужных местах ветвления и слияния.
• Архивы представляли собой просто слепки файловой системы с кучей промежуточных и целевых файлов («объектные» файлы, exe-шники), которые можно перегенировать из исходников. Чтобы прояснить дифы коммитов и уменьшить объём хранилища, чистил историю от этих файлов (ещё одна кропотливая работа). Некоторые exe-шники для цельности картины пришлось оставить, поэтому размер хранилища получается около 90 Мбайт.
• В рамках Модульного Рефала жил форк Простого Рефала, поэтому старые коммиты последнего тоже вшиты в историю.

Начиная с 2011 года я уже начал использовать SVN (хранилище держал на флешке), а поддержка последнего есть в Git из коробки. Где-то с 2014 года уже коммитил в этот SVN через клиент Git (отсюда коммиты с файлами .gitignore).

В общем, поэтому так долго выкладывал Модульный Рефал на GitHub (#2810159).

История развития Модульного Рефала начиная с 2007 года описана в журнале проекта github.com , если это кому интересно.

@stoneman:
Единственным известным современной фармакопее, истинным стресс-протективным агентом является алкоголь. Прием алкоголя сразу после неконтролируемого стресса предотвращает развитие депрессивных состояний.

Основной вред здоровью человека приносит неконтролируемый стресс, развившийся не в результате крупных потрясений, а из-за множества мелких событий, каждое из которых и неприятностью-то не назовешь, но в совокупности именно они оказываются тем губительным для здоровья человека фактором, который губит здоровье человека. Поэтому такие знатоки природы человека, как В. М. Бехтерев, много сделавший для организации лечения алкоголизма в нашей стране, и К. Г. Юнг рекомендовали периодическое, но не регулярное (для того чтобы снизить скорость привыкания к алкоголю, замедлить формирование ФКД, т. е. психологического стереотипа) употребление небольших доз алкоголя.

Жуков Д. А., Биология поведения: гуморальные механизмы. — СПб.: Речь, 2007
#2821575/10 juick.com

Пользователь @mismatch в посте #2821168 порекомендовал статью smashcompany.com о недостатках ООП. Поскольку она на буржуйском, а я не силён в их мове, читаю через Яндекс.Переводчик. Понятно, что когда непонятен оригинал, смотрю в перевод, когда непонятен перевод (что тоже бывает часто) — смотрю в оригинал. В общем, Яндекс переводит state как государство. Порой получается забавно:

Whether you use an OOP language or a functional language, your enemy is state, …
Используете ли вы ООП язык или функциональный язык, твой враг-государство, а цель любого вида данных-скрытие является ограничение способов, как государство может изменить. Джон Баркер резюмирует врага:
Государство-не друг, государство-твой враг. Изменения в государственные программы сделать сложнее рассуждать о том, сложнее тестировать и отлаживать труднее.

Такой вот забавный анархизм (или либертарианство?).

Был сегодня на лекции Светланы Анатольевны Бурлак «Язык человека и „языки“ животных». Довольно интересно, где-то треть рассказанного мне была знакома, остальное в новинку. Рассказывалось преимущественно про коммуникацию птиц. Народу было мало. Чтобы успеть к началу лекции, пришлось с работы (офис которая) уйти пораньше (у нас это можно).

Лекция входит в курс «Происхождение языка», который читается в культурно-просветительском центре Архэ. Лекции читаются по четвергам в 19 часов, у станции метро Спортивная (default city, да). Одна лекция стоит 500 рублей, можно купить абонемент (я не брал).

Ссылки, если заинтересовало:
arhe.msk.ru — про сегодняшнюю лекцию.
arhe.msk.ru — про весь курс.

В продолжение #2820430. GitHub на странице пользователя отмечает карту активности на ресурсе: цветными клеточками за последний год показывает вклад участника за каждый день. Если в некоторый день пользователь делал pull request, фиксацию или issue (не знаю, как адекватнее это назвать по-русски) — клеточка зелёная, в противном случае — серая. Непрерывная последовательность зелёных клеточек называется страйком (streak).

Вот, текущий страйк я тяну уже 28 дней, прикладываю все усилия, чтобы он не прервался (иные дни делаю вымученные коммиты).

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

Имею дерзновение выставить Простому Рефалу версию 1.0, намекая тем самым, что он уже практически готов к продакшену.

Ссылка: github.com

За последние пару месяцев я аццки поработал над компилятором, сделал следующее:
• Изменён синтаксис: теперь предобъявления для функций и идентификаторов не нужны.
• Этап построения промежуточного императивного кода разбит на два прохода. Попутно немного изменилась структура этого промежуточного кода и кодогенератор.
• Реорганизована структура репозитория: теперь их два (второй: github.com ). На втором репозитории (и только на нём) располагаются полускомпилированные исходники компилятора.
• Появилась некоторая процедура инсталляции и некоторое удобство использования (вернее, устранено одно из неудобств использования: необходимость явно указывать пути к каталогам библиотек).
Самое главное, для Простого Рефала были сформулированы цели развития (см. README.md). Было это давно (конец ноября), но руки не доходили написать.

В следующем семестре планируется провести два исследования, связанные с компилятором: github.com и https://github.com/Mazdaywik/simple-refal/issues/16 — студенты-бакалавры будут писать свои дипломы.

В продолжение #2813533. Нашёл обходной путь — как можно делать пробелы неразрывными и при этом растяжимыми.

Среди специальных символов в Word’е есть символ неразрывающейся связки (при печати не отображается, при включении скрытых знаков отображается как прямоугольник). Если его вставить после обычного пробела — пробел не может оторваться от последующего слова. Повесил неразрывную связку на Ctrl+Shitf+пробел, нажимаю после ввода пробелов, которые не следует разрывать.

Есть такой интересный символ — неразрывный пробел. Если его поставить между двумя словами, то они не будут разбиваться переносом строки. Обычно его ставят после коротких союзов и предлогов (в, к, и, но, от…) или перед единицами измерения: 1 кг, 1234 г., 3 %. Я им активно пользуюсь.

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

Недавно Microsoft наконец-то пофиксила это поведение — неразрывные пробелы в Word 2013 стали растягиваться! Я был рад. Ненадолго. Сегодня заметил, что эта фича перестала работать. Загуглил. answers.microsoft.com (читать и смотреть скриншоты). Оказалось — большинство использует неразрывные пробелы как неразрывные нерастяжимые. И, видимо из-за потока жалоб, Microsoft была вынуждена вернуть старое поведение.

Вот так из-за пользователей-мудаков умные люди снова страдают. :-(

Простой Рефал написан на себе, компилирует в C++98, компоненты рантайма написаны тоже на C++98. Средства языка ограничены стандартной библиотекой, что определяет его переносимость.

Компилятор успешно работает на Windows (x86 и amd64), Linux (x86 и amd64), QNX (x86) и OS X (хз разрядность, студенты делали). Компилируется компиляторами Borland C Compiler 5.5, MS Visual C++, GCC (MinGW и нативные под Linux и QNX), Clang (Windows и OS X), Open Watcom (Windows).

Под DOS не переносился, потому что тупо не влезет в память (при компиляции самого себя требует 30 Мбайт под x86, 60 Мбайт под amd64) (хотя была бы интересная задача реализовать его под DOS).

В общем, Жуйк. У кого есть возможность запустить компилятор C++ под ARM (телефон, планшет, Raspberry Pi) или под какими-нибудь экзотическими платформами (Itanium, Эльбрус) и некоторое количество свободного времени, попробуйте собрать на нём Простой Рефал. Ссылка: github.com

P.S. Под Колибри и Полуосью компилировать не пробовал, возможно, когда-нибудь, руки до них дойдут.

Мне на репозиторий Простого Рефала уже успели поставить 4 звезды. Как на это лучше реагировать? Поставить звёзды в ответ? А на какие репозитории, если у них репозиториев много? И вообще, что эти звёзды обозначают: влияют на рейтинг или ничего не значат?

Я новичок в GitHub.

Последнее время в обычной машинописной речи (почта, переписка в IM) я использую не только типографские символы (кавычки, тире), но и неразрывные пробелы после коротких союзов и предлогов. На раскладке Бирмана они вводятся как Ctrl-Alt-Пробел. При включённых типографских символах под Linux — вроде тоже (там не Ctrl-Alt, а выбранная пользователем клавиша третьего ряда).

Почему я пока не выложил Модульный Рефал? Отвечу цитатой:
в теме про опропиетаривание очередной проги:
Да кашмар) нашим программистам не жалко выложить код, им просто стыдно))
ibash.org.ru

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