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

Jan 16, 2011 00:12

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

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

ЖЖ, lisp

Leave a comment

(The comment has been removed)

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

grundik January 16 2011, 11:25:08 UTC
Я юзаю racket, то есть схему на стероидах ( ... )

Reply

thesz January 16 2011, 11:48:08 UTC
>Про инженерные языки. Ты предлагаешь хаскель в качестве такового? Он не годится.

Почему?

>Вообще, я имел в виду вот это: a + b, но при этом div a b, но можно и a `div` b, ну и + a b тоже можно (но я уже забыл как так сделать) - ну что это такое? Где консистентность?

(+) a b, а также (a +) b и (+ b) a. Это всё удобные сокращения, чтобы не плодить безымянные функции, где можно без них обойтись.

>То, что в лиспе (common lisp) есть спецформы - это просто нюанс. Любому человеку можно сказать, что на первом месте в sexp-е находится имя функции, а остальное - это аргументы. Остальные детали не мешают понимать код.

Ох ты. И вдруг получается, что не всякую функцию можно передать аргументом. zipWith3 if conditions trues falses не работает. Действительно, нюанс.

>Про амперсанды - Сергей, ну вы что же меня в выходной заставляете искать всякое, да ещё и во флудерском споре? :) Имейте совесть.

А когда ещё? Сейчас самое время.

Reply


Leave a comment

Up