43

コンパイラ、インタプリタ、言語に興味があります。

あなたが知っている、忘れられた、または知られていない、最も興味深い言語は何ですか? さらに重要なことは、なぜですか?

私はコンパイル言語、インタープリター言語、VM 言語の両方に興味がありますが、Wh​​itespace や BF のような難解な言語には興味がありません。
もちろん、オープン ソースはプラスになるでしょう。

4

43 に答える 43

30

私はコンパイラと VM が大好きで、Lua も大好きです。

Lua は他の多くのスクリプト言語ほどサポートされていませんが、あなたのような考え方からすれば、きっとあなたも Lua に夢中になるでしょう。Lisp のようなもので (私が知る限り Lisp でできることは何でもできます)、ADA の多くの主要な機能があり、それに加えてメタ プログラミングが組み込まれており、関数型プログラミングとオブジェクト指向プログラミングが十分に緩く、任意の型を作成できます。あなたが望むかもしれないドメイン言語の。さらに、VM のコードは単純な C であるため、そのレベルでも簡単に掘り下げることができます。

(そして、それはオープンソースの MIT ライセンスです)

于 2008-10-14T11:11:36.380 に答える
25

私は D プログラミング言語のファンです。これはウィキペディアの記事公式サイトのイントロです

ウィキペディアの記事からの抜粋:

D プログラミング言語 (単に D とも呼ばれます) は、Digital Mars の Walter Bright によるオブジェクト指向の命令型マルチパラダイム システム プログラミング言語です。C++ のリエンジニアリングとして生まれましたが、主にその言語の影響を受けていますが、C++ の変種ではありません。D はいくつかの C++ 機能を再設計し、Java、C#、Eiffel などの他のプログラミング言語で使用される概念の影響を受けています。2007 年 1 月 2 日に安定版 1.0 がリリースされました。2007 年 6 月 17 日に実験版 2.0 がリリースされました。

機能について:

D は、理論的な観点からではなく、実際の C++ の使用から学んだ教訓に基づいて設計されています。多くの C/C++ 概念を使用していますが、一部を破棄しているため、C/C++ ソース コードとの厳密な下位互換性はありません。契約による設計、単体テスト、真のモジュール、ガベージ コレクション、ファースト クラス配列、連想配列、動的配列、配列スライシング、ネストされた関数、内部クラス、クロージャー[2]、匿名関数、コンパイル時の関数実行、遅延評価、再設計されたテンプレート構文があります。D は、低レベルのコーディングを行う C++ の機能を保持し、統合されたインライン アセンブラのサポートを追加します。C++ の多重継承は、インターフェイスと mixin を使用した Java スタイルの単一継承に置き換えられます。Dの宣言、

于 2008-10-14T12:47:17.310 に答える
18

「非主流」が何を意味するかに大きく依存すると思います。

Lispは非主流としてカウントされますか?

于 2008-10-14T11:00:53.623 に答える
16

Erlang を見てみることをお勧めします。最近少し報道されているので、学習リソースのいくつかは優れています。オブジェクト指向言語や手続き型言語を使用したことがある場合、Erlang は間違いなく新しいエキサイティングな方法であなたの心を曲げるでしょう。

Erlang は純粋な関数型言語であり、並行プログラム、分散型プログラム、フォールト トレラント プログラムを根本からサポートしています。変数は実際には変数ではないという事実を含め、多くの興味深い機能があります。変数は一度宣言すると変更できず、実際にはパターンの形式としてよりよく理解されます。

ブロゴスフィアでは、Erlang プラットフォーム (OTP) の上に構築し、Ruby などの他の言語をマシンでサポートすることについての話があります。Erlang は、並行アプリケーションを実行するための一種の仮想マシンになるでしょう。これは非常にエキサイティングな可能性です。

于 2008-10-14T11:23:52.470 に答える
11

私は最近、Ocamlと関数型言語全般に夢中になっています。

たとえば、Ocaml は可能な限り最高の世界を提供します。C と同じ速さで実行可能なネイティブ マシン言語にコンパイルされるコード、または普遍的に移植可能なバイト コードが得られます。REPL スピードを開発にもたらすインタープリターを取得します。関数型プログラミングのすべての機能を利用して、完全に直交する構造、深い再帰、および真のポリモーフィズムを生成できます。オブジェクト指向は、OOP が約束するすべて (カプセル化、モジュール化、直交関数、ポリモーフィックな再利用可能性) を既に提供している関数型言語のコンテキストでは、実際にそれ自体を証明することを余儀なくされている OOP を意味します。

于 2008-10-14T12:31:40.587 に答える
10

