November 25th, 2008

об "свободе" и "ответственности"

Пейсатель хорошо отписал.

http://beauty-n-beast.livejournal.com/173389.html?style=mine
http://beauty-n-beast.livejournal.com/169468.html?style=mine

В натуре, только быдло может не желать себе Свободы и Возможностей. И рецепт успеха прост до безобразия: "вступить вскоре после начала и вовремя сброситься".

PS: комменты жгут: "а самым страшным временем была зима 1998/99 года".

объекты или тексты

http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf
перевод http://kmmbvnr.livejournal.com/62197.html?style=mine

Статья на тему "что круче - лисп или хаскель". Там правда не хаскель, а миранда, но мне она неизвестна, а то что про неё написано от хаскеля ничем не отличается. Дальше буду писать Haskell

Автор агитирует за Haskell, показывая нам его систему типов, pattern matching и прочие красоты. На мой вкус, немного фанатирует. Тот же pattern matching на лиспе делается на раз.

Немножко обобщая, выбор имеется такой: что является единицей оперирования в языке.

Либо это объект - чёрный ящик, из которого торчат только входы и выходы. ФП с closures и ленивыми значениями считается как частный случай таких объектов (кому надо - :-b). Программист делает кирпичики-объекты, из которых на более высоком уровне складывает логику программы.

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

Вообще, для меня на данном этапе этот вопрос - что же лучше - фундаментален и непонятен. С одной стороны, все или почти все фичи высокоуровневыевых языков с лёгкостью релизуются через манипуляции с текстом. С другой - чтобы сдизайнить работающую и универсальную фичу, надо быть немножко гением, а "большинство из нас не гении, особенно когда времени мало" (c). С третьей - кто не бился головий об клавиатуру, точно зная, что ты хочешь сделать - и не имея в языке возможности это сделать?

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

PS: http://thesz.livejournal.com/873177.html?style=mine Там, конечно, люди покруче, но я тоже пытался сделать объекты перебрасывающиеся событиями - и неоднократно упирался в их тупость.