コンパイラ、インタプリタ、言語に興味があります。
あなたが知っている、忘れられた、または知られていない、最も興味深い言語は何ですか? さらに重要なことは、なぜですか?
私はコンパイル言語、インタープリター言語、VM 言語の両方に興味がありますが、Whitespace や BF のような難解な言語には興味がありません。
もちろん、オープン ソースはプラスになるでしょう。
コンパイラ、インタプリタ、言語に興味があります。
あなたが知っている、忘れられた、または知られていない、最も興味深い言語は何ですか? さらに重要なことは、なぜですか?
私はコンパイル言語、インタープリター言語、VM 言語の両方に興味がありますが、Whitespace や 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 などの他のプログラミング言語で使用される概念の影響を受けています。2007 年 1 月 2 日に安定版 1.0 がリリースされました。2007 年 6 月 17 日に実験版 2.0 がリリースされました。
機能について:
D は、理論的な観点からではなく、実際の C++ の使用から学んだ教訓に基づいて設計されています。多くの C/C++ 概念を使用していますが、一部を破棄しているため、C/C++ ソース コードとの厳密な下位互換性はありません。契約による設計、単体テスト、真のモジュール、ガベージ コレクション、ファースト クラス配列、連想配列、動的配列、配列スライシング、ネストされた関数、内部クラス、クロージャー[2]、匿名関数、コンパイル時の関数実行、遅延評価、再設計されたテンプレート構文があります。D は、低レベルのコーディングを行う C++ の機能を保持し、統合されたインライン アセンブラのサポートを追加します。C++ の多重継承は、インターフェイスと mixin を使用した Java スタイルの単一継承に置き換えられます。Dの宣言、
「非主流」が何を意味するかに大きく依存すると思います。
Lispは非主流としてカウントされますか?
Erlang を見てみることをお勧めします。最近少し報道されているので、学習リソースのいくつかは優れています。オブジェクト指向言語や手続き型言語を使用したことがある場合、Erlang は間違いなく新しいエキサイティングな方法であなたの心を曲げるでしょう。
Erlang は純粋な関数型言語であり、並行プログラム、分散型プログラム、フォールト トレラント プログラムを根本からサポートしています。変数は実際には変数ではないという事実を含め、多くの興味深い機能があります。変数は一度宣言すると変更できず、実際にはパターンの形式としてよりよく理解されます。
ブロゴスフィアでは、Erlang プラットフォーム (OTP) の上に構築し、Ruby などの他の言語をマシンでサポートすることについての話があります。Erlang は、並行アプリケーションを実行するための一種の仮想マシンになるでしょう。これは非常にエキサイティングな可能性です。
私は最近、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は、モナド、部分適用、パターンマッチング、代数的データ型などの概念を使用して、開発者としての目を開くことができます。好奇心旺盛なプログラマーにとっては魅力的です。
REBOLも前屈みではありません。最初は一見シンプルですが、コンテキスト、PARSE方言、Bindologyなどの概念を掘り下げ始めると、目に見える以上のものがあることに気付きます。REBOLの良いところは、HaskellよりもREBOLを使い始めるのがはるかに簡単なことです。
どちらが好きかわからない。
Booは .NET フレームワークを対象としており、オープン ソースです。Python にインスパイアされました。
colorForthを試してください。
PROLOG は、バックトラック機能を備えたルールベースの言語です。非常に人間が読める (prosa のように) コードを生成できます。
制約言語は面白いと思いますが、何が忘れられているか、または不明であるかを知ることは困難です。私が知っているいくつかの言語を次に示します (これは完全なリストではありません)。
ちょっと話が逸れますが……。
Lambda-the-Ultimateは、プログラミング言語について話したり、学習したりするのに適した場所です。
特にR6RSの化身では、Schemeと言わざるを得ません。
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フィールドへの他の貢献を受け入れませんでした。
よろしく
Modula-2 は、私が最も興味深いと思った非主流言語です。主流に見えますが、私たちが慣れ親しんでいるようには機能しません。Pascal から多くを継承していますが、興味深い学習の可能性を提供するのに十分なほど異なっています。
プログラミングの習慣を再考する必要のある言語を学ぶことは必須です。確かな兆候は、(ライブラリではなく)言語のコアのドキュメントをざっと読むペースです。ここでは速い意味は無益です。
私の短いリストは、露出の順序と、それらから学んだ概念は次のとおりです。
私の€.02。
ロゴが忘れられているなんて信じられない。さて、ロゴです。Lisp に似ていますが、構文が少し醜いです。Logo でリストを操作していると、'butfirst' および 'butlast' 操作という愉快な名前に遭遇します。=P
ML。それを学び、それを使用することで、プログラミングの問題について異なる考え方をする必要があります。また、ほとんどの場合、1 回の忍耐力も付与されます。多くの。
行ってみませんか?それは真新しいので、未知であり、主流ではありません (まだ)。
C とパスカルを jar に入れて戦わせた後の構文のように見えるので興味深いです。
かつてはMUMPSと呼ばれていましたが、現在は InterSystems Caché http://www.intersystems.com/cache/と呼ばれています。
動的タイプのハーバー。ビジネスアプリの素晴らしいオプション。
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 が表すコンピューティングの潜在的な進歩については。
最初の答え - スキーム。あまり広く使用されているわけではありませんが、特に DrScheme の堅牢性 (実際には、Scheme プログラムをネイティブ バイナリ コードにコンパイルする) を考慮すると、確実に使用できる言語のように思えます。
その後 - Haskell は信じられないほど興味深いものです。これは遅延評価を正しく行う言語であり、その結果は驚くべきものです (フィボナッチ数列の 1 行の定義などを含む)。
Python は主流になりつつありますが、ビジネス界ではまだ広く受け入れられていません。
Mathematicaは独自に成功した用語書き換え言語であるため(コードを評価するまったく異なる方法です!)。
もちろんリボル!それはとてもシンプルですが、とても強力ですhttp://reboltutorial.comでそれを学びましょう
静的タイプの Eiffel。
最近、Windows PowerShellについていろいろ調べました。
必ずしも単なる言語ではありませんが。組み込みのスクリプト言語を備えた素晴らしいシェルです。これは基本的に、非常に強化されたコマンド ライン シェルです。
すべてが文字列テキストである Unix シェルとは異なり (これには確かに利点があります)、PowerShell コマンド (コマンドレット) はオブジェクトを使用します。これは .Net フレームワークに基づいているため、これに精通している皆さんは、PowerShell が返すものはすべてパイプ処理でき、そのオブジェクトのプロパティとメソッドを使用できることをすでに理解しているでしょう。「すべてが物だ!」と言うのは楽しいです。OOPが大きくなったときのように。
非常にきちんとしたもの。Windows は初めて、grep に似た Unix コマンド ライン インターフェイス ツールのいくつかとその全体を実装しています。
VM に興味がある場合は、 Parrotを参照してください。多数の言語がサポートされており、非常に優れています。
O'caml は、コンパイラの実装方法を学びたい場合に適した言語です...
私が最初に学んだ主要な (BASIC 以外の) 言語は、http: //www.byond.com の Dream Maker でした。C++ や Java に多少似ていますが、マルチプレイヤー オンライン ゲームを設計するために大部分が事前に構築されています。それは非常に継承に基づいています。特に最初の言語としては興味深い言語であり、満足のいく結果がより早く得られます。正直なところ、プログラミングを初めて学ぶほとんどの人は、1 つのことに興味があります... ゲーム。
Tclを心からお勧めします。言語でうまく遊ぶというあなたの考え方に合っていると思います。
正直、あまり知られていません。Tk の人気により、ほとんどのプログラマーは遅かれ早かれこの問題に遭遇するでしょう。しかし、ほとんどのプログラマーは疫病のように避けたり避けたりしているため、ほとんどのプログラマーは言語を完全には知りません。私の意見では、不当にそうです-彼らは、その単純なセマンティクスから抽出できる美しさと力を理解していません.
Tcl はとても遊び心のある言語です。たとえば、tcl の OO を取り上げます。tcl 用の tcl で OO システムを設計することは、ほとんど趣味です。毎年誰かが新しいものを考えます。もちろん、製品コードの場合、ほとんどは確立されたライブラリを使用します-そうです、tcl OO は単なるライブラリです!
Tcl コミュニティが続けているもう 1 つのゲームは、Tcl インタプリタに他の言語の構文やセマンティクスを理解させようとすることです。以下に示すように:
インタープリターからすべての条件付き構造を削除し、それから使用可能なプログラミング言語を構築できるかどうかを確認するなど、プレイできるゲームは他にもたくさんあります。それが純粋な関数型プログラミングについての議論につながり、コンビネータ ロジック、カリー化、および教会の数字につながりました。
真剣に楽しいもの。
レイア!
それは意味のある Erlang であり、美しいものであり、私は恋に落ちています。ウィキペディアのページさえないほど知られていません!
より優れた Lisp である Scheme がすぐに思い浮かびます。
また、あなたの質問が難解な言語の資格を失うことは知っていますが、INTERCALを検討してください。おもしろいCOME FROM
演算子があります( のようGOTO
ですが、ジャンプポイントではなくジャンプ先に配置されます)。この演算子は奇妙に思えますが、その影響はアスペクト指向プログラミングに見られると言えますか? AOP では、アドバイスは外部の場所で指定されることが多く、アドバイスされたコードを見るだけでは制御フローが明確になるとは限りません。ただし、アドバイスを見ると、読者はコントロールがどこから来るのかを知ることができます。
COME FROM は AOP に似ているという点で、少なくとも1 人は同意しているようです。
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
OHRRPG.CEゲーム エンジンについて聞いたことがありますか?
ゲームの「スクリプト」に使用されるコンパイル済み (!) 言語はどうですか?
まず、スペースはコンパイラによって削除されます。連続したスペースではなく、すべてのスペース. 「ウォーク ヒーロー ノース」と書くことは、「ウォークヘロノース」や「ウォーク ロン ルート」と同じです。
私は長い間それを使用していませんでしたが、以前に不満を抱いていた多くのこと (すべての関数のソース コードの一番上にパラメーターを定義してから、関数自体を配置するなど) が修正されました。
また、もう一度言いたいのですが、ゲームにスクリプトをインポートする前に、スクリプトをコンパイルする必要があります。ただし、ゲーム エディター自体にコンパイラーが含まれていない理由はありません。
Autoplay Media Studioの AMS-Script 。Lua のスーパーセットです。
ポポログは素晴らしいです。IIRC は、Prolog、lisp、およびその他のいくつかの言語のマッシュです。70 年代のすべてのプログラミング言語に乱交があり、偶然にも赤ちゃんが生まれたとしたらどうでしょうか。
人工知能のコースで初めて紹介されました。これを使用すると、辞書を除いて 100 行未満でチャットボットを作成できます。
それは素晴らしいです。
詳細については、ウィキペディアを参照してください。
Digital Mars D言語の動議に賛成します。C# や Python の生産性向上機能の多くを備えていますが、C の低レベルの機能を備えています。C の概念を学習するのに最適な言語であり、インライン アセンブラー (学習用) と、コントラクト、デリゲートによる多くのプログラミング パラダイムのサポートも提供します。 、およびいくつかの反射。また、非常に優れた配列処理と完全な Unicode サポートも備えています。
また、OCaL に興味を持った場合は、OCaL に触発されたF#をチェックしてみてください。これは、これまで「コミュニティ プレビュー」でしかリリースされていない新しい .NET 言語ですが、かなりクールに見えます。
私にとってそれは、洗練された機能的なスタックベースの言語であるJoy プログラミング言語です。この種の言語の実装に興味がある場合は、類似しているが静的型システムを持つCat プログラミング言語を見ることができます。C# やその他の言語で利用できる実装があります。
注: 私が実際に Cat の作成者であることを明らかにする必要があります。
Lolcodeは、私が出会った中で最も興味深く、面白いプログラミング言語の 1 つです。
Lavaは非常に興味深い実験言語です。RAD にとって非常に役立ついくつかの新しい概念を取り入れようとしています。現時点では実用化されていませんが、長期的には興味深いものです。
より実用的ですが、同様に興味深いのはL.in.oleum (セクションを選択してください。リンクが長すぎて貼り付けられません) 言語です。アセンブリのような低レベル言語ですが、習得がはるかに簡単で、クロス/プラットフォームであると主張しています (個人的にはテストされていません)。いくつかの非常に優れたプログラムがこの言語で開発されています (ウェブサイトを見てください)。
もちろん、いくつかのより一般的な言語も学習に役立ち、いくつかの興味深い点を提供します。
最後に、複雑なコンピューター生成アートを作成するための言語であるContext Freeをお勧めします。
次のセットはあなたを忙しくさせます:
FORTRAN - 工学界で長年人気があった単純な言語
LISP - 古典的な AI 言語。私の見解では Prolog の方が優れていましたが、LISP の方が人気があり
ました。
ALGOL - FORTRAN の多くの問題を修正するために作成されました。Cの祖父であり、
いずれも当時、非常に影響力のある言語でした。