私はJava背景と私が読んだ後 Paul Grahamによるこの小さなエッセイ から来ています仕事(私はWeb開発者です)。
現在、ペットプロジェクトを作成していますが、将来のビジネスプランもいくつかあります。ポールは彼のエッセイで「秘密兵器」としてLISPについて語っています。このステートメントが10年後に当てはまるかどうかはわかりませんが、私はつま先を Nice CLチュートリアル に浸しましたが、LISPはWeb開発に優れているようです。
Paulはまた、Pythonを私が実際に精通している素晴らしい選択として言及しています。私の質問は、私の将来のWebプロジェクトのためにどれを選択すべきですか?
私が考えていたこと:
それで、あなたはどう思いますか?
Javaバックグラウンドから来ているので、Clojureプログラミング言語をチェックしてみませんか?
これは、JVM上に存在する最新のLISP方言であるため、そこから大量のJARにアクセスできます。
Django and Rails in Clojure universe)のような洗練されたプロダクション対応のWebフレームワークを見つけるつもりはありませんが、プログラマーはNoirおよびCompojure Webフレームワーク。
HerokuプラットフォームにClojure Webアプリをデプロイすることもできます。
Clojureは非常にやりがいがありますが、学習曲線は本当に急勾配です。あなたは関数型プログラミングを学ぶ準備ができていますか? OOP世界の外に住んでいますか?
Pythonは安全な側面です。Pythonは成熟しており、大量の本、多くのWebフレームワーク、巨大な知識プール、そして学びやすいものです。
したがって、決定は本当にあなた次第です。
LISPは、近くに立って象牙の塔から来る声を聞くときに聞く言語です。 PHPなどの他の言語は、エレガントでも強力でもないかもしれませんが、一般的な舌のようであり、簡単で寛容です。
LISPは多くの言語に影響を与えてきましたが、主流になることはありませんでした。どうして?多くの開発者は言語の概念を理解していなかったため、開発者にとってはかなりあいまいに見えました。 LISPは、膨大な数の開発者にとって理解しにくいものです。プログラミング言語としてLISPを必要とする仕事の説明を見たことがありますか?私はしていません。 "なぜ聞くの?多くの人にとってメンテナンスや読みが難しいからです。 LISPでは、単純にそれを見るだけでは、式が何をしているかすぐに分からないことがよくあります。それはある種の単純さを欠いているので、それが一般的な言葉になったことはありません。
それにもかかわらず、LISPは多くの言語に影響を与えてきました。学業目的で学ぶことをお勧めします。それはあなたの精神的な境界を広げるので、あなたはしばしば別の視点から問題について考えることができます。ただし、大学の実現可能性調査を実施しているのでない限り、Webアプリケーションに使用することはお勧めしません。他のオプションと比較して、ツールやライブラリのサポートが不足しています。 最終的にいくらかお金を稼ぎ、履歴書に提示できる実用的なスキルを習得したい場合は、ぜひPythonを選択してください。メリットがありますLISPからもですが、全体的なプログラミングスタイルから利益が得られる可能性はありますが、実際にはそれほど実用的ではなく、より学術的です。
また、最近は関数型言語の復活があります。いくつかの機能的な概念を取り上げたい場合は、F#for .NETまたはScala on the JVMを調べることもできます。
だからあなたの選択をしてください。両方が本当の言語である場合、どちらを学習しますか:ラテン語/古代ギリシャ語、またはフランス語/ドイツ語/イタリア語/スペイン語/中国語/アラビア語?
一般的なLISPとpythonのどちらかを選択した場合、私ができる最も実用的なアドバイスはpythonを学ぶです。私の技術者はプログラムの誰もがLISPを学ぶべきだと思っていますが、それを学ぶことが「あなたの「仕事をスピードアップ」するのに役立つとは思いません。
あなたがLISPを学ぶなら、私はそれがあなたを長期的に見てより良いプログラマーになると信じています。ただし、あなたが述べた理由でLISPを学ぶことは、あなたの当面の目標IMOに近づくことはできません。実用的で実用的なソリューションが必要な場合は、Pythonを学んでください。日常のタスクにemacsのカスタマイズが含まれていない限り、LISPを使用して日常のタスクを支援するのに十分なツールや機会はありません。
一方、あなたが勉強して学ぶ時間があって、あなたが選んだ結果に我慢したいなら(ツールの不足、getLISPなど)、LISPを使用します。それは本当に素晴らしい言語です。
長期にわたって自分のコードライブラリを作成するのが好きで、言語の制限を押し広げて楽しんでいて、設定の不定期な問題を気にしない場合は、LISPを使用することをお勧めします。自営業の場合、マクロ機能により、長期的に見れば生産性が向上する可能性があります。
Pythonは、柔軟性、速度、または強力さが劣ります。他の多くの言語と比較して学ぶことはほとんど簡単です。実際、それは非常に粗末です。広くサポートされており、流行の言語du jourであり、大量のライブラリがあります。新しい言語の学習について不満を言う人たちと協力する必要がある場合は、おそらく少し良いでしょう。
Pythonが優れている人と比較してLISPが優れている人を雇うことを検討している場合、LISPの人はPython人(他のすべてのものは同じです)。
私はひどくバイアスされていると確信しています。
ポールグラハムが話していることを強調したい場合は、LISPを支持することをお勧めします。 LISP言語ファミリーで支持されているアプローチと考え方の違いは、異なる考え方をするように促されているため、全体としてプログラマーに影響を与える可能性がはるかに高くなっています。そして、私自身はそうしていませんが、LISPでのWeb開発はかなりよくサポートされているようです: SOでこの質問を参照してください
Pythonは素晴らしい言語であり、私はそれをノックするつもりはありません。 Pythonには多くの優れたWebフレームワークとツールがあり、必要に応じて、すでにPythonに精通している人を見つけやすくなります。
結局のところ、現在の環境のために、LISPを選択することは、常に「欲しいものを使いたいですか、それとも業界がすでに使っているものを使いたいですか?」その質問に対するあなたの答えは何ですか?
時間的なプレッシャーがない場合は、LISPを使用してください。 LISPを学ぶことはあなたが見る方法を変えるPython(そしてあなたが知っている他のすべての言語))しかし、Pythonを学ぶことはあなたがLISPを見る方法を変えることはないLISPは、ツールボックスの単なる新しいツールではなく、新しい考え方です。
その間、 Factor または別の 連結言語 を見てください。連結言語は combinators で考える方法を教えるのに最適です。連結言語を学ぶと、他のすべての言語の見方が変わります。
最後に、右脳を鍛えます。プログラミング言語の形式は、問題解決のために左脳を使いすぎることを余儀なくさせています。右脳を活性化して、ゲームを変える別のパラダイムシフトにアクセスします。
LISPは、他のすべての言語と同じように、単なるツールです。確かに便利な機能はありますか?同時に、他のほぼすべての言語で同じ出力を得ることができますが、より多くの時間とコードが必要になる場合があります。 LISPの主な問題は、プラットフォーム上でさまざまなLISPをサポートする共有ホスト(私が知っている)がないため、少なくともVPSホスティングを取得する必要があることです。
私が提案したいのは、あなたはJavaプログラマーなので、Groovy(あるいはScala)を見てみることです。これにより、JavaライブラリとAPIを使用できるようになり、生産性が向上します。
LISPの起源以外に、LISPについて多くのことを知りません。 Pythonについて私が知っているのはこれです:
最初の空飛ぶ円盤が着陸してから5分後、Pythonコミュニティーは、I/Oシステムとのインターフェースを構築します。
また、主にJavaScriptから来た私は、Pythonが非常に自然に適合することを発見しました。おそらくその逆かもしれません。
また、Djangoは、最近模倣するフレームワークのほとんどです。