vit_r: default (Default)

Монадоидизм



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

Основные духовные практики приверженцев монадоидизма: создавать М. из всего, находить М. во всём, убеждать непосвящённых, что М. существуют и обладают магическими свойствами, объяснять друг другу, почему непосвящённые не могут осознать М., и спорить между собой, кто правильнее осознал М., а кто только делает вид и баламутит народ.

Приверженцев монадоидизма можно разделить на две основные категории. Гностики утверждают, что правильного осознания М. можно достигнуть через изучение духовной литературы (см. Теория Категорий). Фарисеи пытаются достигнуть осознания М. через духовные практики (см. Функциональное Программирование).

Гностики считают, что фарисеи слишком тупы, чтобы понять сущность М.. Фарисеи пытаются доказать, что гностики просто скрывают сущность М. за заумными лингвистическими построениями. Так как М. является непознаваемой сущностью, споры эти носят чисто развлекательно-схоластический характер.

В междоусобных религиозных войнах приверженцы Монадоидизма не замечены. Вербовка новых адептов учения идёт тоже достаточно вяло. Что не удивительно, ибо как гностики, так и фарисеи находят основное удовлетворение в гармоничном обладании сакральным знанием, которое при взаимодействии с реальным миром может быть нарушено. (См. Ниравана)
vit_r: default (Default)
Всё больше и больше складывается впечатление, что функциональное программирование, как впрочем и метапрограммирование на темплейтах, - это извращённый метод кодогенерации. (Или кодогенерация для извращенцев.)

Это, конечно, офигительно круто для библиотек примитивов или для математических задач. Над ними можно долго-долго думать и толпы, обречённые их использовать, волей-неволей вносят вклад в массированное тестирование и отладку. Но, когда дело доходит до реальных проектов, вместо прямолинейной, понятной и защищённой от ошибок технологии кодогенерации из моделей начинаются извращения и танцы с бубнами в попытках угадать, во что скомпилируется хитромудрая конструкция. Не говоря о куцой возможности вылавливать ошибки в этом загадочном процессе.

Понятно, что нормальную цепочку моделирования и кодогенерации (в том числе не только в графических программах, но с использованием текстового DSL) подстраивают под задачу. Однако, это позволяет добиться оптимизации, недоступной "универсальным решениям", и наладить быстрый цикл исправления ошибок.

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

Также понятно, что книжки и доклады, рассказывающие о хитрых математических трюках и очередных универсальных примитивах, будут пользоваться популярностью, а технологии простые и эффективные как трактор, просто не находят поклонников.

Case 13-7

Sep. 14th, 2018 10:46 am
vit_r: default (Default)
Чем больше узнаю Швейцарию, тем больше удивляюсь. Страна, конечно, отличная. Но, только если кроме денег и гор ничего не интересует.

При этом как-бы прямая демократия и народ может сам решать и сам направлять. И, похоже, многие в это на самом деле верят.

В реале всё гораздо печальнее. Успех народного голосования зависит от маркетингового бюджета, а тут группа граждан перед госорганизацией или партией - пустое место. В большой Германии, хоть, наберётся достаточно народу, чтобы быть если не услышанными, то замеченными. В Швейцарии всё на уровне кантонов или городов и нет достаточной массы людей, просто способных разобраться в каком-нибудь чиновничьем крючкотворстве. (А там попадается очень-очень много интересного.)

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

Вот чиновники там выступают регулярно. (Директор школы старшего в одной заметке учил народ про bulling/Mobbing. В смысле, что это неистребимая норма жизни.)

Короче, понимаю немцев, которые, поработав в Швейцарии и познакомившись с её изнанкой, сваливают обратно.

И что удивительно, совсем необязательно так жить. Но, похоже, у швейцарцев способность к индивидуальному сопротивлению системе выбивают ещё в школе.
Read more... )
vit_r: default (Default)

Cognitive complexity and numeric constraints



Programmers try to fight complexity with rules.
Read more... )
vit_r: default (Default)
Next two texts were intended for children. They describe obvious things. At least they are obvious for me. It seems many experts in information technologies understand these things differently or have not tried to consider problems from this point of view.

"Adult version" does not contain illustrations and samples. I also do not describe exceptions because they are not important. I write only a short version. Full detailed explanations are time consuming.

Note, if you feel something in the following texts is wrong, it is most probably your interpretation.

Models



We do not solve problems in a direct way. We use mental models.
Read more... )
vit_r: default (Default)
"Голая теория невероятно красива" (© Маркетолог Sergey Slavinskiy в Фейсбуке)

Собственно, это всё, что я хотел сказать про функциональное программирование.
vit_r: default (vit_r)
Смотрим на аватар и запоминаем:
Vit minus R dot com

Там сейчас ничего нет, но если что, адрес всем известен.

Запомнить советую потому, что Гугл находить не будет, если сделаю так, как мне нравится. Судя по тестам, Империя Зла фильтрует определённые вещи из результатов поиска. Бинг и остальные в подобном не замечены.

А теперь к делу.
Read more... )
vit_r: default (vit_r)
В связи со вчерашней дискуссией всплыла интересная тема. В принципе, надо бы спросить гуру функционального подхода, вроде [livejournal.com profile] juan_gandhi, но вопрос, скорее, на общую сообразительность.

Как кудесники монад и эндофункторов объясняют нормальным людям работу их софта? «Иди читай код, болван!» работает только на программистах. Да и то, только на тех, которые не умеют правильно посылать.

Устаревшие методы позовляют нормально коммуницировать если не с обитателями отдела маркетинга, то с людьми, способными думать.

- Идентификатор заказа состоит из полей Число, Время, Источник Запроса, Путь Получения и Уникальный Номер. Для таблицы мы группируем записи по времени с интервалом час и подсчитываем среднее для Пути Получения.

- Менеджер Задач ожидает прихода сигналов. Если сигнал А приходит раньше Б, выполнение продолжается. Если Б не приходит в течении заданного промежутка времени, ситсема снова посылает запрос. Если Б приходит раньше А, Менеджер Задач выдаёт ошибку и переходит в состояние ожидания перезапуска.

- Когда пользователь нажимает на кнопку, окно получает фокус ввода и меняет цвет на синий.
...

Примеры не очень красивые, но для демонстрации принципа сойдут и такие. Главное, всё, что происходит в софте, можно пояснить на простом человеческом языке, причём терминами, понятными специалистами в пердметной области.

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

Чтобы не усложнять задачу, представим, что мы руководим группой Очень Крутых функциональных программистов, которые сделали Крутую Программу. Теперь мы сидим в переговорной комнате вместе с заказчиками и пытаемся всеми доступными средствами объяснить, что же такое замечательное они от нас получат. При этом, заказчики должны во-первых, понять, а во-вторых, заметить те мелочи, которые не соответствуют требованиям и особенностям конкретного применения.
vit_r: default (vit_r)
Хотел ответить одному Специалисту, Консультанту и Прочая по Model Driven Architecture и Другим Чудесам. Но решил, что нафиг. Оставлю здесь на память.

Tom DeMarco, "Controlling software projects", 1982, Prentice Hall, page 75
I began this chapter with an analogy, the specification of a solid figure by three-view projection. Applying some of the terms used in the analogy, we now can consider each of the components of the requirement model a projection onto a different space. So, the functional model - the partitioning into constituent functions and inter-function interfaces - can be thought of as a projection onto function space; the retained data model, a projection onto information space; and the state transition model, a projection onto state space.

It is a miracle how quick the "computer science" loses critical knowledge and how persistent it tries to reinvent a bicycle (with more and more quadratic wheels at each new attempt).
vit_r: default (vit_r)
Dragon Dreaming объединяет мудрость индейцев с современными достижениями проджект менеджмента.



