Подтвердить что ты не робот

Что узнать после PHP? Scala или Clojure?

У меня есть большой фон для веб-разработчиков с PHP. Мои причины для изучения функциональных языков программирования:

  • чтобы улучшить свои навыки программирования. В значительной степени было высказано предположение, что обучение FPL помогает. это имеет высокий приоритет, потому что я хочу быть лучше и лучше.
  • изучите язык программирования общего назначения для решения таких задач, как скриптинг (сценарии ОС, обработка текста и т.д.).
  • который будет использоваться в качестве альтернативы для PHP в веб-разработке.

Также у вас есть лучшая поддержка сообщества, учебники и книги и лучшая структура веб-приложений?

Не стесняйтесь предлагать другие языки.

4b9b3361

Ответ 1

Для функциональных языков изучите Scala и Clojure. Вы узнаете новые способы мышления от них обоих. Пойдите, изучите некоторые Reia и Erlang, пока вы на нем тоже.

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

Rant: "На каком языке я должен учиться?" вопросы становятся утомительными. Ответы должны быть одинаковыми каждый раз, но никто не дает правильного совета мудрецов. Вместо этого, каждый распространяет FUD и предполагает, что язык, который они используют для своей дневной работы, - это тот, который вы должны изучить. Туфта.

Ответ 2

Мое предложение - изучить JavaScript.

Я имею в виду, действительно изучаю это.

Ответ 3

Недавно я пробовал как Scala, так и Clojure, основываясь на подобных мотивах. Вот что я нашел:

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

Я сделал несколько Lisp в университете, и мне всегда хотелось вернуться к нему снова. Некоторые действительно классные ультрасовременные вещи сделаны очень умными людьми в Lisp и в очень немногих строках. Я хотел быть одним из тех умных людей или, по крайней мере, стараться быть похожим на них. Но я никогда не понимал Scheme, и я пропустил "бесконечную поставку библиотек" из Java. Я не мог видеть, как я нахожу GUI на Схеме, и у меня возникли проблемы с представлением веб-приложения.

Затем я попробовал Clojure, и казалось, что все щелкнуло на месте. Clojure был намеренно сделан более дружелюбным к стороннему: предпринимается попытка сократить круглые скобки и использовать разные вставки в скобки для разных ситуаций. Обработка таких вещей, как массивы, текст и XML в виде последовательностей, в сочетании с мощным набором функций последовательности, вызвала массу проблем довольно просто, равно как и поддержка массивов и хэш-карт. Это (намеренно), как функциональная Java. Функциональный mindeset немного привыкает, но я нигде не нашел его доступным или приятным, как в Clojure. Мой код вряд ли нуждается в петлях, но более ясно, где это циклизация/последовательность и более кратким. Я могу сделать изменчивое состояние, если мне действительно нужно, но я должен быть откровенен в этом; в обмен это состояние защищено механизмами Clojure concurrency. Concurrency, тогда становится почти без проблем, иногда мой код выполняется безопасно параллельно без каких-либо собственных усилий.

Не из Java, это вам покажется вам не очень полезным, но Clojure может делать все, что может быть Java, включая полностью совместимые файлы .class. Самое главное, что он может взаимодействовать со всеми библиотеками Java, и только эта способность заставит PHP казаться вам игрушечным языком.

Ответ 5

Это очень сложный вызов. Лично я считаю, что Scala более полезен как общий язык для веб-разработчиков. Для этого существует множество веб-фреймворков или адаптировано к нему. На очень быстрой и грязной стороне, например, Play. На полноценной отличной стороне поддержки Comet, Lift.

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

Итак, если вы хотите альтернативу PHP, я бы поставил на Scala. Если вы хотите действительно изучить функциональное программирование, Clojure.

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

Ответ 6

Получите мешок с цементом, затвердевайте и Учите вас в Haskell, для Great Good!

  • Это чисто функционально, поэтому вы не можете упасть с корабля.
  • Это универсальное приложение с множеством библиотек (включая стек веб-приложений) и отсутствие штрафа за загрузку виртуальной машины (JVM-языки не очень подходят для сценариев ОС и т.п., так как вы должны запускать JVM каждый раз).

Ответ 7

