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

Sharp vs. Blunt Instruments содержит мнение автора о мощных и ограничивающих языках программирования.

Автор сравнивает Ruby и Java. Он приходит к выводу, что плохие программисты могут очень сильно извратить ограниченный язык и запустить очень кривую архитектуру. И на выходе получается, что одинаковые средние программисты на Ruby пишут сносные решения, а на Java отвратительные. И пример автора показывает, что бессмысленно ограничивать язык.

В какой-то мере я согласен с автором. Я не знаю Ruby, поэтому могу только немного сравнить Clojure и Java. В целом несмотря на количество разнообразных средств в Clojure для запутывания кода, одни только макросы чего стоят, программы на Clojure у меня получались проще для понимания чем на Java. Бонусом в Java идет очень серьезная поддержка со стороны IDE и благодаря строгой типизации устранение некоторых багов. При этом типизацию надо использовать аккуратно и ну путать с наследованием. Наследование часто очень сильно запутывает и усложняет код. Функции второго порядка, не идут ни в какое сравнение по сложности с плохо структурированной иерархией классов.

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