Scala для младших программистов?

мы рассматриваем Scala для нового проекта в нашей компании. У нас есть младшие программисты с только знаниями PHP, и мы сомневаемся, что они могут обрабатывать Scala. Каковы ваши мнения? Некоторые говорят: "Scala - это сложный зверь!", Некоторые говорят: "Это легко, когда вы его получили". Может быть, у кого-то есть реальный опыт?

Ответ 1

"Мои коллеги не поймут, что Scala" одновременно завышает свои трудности и оскорбляет ваших коллег.

  • Scala не так сложно. Это просто еще один язык программирования. Любые проблемы, с которыми младшие программисты имеют Scala, будут иметь более или менее те же проблемы, с которыми они столкнулись бы с любым другим языком.

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

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

Ответ 2

Я предполагаю, что Scala может использоваться как язык "начинающих". Несмотря на то, что за этим стоят сложные идеи, вам не нужно использовать/объяснять их в начале. Если вы объясните чистое ОО с помощью Scala, я бы сказал, что он прямолинейный и понятный. Поскольку Scala уменьшает количество накладных расходов кода на других языках, может быть, даже легче освоить понятия с помощью Scala, чем с Java/С++.

Основным недостатком, который я вижу с Scala в качестве языка начинающих, является отсутствие документации. Не ошибитесь, официальный документ Scala очень хорош, а также несколько доступных книг очень полезны, чтобы получить детали языка, но они не были написаны для новичков. Например, в Java вы найдете сотни книг под названием "Learning OO с Java", которые вы не найдете для Scala, который может быть шоу-стопом.

Как упоминал Ханнес, только вводятся новые языки в исследовательских проектах, а не в продуктивные или даже флагманские проекты. Если у вас есть какие-то юниоры, это делает ситуацию еще лучше, возьмите какой-то внутренний инструмент, который вам всегда нужен и нужен, и пусть они создают его во время исследовательского проекта. Это также хорошая возможность поэкспериментировать с различными процессами разработки. И ваши юниоры, скорее всего, будут подвергнуты сомнению и предоставят хороший прототип и очень хорошее доказательство, если Scala можно использовать в качестве языка для начинающих.

Ответ 3

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

Ответ 4

Я бы отстаивал это. Но при условии, что у вас есть четкие рекомендации относительно того, какие языковые функции приемлемы для вашей команды. Например, кодирование в основном в императивном стиле (который хорошо знаком для людей, обучающихся на Java) или, возможно, ограничивает использование рекурсии или закрытия.

Также планируйте, чтобы пожилые люди наставляли юниоров. Это может принимать форму любой комбинации: парного программирования, обзоров кода, информационных сессий, регулярных дискуссионных форумов и т.д.

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

Ответ 5

Если вы решите пойти по этому маршруту, возможно, им будет проще использовать Scalate framework, чем более традиционный, например Lift, поскольку он позволяет смешивать HTML с Scala, так же, как работает PHP.

Ответ 6

Scala - очень "нормальный" язык программирования. Любой программист должен уметь изучать этот язык. Люди, которые испытывают трудности с обучением Scala, в основном испытывают с императивными языками и удивляются функциональным концепциям. Поэтому неопытные программисты могут научиться этому еще быстрее. На мой взгляд, не должно быть проблем, чтобы назначить его юниорам. С управленческой точки зрения я бы назначил младшего и старшего разработчика в качестве команды (или более того, в зависимости от размера проекта).

Ответ 7

Моя первоначальная мысль заключалась в том, что Scala будет слишком тяжелым для них, но я думаю, потому что Scala является гибридом OO/Imperitave/Functional, можно было бы ввести их в OO/Imperative часть Scala до тех пор, пока их удобство, но опять же у них, вероятно, будут плохие привычки PHP в Scala, так как Scala авторы в основном предпочитают функциональный стиль над императивным.

Итак, это может сработать, но я бы сделал это для исследовательского проекта и, безусловно, не для флагманского.

Изменить: Возможно, это также следует сказать: похоже, что функциональные/OO-гибриды, такие как Scala, становятся все более популярными, особенно из-за того, как функциональные языки обрабатывают параллельную обработку, а не то, как мы это знаем на языках, подобных Java. Количество ядер, обнаруженных в чипе, быстро растет, поэтому это важно. Однако, говоря о PHP, кажется, что вы разрабатываете сценарии веб-сервера, где потоковая передача менее важна. PHP даже не имеет потоков.

Это вызывает еще одну точку. Вы хотите разработать веб-приложения Scala, т.е. Lift. Если это так, у вас есть удвоенная кривая обучения, которая также должна быть рассмотрена.

Ответ 8

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

Но то, что вы действительно им даете, - это возможность узнать что-то действительно крутое и уникальное. Ведьма может быть хорошей мотивацией. Scala имеет много классных вещей. Если вы можете обрабатывать Scala, вы можете обрабатывать множество других вещей.

Поговорите с программистами (все они) и скажите им, почему вы хотите использовать scala. Спросите, есть ли у них мотивация, чтобы сделать и узнать что-то, что не все могут сделать и пройти лишнюю милю?

Если они идут с ним!

Ответ 9

Представьте, что вы выбрали Java и спросили, могут ли они обрабатывать Java. Если вы ответили им, то они могут, возможно, обработать Scala.

Scala лишь незначительно сложнее из-за:

  • Нет большой поддержки IDE. Поддержка варьируется от плохого до хорошего. Не обязательно проблема для программиста PHP.
  • Документация не такая богатая, как Java

И Java, и Scala имеют новые проблемы для программиста PHP (JVM, новые библиотеки, скомпилированный язык, статически типизированный).

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

Ответ 10

Да, если...

  • Стратегическое решение принято с Scala
  • Компания может справиться с хитом (финансовым и временным), который будет получен с крутой кривой обучения.

Нет, если...

  • Никакие старшие программисты на Java, С# или С++ не могут быть добавлены в проект.
  • Невозможно найти программиста Scala, чтобы действовать как ведущий
  • У программистов нет терпения, чтобы изучить Scala или иметь дело с языком, где Jars (библиотеки) разбросаны повсюду, а не в одном или двух аккуратных пакетах, таких как PHP.

* Примечание: если младшими программистами были С++, С# или разработчики программного обеспечения Java, а не PHP, тогда мой ответ был бы другим, как, Go for it!

Ответ 11

Я бы не рекомендовал его. Мой опыт Scala заключается только в проектах homebrew, но я бы предположил, что в настоящее время паршивая поддержка IDE, довольно частые изменения API и очень гибкий синтаксис (который позволяет повесить себя и всех остальных, участвующих в проекте), вызовет много проблем в более крупном, более официальном проекте.

Ответ 12

Дайте им IntelliJ и выбросьте их в глубину.

Ответ 13

Вот сообщение в блоге, которое я недавно наткнулся на:
http://james-iry.blogspot.com/2008/07/java-is-too-academic.html

Это показывает, что даже Java может быть слишком академичным, чтобы его понимали программисты, не имеющие опыта в функциональном программировании. С другой стороны, Scala позволяет писать код "императивный путь", поэтому вы можете избежать всех материалов FP, если вы этого не понимаете. На мой взгляд, Scala гораздо более лаконичен, чем Java, поэтому я думаю, что "младший программист" должен иметь возможность обрабатывать его.