|
Discreet · and · discrete.
Do you want to crack jokes about it or do you want me to go?
 |
|
Про функциональное программирование и программирование вообще: Про язык Хаскель: Вне ЖЖ: Поиск по моему блогу: Потом еще чего добавлю. Тут в ЖЖ что-то с какими-то разрешениями насчёт копирования чего-то не то. Поэтому, чтобы сразу уточнить это чего-то насчёт каких-то разрешений копирования, вот: Используйте всё, что вам понравится так, как это вам угодно. Ограничений вводить не буду, это усложнит мне жизнь.Если при использовании сошлётесь на меня, буду благодарен. |
 |
|
Правила: - Большой пост - большой комментарий.
- Небольшой пост - большой комментарий.
- Осмысленные комментарии предпочитаются шуточным. Я обсалютно серъезен.
- А еще лучше, вместо комментария напишите пост с вашими мыслями на эту тему.
- Я сразу же забаню человека, если я посчитаю, что он удалил комментарий для того, чтобы я не смог ответить. Исключение составляют ошибки разметки или информации.
- Ограничений на использование вами информации из моего журнала нет.
- Пока больше правил нет.
Причины, по которым появились эти правилаНеобходимость развернутых комментариевЧеловеческая культура богата, всю ее не охватить. Комментарии-однострочники, обычно, аппелируют к знанию того или иного его слоя или той или иной ее области, часто ставя читающего в тупик. Всю культуру охватить нельзя, но общаться как-то необходимо. Я скажу даже больше, к полному охвату не надо даже стремиться, есть вещи поинтересней, но несмотря на это общаться все равно необходимо. Поэтому разумным компромиссом будет, во-первых, не рассчитывать на знание собеседником доступных вам сведений и, во-вторых, мотивировать их необходимость для собеседника, если они влияют на дискуссию. Добавлю, что некоторый опыт дискуссий в ЖЖ показал, что даже самые умные люди теряются в большом количестве комментариев, начинают повторять свои недавно опровергнутые тезисы и тп. Если количество не очень хорошо влияет на результаты дискуссии, то, может, стоит попытаться взять качеством?
Запрет на удаление комментариевПочему мир не должен видеть мою или вашу глупость? Надо проявлять себя во всем разнообразии.
Предпочтение постов комментариямДа мне просто так больше нравится. Комментарии утомляют сильнее. Копирайт и всё такоеТут в ЖЖ что-то с какими-то разрешениями насчёт копирования чего-то не то. Поэтому, чтобы сразу уточнить это чего-то насчёт каких-то разрешений копирования, вот: Используйте всё, что вам понравится так, как это вам угодно. Ограничений вводить не буду, это усложнит мне жизнь.Если при использовании сошлётесь на меня, буду благодарен. Серъёзно. Если я введу какие-то ограничения, то мне придётся следить за их исполнением. А я и так уж тут правил наворотил. Да и основная моя деятельность лежит вне проверки соблюдения копирайта. Я предпочитаю не волноваться по этому поводу, а волноваться по другим, по важнее. |
 |
|
|
 |
|
У меня диск с пятым сезоном Доктора Хауса показывает только первые 7-8 эпизодов каждой половинки, поэтому я пошёл и прочитал. Бляха муха, вот же ж. |
 |
|
Понакрутили. Смотрю частями минут по пятнадцать, ужас просто берёт. Перевод. Panic attack везде переводится, как "паническая атака", хотя это панический приступ, как и с остальными атаками. Насчёт "атаки" и "приступа" очень интересно. Атаковать крепость, взять крепость приступом. Приступ номер один, означает начало стихотворной формы. Приступ номер два, собственно, атака или штурм. Очень интересно. ;) Интактен это intact по-английски, что означает "без повреждений". Как так можно? А вот сокращения переводят на русский. Иногда. ;) |
 |
|
Собственно, смысла в скайнете никакого. С чего бы это ему считать людей врагами? А вот в эксплуатации скайнета, как управляющего многими вещами, вполне возможна. Я так думаю, что на это вполне можно наложить слухи о золотом миллиарде. |
 |
|
http://www.google.com/search?q=delta+debuggingThe Delta Debugging algorithm isolates failure causes automatically - by systematically narrowing down failure-inducing circumstances until a minimal set remains. Delta Debugging has been applied to isolate failure-inducing program input (e.g. an HTML page that makes a Web browser fail), failure-inducing user interaction (e.g. the keystrokes that make a program crash), or failure-inducing changes to the program code (e.g. after a failing regression test).Мне, так интересно. ;) |
 |