Прыжки от PHP до Scala или Clojure будут огромным культурным шоком. PHP очень сфокусирован на быстром/грязном выполнении дела (или на 90% чистом с последними 10% грязными (-:), тогда как языки функционального программирования заставляют ваше мышление иметь определенную правильность и абстрактность. Прежде чем вы перейдете к Scala или Clojure, вы захотите что-то между ними. Если бы это был я, я бы

  • Выберите мою конечную цель как Clojure, так как (как я ее понимаю) вы получаете всю стандартную библиотеку Java с Clojure, что делает ее более полезной, чем что-то чистое как Scala

  • Я бы потратил некоторое время на создание чего-то на Java, просто чтобы почувствовать строго типизированный язык OO. Я выбрал Java над С# (или даже PHP ZendFramework), потому что он окажется полезным после того, как вы придете к Clojure. Google Web Tools может быть хорошим местом для начала. Это своего рода веб-разработка, но очень похожа на Java, а вовсе не на PHP/HTML.

  • Проведите некоторое время, глядя на мужество jQuery, и либо создайте свой собственный модуль jQuery, либо добавьте основную функцию. Это позволит вам привыкнуть к функциональному мышлению, применяя его к проблеме, с которой вы знакомы.

Окончательный совет: попробуйте использовать общие методы выбранного языка/платформы. Не пытайтесь привнести свой стиль PHP-кодирования на любой язык. Хотя сначала это станет проще, и вы получите какие-то результаты, вы пропустите пункт упражнения, который должен думать по-другому и более широко о проблемах.

Удачи!

Ответ 8

Если вы ищете хорошую альтернативу PHP, я предлагаю Python и Ruby. Если вам нужен функциональный язык с хорошей поддержкой для веб-разработки - изучите Erlang. Вот несколько проектов/фреймворков, которые помогут вам создавать высоко масштабируемые веб-приложения в Erlang:

  • Yaws - веб-сервер Erlang, особенно хорошо подходящий для веб-приложений динамического контента. (Также см. этот тест Apache vs Yaws)
  • Erlyweb - компонентная платформа веб-разработки, написанная в Erlang и предназначенная для работы с Yaws.
  • Erlang Web - Erlang Web - это платформа с открытым исходным кодом для приложений на основе протоколов HTTP, предоставляющая разработчику более эффективный контроль над управлением контентом.
  • Nitrogen - веб-инфраструктура, управляемая событиями для Erlang.

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

Ответ 9

Пока он получает меньше освещения в прессе, чем Clojure и Scala, я действительно рекомендую вам взглянуть на Fantom: http://fantom.org/

Это, как лучший из всех двух миров, и действительно заслуживает большего внимания.

Ответ 10

Хотя Scala мой любимый язык, я думаю, что это не лучший выбор для изучения FP. Это главным образом ООПЛ с хорошей поддержкой FP. Я бы предложил начать с Haskell, чтобы быстро погрузиться в FP. Вы узнаете, как работают следующие концепции работы FP (которые не только поддерживаются, но и внедряются и повсеместны в Haskell): 1) мощная система статического типа с типом вывода 2) ленивая оценка 3) свободные побочные эффекты

После динамически типизированного "прагматичного" PHP и чистого функционального "академического" Haskell у вас будет полная картина ландшафта языков программирования.

Ответ 11

Ruby, вероятно, самый "функциональный" основной язык, который также хорош для сценариев. Python - вторая секунда, но рубиновая привычка неявно возвращать результат последнего выражения в функции/блоке - это тай-брейк для меня.

Оба имеют отличные веб-фреймворки (Rails и Django, соответственно), и оба будут определенно расширять ваши горизонты после программирования PHP. В то же время они позволят много возможностей для постепенного обучения.

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

Наконец, очень оплаченный TCL в основном представляет собой язык сценариев и расширений. Я не уверен, где он в эти дни, но система сообщества ArsDigita была написана в TCL.

Ответ 12

