Да, Вирджиния, Scala сложна!
перевод
Для начала, позвольте уточнить, что я являюсь большим любителем и сторонником Scala вот уже 5 лет. Мною были написаны книги и статьи о Scala. Также я работал со множеством компаний, начавших использование Scala и Lift и проводил code review огромного количества Scala — проектов. Раньше я думал, что Scala — это просто. Она была и продолжает быть лекарством от многих проблем Java. С точки зрения “сложные или вообще невыполнимые вещи в Java довольно просты в Scala”, Scala — довольно простой язык. Работа с коллекциями очень проста. Изоляция бизнес-логики делает программы гораздо более поддерживаемыми и невероятно простыми, чем если бы они писались на Java.
Так почему же Scala сложна? Вот лучшее, что я смог придумать:
Есть несколько типов команд, для которых Scala, определенно, является более лучшим вариантом, чем Java, Ruby или какой-нибудь другой язык. Twitter — отличное тому доказательство. Им необходим четкий, типобезопасный, высокопроизводительные язык и среда. И Scala предоставила им все это. Foursquare использует сложность Scala для своего механизма фильтрации. Вы должны быть достаточно хороши, чтобы суметь освоить Scala и иметь успех в Foursquare.
Но если у вас команда с навыками, близкими к средним, выбор Scala может и не быть оптимальным (это зависит от управления… требуется ли использование challenging-черт Scala для фильтрации и улучшения команды?) Будучи средненькой компанией, с точки зрения обучения, Scala будет стоить вам отказа от уже существующих разработчиков, отсутствия паттернов. Вам понадобится сильный технический директор или архитектор для выработки паттернов, а не выделения их из книг или IDE. И количество таких средних компаний с довольно сильными техническими директорами или архитекторами, мягко скажем, невелико.
Итак, как же выяснить будет ли Scala простой для адаптации в вашей организации:
- В вашей компании есть докладчики на JavaOne, OSCON, Strange Loop, QCon — Scala будет проста
- Заобеденные дискуссии содержат в себе критерии для перехода от обычного разработчика к старшему — Scala будет сложна
- Если придется, ваши разработчики смогут писать код в NotePad — проста
- Ваши разработчики безучастны или говорят 3 “Hail Marys” когда слышат имя “Zed Shaw”: Scala == Hard
- Разработчики поголовно следят на Dean Wampler’ом в Твиттере: Scala — проста
- Ваши разработчики приходят на работу в 9.15 и уходят до 6ти, не проверяя свой email — Сложна
Конечно, у вас могут быть свои мысли на это счет. Но я, определенно, согласен с утверждением, что Scala для средней команды сложна. И не только сложна, но еще может и не принести ни в ближайшем, ни в дальнейшем будущем каких-либо преимуществ. Тех, что могла бы принести командам, состоящих из участников с 95% мастерства.
И еще несколько мыслей:
- Да, система типов в Scala очень мощная и может привести к отличной красоте кода, как в Scala collections.
Посмотрите stackoverflow.com/questions/1722726/is-the-scala-2-8-collections-library-a-case-of-the-longest-suicide-note-in-histo и www.scala-lang.org/docu/files/collections-api/collections-impl.html
Но существует разница между потребностями дизайнеров языков/библиотек и разработчиков средних компаний. И отсутствие подобного разделения в Scala влечет трудности для последних. Лично я не думаю, что смог бы выразить идеи в Lift настолько четко и мощно на каком-либо другом языке. Поэтому, будучи дизайнером библиотеки, я люблю Scala. Но как я, так и многие люди, не считающие Scala сложной — не середнячки. И 11-летний пацан, пишущий на Scala также находится не на середине.
- Да, улучшение ScalaDocs, обеспечивающее “простой” и “архитектурный” просмотр может явиться большой победой. Но это все равно всего лишь точка старта, но никак не конечная.
- Я однозначно отвергаю аргумент “отлично, тогда мы найдем более профессиональных разработчиков”. Нам стоит решать проблему “Scala is hard”, работая над улучшением компетентности разработчиков вцелом (одни, кто сможет читать сигнатуры типов, другие — выражать свои программы используя математические подходы и т.д.), но мы отдаляемся от сути. А суть в том, что Scala не так хорошо подходит для начала революции в обучении, образовании или найме, как подходит для повышения профессионализма среднего разработчика, с целью перестать быть для него сложной.
- Я сомневаюсь, что тот, кто читает это или мой Твиттер является среднестатистическим разработчиком и Paul Snively, Вы далеко не средний, и даже не пытайтесь!
5 сентября 2011, 08:23
30
комментарии (43)