|
|
 |
|
class TestFunc f where
type FuncStore f
evaluateFunc :: f size -> TestMonad (FuncStore f) (SizedInt size)
instance TestFunc CPU1Funcs where
type FuncStore CPU1Funcs = Funcs1Store
evaluateFunc (F1 e) = do
addr <- evalExpr e
lookupFuncStore addrРаботает. По ходу дела сделал похожее для других похожих функций, стало компилироваться быстрее. Оказалось, что 1) очень удобно и 2) заставляет вставлять разного рода типы всюду и везде. Последнее, по моим ощущениям, ведёт к лучшему коду - заставляет повторно использовать одинаковый код. |
 |
|
Безотносительно: почему в Голливуде так много всяких веганов (доктора Кадди играет веган, паренёк в четвёртом Орешке веган)? |
 |
|
Я являюсь обладателем и читателем интересной книги под названием Program Construction: Calculating Implementations from Specifications. В ней сперва рассказывается про булеву логику (и даются интересные задачи про воинов и воров), а затем объясняются тройки Хоара. Там очень интересно, например, как они исправляют деление по модулю в Джаве (все примеры программ там на Джаве). Если кто не помнит, то тройки Хоара это вот: {P} S {Q}, где {P} - множество предусловий для выполнения действия S, {Q} - множество выполняющихся после S постусловий. Если мы должны выполнить два последовательных действия S1 и S2, то их пред- и постусловия объединятся (для независимых S1 и S2 это будет P1∧P2 и Q1∨Q2, для зависимых действий посложнее, но тоже можно вывести). С их помощью программисты тех времен изобретали весьма тонкие алгоритмы, особенно хорошо это получалось у Дейкстры. Я вспомнил о ней из-за обсуждения на RSDN. В нём два участника обсуждения практически в голос говорили, что спецификация кода практически всегда окажется больше самого кода. Дескать потому, что на каждую строку кода придётся указывать очень много всего. Вспомнил я про эту книгу в контексте того обсуждения потому, что я немного потренировался программировать с тройками Хоара. Как и говорилось в книге, оказалось достаточно правильно сформировать пред- и постусловия, и большая часть решений по построению алгоритма выполняется выбором всего из одного варианта. Нам надо что-то сделать с массивом? Цикл. Надо, чтобы в какой-то части решения i всегда было не равно 0 и мы можем вернуть признак ошибки? Проверим на 0 и вернём ошибку. И тп. Это не механический труд, всё равно. При программировании с использованием троек Хоара всё равно придётся формировать словарь-библиотеку, что снизу, что сверху. То, насколько часто будет встречаться выбор всего из одного варианта и даёт некоторое представление о качестве словаря. Всё равно придётся оценивать последствия решений и прочее такое же. Это не панацея, а просто ещё один способ выполнения работы, очень развивающий. Здесь что интересно. S1 может нарушить что-то из его предусловий P1, поэтому если S2 требует это что-то, разрушенное S1, надо провести восстановление. Это связано с наличием побочных эффектов. В случае чисто функционального кода тройки превращаются в обычную логику (структурное исчисление секвенций, так сказать), что сильно упрощает работу. Достигли P1 и P2 им полностью покрывается? Беспокоиться не о чем, можно выполнять и S1 и S2. А сами S1 и S2 могут быть записаны так: S1 :: P1 -> Q1, S2 :: P2 -> Q2. Это обычные чистые функции. |
 |
|
Развитие языков программирования идёт по пути уменьшения общего количества движений различных органов программиста: меньше нажатий кнопок при наборе, меньше нажатий кнопок при отладке, меньше движений глазами при чтении... |
 |
|
Ну зачем надо было поселять его в 221B? Да ещё и показывать номер дома на протяжении минуты крупным планом. ;) |
 |
|
У нас есть DSEL описания команд процессоров. Ничего особо страшного по своей сути, просто внутре оно жутко параметризовано размерностями битовых данных. Команд довольно много, порядка полтинника или около того. В интерпретаторе их типы проверяются секунд 30. Я даже разбил общий список команд на несколько модулей, чтобы хоть иногда было побыстрей. Так вот, ghc при компиляции этого кода наращивает кучу в полтора гига, уходит в своп и не выходит. Что с -O2, что без оптимизации. А в интерпретаторе работает. Думаю, надо что-то запретить, например, поставить всюду NOINLINE. |
|
|