タグ付けされた質問 「lisp」

Lispは、ラムダ計算の影響を受けた汎用プログラミング言語のファミリーであり、ソースコードをデータ構造として操作する機能を備えています。

14
Lispマクロが特別な理由は何ですか?
プログラミング言語に関するPaul Grahamのエッセイを読むと、Lispマクロが唯一の方法だと思うでしょう。他のプラットフォームで作業している多忙な開発者として、私はLispマクロを使用する特権を持っていませんでした。話題を理解したい人として、この機能が非常に強力になる理由を説明してください。 これを、Python、Java、C#、またはC開発の世界から理解できるものと関連付けてください。

13
関数型プログラミングのソフトウェアエンジニアリング手法はありますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 3年前休業。 この質問を改善する 今日教えられているソフトウェア工学は、完全にオブジェクト指向プログラミングと「自然な」オブジェクト指向の世界観に焦点を当てています。ドメインモデルをいくつかのステップとユースケース図やクラス図のような多くの(UML)アーティファクトを持つクラスモデルに変換する方法を説明する詳細な方法があります。多くのプログラマーがこのアプローチを取り入れており、オブジェクト指向アプリケーションをゼロから設計する方法について優れたアイデアを持っています。 新しい誇大広告は関数型プログラミングであり、多くの本やチュートリアルで教えられています。しかし、機能的なソフトウェア工学についてはどうでしょうか?LispとClojureについて読んでいるとき、私は2つの興味深いステートメントについて思いつきました。 関数型プログラムは、多くの場合、トップダウンではなくボトムアップで開発されます(「On Lisp」、Paul Graham) 関数型プログラマーはマップを使用し、オブジェクト指向プログラマーはオブジェクト/クラスを使用します(「Clojure for Java Programmers」、Rich Hickleyによる講演)。 では、LispやClojureなどの機能的アプリケーションの体系的な(モデルベースの)設計の方法論とは何でしょうか。一般的な手順は何ですか、どのアーティファクトを使用しますか、それらを問​​題空間からソリューション空間にどのようにマッピングしますか?

10
LispがAIに使用される理由 [閉まっている]
現在のところ、この質問は、Q&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 私はLispをAIプログラミングで使用されていると聞いたので、視野を広げることを学んでいます。いくつかの調査を行った後、AIの例や、AIの傾向をさらに強めるような言語のAIをまだ見つけることはできません。 Lispが利用可能だったために過去に使用されたことがありますか、それとも私が見逃しているものはありますか?

6
ラケットはスキームとどう違うのですか?
ラケットは、Schemeの子孫です。ラケットとR6RSの違いは何ですか?それは何を追加したり、奪ったりしたのですか、それともただ違うのですか? ラケットは単なる言語ではなく、言語のプラットフォームであると理解しています。しかし、私はメインのラケット方言について言及しています。
184 scheme  lisp  racket 

23
LISPを学ぶための最良の方法は何ですか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 私は2、3年前からPython、PHP、Java、Cでプログラミングしており、ハッカーとペインターを読み終えたばかりなので、LISPを試してみたいと思います! 私が知っていることとはまったく異なり、簡単ではないことを理解しています。また、LISPに関連するコミュニティや開発の数ははるかに少ないと思います(間違っている場合は修正してください)。だから私の質問は:LISPを学ぶための最良の方法は何ですか? 本を買ったり、時間をかけてもかまいません。無駄にしたくないだけです。 「最終的な」アイデアはWeb開発にLISPを使用することですが、それはそれほど一般的ではないことを知っています...最初の本やチュートリアルを選び、そうでない可能性のあるものに多くの時間を費やす前に学習計画を立てることは良いことです。最善の方法です! ご回答ありがとうございます! 編集:私はPractical Common Lispを読みました:...長くて難しい、興味深い、そして間違いなく私はLispを使い始めました、その後私は小さなスキーマを読みました、そしてそれは短く、楽しくそして私の全体的なプログラミングにとって非常に良いものでした。したがって、私の推奨事項は、最初に小さなスキーマを読んで、次に(数時間とその価値がある)lisp(またはスキーマまたはその他の方言)が探しているものではないと判断した場合でも、非常に楽しいことです再帰についての新しい考え方!
167 lisp  scheme  common-lisp 


30
現実世界のLisp
私はLisp(実際にはScheme)を実験しましたが、それが私がもっと学びたいと思っている非常に美しい言語であることがわかりました。しかし、Lispが深刻なプロジェクトで使用されることは決してないようで、どの求人でも望ましいスキルとしてLispがリストされているのを見たことがありません。Lispを使用したことがある人、または「現実の世界」で使用されているのを見た人、またはそれが純粋に学術的な言語と見なされているかどうかを知っている人からの連絡に興味があります。

