Leave a comment

maxim November 25 2013, 14:22:52 UTC
Это все написано для недалекого С-программиста.
Ты попробуй написать такое же для Haskell-программиста,
заодно расскажи ему что его системы типов в Clojure сделаны лучше и изящней.

Reply

tonsky November 25 2013, 14:26:16 UTC
Я специально только синтаксиса касаюсь здесь, выношу все остальные особенности за скобки.

Reply

maxim November 25 2013, 14:33:00 UTC
Много хаскель программистов тоже не любят скобки.
Но это все для них не работает, потому что без скобок все равно лучше чем со скобками.

Reply

tonsky November 25 2013, 14:36:58 UTC

(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

maxim November 25 2013, 14:45:16 UTC
Ну это да, правда, существует также и легенда об Упоротом Хаскель Программисте :)

Reply

sorhed November 25 2013, 15:18:15 UTC
Вооот. То есть это исключительно вкусовщина. Потому что второе я понял за пять секунд, а на первом взгляд замылился, пытаясь считать скобки и в конце концов мозг сдался.

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

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

Reply

ext_297426 November 25 2013, 15:38:58 UTC
Кажется, первый вариант сводится ко второму с помощью подходящей цветовой схемы в редакторе :)

Reply

tonsky November 25 2013, 17:35:58 UTC
Я прекрасно понимаю и принимаю, что кому-то нравятся скобки, кому-то нет. Я вот нигде не говорю, что мне, например, прям нравятся. Я говорю, что нормальному профессионалу скобки или не скобки - все равно. О других вещах надо думать. Какие свойства инструмента помогают сделать меньше ошибок, например.

Reply

sorhed November 25 2013, 17:37:27 UTC
> Какие свойства инструмента помогают сделать меньше ошибок, например.

Иммутабельность и типизация, разумеется.

Reply

tonsky November 25 2013, 18:13:09 UTC
Ну вот, а ты скобки на первое место ставишь, хипстер что ли

Reply

sorhed November 25 2013, 18:19:58 UTC
Хипстер. Ты же на ШРЕВТЫ в интернете внимание обращаешь? Хотя, казалось бы, функциональность одинаковая, и если что, можно CSS подкрутить.

Reply

vinslivins November 25 2013, 19:09:35 UTC
плюс один. можно было б постараться, и топлевел конструкции хотя б сделать без скобок. пускай уж лучше с добавлением =

Reply

grundik November 26 2013, 06:17:21 UTC
> можно было б постараться, и топлевел конструкции хотя б сделать без скобок

Зачем ломать то, что работает?

Лиспы - это чрезвычайно консистентные и практичные языки, в этом их прелесть. Скобки там не просто так, а несут чёткую практическую функцию. Убери скобки - и часть прелестей лиспа уйдёт.

The following defines a J function named "avg" to calculate the average of a list of numbers:
avg=: +/ % #

Зато скобочек нет, ога.

Кстати, король скобочек на данный момент - это javascript, а вовсе не традиционные лиспы.

Reply

vinslivins November 26 2013, 19:34:45 UTC
ничего никуда не уйдёт.

Reply

lelf November 25 2013, 17:25:06 UTC
Закипать-то он закипает, только вот тут выкинуты даже нужные скобки, и не хаскель это ни разу. Лишние скобки они не любят (и правильно делают), но структуру тем не менее там в коде сразу видно

Reply

vinslivins November 25 2013, 19:17:50 UTC


defn jobs-distribution-live *cluster
util/transformed (:tree cluster)
fn *{:keys peers jobs}
when-not (or (empty? peers) (empty? jobs))
jobs-distribution peers jobs

Reply


Leave a comment

Up