[Из песочницы] Прощальная записка языку программирования
В данной статье я бы хотел поделиться с сообществом «Хабрахабр» стихом «Письмо Онегина к Татьяне» переводом статьи от 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%, а что ты думаешь по этому поводу?