Выбор между CL и Python для веб-разработки

13

Я пришел из Java, и после прочтения этого небольшого эссе Пола Грэма я начал задумываться о том, чтобы выбрать новый язык, а именно Common Lisp, чтобы ускорить мою работу (я веб-разработчик).

Я сейчас пишу проекты для животных, но у меня есть бизнес-планы на будущее. Павел говорит о ЛИСП в своем эссе как «Тайное оружие». Я не знаю, верно ли это утверждение через 10 лет, но я погрузился в приятное учебное пособие по CL, и похоже, что LISP может быть лучше для веб-разработки.

Пол также упоминает Python как хороший выбор, с которым я на самом деле знаком. Мой вопрос: какой из них выбрать для моих будущих веб-проектов?

О чем я думал:

  • Я не собираюсь разрабатывать настольные приложения, поэтому я могу выбрать любой язык, который я предпочитаю.
  • У python, похоже, очень большое сообщество, таким образом, гораздо больше библиотек / фреймворков по сравнению с lisp.
  • Я обнаружил, что в lisp есть некоторая функциональность (например, макросы), которую больше нигде нет
  • Я в основном работаю один или с 1-2 другими программистами, но найти кого-то со знанием лиспа может быть трудно

Так что ты думаешь?

Адам Арольд
источник
Насколько велико сообщество Python по сравнению с PHP? Я предполагаю, что найти разработчика на Python тоже может быть сложно, по сравнению с поиском разработчика на PHP, поэтому я склонен выбирать между этими вариантами, только если проект экспериментальный.
Алекс
Я не очень люблю PHP, так что это не вариант для меня. Поскольку я мой единственный босс, никто не заставляет меня использовать то, что мне не нравится. :)
Адам Арольд
2
@Vash. Сообщество разработчиков Python может быть не таким большим, как PHP, но оно все еще очень большое. Более того, я считаю, что онлайновая документация Python значительно превосходит PHP.
кв.
Это правда, я думаю.
Адам Арольд
2
Я не верю, что никто еще не упоминает Clojure!
Хирон

Ответы:

7

Вы пришли из Java, так почему бы не проверить язык программирования Clojure?
Это современный диалект Lisp, который живет на JVM, поэтому у вас есть доступ к множеству JAR.

Хотя вы не найдете готовых и готовых к работе веб-фреймворков, таких как Django и Rails, во вселенной Clojure (по крайней мере, прямо сейчас), но программисты используют веб-фреймы Noir и Compojure.
Вы также можете развернуть свои веб-приложения Clojure на платформе Heroku.

Clojure очень полезен, но кривая обучения действительно крутая. Вы готовы изучать функциональное программирование (если вы не знакомы)? жить вне мира ООП?

Python - это безопасная сторона: он зрелый, тонны книг, множество веб-фреймворков, огромный пул знаний и прост в освоении.

Таким образом, решение действительно ваше.

Chiron
источник
1
Я недавно проверил Clojure и думаю, что это тот, который больше всего соответствует моим потребностям! Спасибо за совет!
Адам Арольд
7

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

Хотя Lisp повлиял на многие языки, он так и не стал массовым. Почему? Поскольку многие разработчики не понимали концепций языка, им это казалось довольно неясным. Lisp трудно понять огромным массам разработчиков. Вы когда-нибудь видели описание работы, требующее использования Lisp в качестве языка программирования? У меня нет "Почему ты спрашиваешь? Потому что это трудно поддерживать и читать для многих людей. В Лиспе вы гораздо чаще не можете сразу сказать, что делает выражение, просто взглянув на него. Ему не хватает определенной простоты, поэтому он никогда не стал общим языком.

Тем не менее, Лисп оказал влияние на многие языки. Я рекомендую изучать его в академических целях. Это расширяет ваши психические границы, поэтому вы часто можете думать о проблемах с другой точки зрения. Однако я бы не рекомендовал использовать его для веб-приложений, если вы не выполняете технико-экономическое обоснование для университета. В ней нет поддержки инструментов и библиотек по сравнению с другими вариантами. Если вы хотите приобрести практические навыки, которые в конечном итоге принесут немного денег и могут быть представлены в вашем резюме, тогда непременно выберите Python. Вы также выиграете от Lisp, но он менее практичен и более академичен по своей природе, хотя ваш общий стиль программирования может выиграть от этого.