My $.02 - проверить Perl. Я могу походить на geezer, но имейте в виду, что Perl имеет CPAN (http://cpan.org) и многие очень, очень полезные онлайн-ресурсы.

Ответ 13

Я новый конвертер в Clojure. Это заставляет меня расширить свой разум, но он достаточно доступен, чтобы быть веселым и продуктивным. Я счастливый клиент.

Но

PHP и Clojure живут в разных юниверсах. У меня было несколько вводных упражнений на языках FP, и несколько ложных запусков в другие Lisps, прежде чем обнимать Clojure. Для менее опытного разработчика, идущего прямо с PHP, Clojure может быть слишком большим культурным шоком.

Как разумный компромисс между ними и язык, достаточно скриптовый, чтобы вы могли приближаться к FP на градиенте, а не в прыжке, я рекомендую Ruby. Рубин современный, чистый и элегантный. В его воплощении JRuby он даже быстро. Изучение Ruby и игра с Rails приятны и поучительны.

Ответ 14

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

Python позволяет создавать некоторые функциональные конструкции для программирования, и у него есть фреймворки и инструменты. Lua обеспечивает одинаковый уровень функционального программирования, и у него нет ни качественных фреймворков для веб-разработки, ни инструментов, однако его простота/первобытность - его элегантность.

Теперь, как пуритан, я бы сказал, посмотрю на haskell, но это контрпродуктивно: D,. Вы, мой друг, ищете Python. Я не оценил Ruby, но может иметь некоторые функциональные конструкции.

Ответ 15

Может показаться не очень интересным, но я настоятельно рекомендую JavaScript.

Много лет назад я был сильным в PHP-разработке, но затем переключился на Java, С#, C, Objective-C. Во время моего Java-времени я глубоко вписался в JavaScript и сделал с ним довольно классные вещи. Кто-то, кого я знаю, разработал всю временную облегченную СУБД на стороне клиента. Просто взгляните на Ext.js, что они делают с JavaScript. Он настолько недооценивается, но не заслуживает этого. Я предлагаю вам Google для "Douglas Crockford Video". В Yahoo он создал несколько отличных презентаций о JavaScript, а также предлагаю вам получить книгу "Javascript - Good Parts" от Дугласа Крокфорда и "JavaScript - окончательное руководство". Обе лучшие книги по JavaScript доступны. И вы будете поражены тем, что возможно, и каким красивым языком это на самом деле. Фактически, вы можете сделать ИИ с ним, у него есть Лямбда, на самом деле нет ничего действительно "более холодного"! Какой питти он использовал только для клиентских скриптов. Мало кто знает, что JavaScript может использоваться и для серверного программирования, но это очень редко/не хорошо документировано.

И благодаря Adobe Air вы можете принести JavaScript на рабочий стол.

Это будет оптимальное дополнение к вашим знаниям PHP. Всегда хорошо делать родственные вещи. Вы можете стать лучшим веб-разработчиком или лучшим настольным программным обеспечением Architekt. Но наши мозги слишком медленны, чтобы понять всю необходимую для этого потребность, чтобы быть Гуру в нескольких направлениях. Полагаю, что пчела Гуру необходима для успеха. Некоторые мои друзья просто делают одно: Пчела Гуру. Они изучают всю свою жизнь один маленький предмет и чрезвычайно успешны. Они зарабатывают в 5 раз больше, чем только один из разработчиков I-can-do-it-all-but-know-just-5% -in-this-topic-Developer только в течение четверти.

Поэтому я также предлагаю: написать 600 страниц PHP-книги, прежде чем забыть свои знания PHP, делая что-то совершенно другое.

Я забыл почти все, что знал о PHP и JavaScript, но в те ранние годы я определенно был одним из тех парней-экспертов, которые показали другим много вещей. Теперь мне боль, я должен снова задать так много основ, чтобы вспомнить их в моем маленьком мозгу. Написав свою книгу, вы напомните свой опыт PHP очень быстро даже после нескольких лет работы над чем-то другим, потому что это ваша книга, соответствующая вашему мозгу, из вашего мозга. И вы не потеряете свой статус PHP-специалиста даже после нескольких лет выполнения чего-то еще.

Удачи.

Ответ 16

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

F # - Microsoft использует функциональные языки, вы можете проверить это. Я слышал, что он использовался для нескольких проектов в промышленности.

Ответ 17

Я бы предложил изучение языков, у которых есть рамки за пределами веб-интерфейса, такие как Java EE (Java EE [JSP/JSF] + Java ) или .NET(ASP.NET + С# и т.д.). Это даст вам немного больше возможностей для вашей карьеры, и вы сможете подключать серверные компоненты к веб-интерфейсу с относительной легкостью.