4
Lispに関するPaul Grahamのポイントのいくつかを説明してください
Paul GrahamのWhat What Lispのポイントのいくつかを理解するのに助けが必要です。 変数の新しい概念。Lispでは、すべての変数は事実上ポインタです。値は、変数ではなく型を持つものであり、変数の割り当てまたはバインドは、ポインタが指すものではなく、ポインタのコピーを意味します。 シンボルタイプ。シンボルは文字列とは異なり、ポインタを比較することで等価性をテストできます。 シンボルのツリーを使用するコードの表記。 言語全体が常に利用可能です。読み取り時、コンパイル時、および実行時に実際の違いはありません。読み取り中にコードをコンパイルまたは実行し、コンパイル中にコードを読み取りまたは実行し、実行時にコードを読み取りまたはコンパイルできます。 これらのポイントはどういう意味ですか?CやJavaなどの言語ではどのように違うのですか?Lispファミリ言語以外の他の言語には、これらの構成要素のいずれかがありますか?

12
なぜeval evilなのか?
LispとSchemeのプログラマーは、eval厳密に必要な場合を除いて、通常はそれを避けるべきだと言っています。いくつかのプログラミング言語について同じ推奨事項を見てきましたが、の使用に対する明確な議論のリストはまだ見ていませんeval。使用の潜在的な問題の説明はどこにありますかevalか? たとえば、私GOTOは手続き型プログラミングの問題を知っています(プログラムが読み取りにくくなり、保守が困難になり、セキュリティの問題が見つけにくくなるなど)。しかし、eval。 興味深いことに、GOTO継続に対しても同じ議論が当てはまるはずですが、たとえば、Schemersは継続が「悪」だとは言っていないようです。使用する場合は注意が必要です。彼らはeval継続を使用するコードよりもコードを使用するほうが眉をひそめる可能性がはるかに高いです(私が見る限り、私は間違っている可能性があります)。

6
Clojureに「記号」に加えて「キーワード」があるのはなぜですか?
私はずっと前から、他のLisp(特にScheme)についての知識を持っています。最近、私はClojureについて読んでいます。「記号」と「キーワード」の両方があることがわかります。私がよく知っているが、キーワードではない記号。 他のLispにはキーワードがありますか?キーワードは、表記が異なる(つまり、コロン)以外の記号とどのように異なりますか?
130 lisp  clojure  scheme  keyword 

29
なぜLispを学ぶ必要があるのですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 私はLispを学ぶべきだと本当に感じており、それを行うために役立つリソースがたくさんあります。 私は複雑な構文に我慢するのではなく、「伝統的な商用プログラミング」のどこで手続き型言語の代わりにそれを使用するのが理にかなっていると思う場所を見つけます。 Lispで書かれた商用キラーアプリはありますか?

10
データベースと関数型プログラミングは対立していますか?
私はしばらくの間Web開発者でしたが、最近、関数型プログラミングの学習を始めました。他の人のように、私はこれらの概念の多くを私の仕事に適用するいくつかの重大な問題を抱えてきました。私にとって、これの主な理由は、FPのステートレスを維持するという目標の間の矛盾が、私が行ったほとんどのWeb開発作業が非常にデータ中心のデータベースに強く結び付けられているという事実とかなり矛盾しているように見えることです。 OOP側でより生産的な開発者になった1つのことは、.GeneのMyGeneration d00dads、PerlのClass :: DBI、RubyのActiveRecordなどのオブジェクトリレーショナルマッパーの発見でした。終日、INSERTステートメントとSELECTステートメントを記述したり、オブジェクトとしてデータを簡単に操作したりすることに集中できます。もちろん、SQLクエリを作成することもできましたが、SQLクエリの能力が必要な場合はそれを実行できましたが、それ以外の場合は裏側でうまく抽象化されました。 さて、関数型プログラミングに移ると、リンクのようなFP Webフレームワークの多くでは、この例のように、ボイラープレートSQLコードを大量に記述する必要があるようです。Weblocksは少し優れているように見えますが、データを操作するために一種のOOPモデルを使用しているようで、この例のように、データベース内のテーブルごとにコードを手動で作成する必要があります。いくつかのコード生成を使用してこれらのマッピング関数を記述していると思いますが、それは明らかにLispに似ていません。 (私はWeblocksやLinksを非常に詳しく見ていないことに注意してください。それらがどのように使用されているのか誤解しているだけかもしれません)。 したがって、問題は、Webアプリケーションのデータベースアクセス部分(かなり大きいと思います)、またはSQLデータベースとのインターフェイスを必要とするその他の開発では、次のいずれかの方法を強制されるようです。 関数型プログラミングを使用しない 大量のSQLまたはSQLに似たコードをリンクを手動で作成することを含む、煩わしい、抽象化されていない方法でデータにアクセスする 関数型言語を強制的に擬似OOPパラダイムにし、真の関数型プログラミングの優雅さと安定性の一部を取り除きます。 明らかに、これらのオプションはどれも理想的ではないようです。これらの問題を回避する方法を見つけましたか?ここに本当に問題がありますか? 注:私は個人的にFPの前にあるLISPに最も精通しているので、例を挙げて複数のFP言語を知りたい場合は、おそらくlispが最適な言語でしょう PS:Web開発の他の側面に固有の問題については、この質問を参照してください。




弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.