Это из рекламы местных курсов. Пусть будет вместо эпиграфа.

Поболтал с людьми по поводу Шилор-Мылора. Всё так же как и с релкомовской группой по Software Engineering. Пока поёшь и пляшешь, приходят интересные люди, начинают делать какие-то умные замечания, выдавать полезную информацию... Разве что английский не исправляют, потому что очень вежливые. Странные люди тоже вклиниваются в дискуссию. Но тоже не для того, чтобы вещать с пьедестала, а чтобы как-то выразить то, почему твои воззрения в их мир не вписываются, что даёт повод для размышления.

Но, если самому контент не генерировать, ничего и не будет. Дискуссии редкие и по две-три фразы вместо развёрнутого мнения. Работать массовиком-затейником как-бы и хорошо, но слишком много времени занимает. Да и отклик не так значителен. Впрочем, я тут недавно просил всего лишь кнопочку нажать - дюжины человек не набралось.

Завершилось всё на высокой ноте. В смысле, метод прекрасен, успехи у него были, и если тут кто-то, вдруг, его ещё использует, пишите - звоните, мы с радостью приложим свои экспертные знания в полезной работе.

В остатке от моих выступлений по поводу слабостей метода получился занятный черновик, который когда-нибудь где-нибудь можно использовать. Здесь оставлю маленький кусочек из заключения, применимый универсально.

It is not enough for a modern software development technology simply to be good.


Most IT professionals are paid for their time not for their results. Productivity is not a concern for them.

There is a believe that lazy developers will save the day because they choose most efficient ways. But do not forget: they optimize processes for themselves not for their employers. For instance, they tend to compile big volumes of code to do something really good at the time of waiting by claiming that they are hard working.

On the other hand most tasks developers have to solve today are too boring. They are eager to play with something new. It must be interesting and it must bring personal satisfaction at the end of each day.

If we design tools and methods for software architects and software developers we must consider them as ordinary users. We must create processes and software for imperfect people. We must accept their limitations, disabilities and misbeliefs.

Of course any inhuman technology can be pushed by a loyal management. Someone will rebel. Someone will leave. Others will adapt.

But this only means that they will accept it. It is too naive to hope that they will change for it. Methodologies and tools created for saints are in heaven. (Some are preserved in universities.)

A popular technology must abandon "purity". It must allow a partial introduction, a sloping learning curve, a simplified usage. It must not break or melt in the hell of burning deadlines. It must show "tangible" progress not only by distant milestones but by day-to-day work.

And it also must be fun.

vit_r: default (vit_r)
Интересно наблюдать, как проповедники функционального подхода чуют расставленные ловушки и гордо в них не идут. Ещё интереснее, когда люди поддаются на троллинг.

Кинул под очередным религиозным призывом банальнейшую провокацию.
Я воспою хвалу монадам, как только увижу первый пример кода с человеческой обработкой ошибок.

(Почему это чистой воды провокация, написано ниже.)

После небольших препирательств [livejournal.com profile] _xacid_ оставил код. Это была тактическая ошибка. Потому что в ответе

...[всякая ажурная фигня]

val content = getURLContent("garbage") recover {
  case e: FileNotFoundException => Iterator("Requested page does not exist")
  case e: MalformedURLException => Iterator("Please make sure to enter a valid URL")
  case _ => Iterator("An unexpected error has occurred. We are so sorry!")
}



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

Что мы видим на картинке, если снять штукатурку и рассмотреть голую структуру?
switch error_type
  FileNotFoundException:
    "Requested page does not exist"
  MalformedURLException:
    "Please make sure to enter a valid URL"
  default:
    "An unexpected error has occurred. We are so sorry!"