Smalltalk (ここにリンクされている議論を参照) . 動的言語の祖父のようなものです (Lisp と SNOBOL は例外の可能性があります)。Java や、Python や Ruby などの新しい言語に踏みにじられて悲しいことに、一緒に仕事をするのはとてもいいことです。

于 2008-10-14T11:16:08.040 に答える
10

FORTH は、初期の CPU の低レベル コード用に設計された言語でした。その最も注目すべき機能は、RPN スタック ベースの数学演算でした。初期の HP 電卓で使用されていたのと同じ種類の数学。たとえば、1+2+3+4= は 1, 2, 3, 4, + , +, + と書きます

于 2008-10-14T11:16:46.087 に答える
8

HaskellとREBOLは、まったく異なる理由から、どちらも魅力的な言語です。

Haskellは、モナド、部分適用、パターンマッチング、代数的データ型などの概念を使用して、開発者としての目を開くことができます。好奇心旺盛なプログラマーにとっては魅力的です。

REBOLも前屈みではありません。最初は一見シンプルですが、コンテキスト、PARSE方言、Bindologyなどの概念を掘り下げ始めると、目に見える以上のものがあることに気付きます。REBOLの良いところは、HaskellよりもREBOLを使い始めるのがはるかに簡単なことです。

どちらが好きかわからない。

于 2008-10-14T12:17:10.473 に答える
7

Booは .NET フレームワークを対象としており、オープン ソースです。Python にインスパイアされました。

于 2008-10-14T11:04:02.120 に答える
7

colorForthを試してください。

于 2008-10-14T12:33:19.320 に答える
7

PROLOG は、バックトラック機能を備えたルールベースの言語です。非常に人間が読める (prosa のように) コードを生成できます。

于 2008-10-14T12:42:51.610 に答える
6

制約言語は面白いと思いますが、何が忘れられているか、または不明であるかを知ることは困難です。私が知っているいくつかの言語を次に示します (これは完全なリストではありません)。

  • CiaoYAPSWI-Prolog、およびGNU Prologはすべて Prolog の実装です。それらはすべてオープンソースだと思います。Ciao、gnu Prolog、およびおそらく他のものも、Prolog の実装で一般的であるように、他の制約タイプをサポートしています。たとえば、整数計画法。
  • MozartMercuryは、私が理解しているように、どちらも代替ロジック プログラミング言語です。
  • Aliceは ML ファミリーに属していますが、GECODE C++ ライブラリを使用した制約プログラミングをサポートしています。

ちょっと話が逸れますが……。

  • Maudeは興味深い用語書き換え言語です。
  • HOLCOQはどちらも、言語コミュニティで一般的に使用されている機械化された証明システムです。

Lambda-the-Ultimateは、プログラミング言語について話したり、学習したりするのに適した場所です。

于 2008-10-14T12:56:01.550 に答える
5

特にR6RSの化身では、Schemeと言わざるを得ません。

于 2008-10-14T12:58:23.667 に答える
4

