最も興味深い非主流の言語は? [閉まっている]
-
03-07-2019 - |
質問
コンパイラ、インタプリタ、言語に興味があります。
あなたが知っている最も興味深いが、忘れられている、または不明な言語は何ですか?そしてさらに重要なのは、なぜですか?
コンパイルされた言語、インタプリタ言語、VM言語の両方に興味がありますが、ホワイトスペースやBFなどの難解な言語にはありません。
もちろん、オープンソースはプラスになるでしょう。私はそれを勉強し、うまくいけばそこから学ぶつもりだからです。
解決
コンパイラとVMが大好きで、Luaが大好きです。
Luaは他の多くのスクリプト言語ほどサポートされていませんが、あなたのような考え方から、Luaにも恋をすることは間違いないでしょう。つまり、それはLispのようなものであり(私が知っている限りLispでできることは何でもできます)、ADAの主な機能がたくさんあり、さらにメタプログラミングが組み込まれています。あなたが望むかもしれないドメイン言語のVMのコードはシンプルなCであるため、そのレベルでも簡単に掘り下げて評価できます。
(そして、それはオープンソースのMITライセンスです)
他のヒント
私はDプログラミング言語のファンです。 ウィキペディアの記事と公式サイトの紹介。
ウィキペディアの記事の抜粋:
Dプログラミング言語(単にDとも呼ばれる)は、Digital MarsのWalter Brightによるオブジェクト指向の命令型マルチパラダイムシステムプログラミング言語です。これは、C ++のリエンジニアリングとして生まれましたが、その言語の影響を強く受けていますが、C ++のバリアントではありません。 DはいくつかのC ++機能を再設計し、Java、C#、Eiffelなどの他のプログラミング言語で使用されている概念の影響を受けています。安定バージョン1.0が2007年1月2日にリリースされました。実験バージョン2.0が2007年6月17日にリリースされました。
機能について:
Dは、理論的な観点からではなく、実用的なC ++の使用法から学んだ教訓で設計されています。多くのC / C ++の概念を使用していますが、一部を破棄しているため、C / C ++ソースコードとの厳密な下位互換性はありません。コントラクト、ユニットテスト、真のモジュール、ガベージコレクション、ファーストクラス配列、連想配列、動的配列、配列スライシング、ネストされた関数、内部クラス、クロージャー[2]、匿名関数、コンパイル時の関数実行、遅延評価、および再設計されたテンプレート構文があります。 Dは、低レベルのコーディングを行うC ++の機能を保持し、統合されたインラインアセンブラのサポートを追加します。 C ++の多重継承は、インターフェースとミックスインを備えたJavaスタイルの単一継承に置き換えられます。 Dの宣言、ステートメント、および式の構文はC ++の構文とほぼ一致しています。
「非主流」の意味に大きく依存していると思います。
lisp は非メインストリームとしてカウントされますか?
Erlangをご覧になることをお勧めします。最近少し報道されているので、学習リソースの一部は優れています。オブジェクト指向および/または手続き型言語を使用したことがある場合、Erlangは間違いなく新しいエキサイティングな方法であなたの心を曲げます。
Erlangは純粋な関数型言語であり、並行プログラム、分散プログラム、およびフォールトトレラントプログラムを完全にサポートしています。変数には実際にはまったく変数ではないという事実を含む、多くの興味深い機能があります。一度宣言すると変更できず、実際にはパターンの形式としてよりよく理解されます。
Erlangプラットフォーム(OTP)の上に構築し、Rubyのような他の言語のマシンサポートについてブログ界についていくつかの話があります。可能性。
最近 Ocaml および一般的な関数型言語。
たとえば、Ocamlは、可能な限り最高の世界を提供します。実行可能なネイティブマシン言語にコンパイルするコードを、Cと同じくらい高速に、または汎用的に移植可能なバイトコードを取得します。インタプリタを入手して、REPLスピードを開発にもたらします。関数型プログラミングのすべての力を活用して、完全に直交する構造、深い再帰、真の多態性を生成します。これらすべての上に、オブジェクト指向のサポートがあります。オブジェクト指向は、OOPが約束するすべて(カプセル化、モジュール化、直交関数、および多態的なリサイクル可能性)をすでに提供する関数型言語のコンテキストで、実際にそれ自体を証明することを強制されるOOPを意味します。Smalltalk (リンク先のディスカッションを参照)。動的言語の祖父の並べ替え(LispとSNOBOLの例外を除く)。非常に便利で、悲しいことにJavaと、PythonやRubyなどの新しい言語に踏みにじられています。
FORTHは、初期のCPUの低レベルコード用に設計された言語です。その最も注目すべき機能は、RPNスタックベースの数学演算でした。初期のHP電卓で使用されていたのと同じタイプの数学。たとえば、1 + 2 + 3 + 4 =は、1、2、3、4、+、+、+
と記述されます。HaskellとREBOLは、非常に異なる理由で、どちらも魅力的な言語です。
Haskellは、モナド、部分適用、パターンマッチング、代数型などの概念を使用して、開発者として本当に目を開くことができます。好奇心programmer盛なプログラマーにとってはバイキングです。
REBOLも前かがみではありません。最初は一見シンプルに見えますが、コンテキスト、PARSE方言、Bindologyなどの概念を詳しく調べ始めると、見た目以上のものがあることに気づきます。 REBOLの良いところは、Haskellよりも始めるのがずっと簡単だということです。
自分がどちらが好きかを決めることはできません。
Boo は.NETフレームワークを対象としており、オープンソースです。 Pythonに触発されました。
colorForth をお試しください。
PROLOGは、バックトラック機能を備えたルールベースの言語です。非常に人間が読める(prosaのような)コードを生成できます。
制約言語は興味深いと思いますが、何が忘れられているのか、未知であるのかを知るのは難しいです。ここに私が知っているいくつかの言語があります(これは確かにあらゆる種類の網羅的なリストではありません):
- Ciao 、 YAP 、 SWI-Prolog 、および GNU Prolog はすべてPrologの実装です。それらはすべてオープンソースだと思います。 Ciao、gnu prolog、およびおそらく他のものも、Prolog実装で一般的であるように、他の制約タイプをサポートします。たとえば、整数プログラミング。
- Mozart および Mercury は、私が理解しているように、両方とも代替ロジックプログラミング言語です。
- Alice はMLファミリーに属しますが、 GECODE C ++ライブラリ。
トピックから少し離れています...
Lambda-the-Ultimate は、プログラミング言語について話し合い、学ぶのに適した場所です。 。
特に R6RS の化身の場合、Schemeを言わなければなりません。
Modula-2は、私が最もおもしろいと思った非主流言語です。主流に見えますが、私たちが慣れ親しんでいるものとはまったく異なります。 Pascalから多くを継承しますが、興味深い学習の可能性を提供するのに十分に異なります。
http://www.iolanguage.com/ でIoをご覧ください。 またはLisaac: https://gna.org/projects/isaac/ またはSelf: http://self.sourceforge.net/ またはSather(今では絶対に忘れられている) またはエッフェル http://www.eiffel.com
ここにいくつかの理由があります。 Ioは絶対的に最小限であり、「制御フロー要素」さえもありません。統合されたエンティティとして。 LisaadはEiffelのフォローアップであり、多くの簡略化が行われています。 SelfはSmalltalkのフォローアップであり、IoもSelftalkからかなり多く取っています。基本的なことは、クラスとオブジェクトの区別が放棄されたことです。 SatherはEiffelに対して他のいくつかのルールと関数型プログラミングのより良いサポート(最初から)を持っています。
そしてエッフェルは、静的に型付けされたオブジェクト指向言語の特徴です。エッフェルは、契約による設計、ジェネリック(別名テンプレート)、および継承を処理する最良の方法の1つをサポートする最初の言語でした。かつてのシンプルな言語の1つです。私は自分のために、エッフェルに最適なライブラリを見つけました.....
作成者には1つの問題がありますが、オブジェクト指向分野への他の貢献は受け入れませんでした。....
よろしく
プログラミングの習慣を再考する必要がある言語を学ぶことは必須です。確かな兆候は、言語のコア(ライブラリではない)のドキュメントをざっと目を通すペースです。ここでは意味のない速い意味。
私の短いリストは、露出の順番であり、それらから学んだ概念は何ですか:
- アセンブリ、C:ポインターとその算術の学習に最適です。
- C ++:Cと同じですが、信じられないほど冗長な構文に耐えられる限り、ジェネリックを紹介します。
- Ruby / Lua:スクリプト言語、動的型付け、既存のCライブラリのバインディングの作成。
- Python / C#/ Java:スキップされます。これらの言語は、巨大な標準ライブラリを備えた他の場所から生まれた概念の再ハッシュのように見えます。パッケージ全体は素晴らしいものですが、ここでは新しい概念を学ぶことはありません。
- OCaml:型推論が正しく行われ、部分的に適用され、コンパイラーが汎用性を推測し、デフォルトとして不変で、nullをエレガントに処理する方法。
- Haskell:デフォルトでは怠iness、モナド。
マイ€ .02。
ロゴがそんなに忘れられているとは信じられません。わかりました、それはロゴです。 Lispに似ていますが、構文がややugいです。 Logoでリストを操作しているにもかかわらず、「butfirst」および「butlast」という名前の楽しい操作に遭遇します。 = P
ML。それを学び、それを使用すると、プログラミングの問題についての考え方が異なります。また、ほとんどの場合、1つの忍耐が与えられます。ほとんど。
go はどうですか。それは真新しいので、未知であり、主流ではありません(まだ)。
おもしろいのは、Cとpascalをjarに入れて戦わせた後に起こる構文のように見えるからです。
まあ、かつて MUMPS と呼ばれていましたが、今ではInterSystems Cach&#233と呼ばれています。 http://www.intersystems.com/cache/
最初の答え-スキーム。あまり広く使われているわけではありませんが、特にDrScheme(実際にはSchemeプログラムをネイティブバイナリコードにコンパイルする)の堅牢性を考慮すると、間違いなく使用する堅実な言語のようです。
その後-Haskellは非常に興味深い。それは怠rightな評価を正しく行う言語であり、結果は信じられないほどです(fibonnaciシーケンスの1行の定義などを含む)。
主流になりつつあるPythonは、ビジネス界ではまだ広く受け入れられていませんが、今では間違いなくそうなっているはずです...
Ken KahnのToonTalkは、ハードコアの理論的基盤を持つ漫画言語です。 http://www.toontalk.com/
Prograph: http://en.wikipedia.org/wiki/Prograph .. 。PrographはMartenとして生き続けているようです: http://andescotia.com/products/marten/
SelfのIDEは美しさのものでした。Flowについて話します(Csí kszentmihá lyiの意味)...
しかし、全体として、Haskellが最も興味深いのは、それが表すコンピューティングの潜在的な進歩のためです。
港。ビジネスアプリに対する素晴らしい意見。
レイア!
Erlangは理にかなっていて、美しく、私は大好きです。あまり知られていないので、ウィキペディアのページすらありません!
最初に学んだ主要な(非BASIC)言語は、 http://www.byondのDream Makerでした。 com 。 C ++やJavaに多少似ていますが、主にマルチプレイヤーオンラインゲームを設計するために事前に構築されています。それは継承に非常に基づいています。 特に開始言語として興味深い言語であり、満足のいく結果をより早く得ることができ、正直言って、最初にプログラミングを学んでいるほとんどの人はゲームに興味があります...
もちろんRebol! それはとても簡単ですが、 http://reboltutorial.com
最近、Windowsについてよく調べました PowerShell 。
必ずしも言語を単にとは限りません。スクリプト言語が組み込まれた素晴らしいシェルです。基本的には、非常に強化されたコマンドラインシェルです。
すべてが文字列テキストであるUnixシェル(これには間違いなく利点があります)とは異なり、PowerShellコマンド(コマンドレット)はオブジェクトを使用します。これは.Netフレームワークに基づいているため、PowerShellが返すものはすべてパイプ処理でき、そのオブジェクトのプロパティとメソッドを使用できることを既にご存じでしょう。 「すべてがオブジェクトです!」と言うのは楽しいです!再び、OOPが大きくなったときのように。
非常にきちんとしたもの。 Windowsは初めて、grepやバンドル全体に似たUnixコマンドラインインターフェイスツールのいくつかを実装しています。
VMに興味がある場合は、 Parrot をご覧ください。サポートされている言語とそれはかなりきちんとしている....
コンパイラを実装する方法を学びたいなら、O'camlは良い言語です...