То есть, пока пони какают незабудками, можно вывязывать ажурные конструкции. А как начинаются обосратушки, приходится или шагать дальше с гордо поднятой головой, не реагируя на запах и липкие штанишки (это в наше время называется «уровень качества, принятый в индустрии»), или всё-таки вызывать дядю Васю с совковой лопатой.

А иначе не получается.


Грубо говоря, обработка ошибок - это выбор альтернативных путей преобразования данных или реакций на входящие сигналы. Если, конечно, мы рассматриваем что-то существеннее падения на спину и дрыганья лапками или сообщений пользователю, которые можно смело начинать с обращения «Ей ты, козёл!».

Для адекватного выбора этих путей надо знать не только ошибку, но и контекст, в котором она произошла. Причём, разнесение контекста и обработки по разным местам кроме создания шарад чревато ещё и фатальной рассинхронизацией.

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

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


Конечно, это не вся глубина открывающихся проблемы, а только лёгкий намёк. Математичность тянет за собой ещё много интересного.
vit_r: default (vit_r)
+37.

Это вчера градусник на улице показал. Но и позавчера было не лучше.

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

Понятно, что у них там в ящичке что-то перегрелось, но техников до понедельника не будет, и не известно, будет ли сегодня. По мобильнику качало фигово, да и забираться для хорошего соединения надо в комнату под крышу, а там тропики ещё те. Даже по сравнению с +37 за окном.

В принципе, прекрасная ситуация, чтобы сделать что-то полезное. Про UX написано больше половины, можно перенести на компьютер. Похоже, после посещения UX Camp в Берлине у меня неприятие креативного класса. По крайней мере, на то, что получается, я бы на их месте обиделся. Видимо, придётся переименовывать в «Engineer's tools to measure creativity magic» или что-то подобное.

Но это работа с графикой. То есть, нужен стол. А он с той стороны, где встаёт Солнце. В пять утра там ещё ничего, а в девять уже хорошо греет через стену. Плюс за окном медленно поднимается к +37.

Короче, занимался делами домашними. Значительную часть времени в относительно холодном подвале. А, может, просто влом тратить время на популяризацию, если задача теоретически решена. Получается уже работа, а не развлечение. Причём, без перехода границы идиотизма денег на этом не заработать. А, если делать для идиотов, то это не интересно.

[livejournal.com profile] dnovikoff советует развестись с женой, прежде чем начинать что-то серьёзное.
Вашей жене нужно, чтобы у неё в доме раз в месяц появлялись новые тапки и жратва, а ещё чтобы вы её обнимали, целовали, возили по отпускам и дарили красивые тачки, а ваш проект жрёт деньги, время, эмоции и всё остальное. Опять же не потому, что женщины такие меркантильные, а потому, что у них эволюционно сложились другие жизненные ориентиры. Хотя, конечно, попадаются и на редкость циничные и лицемерные меркантильные суки.


Не понятно, куда деть тёток в менеджменте и на высокооплачиваемых технических должностях. По-моему, получается сверхмеркантильность. Кроме «обнимали-целовали», конечно. Но тут для мужа уже стратегические решения в управлении: кто-то решает тратить ресурсы inhouse, кто-то отдаёт на outsourcing.

«Буйные-перебуйные оптимисты» [livejournal.com profile] ___lin___ & Co. запустили ракету на палочках и верёвочках. После позолоченных контактов и жутких разъёмов, крепящихся на солидных болтах, этот пионерский стиль выглядит особенно сурово.

[livejournal.com profile] ailev проповедовал студентам. По первой лекции могу сказать, что студентов системоинженеров на предприятиях немецких не видел. Не смотря на то, что там системы, инженеры и изделия очень солидные и сложные сложные. Ходят предпенсионные главные инженеры, знающие каждый закоулок, и держащие всё в голове.

