Это все написано для недалекого С-программиста. Ты попробуй написать такое же для Haskell-программиста, заодно расскажи ему что его системы типов в Clojure сделаны лучше и изящней.
defn jobs-distribution-live cluster util/transformed :tree cluster fn :keys peers jobs when-not or empty? peers empty? jobs jobs-distribution peers jobs
Первый я легко паршу, а на втором мозг начинает закипать, как процессор когда видит Flash.
Если Haskell-программисты просто не любят скобки (именно скобки, а не динамическую типизацию или еще что-то другое), то я не вижу чем они лучше недалекого С-программиста. Я бы сперва посмотрел на такого программиста, впрочем, и выслушал его аргуметны.
Я же не говорю что их надо именно любить или не любить. Я говорю, что если человек делом занимается, то на такие мелочи ему точно должно быть пофиг.
>> Любой язык надо учить. Если ты не знаешь Ruby, открываешь исходники на Ruby и ничего не понимаешь. Радости от того, что это выглядит похоже и знакомо, немного - это только иллюзия, на самом деле ты по прежнему ничего не понимаешь.
Orly? Если код не содержит вызовов незнакомых внешних библиотек и написан нормальным человеком для людей, а не гиком-фанатом, то любой c-подобный синтаксис вкуривается за пару часов. Хотя бы на уровне понимания того, что тут происходит. То есть "читаю со словарем"
Но зато потом начинается баттхерт уже от самого языка и определения где что, где функция, где атом, где параметры, где тело функции, где импортированный элемент, где ключевое слово/встроенная форма. А когда начинаются макросы, особенно хитрые и не традиционные (не with-resource и подобное), без консультации с кодом вкурить, что тут вообще происходит, становится нереально.
Лисповский синтаксис переносит много бремени на семантику, в то время как более человеческий синтаксис разгружает мозг программиста, помогает ему понять код еще интуитивно, без сознательного колупания в скобках, а просто по контуру программы и зацепившись за значки, с которыми связаны уже безсознательные условные рефлексы. В идеале это должно разгружать мозг программиста для осмысления уже самой задачи, хотя, с другой стороны, это дает больше возможностей для Homo PHPicus не включать мозг вообще. Я же хочу, чтобы язык мне помогал, я ленивый :)
Большинство "программистов" даже не могут понять где синтаксис, где проверка типов, а где семантика - у них всё это сливается в кашу. С этого, наверное, и стоит начать просвящение.
В догонку: многие считают что тайпчекинг для проверки корректности и тайп-инференс для эффективной генерации кода неразрывно связаны, хотя я это неправда.
Лиспам вообще жирный плюс (ИМХО) за простоту синтаксиса. Чем меньше в синтаксисе возможностей реализовать что-либо более, чем одним способом (e.g. возможность опускать скобки при вызове функций в Perl/Ruby), тем выше средняя строгость, и проще и компилятору/VM, и человеку, который этот код поддерживать будет.
Смотрите комментарий выше, VM/компилятор и синтаксис никак не связаны: VM работает с байткодом, генерация кода в компиляторе работает с деревом промежуточного представления кода. Ни следа синтаксиса ни там ни там уже не остаётся.
Я писал на языках с самыми разными синтаксисами (Pascal, asm, C*, Scheme, Perl, Ruby, OCaml, ATS, Clean, Haskell, Idris..) и продолжаю считать, что у лиспов синтаксис самый отвратительный. В угоду простоты парсера человеку приходится делать работу за компьютер, расставляя скобочки там, где другие языки отлично справляются без них. Все равно что на XML программировать. Тьфу.
Comments 296
Ты попробуй написать такое же для Haskell-программиста,
заодно расскажи ему что его системы типов в Clojure сделаны лучше и изящней.
Reply
Reply
Но это все для них не работает, потому что без скобок все равно лучше чем со скобками.
Reply
(defn jobs-distribution-live [cluster]
(util/transformed (:tree cluster)
(fn [{:keys [peers jobs]}]
(when-not (or (empty? peers) (empty? jobs))
(jobs-distribution peers jobs)))))
defn jobs-distribution-live cluster
util/transformed :tree cluster
fn :keys peers jobs
when-not or empty? peers empty? jobs
jobs-distribution peers jobs
Первый я легко паршу, а на втором мозг начинает закипать, как процессор когда видит Flash.
Если Haskell-программисты просто не любят скобки (именно скобки, а не динамическую типизацию или еще что-то другое), то я не вижу чем они лучше недалекого С-программиста. Я бы сперва посмотрел на такого программиста, впрочем, и выслушал его аргуметны.
Я же не говорю что их надо именно любить или не любить. Я говорю, что если человек делом занимается, то на такие мелочи ему точно должно быть пофиг.
Reply
Orly? Если код не содержит вызовов незнакомых внешних библиотек и написан нормальным человеком для людей, а не гиком-фанатом, то любой c-подобный синтаксис вкуривается за пару часов. Хотя бы на уровне понимания того, что тут происходит. То есть "читаю со словарем"
Reply
Reply
Лисповский синтаксис переносит много бремени на семантику, в то время как более человеческий синтаксис разгружает мозг программиста, помогает ему понять код еще интуитивно, без сознательного колупания в скобках, а просто по контуру программы и зацепившись за значки, с которыми связаны уже безсознательные условные рефлексы. В идеале это должно разгружать мозг программиста для осмысления уже самой задачи, хотя, с другой стороны, это дает больше возможностей для Homo PHPicus не включать мозг вообще. Я же хочу, чтобы язык мне помогал, я ленивый :)
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Leave a comment