Pull to refresh

Прощальная записка языку программирования

Programming *Java *Scala *
Sandbox
В данной статье я бы хотел поделиться с сообществом «Хабрахабр» стихом «Письмо Онегина к Татьяне» переводом статьи от Matthias Nehlsen“«A farewell note to a programming language». Автор рассказывает о своем опыте разработки на Scala в стиле «Я к вам пишу – чего же боле?»



Небольшое отступление от переводчика:


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

Все больше и больше чешутся руки попробовать в одном из своих следующих проектов этот интересный язык. Но статьи подобные этим, заставляют сомневаться: «Да, Вирджиния, Scala сложна!», «Scala хуже, чем Java. Как минимум, для половины Java проектов», «OMG Scala is a complex language!». Пост Маттиаса тоже из этого репертуара, только с большим эмоциональным окрасом. В общем, не буду томить, перейдем к переводу.

Прощальная записка языку программирования


Дорогая Scala,

Ты помнишь, как мы впервые встретились еще в 2012 году? Твой функциональный подход мне показался свежим и необычным. В течение какого-то времени я верил, что мы созданы друг для друга. Мой первый проект оказался успешным, мне было комфортно работать, используя самое лучшее, что есть у тебя. Но как только я начал работать в командах, использующих Scala, твой сложный синтаксис начал топить меня. Поначалу мне показалось очень приятным то, что ты предлагаешь мне выполнять задачи именно тем способом, который мне нравится. Но спустя некоторое время я заметил, что ты предлагаешь это не только мне. Вместо этого ты хочешь понравится всем, одновременно предлагая все известные человечеству парадигмы программирования.

Ужаснее всего это было при работе с опытными Java-разработчиками. Да, конечно, они очень долго занимались ООП и наверное это того стоило. Но это вовсе не означает, что попытка воссоздать Java на Scala с несколько меньшим количеством шаблонного кода, является хорошей идеей. В течение более чем года работы в использующих Scala командах не было ни одного дня, когда я бы чувствал, что у нас есть общее понимание того, как надо разрабатывать систему или хотя бы единый подход к решению проблем.

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

В прошлом году используя Scala и Play Framework я написал небольшое приложение под названием BirdWatch, изначально созданное только для того, чтобы было что показать при собеседовании на работу. Но затем все приобрело свой смысл. Это выглядело так, как будто маленькая и милая бездомная собака вдруг внезапно появилась на твоем крыльце. И ты не знал, что с ней делать, но она выглядела такой голодной, что ты решил покормить ее; она решила остаться и слоняться поблизости, и прежде чем ты это понял, ты заметил за собой, что ищешь постоянных встреч с этой собакой. Ты знаешь о подобных историях, это мило; впрочем, я и не жалуюсь.

Но я никогда не чувствовал себя обязанным много работать над реализацией серверной стороны, в частности, потому, что уже достаточно времени потратил на то, чтобы писать на Scala. Кроме того, пока реализация на стороне сервера выглядит обманчиво простой, в действительности же все сложно понять в деталях, потому что это требует реализации на библиотеке Iteratee. На мой взгляд, эта библиотека сложна для понимания; еще труднее объяснить ее другим людям и почти невозможно понять исходный код. В целях должной осмотрительности я предпочитаю полагаться только на исходный код библиотеки, который прочитал и хорошо понял. В этом же случае я не мог пофиксить даже самый мелкий баг, и это был красный свет для меня.

Я потратил много времени, работая с различными клиентами. Первоначально я работал с версией AngularJS / JavaScript, затем с другой версией ReactJS / JavaScript и даже с ReactJS/ ScalaJS.

Все это время я флиртовал с Clojure, поэтому для меня это было следующим логическим шагом написать клиент, используя ClojureScript и Om. Я сразу же отказался от предыдущего. Не потому, что он мне не нравился, а потому, что мне настолько понравился опыт использования ClojureScript, что я всецело захотел отказаться от тебя, дорогая Scala, в пользу all-Clojure.

Поэтому все так. Я открыл для себя другой язык программирования, и впервые чувствую, будто я нашел свою родственную душу, ровно такую, какой может стать язык программирования. Мне очень жаль, но я должен следовать зову своего сердца.
Вы можете спросить, а почему я все это пишу здесь? Хороший вопрос. На днях ко мне подошел рекрутер по поводу проекта на Scala, это случается настолько часто, что я даже не забочусь о том, чтобы взглянуть, для кого вообще этот проект. Но в этот раз все было иначе. Я почувствовал, что необходимо покончить с этим полностью. Принимая во внимание мою карьеру, я решил, что ты, Scala, больше не будешь ее частью, независимо от того, насколько высоко будет спрос и насколько впечатляющей будет ставка на фрилансерской площадке.

Я буду счастливее, работая с проектами Clojure. Хотя это приводит меня к неутешительным наблюдениям, сделанным на Conj. Я был удивлен количеством людей, которые говорили, что им жаль, что они не могут кодить на Clojure, чтобы хотя бы оплачивать арендную плату.

Подводя итог, дорогая Scala, я могу сказать, что между нами все кончено. Речь вовсе не о перерыве, я нашел партнера получше. И это не значит, что кто-то еще должен вслепую последовать моему примеру. Все это для того, чтобы люди могли задуматься о том, какой язык в настоящее время они используют для работы, и если они недовольны — могут искать что-то другое, подходящее для них самих. Я ничего не знаю о жизни других людей, но моя жизнь слишком коротка, чтобы тратить ее на работу с тем, что я не люблю.

Спасибо, Маттиас.


P.S.

Мне кажется, что большинство этих статей авторы написали не для того, чтобы отпугнуть людей, интересующихся Scala. Скорее, чтобы заставить задуматься о том, что это не просто «Java с другим синтаксисом». Это совсем другие парадигмы и подходы. А может даже и ниши применения.

%HabraUser%, а что ты думаешь по этому поводу?

[UPD]:
Исправил перевод с замечаниями хабраюзера @Vedomir, за что ему спасибо.
Tags:
Hubs:
Total votes 39: ↑25 and ↓14 +11
Views 36K
Comments 17
Comments Comments 17

Posts