Скорее всего, эти системоинженерные, натасканные на онтологиях и методологиях, студенты попадают в особый отдел. В смысле, «По требованию госорганов надо набить мегабайты всякой фигни. Все умные заняты. Посадим этих балаболов забивать тул мусором. Всё равно образования у них нет, пользы нигде не принесут.» Вот и образование пригодилось. Так бы в Макдоналдсе картошку продавали и ли в стартапе на Хаскеле писали.

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

[livejournal.com profile] dzenpofigist порадовал оптимизмом под старым комментарием в посте про Крым. На что отвечаем:

Россия - страна перманентных временных трудностей.

[livejournal.com profile] nponeccop рассказал ещё одну жуткую историю. На этот раз хаскелисты пытаются посчитать среднее в списке чисел.

С правильным инструментом любая работа превращается в подвиг.

[livejournal.com profile] zorag_ringael сообщил об очередном тренде японской моды.

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

Про детей и двадцать два года могу сказать, что, если она забеременела, то это были беспорядочные половые связи без презервативов. А это не то, чему современная американская учительница должна учить американских детей в американской школе. Да и говорят, что дали ей 6 за совращение несовершеннолетних, а 16 за попытки обмануть суд.

Русские блоггеры должны быть довольны: педофилия - только два получается.

И про греков.

Если выплата откупов отменяется и они все сюда повалят, поменяют ли законы так, чтобы их с местного социала выслать можно было?
vit_r: default (vit_r)
Там были авгиевы конюшни на 5 строк.
[livejournal.com profile] nponeccop тут

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

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

Мой любимый пример - когда один и тот же код на одних и тех же данных каждый четвёртый раз выдаёт семь ошибочных строк. (Семь из семидесяти тысяч и ошибочным значением в одном столбце из двух десятков.)

В прошлом посте приведён банальный пример. Грубо говоря, пользователь пишет
2 + 2 = 4
а база данных говорит, что не равно.

Зато, с тем, что
2 + 2 + 0 = 4
база данных соглашается.

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

Феномен же, который хочу отметить здесь, связан с поведением так называемых профессионалов. Между прочим, достаточно типичный феномен.

Толпа народа, вдруг, начала не просто строить теории, но сразу перешла в нападение, объясняя, что только дураку может быть не понятно, почему два плюс два не равно четырём.

То есть, первым предположением идёт то, что дурак тот, кто сообщил об ошибке.

Вторым, что это не ошибка, а такое интересное свойство системы, которое отрицает математику, но при этом совершенно правильное.

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

Где-то там, в конце списка болтается банальный баг в софте. То есть, ошибка в коде базы данных теоретически не отрицается, но практически находится за горизонтом рассматриваемых причин. Собственная компетенция под сомнение не ставится никогда.

Почему то, что лезет сейчас, не обнаружили предыдущие поколения? Вот именно потому, что порядок поиска проблем инвертирован к правильному.

Да, чтобы сразу не влезать в споры по первому пункту. Пользователь может быть болваном, но система должна или соглашаться с тем, что два плюс два равны четырём, или говорить явно и чётко, что дополнительные условия не дают правильно провести сравнение.
vit_r: default (vit_r)
Всё больше и больше уважаю PostgreSQL. Там много весёлого, зато отсутствует игра в чистую математику. В отличие от Крутой База Данных одной Большой Фирмы.

В пятницу коллега показал очередной шедевр.

Есть условие, скажем,
WHERE
A * 100000 + B = C

Оно точно-точно выполняется с математической точки зрения, но SELECT выдаёт пустую таблицу. То есть, A,B и C - правильные, а на выходе ничего.

Что надо сделать, чтобы исправить ситуацию?


Правильно. Нужно просто добавить пустоты.
WHERE
A * 100000 + B + 0 = C

прекрасно работает и выдаёт всё, что нужно.


Какие, нафиг, монады-шмонады. Чистый дзен.
vit_r: default (vit_r)
Замечаете ли вы странности в следующем ряду?
'127'
'238'
'301'
'11Z'
'281'
'109'
'118'