Кроме того, в наши дни происходит возрождение функциональных языков. Вы также можете взглянуть на F # для .NET или Scala на JVM, если хотите узнать некоторые функциональные концепции.

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

сокол
источник
Я видел рекламный шутник в Чикаго - не только это, они будут нанимать вас без опыта и обучать вас. Я так хотел этого концерта, но поездка меня бы убила. Признаюсь, однако, я думаю, что это почти единственная реклама, которую я видел за многие годы.
Брайан Оукли
Хорошо, что я буду делать: я тоже буду изучать LISP и Python, но я буду использовать Python, потому что причины, которые вы и другие упоминали выше. Благодарю за разъяснение.
Адам Арольд
3

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

Если вы выучите lisp, я верю, что в конечном итоге вы станете лучшим программистом. Однако изучение шуток по причинам, которые вы указали, не приблизит вас к вашим непосредственным целям. Если вы хотите практичное, прагматичное решение, изучите Python. Просто не хватает инструментов или возможностей, чтобы использовать lisp, чтобы помочь вам в ваших повседневных задачах, если только ваши повседневные задачи не требуют настройки emacs.

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

Брайан Оукли
источник
3

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

Python не такой гибкий, быстрый или мощный. Это почти тривиально для изучения по сравнению со многими другими языками. Это очень Blubby, на самом деле. Он имеет широкую поддержку, это модный язык du jour и имеет массу библиотек. Вероятно, немного лучше, если вам приходится работать с людьми, которые жалуются на изучение новых языков.

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

Я ужасно пристрастен, я уверен.

Пол Натан
источник
1
Предвзято или нет, я вижу вашу точку зрения!
Адам Арольд
2

Если вы хотите подчеркнуть, о чем говорил Пол Грэм, я бы выступил за Лисп. Разница в подходах и мышлении, поддерживаемая семейством языков Lisp, имеет гораздо больший потенциал, чтобы повлиять на вас как на программиста в целом, из-за побуждения мыслить иначе. И хотя я сам этого не делал, похоже, что веб-разработка на Лиспе довольно хорошо поддерживается: посмотрите этот вопрос в SO.

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

В конечном счете, из-за текущей среды выбор Lisp, похоже, всегда сводится к вопросу: «Хотите ли вы использовать то, что вы хотите, или вы хотите использовать то, что уже используется в отрасли?» Каков твой ответ на этот вопрос?

asfallows
источник
2

Если у вас нет времени, используйте Lisp. Изучение Lisp изменит способ просмотра Python (и любого другого языка, который вы знаете), но изучение Python не изменит способ просмотра Lisp (если вы его знали). Lisp - это больше, чем новый инструмент в наборе инструментов. Это новый способ мышления.

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

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

Скудный Роджер
источник
0

Лисп - это просто инструмент, как и любой другой язык. Есть ли у него полезные функции, конечно. В то же время можно получить тот же вывод практически с любым другим языком, просто это может занять больше времени и кода. Основная проблема с Lisp заключается в том, что вам нужно будет получить, по крайней мере, VPS-хостинг, так как не существует общего хоста (насколько я знаю), который бы поддерживал любые варианты Lisp на их платформе.

Я хотел бы предложить одну вещь: если вы программист на Java, взгляните на Groovy (или даже Scala). Они позволят вам использовать ваши библиотеки Java и API и обеспечат повышение производительности.

Jetti
источник
VPS не проблема, потому что мои идеи не будут работать и с виртуальным хостингом.
Адам Арольд
0

Я не знаю ничего о Лиспе, кроме его происхождения. Что я знаю о Python, так это:

Через 5 минут после того, как приземлится первая летающая тарелка, сообщество Python соберет что-то для взаимодействия со своими системами ввода-вывода.

Кроме того, исходя из JavaScript, я нашел Python очень естественным. Возможно обратное утверждение может быть правдой.

Кроме того, Django в значительной степени является основой для подражания в наши дни.

Эрик Реппен
источник