Io(http://www.iolanguage.com/ )またはLisaac(https://gna.org/projects/isaac/ )またはSelf ( http://self.sourceforge.net/ )またはSather(現在は)をご覧ください。絶対に忘れられた)またはEiffel http://www.eiffel.com

なぜここにいくつかの理由があります。Ioは絶対にミニマルであり、シンタシットエンティティとしての「制御フロー要素」さえありません。Lisaadは、AFAIKTを多く簡略化したEiffelのフォローアップです。SelfはSmalltalkのフォローアップであり、IoもSelfからかなりの量を取得しています。基本的なことは、クラスとオブジェクトの区別が放棄されているということです。Satherは、他のいくつかのルールと関数型プログラミングのより良いサポート(最初から)を備えたEiffelの答えです。

そして、Eiffelは、静的に型付けされたオブジェクト指向言語の特徴です。Eiffelは、契約による設計、ジェネリック(別名テンプレート)、および継承を処理するための最良の方法の1つをサポートする最初の言語でした。それは今もなお単純な言語の1つです。私は、エッフェルに最適なライブラリを見つけました。

作成者には1つの問題があり、OOフィールドへの他の貢献を受け入れませんでした。

よろしく

于 2008-10-22T10:35:44.387 に答える
4

Modula-2 は、私が最も興味深いと思った非主流言語です。主流に見えますが、私たちが慣れ親しんでいるようには機能しません。Pascal から多くを継承していますが、興味深い学習の可能性を提供するのに十分なほど異なっています。

于 2008-10-14T12:32:08.493 に答える
3

プログラミングの習慣を再考する必要のある言語を学ぶことは必須です。確かな兆候は、(ライブラリではなく)言語のコアのドキュメントをざっと読むペースです。ここでは速い意味は無益です。

私の短いリストは、露出の順序と、それらから学んだ概念は次のとおりです。

  • アセンブリ、C:ポインタとその算術を学ぶのに最適です。
  • C ++:信じられないほど冗長な構文に耐えられる限り、ジェネリックスの紹介を含むCと同じです。
  • Ruby / Lua:スクリプト言語、動的型付け、既存のCライブラリのバインディングの記述。
  • Python / C#/ Java:スキップされました。これらの言語は、巨大な標準ライブラリを使用して他の場所で発生した概念の再ハッシュとして私には見えます。確かにパッケージ全体は素晴らしいですが、ここでは新しい概念を学ぶことはありません。
  • OCaml:型推論は正しく行われ、部分適用、コンパイラは一般性を推測し、デフォルトとして不変性、nullをエレガントに処理する方法。
  • Haskell:デフォルトでは怠惰、モナド。

私の€.02。

于 2008-10-14T12:17:45.107 に答える
3

ロゴが忘れられているなんて信じられない。さて、ロゴです。Lisp に似ていますが、構文が少し醜いです。Logo でリストを操作していると、'butfirst' および 'butlast' 操作という愉快な名前に遭遇します。=P

于 2009-06-23T02:12:16.300 に答える
3

ML。それを学び、それを使用することで、プログラミングの問題について異なる考え方をする必要があります。また、ほとんどの場合、1 回の忍耐力も付与されます。多くの。

于 2009-10-02T20:21:03.997 に答える
3

最近、この質問からIconの存在を知りました。それ以来、いくつかの質問への回答に使用しています。( 1 , 2 , 3 , 4 )

興味深いのは、その評価方法にあります。これは、私が知っている中でバックトラッキングをサポートする唯一の命令型言語です。それは多くのことのためにいくつかの素敵な簡潔なコードを可能にします:)

于 2008-10-14T11:13:51.350 に答える
3

行ってみませんか?それは真新しいので、未知であり、主流ではありません (まだ)。

C とパスカルを jar に入れて戦わせた後の構文のように見えるので興味深いです。

于 2009-12-01T22:52:33.987 に答える
2

かつてはMUMPSと呼ばれていましたが、現在は InterSystems Caché http://www.intersystems.com/cache/と呼ばれています。

于 2008-10-14T13:17:09.620 に答える
2

動的タイプのハーバー。ビジネスアプリの素晴らしいオプション。

于 2009-12-01T22:27:39.053 に答える
2

Ken Kahn の ToonTalk、ハードコアな理論的基盤を持つ漫画言語: http://www.toontalk.com/

Prograph: http://en.wikipedia.org/wiki/Prograph ... Prograph は Marten として存続しているようです: http://andescotia.com/products/marten/

Self's IDE は美しさであり、フローについて話します (Csíkszentmihályi の意味で)...

全体としては、Haskell が最も興味深いと言わざるを得ません。Haskell が表すコンピューティングの潜在的な進歩については。

于 2008-10-30T18:15:24.760 に答える
2

最初の答え - スキーム。あまり広く使用されているわけではありませんが、特に DrScheme の堅牢性 (実際には、Scheme プログラムをネイティブ バイナリ コードにコンパイルする) を考慮すると、確実に使用できる言語のように思えます。

その後 - Haskell は信じられないほど興味深いものです。これは遅延評価を正しく行う言語であり、その結果は驚くべきものです (フィボナッチ数列の 1 行の定義などを含む)。

Python は主流になりつつありますが、ビジネス界ではまだ広く受け入れられていません。

于 2008-10-19T07:51:08.227 に答える
1

Mathematicaは独自に成功した用語書き換え言語であるため(コードを評価するまったく異なる方法です!)。

于 2008-10-19T05:37:37.983 に答える
1

もちろんリボル!それはとてもシンプルですが、とても強力ですhttp://reboltutorial.comでそれを学びましょう

于 2009-06-23T01:48:50.263 に答える
1

静的タイプの Eiffel。

于 2009-12-01T22:21:59.750 に答える
1

最近、Windows PowerShellについていろいろ調べました。

必ずしも単なる言語ではありませんが。組み込みのスクリプト言語を備えた素晴らしいシェルです。これは基本的に、非常に強化されたコマンド ライン シェルです。

すべてが文字列テキストである Unix シェルとは異なり (これには確かに利点があります)、PowerShell コマンド (コマンドレット) はオブジェクトを使用します。これは .Net フレームワークに基づいているため、これに精通している皆さんは、PowerShell が返すものはすべてパイプ処理でき、そのオブジェクトのプロパティとメソッドを使用できることをすでに理解しているでしょう。「すべてが物だ!」と言うのは楽しいです。OOPが大きくなったときのように。