Да, среди цифр затесалась буква 'Z', очень похожая на двойку.

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

Каждый раз читая посты [livejournal.com profile] ivan_gandhi, [livejournal.com profile] orleanz и других восхищённых проповедников функционального программирования, думаю: «Выглядит-то оно замечательно. Но что останется от этой красоты, после того, как туда вставить хотя бы банальную трассировку?»

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

Это не та, которая сообщает пользователю «Вася, ты дурак! А ну-ка быстро исправь бяку!»

Вася может быть в другой стране, в другом часовом поясе и вообще не понимать, о чём идёт речь.

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

И, естественно, не та, которая думает, что неправильные входные данные - правильные, в на выходе производит горы мусора.

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

Welcome to the real world, товарищи математики!
vit_r: default (vit_r)
По поводу картинки, а также по ссылкам с цитатами большинство зацепилось за слово «функциональный». Подключилась тяжёлая артиллерия в лице [livejournal.com profile] metaclass, [livejournal.com profile] ivan_gandhi, [livejournal.com profile] thesz. Другие тоже не отставали. Не хочется тут серьёзные вещи писать, но раз уж до такого дошло, пусть будет.

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

При этом совершенно не надо читать текст, я уж не говорю о том, чтобы остановиться и задуматься. Глаз выхватывает ключевые слова - и начинаем обстрел подготовленными фразами. Главное, докрасить противника до нужного цвета и впихнуть в нужную карикатуру. Если чего-то нет, скажем, что это подразумевалось между строк.

Ну так вот, мир многоцветен. Чего большинство не только видеть, но и понимать не хочет.

Синтез сложнее анализа. Всю картину целиком обозреть и понять трудно, гораздо проще засесть в окопчик локального оптимума и постреливать оттуда во всех «не познавших». Но в результате получается дискуссия глухих. Часто, глухих религиозных фанатиков.

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

Первым делом не надо думать, что я глупее. Не то, чтобы я был против, просто на реальных тестах это обычно не подтверждается.

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

В принципе, понявших было тоже не так уж мало. Наиболее близко выразил мысль [livejournal.com profile] vaddimka.
Read more... )
vit_r: default (vit_r)
ConstructiveParanoia Roman_Numbers draft 2014-04-30

Вот, собственно, и всё, что я хочу сказать по поводу стиля современных программистов в общем, functional revolution в частности, а также её проповедников [livejournal.com profile] ivan_gandhi, [livejournal.com profile] nponeccop и прочих лично.

Да, надо добавить, что одномерный код создают не только адепты функциональных языков, просто у них это выражено наиболее ярко.
vit_r: default (vit_r)
Вот как тусовка в Берлине на английском, так всякие "Наш стартап самый стартапный" или "Нафиг то, над чем люди двадцать лет думали, берёшь всякий мусор и кастуешь заклинание NoSQL". А сегодня всё на немецком и тема нормальная, и люди были не только "вчера из универа, сегодня выдумываю, а завтра мир покорю". Один мужик (вроде, этот) даже писал на Хаскеле управление в автомобиле.

Спросил, чего это, вдруг, ему разрешили. Короче, технологии продавить можно. Но только, когда у менеджеров другого выхода нет.

А ещё он в 1996 году организовал первый в Германии семантический стартап. (А потом долго выплачивал долги, после того как доткомовский пузырь лопнул и все инвесторы разбежались.)
vit_r: default (vit_r)
По поводу нетривиальных моментов у [livejournal.com profile] orleanz

Основной вопрос функционального программирования: нужно ли этим заниматься в скафандре и в гамаке, если можно всё делать по-старинке на кровати?

Profile

vit_r: default (Default)
vit_r

July 2025

S M T W T F S
   12 345
67 89 1011 12
1314 15 16171819
20212223242526
2728293031  

Syndicate

RSS Atom

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 16th, 2025 08:07 pm
Powered by Dreamwidth Studios