Итак, в моем посте (прим.
Да, Вирджиния, Scala — это сложно! ) Я согласен, что Scala слишком сложна для большинства Java-разработчиков.
Этот пост вызвал много дискуссий, большая часть которых исказила его смысл.
Сейчас пишу снова, надеясь объяснить, о чем, собственно, я говорил и зачем мне все это нужно.
Но сначала обо мне.
Меня зовут Дэвид Поллак.
Я являюсь активным членом сообщества Scala с ноября 2006 года.
Я основатель проекта Lift. Стоит упомянуть еще несколько важных моментов:
- Я пишу код Scala непрерывно дольше, чем кто-либо за пределами EPFL. Лозаннский политехнический институт ).
[Обновлять - @propensive и Билл Веннерс участвуют в сообществе Scala дольше, чем я.
]
- Я организовал первую конференцию Scala в 2008 году.
Скала взлетает и продолжают осуществлять это по сей день.
- Написал больше строк кода на Scala (более 250 тысяч), чем кто-либо на планете.
- Написал популярную книгу «Введение в Scala: Начало Scala».
- За последние пять лет я более 10 000 раз публиковал сообщения на форумах Scala и Lift по темам, непосредственно связанным со Scala и Lift (это означает, что я общался с массой разработчиков).
- Я основал проект веб-фреймворка Lift и написал значительную его часть, включая разработку основного API. Lift — один из самых популярных фреймворков, основанный на Scala и первый широко известный Библиотека Скала.
- За последний год просмотрено более полумиллиона строк кода Scala.
- Я зарабатываю на жизнь консалтингом, в основном для Scala и Lift, поэтому активно участвую во многих проектах.
- За последние 5 лет провел более 25 презентаций по Scala и Lift.
- Обучил сотни людей использованию Scala и Lift в небольших командах.
- Представлял Scala, прямо или косвенно, более чем половине клиентов, перечисленных на домашней странице TypeSafe. Xerox, Siemens, Sony и прочие киты ).
Я разговаривал с достаточным количеством людей, использующих Scala или планирующих это сделать, чтобы накопить большой объем данных для анализа факторов успеха Scala».
Но это тем не менее говорит о том, что люди, употребляющие риторика с персонализацией в качестве аргумента - не имеют веса в данной дискуссии.
[Обновление: перечитав пост туман 'ах.
Я неправильно его понял.
Думать, туман и я пришел к тем же выводам.
Я остаюсь при своем мнении, не объявляя его истиной в последней инстанции.
Однако прошу прощения за резкость туман 'ты и его пост!] После всей этой подготовки позвольте мне подвести итог:
- Scala не является подходящим языком для большинства разработчиков Java и не может считаться заменой Java, поскольку по крайней мере для половины разработчиков Java сложность Scala сводит на нет ее преимущества.
- Java не является подходящим языком для большинства разработчиков PHP и не может считаться заменой PHP, поскольку по крайней мере для половины разработчиков PHP сложность Java сводит на нет ее преимущества.
Я не говорю, что считаю Scala сложным.
Однако я вижу много разработчиков, для которых Scala сложен, и изложил свои аргументы.
Для этого класса разработчиков затраты на Scala перевешивают ее преимущества.
Обсуждение
Одна из вещей, в которых я особенно слаб, — это правописание.Мой мозг просто не может запомнить написание слов.
Когда я был редактором студенческой газеты, один из журналистов бросил мне в лицо фразу о том, что орфографии не знает только ленивый (это был 1985 год. до проверки правописания).
Я написал интеграл на доске (это было до появления белых досок) и попросил их решить его.
Она сказала: «Это математика… это сложно… И я говорю о такой простой вещи, как правописание».
Что касается меня, я могу решать интегралы во сне, и я не смог бы правильно написать слово, если бы от этого зависела моя жизнь.
У разных людей разные навыки.
Разные люди ценят разные вещи.
Существует целый класс людей, которые любят компьютеры и любят писать код. Я среди них.
И есть класс людей, которые не поставили бы программирование в топ-5 своих любимых занятий.
Многие программисты выбрали карьеру в области разработки программного обеспечения, но им не хватает сочетания природных способностей и желания.
Существовать школы , которые развивают эти способности и обеспечивают мотивацию.
Но никакие блоггеры и хвастовство не смогут этого изменить.
Для тех, кому не хватает естественных способностей к программированию и интереса к личностному росту, Scala является громоздкой.
И если на Scala будет слишком большая эта нагрузка (читай: провальные проекты Scala), Scala перестанет расти, что является серьезной неоптимальной ситуацией для таких людей, как я, которые инвестировали более 600 000 долларов в экосистему Scala. Подробнее о мотивации в конце поста.
Одним из ключевых аргументов против моего поста «Вирджиния» было то, что мы должны использовать всех Java-разработчиков как есть, потому что Scala не настолько лучше, чтобы вызывать значительный рост общего уровня этих программистов.
Я процитирую себя:
- Аргумент я отвергаю: «Ну тогда найдите программистов получше».
Мы могли бы решить проблему сложности Scala, улучшив общее качество разработчиков (для тех, кто понимает сигнатуры типов, может математически описывать свои программы и т. д.), но это не так.
Дело в том, что Scala не настолько лучше, чтобы произвести революцию в обучении.
, образование и найм и, таким образом, изменят качество среднего разработчика настолько, чтобы сделать его доступным для этого разработчика.
Именно поэтому я уже много лет активно продвигаю Scala. Все дело в том, что мы изучаем Scala определенный тип людей .
К этому типу не относятся те, кто не хочет учиться, и те, у кого нет возможности это делать (так же, как есть те, кто умеет писать PHP-код, но не умеет программировать на Java).
Суть того, о чем я говорю, заключается в том, что существует класс программистов, для которых Scala не подходит , и я говорю об этом уже почти четыре года.
может, и дольше, но это самый старый пост, который я смог найти.
Моя позиция в то время не слишком отличалась от того, к чему приходят многие сегодня: обучать и увольнять разработчиков, которые становятся менее продуктивными при переходе на Scala. Более того, для меня совершенно очевидно, что существует группа программистов на чистом Java, у которых возникают проблемы со Scala , по крайней мере, за последние три года.
Таким образом, моя позиция оставалась неизменной все эти годы.
Что изменило мое понимание, так это то, что я понял, что существует огромное количество компаний, где программист появляется в начале рабочего дня, участвует в нескольких встречах, пишет несколько строк кода и уходит домой.
За последний год у меня был опыт работы с тремя компаниями такого типа.
Некоторые люди внедряют Scala, борются изо всех сил, стараются сделать все правильно, несмотря на проблемы с переписанным на Scala Java-кодом, поиск разработчиков и внутреннее сопротивление внутри компании.
Другие решают не внедрять Scala (хотя у них есть небольшой код Scala, о котором руководство не знает, этот код поддерживается одним человеком, для задач которого Scala значительно лучше, чем Java).
Третьи решили перейти со Scala обратно на Java, потому что организационные затраты на замену половины разработчиков, отправку оставшихся 25% на дорогостоящие курсы и отказ от передачи некоторых проектов на аутсорсинг перевешивают все преимущества, которые Scala предоставляет трем лучшим программистам на их команда.
Мы живем в мире, где пишет среднестатистический разработчик 3250 строк кода в год (около 20 в день).
В Eclipse это происходит путем нажатия кнопки «дать мне шаблон X» и подстановки кода в места, предложенные средой разработки.
Потом мы пошли на несколько митингов.
И они называют это рабочим днем.
Мы не можем уволить всех этих разработчиков.
Мы не можем научить их становиться лучше.
Это середняки.
Этими разработчиками могли бы быть персонажи мультфильмов о Дилберте.
юмористическая лента об офисном планктоне).
Но вы знаете, что? Это те, кто использует Java. И вы знаете, что еще? У таких программистов нет того самого сочетания врожденных способностей и желания стать лучше.
Но дело не только в этом, вся цепочка управления выше программиста не имеет ни возможности, ни желания изменить ситуацию.
Мы не можем сдвинуть эту гору.
или, точнее, Scala не настолько лучше, чтобы мы могли уволить 50% непродуктивных разработчиков.
Итак, лучшими направлениями движения могут быть:
- Сосредоточьтесь на тех программистах и проектах, эффективность которых будет в три раза выше, если они будут использовать Scala; или;
- Улучшите Scala для программистов среднего уровня (этого не произойдет, пока Scala является в первую очередь инновационным исследовательским языком).
Мотивация
"Ну и что?" — спросите вы, «вы столько написали, чтобы доказать, что Scala неуспешна и сложнаЭ» Я сторонник и поклонник Scala с тех пор, как познакомился с этим языком почти пять лет назад. Лишь несколько человек перешли на Scala и работают с ней дольше меня.Я лично заинтересован в том, чтобы Scala и Lift продолжали добиваться успеха.
И у Scala есть несколько удивительных историй успеха.
Цитаты и статьи и общее ощущение чего-то необыкновенного вокруг Scala — все это серьезно и все это заслужено.
Scala — замечательный язык; язык, не имеющий аналогов в современном программировании по своей универсальности для решения самого широкого круга задач, от простых и повседневных задач до самых сложных.
Но Scala — не панацея.
Scala успешна только там, где нанимают хороших программистов.
Scala позволяет таким программистам увеличить свои возможности по сравнению с работой на Java или большинстве других языков.
Но в менее опытных руках или, что еще хуже, в руках тех, кто недоволен Scala, Scala будет хуже Java. Это приведет к распри и раздорам внутри команды, а учитывая, что команды такого типа часто пассивно-агрессивны, сроки сорваны, и в конечном итоге виноват будет язык программирования.
Чтобы Scala продолжала расти, она должна оставаться успешной и иметь минимальное количество связанных с ней проблемных проектов.
Это означает быть открытым и честным, когда речь идет о сильных И слабые стороны Scala, чтобы правильно выбрать области применения Scala и Lift. Чтобы Scala росла, ее необходимо предлагать программистам подходящего типа, которые обладают правильным сочетанием навыков и желания создавать удивительные вещи с помощью Scala. Мы должны признать, что Scala не собирается заменять Java в утилитах командной строки, CRUD и интерфейсах баз данных.
Возможности Scala для написания ORM (извини, Макс.
Squeryl - действительно крутая штука) намного меньше, чем ценность Scala для разработки систем реального времени, распределенных параллельных приложений.
Но большинство из них создают ORM, CRUD, утилиты и другие вещи, которые можно заполнить и сохранить в базе данных.
Вот где большинство разработчиков и где деньги.
В то время как крутые ребята разрабатывают гигантские нечеткие, управляемые событиями, мега-гипер-супер-колоссальные в реальном времени супер-бла-бла-бла вещи, большинство программистов занимаются скучной работой по перетасовке данных между базами данных.
и Oracle/SQL предлагает механизм, который идеально подходит для этого.
Как сообщество, мы должны принять слабости Scala. Нам нужно привлечь разработчиков, которые собираются воспользоваться преимуществами Scala (а их очень много).
Мы также должны активно отговаривать людей от использования Scala, когда существует реальная вероятность неудачи.
Бренд «Scala — это сложно» или «Scala — для действительно хороших программистов» гораздо лучше, чем «Scala — это риск, который время от времени приведет к неудаче».
Моей мотивацией написания этого поста было желание привить разработчикам понимание того, что я сказал.
Я лучше увижу в следующем году 5000 новых проектов Scala, 4000 из которых будут успешными, чем увижу 50 000 новых проектов, из которых только 10 000 будут успешными.
Программисты со склонностью и склонностью к Scala после успешных экспериментов с языком, скорее всего, прочитают мои посты и скажут, что я не знаю, о чем говорю.
Другие разработчики повторят вывод («Рок — это слишком сложно») и не воспользуются им.
И этот результат с гораздо большей вероятностью приведет Scala к успеху; пока оно не будет завершено настолько, чтобы стать доступным для середняков.
Это лучший путь для Scala и Lift. Ох.
и все вы, злые умные люди, которые раздвигают (или, я уверен, скоро будут раздвигать) границы с помощью штуковин, управляемых мегасобытиями и работающих в реальном времени, вы обнаружите, что Scala - это сбывшаяся мечта, и ничего подобного (ну кроме Haskell) нет. Итак, создайте свои крутые вещи в Scala и заставьте их работать.
Теги: #scala #scala is hard #david pollak #goodstuff.im #pollak #java
-
Комстар Wi-Max: Работает!
19 Oct, 24 -
Узкое Мышление Гиков
19 Oct, 24 -
«И Работай»: Искусство Слушать Музыку
19 Oct, 24 -
Рынок Технологий Превысил Миллиард
19 Oct, 24