非常にきちんとしたもの。Windows は初めて、grep に似た Unix コマンド ライン インターフェイス ツールのいくつかとその全体を実装しています。

于 2009-06-23T02:12:22.993 に答える
1

VM に興味がある場合は、 Parrotを参照してください。多数の言語がサポートされており、非常に優れています。

O'caml は、コンパイラの実装方法を学びたい場合に適した言語です...

于 2009-06-23T02:12:25.910 に答える
1

FactorOz、およびOCamlは非常に興味深いと思います。実際、私は個人的なプロジェクトで Factor を使い始めました。

于 2009-05-01T12:45:43.360 に答える
1

私が最初に学んだ主要な (BASIC 以外の) 言語は、http: //www.byond.com の Dream Maker でした。C++ や Java に多少似ていますが、マルチプレイヤー オンライン ゲームを設計するために大部分が事前に構築されています。それは非常に継承に基づいています。特に最初の言語としては興味深い言語であり、満足のいく結果がより早く得られます。正直なところ、プログラミングを初めて学ぶほとんどの人は、1 つのことに興味があります... ゲーム。

于 2009-04-28T02:53:12.670 に答える
1

Tclを心からお勧めします。言語でうまく遊ぶというあなたの考え方に合っていると思います。

正直、あまり知られていません。Tk の人気により、ほとんどのプログラマーは遅かれ早かれこの問題に遭遇するでしょう。しかし、ほとんどのプログラマーは疫病のように避けたり避けたりしているため、ほとんどのプログラマーは言語を完全には知りません。私の意見では、不当にそうです-彼らは、その単純なセマンティクスから抽出できる美しさと力を理解していません.

Tcl はとても遊び心のある言語です。たとえば、tcl の OO を取り上げます。tcl 用の tcl で OO システムを設計することは、ほとんど趣味です。毎年誰かが新しいものを考えます。もちろん、製品コードの場合、ほとんどは確立されたライブラリを使用します-そうです、tcl OO は単なるライブラリです!

Tcl コミュニティが続けているもう 1 つのゲームは、Tcl インタプリタに他の言語の構文やセマンティクスを理解させようとすることです。以下に示すように:

インタープリターからすべての条件付き構造を削除し、それから使用可能なプログラミング言語を構築できるかどうかを確認するなど、プレイできるゲームは他にもたくさんあります。それが純粋な関数型プログラミングについての議論につながり、コンビネータ ロジック、カリー化、および教会の数字につながりました。

真剣に楽しいもの。

于 2010-01-18T13:45:20.227 に答える
1

レイア!

http://wiki.reia-lang.org/wiki/Reia_Programming_Language

それは意味のある Erlang であり、美しいものであり、私は恋に落ちています。ウィキペディアのページさえないほど知られていません!

于 2008-10-19T07:24:30.480 に答える
1

より優れた Lisp である Scheme がすぐに思い浮かびます。

また、あなたの質問が難解な言語の資格を失うことは知っていますが、INTERCALを検討してください。おもしろいCOME FROM演算子があります( のようGOTOですが、ジャンプポイントではなくジャンプ先に配置されます)。この演算子は奇妙に思えますが、その影響はアスペクト指向プログラミングに見られると言えますか? AOP では、アドバイスは外部の場所で指定されることが多く、アドバイスされたコードを見るだけでは制御フローが明確になるとは限りません。ただし、アドバイスを見ると、読者はコントロールがどこから来るのかを知ることができます。

COME FROM は AOP に似ているという点で、少なくとも1 人は同意しているようです。

于 2008-10-14T13:08:39.747 に答える
0

Nemerlehttp ://nemerle.org/Main_Page

.NETプラットフォーム用の強力な静的型付けプログラミング言語。関数型プログラミングパラダイムとオブジェクト指向パラダイムをサポートします。Nemerleマクロは、この言語を非常に強力で拡張可能にします。マクロの詳細については、http://nemerle.org/Macrosを参照してください


エッフェル http://eiffel.com

これは、これまでに設計された中で最も強力で真にオブジェクト指向の言語の1つです。この言語を使用して、Cコードまたは.Netプラットフォームでコンパイルできます。これは、契約による設計とVoid Safetyを備えた非常に最初の言語であり、アプリのバグを大幅に減らすことができます。

VoidSafetyとCARHoareの「10億ドルの間違い」の詳細については:

B.Meyer「VoidSafety:Null Dereferencingの疫病に終止符を打つ」、Dr。Dobb's Journal 01、2009、http://www.ddj.com/architect/219500827またはhttp://se.ethz.ch/ 〜meyer / publications / hoare / void-safety.pdf

