Что изучать после PHP? Скала или Clojure? [закрыто]

Мне нравится ответ @Rule . Однако, если по какой-то причине вы не хотите использовать правила. Существует третий вариант.

@Test (expected = RuntimeException.class)
public void myTestMethod()
{
   try
   {
      //Run exception throwing operation here
   }
   catch(RuntimeException re)
   {
      String message = "Employee ID is null";
      assertEquals(message, re.getMessage());
      throw re;
    }
    fail("Employee Id Null exception did not throw!");
  }

20
задан 3 revs, 3 users 64% 4 November 2012 в 09:41
поделиться

17 ответов

Для функциональных языков изучите как Scala , так и Clojure . Вы узнаете новые способы мышления от них обоих. Иди выучите Рею и Эрланг , пока вы тоже этим занимаетесь.

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

Рэнт: «Какой язык мне выучить?» вопросы становятся утомительными. Ответы должны быть всегда одни и те же, но никто не дает правильного мудрого совета. Вместо этого каждый распространяет FUD и предлагает вам выучить язык, который они используют в своей повседневной работе. Poppycock.

46
ответ дан 17 October 2019 в 02:38
поделиться

I would suggest learning languages that have frameworks beyond the web front end such as Java EE (Java EE[JSP/JSF] + Java) or .NET (ASP.NET + C#, etc.). That would give you a bit more leeway with your career options, and you would be able to connect server components to a web front end with (relative) ease.

-2
ответ дан 17 October 2019 в 02:38
поделиться

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

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

0
ответ дан 17 October 2019 в 02:38
поделиться

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

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

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

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

2
ответ дан 17 October 2019 в 02:38
поделиться

Веб-разработка ИСКЛЮЧИТЕЛЬНО зависит от: Во-первых, качества веб-фреймворка и, во-вторых, инструментов для разработки. Я не знаю, почему вы хотите перейти на функциональные языки для программирования веб-приложений.

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

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

1
ответ дан 17 October 2019 в 02:38
поделиться

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

2
ответ дан 17 October 2019 в 02:38
поделиться

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

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

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

5
ответ дан 17 October 2019 в 02:38
поделиться

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

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

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

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

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

Удачи!

но очень похоже на Java и совсем не на PHP / HTML.

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

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

    Удачи!

    но очень похоже на Java и совсем не на PHP / HTML.

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

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

    Удачи!

    применяя его к проблеме, с которой вы знакомы.

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

    Удачи!

    применяя его к проблеме, с которой вы знакомы.

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

    Удачи!

    5
    ответ дан 17 October 2019 в 02:38
    поделиться

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

    Но

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

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

    3
    ответ дан 17 October 2019 в 02:38
    поделиться

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

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

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

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

    9
    ответ дан 17 October 2019 в 02:38
    поделиться

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

    Вас также может заинтересовать что он говорит о PHP против Clojure .

    12
    ответ дан 17 October 2019 в 02:38
    поделиться

    Я предлагаю изучить JavaScript.

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

    24
    ответ дан 17 October 2019 в 02:38
    поделиться

    Возьмите мешок с цементом, затвердите и Изучите Haskell во благо!

    1. Это чисто функционально, поэтому вы не можете упасть с корабля.
    2. ] Он универсален, с множеством библиотек (включая стек веб-приложений) и без потери времени на запуск виртуальной машины (языки JVM не подходят для написания сценариев ОС и т.п., так как вам нужно запускать JVM каждый раз).
    7
    ответ дан 17 October 2019 в 02:38
    поделиться

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

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

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

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

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

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

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

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

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

    24
    ответ дан 17 October 2019 в 02:38
    поделиться

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

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

    3
    ответ дан 17 October 2019 в 02:38
    поделиться

    Единственное, что действительно работает в настоящее время безопасность что-то подобное в конфигурации CouchDB.

    [couch_httpd_auth]
    require_valid_user=true
    [admins]
    admin = sekrit
    

    Это обеспечивает базовую проверку подлинности HTTP для всех CouchDB. Даже это плохо поддерживается в клиентских библиотеках. Для питона, например, необходима исправленная библиотека .

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

    Все другие подходы должны рассматриваться до настоящего времени в высшей степени экспериментальными.

    -121--1337796-

    Это не то, что делает AttachThreadInput . Даже после присоединения входной очереди к другому потоку Windows по-прежнему имеет сходство с потоком. Сообщения в очереди для данного окна могут быть удалены из очереди только потоком этого окна.

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

    Это позволяет двум или более потокам иметь такие же отношения к входной очереди и друг к другу, как и процессы в Windows 3x. Это причина существования этого API; для того, чтобы сложные многопроцессорные приложения можно было портировать с Win 3x на Win95/WinNT.

    -121--4321346-

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

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

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

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

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

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

    Удачи.

    1
    ответ дан 17 October 2019 в 02:38
    поделиться

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

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

    4
    ответ дан 17 October 2019 в 02:38
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: