Что интересно.

Jan 16, 2011 00:12

Ветка обсуждения "Почему Лисп?" в ru_lisp.

Они первые начали. ;)

ЖЖ, lisp

Leave a comment

grundik January 16 2011, 10:14:52 UTC
Ты демагогизируешь. Стандарт схемы гораздо меньше, а это тоже лисп. Описание синтаксиса лиспа занимает страницу, а у хаскеля постоянно "а вот есть специальные функции типа +, которые безо всяких амперсандов можно юзать как ". Плюс в стандарт лиспа входит стандартная библиотека, очень очень и очень толстая.

То, что лисп проще, показывается простым фактом, о котором я уже упоминал - я (и не только я) начал что-то писать на лиспе после 20 минут. На Хаскеле такого не получается.

Зачем ты наезжаешь на такой прекрасный инженерный язык, как лисп, я не понимаю :)

Reply

grundik January 16 2011, 10:25:06 UTC
С другой стороны, когда мне надо было поправить баги в хаскельной программе, я это сделал довольно быстро. Но для правки багов зачастую не нужно особо разбираться.

Reply

thesz January 16 2011, 10:28:22 UTC
Так и для "начать что-то писать" тоже не надо особо разбираться.

Reply

grundik January 16 2011, 10:58:28 UTC
Э не, категорически не согласен.

Если в итоге должно получиться что-то рабочее, то надо разобраться не только с синтаксисом/семантикой, но и с best practicies, философией вообще, тенденциями, особыми/крайними местами и так далее. Чтобы, например, после полугода разработки не обнаружить, что требования по performance при выбранной архитектуре удовлетворить не выйдет, ибо язык такой (ну или подставь любой другой пример, когда незнание матчасти приводит к локальному фэйлу).

А багфикс - это багфикс. Архитектуру уже выбрали и закодили, структуры данных тоже не поменяешь и так далее и тому подобное. Нужно просто понять код, а затем пофиксить. Соответственно, открываешь код, и разбираешься только с тем, что непонятно (а очень многое интуитивно понятно, ибо ты же знаешь, что оно как-то работает и что-то делает).

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

Reply

thesz January 16 2011, 11:09:42 UTC
>Если в итоге должно получиться что-то рабочее, то надо разобраться не только с синтаксисом/семантикой, но и с best practicies, философией вообще, тенденциями, особыми/крайними местами и так далее.

Какого лешего!

Слушай, за те 20 минут, что ты "начал писать хоть что-то", ты что, со всем этим разобрался?

Reply

grundik January 16 2011, 11:42:44 UTC
Тут где-то произошёл неверный переход ( ... )

Reply

thesz January 16 2011, 12:00:38 UTC
Я не зациклился на цифре 20 минут.

У тебя произошёл неверный переход, если уж на то пошло. В одном месте (про Лисп) ты говоришь, что за 20 минут начал что-то писать, в другом месте ты говоришь, что чтобы что-то писать, надо изучить лучшие подходы и тп и что надо разбираться. Это другое место очень интересно "Роман: я поправил баг в хаскельной программе, но это просто, особо разбираться не надо. Я: так и чтобы начать что-то писать тоже особо разбираться не надо. Роман: э, нет, разбираться надо."

>На хаскеле за 20 минут я таки начать не могу писать, ибо я за 20 минут не могу выучить синтаксис в мере, достаточной для понимания примеров и чужого кода.

Позволь мне не поверить. Ну не может этого быть.

Reply

grundik January 16 2011, 12:52:23 UTC
Повторяю - чтобы пофиксить баг, не надо придумывать дизайн. Он уже придуман, просто делай так же, как уже написано. Если пишешь сам, то дизайнить будешь сам. А дизайнить сложнее, чем просто код писать.

Насчёт "позволь не поверить" - а зачем мне врать-то? :)
Я реально не могу читать код на хаскеле, потому что не могу запомнить его синтаксис. Нет, я наверняка СПОСОБЕН выучить синтаксис, но тем не менее имею право считать его сложным, если уж ПО ФАКТУ я его не могу выучить за пару часов.

PS: я Руслан ;)

Reply

thesz January 16 2011, 13:00:04 UTC
>Повторяю - чтобы пофиксить баг, не надо придумывать дизайн. Он уже придуман, просто делай так же, как уже написано. Если пишешь сам, то дизайнить будешь сам. А дизайнить сложнее, чем просто код писать.

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

Я теперь этим даже на Си пользуюсь.

>Насчёт "позволь не поверить" - а зачем мне врать-то? :)

Для красного словца, например. Или чтобы остаться при своём мнении.

>Я реально не могу читать код на хаскеле, потому что не могу запомнить его синтаксис. Нет, я наверняка СПОСОБЕН выучить синтаксис, но тем не менее имею право считать его сложным, если уж ПО ФАКТУ я его не могу выучить за пару часов.

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

>PS: я Руслан ;)

Прошу прощения, я поторопился.

Reply

grundik January 16 2011, 14:08:40 UTC
Про дизайн интересно, но сначала про сложность.

По-моему я имею право говорить, что "штанга в 200 кг - тяжёлая". То, что для тебя она не тяжёлая, не делает её лёгкой. По хаскелю всё ровно то же самое.

А теперь про дизайн. Вот есть у меня задача. Я её декомпозировал, получил три структуры данных со связями один-к-одному и пять функций для работы со структурами (функции реализуют некую валидацию данных плюс некую BL, например, в одной из структур записаны права на изменение других структур). Написал всё. И тут оказалось, что удобнее будет пять структур со связями один-ко-многим и многие-ко-многим, ну и действий над ними поменьше (update делается как каскад remove, add), то есть функций теперь надо всего четыре.

Как мне помогают типы в этом случае?

Reply

thesz January 16 2011, 15:04:29 UTC
>И тут оказалось, что удобнее будет пять структур со связями один-ко-многим и многие-ко-многим, ну и действий над ними поменьше (update делается как каскад remove, add), то есть функций теперь надо всего четыре.
>Как мне помогают типы в этом случае?

Как минимум, меньше писать тестов. Не забудешь, где надо заменить update на remove+add.

Однако, ты описываешь вырожденный случай.

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

Reply

grundik January 16 2011, 15:20:27 UTC
> Подсистема, дизайн которой ты поменял, взаимодействует с другими системами, в которых тебе надо поменять по минимуму.

Это если у меня дизайн такой, что оно так :) Ну хотя на таком уровне в принципе пофигу на технологию, да.

Reply

thesz January 16 2011, 15:24:10 UTC
У тебя коллеги и подчинённые есть?

Reply

grundik January 16 2011, 15:52:15 UTC
Конечно. АПВС?

Reply

thesz January 16 2011, 15:53:07 UTC
Как они связаны с твоим кодом?

Reply

thesz January 16 2011, 10:26:24 UTC
Да я пользователей Схемы-то и не вижу. Всё вокруг товарищи на CL ( ... )

Reply


Leave a comment

Up