于 2010-01-18T13:27:17.057 に答える
0

OHRRPG.CEゲーム エンジンについて聞いたことがありますか?

ゲームの「スクリプト」に使用されるコンパイル済み (!) 言語はどうですか?

まず、スペースはコンパイラによって削除されます。連続したスペースではなく、すべてのスペース. 「ウォーク ヒーロー ノース」と書くことは、「ウォークヘロノース」や「ウォーク ロン ルート」と同じです。

私は長い間それを使用していませんでしたが、以前に不満を抱いていた多くのこと (すべての関数のソース コードの一番上にパラメーターを定義してから、関数自体を配置するなど) が修正されました。

また、もう一度言いたいのですが、ゲームにスクリプトをインポートする前に、スクリプトをコンパイルする必要があります。ただし、ゲーム エディター自体にコンパイラーが含まれていない理由はありません。

于 2009-06-23T01:54:46.180 に答える
0

Autoplay Media Studioの AMS-Script 。Lua のスーパーセットです。

于 2009-10-04T09:22:52.200 に答える
0

ポポログは素晴らしいです。IIRC は、Prolog、lisp、およびその他のいくつかの言語のマッシュです。70 年代のすべてのプログラミング言語に乱交があり、偶然にも赤ちゃんが生まれたとしたらどうでしょうか。

人工知能のコースで初めて紹介されました。これを使用すると、辞書を除いて 100 行未満でチャットボットを作成できます。

それは素晴らしいです。

詳細については、ウィキペディアを参照してください。

于 2010-03-03T21:36:15.313 に答える
0

Digital Mars D言語の動議に賛成します。C# や Python の生産性向上機能の多くを備えていますが、C の低レベルの機能を備えています。C の概念を学習するのに最適な言語であり、インライン アセンブラー (学習用) と、コントラクト、デリゲートによる多くのプログラミング パラダイムのサポートも提供します。 、およびいくつかの反射。また、非常に優れた配列処理と完全な Unicode サポートも備えています。

また、OCaL に興味を持った場合は、OCaL に触発されたF#をチェックしてみてください。これは、これまで「コミュニティ プレビュー」でしかリリースされていない新しい .NET 言語ですが、かなりクールに見えます。

于 2009-04-20T22:06:18.093 に答える
0

私にとってそれは、洗練された機能的なスタックベースの言語であるJoy プログラミング言語です。この種の言語の実装に興味がある場合は、類似しているが静的型システムを持つCat プログラミング言語を見ることができます。C# やその他の言語で利用できる実装があります。

注: 私が実際に Cat の作成者であることを明らかにする必要があります。

于 2010-01-18T12:50:26.683 に答える
0

Lolcodeは、私が出会った中で最も興味深く、面白いプログラミング言語の 1 つです。

于 2009-10-04T09:48:47.373 に答える
0

Lavaは非常に興味深い実験言語です。RAD にとって非常に役立ついくつかの新しい概念を取り入れようとしています。現時点では実用化されていませんが、長期的には興味深いものです。

より実用的ですが、同様に興味深いのはL.in.oleum (セクションを選択してください。リンクが長すぎて貼り付けられません) 言語です。アセンブリのような低レベル言語ですが、習得がはるかに簡単で、クロス/プラットフォームであると主張しています (個人的にはテストされていません)。いくつかの非常に優れたプログラムがこの言語で開発されています (ウェブサイトを見てください)。

もちろん、いくつかのより一般的な言語も学習に役立ち、いくつかの興味深い点を提供します。

  • ADA: 優れたコンセプトで、コードを習得しやすく、NASA や Boing による軍事プロジェクトでも使用されています。
  • Ruby: 非常に習得が容易な oo スクリプト言語。GUI テストと Web 開発には必須です。
  • ERLANG: 主に Ericsson が並列プログラミングに使用する言語で、関数型言語でもあります。
  • ロゴ: 小学生を教える言語 (別名: 初心者向けの Lisp)。

最後に、複雑なコンピューター生成アートを作成するための言語であるContext Freeをお勧めします。

于 2008-10-14T12:47:41.270 に答える
-2

次のセットはあなたを忙しくさせます:

FORTRAN - 工学界で長年人気があった単純な言語
LISP - 古典的な AI 言語。私の見解では Prolog の方が優れていましたが、LISP の方が人気があり
ました。
ALGOL - FORTRAN の多くの問題を修正するために作成されました。Cの祖父であり、

いずれも当時、非常に影響力のある言語でした。

于 2008-10-14T11:05:58.030 に答える