言語が商用ソフトウェアと同じであると見なされる場合、新しいリリースを正当化するために常に新しい機能を追加する必要が常にあることがわかりました。
バージョン1.0が最終バージョンである言語はありますか、またはありますか?もちろん、バグ修正はこれから免除されますが、機能セットは常に同じままですか?
このようにして、言語のすべての機能はうまく適合し、後方互換性のために廃止された機能がまだ残っているという事実の後にそれらがボルトで固定されているようには見えません。
いくつかの学術言語はこのようなものだと思いますか?しかし、この考えに従う商業的に成功した言語はありますか?付属のライブラリーも無料で新機能を入手できますが、言語は常に変わりません。
私が挙げることができる1つの例は、私のお気に入りの言語の1つであるC#です。この言語はかなり頻繁に使用され、リリースごとに機能が追加されています。これらの利点を活用するには、実際のタスクを手放し、些細な概念を拾い上げてそれらを組み合わせてより複雑な問題を簡単に解決する代わりに、かなりの時間をかけてこれらを学習する必要があります。
だから私はすべてが一貫していて、理にかなっており、可能な限り直交しているミニマリストのアプローチを探していると思います。
LISP、Smalltalk。偶然にも、それらはまた、束全体で最高の言語です。
LISPとSmalltalkはどちらも、強力な統一メタファーを中心に構築された言語です。 LISPのメタファーは、「すべてがリストです。このリストは、データとコードの両方を(関数として)表します」です。 Smalltalkのメタファーは「すべてがオブジェクトです。ビヘイビアーを呼び出す唯一の方法は、メッセージをオブジェクトに渡すことです」です。これらの比喩により、言語を安定させ、最小限に抑え、強力にすることができます。残りは図書館にあります。
すべての非最小(「肥大化」したい)言語で「制御構造」と呼ばれるものは、ここにライブラリの一部です(例:LISPのcond
関数; ifTrue:
/ifFalse:
Smalltalkのメッセージファミリーは両方とも、他の言語がif
キーワードを持つ条件付きを実装します)。
LISP/Smalltalkは、そのパラダイムのほとんど最小限の実施形態であり、それ以上のものではないことがわかります(LISP:関数型プログラミング、Smalltalk:オブジェクト指向プログラミング)。
TeX 、植字システムはバージョン3以降非常に安定しています。
TeXはバージョン3以降、特異なバージョン番号付けシステムを使用しており、バージョン番号は小数点の最後に余分な数字を追加することで更新が示されるため、バージョン番号は漸近的にπに近づきます。これはTeXが非常に安定していて、マイナーな更新のみが予想されるという事実を反映しています。 TeXの現在のバージョンは3.1415926です。デザインはバージョン3.0以降にフリーズされ、新機能や根本的な変更は追加されないため、すべての新しいバージョンにはバグ修正のみが含まれます。ドナルドクヌース自身はTeXを改善できる可能性のあるいくつかの領域を提案しましたが、現在も将来も同じ出力を生成する未変更のシステムを持つことは、新しい機能を導入することよりも重要であると固く信じていると述べました。このため、「完全に最終的な変更(私の死後に行われる)」はバージョン番号をπに変更することになると述べており、この時点で残りのすべてのバグが機能になります。
「それで、すべてが一貫していて、意味があり、可能な限り直交しているミニマリストのアプローチを探していると思います。」ステートメントですが、他の基準のほとんどを満たしています。
CとFortranは思い浮かぶ言語です。それらは非常に安定しており、構文は簡単に頭の中に含まれています。悪いコードを自分で書くことを除いて、これらの言語を使うときの驚きはほとんどありません。しかし、私はそれらを迅速なアプリケーション開発のための優れた言語として保持しません。
少し時間を費やすと、表現力を維持しながら仕事がかなり簡単になり、コードが複雑にならない機能を備えた言語の急速な進歩を好みます。
他の人はすでにLISPについて述べているので、 Forth と表示する必要があります。実装は非常に簡単で、言語のルールに従うのは簡単です。
「単語」の辞書を備えたスタックベースの言語です。一部の継承機能を使用して、言語を簡単に拡張できます。
タートルグラフィックの非常に簡潔な例:
\ 8.8 fixed point sine table lookup
-2 var n F9F2 , E9DD , CEBD , AA95 , 7F67 , 4E34 , 1A c,
: s abs 3C mod dup 1D > if 3C swap - then dup E > if
-1 1E rot - else 1 swap then n + c@ 1+ * ;
0 var x 0 var y 0 var a
0 var q 0 var w
: c 9380 C80 0 fill ; \ clear screen
: k >r 50 + 8 << r> ! ;
: m dup q @ * x +! w @ * y +! ; \ move n-pixels (without drawing)
: g y k x k ; \ go to x,y coord
: h dup a ! dup s w ! 2D + s q ! ; \ heading
: f >r q @ x @ y @ w @ r 0 do >r r + >r over + \ forward n-pixels
dup 8 >> r 8 >> plot r> r> loop o y ! x ! o r> o ;
: e key 0 vmode cls ; \ end
: b 1 vmode 1 pen c 0 0 g 0 h ; \ begin
: t a @ + h ; \ turn n-degrees
次に、: squiral -50 50 g 20 0 do 100 f 21 t loop ;
で実行すると、次のようになります。
このMicrosoft従業員の blog への謝辞。
LISPについて触れましたが、私が知っている最もミニマルな言語は scheme です。大学のコースでは、理解するのに苦労しました。しかし、それはプログラミングについての私の考え方を変えました、そしてそれは非常に最小限です。構文全体として、かっこ()
とスペースは最小限です。
言語の唯一の変更は、+
、define
などのプリミティブを組み込みに変換することの決定でした。これらは起動時に使用できますが、実行時に再定義できます。
Pythonは、設計目標の1つとしてミニマリズムを備えた言語の妥当な候補だと思います。これは比較的少数のコアコンセプトに基づいており、バージョン3は、とりわけ 言語を少し簡略化removingいくつかの機能。
(確かに、バージョン1から変更されていない機能セットと同じではありませんが、言語の作成者がいつでもバージョン1を呼び出すことができることを考えると、これは言語を評価するかなり恣意的な方法だと思います。)
そもそもミニマリストであるようにデザインされたTcl
そこから約ページ http://www.tcl.tk/about/features.html の特徴の1つは、習得が非常に簡単で、カジュアルなプログラマーでも、非プログラマーでも使用できることです。 。
難解 以外での発端以来、比較的変更されていない言語はほとんどありません==望ましいものとは思えない1つの言語(私は Befunge (最初の1.0リリース以降も変更されていますが))。
新しいことを学ぶ必要がないという欲求を満たす可能性が最も高い言語は、他のプログラム間の「接着剤」に特化した言語です。 jcl 、 bash、 などの言語。単純なスクリプト言語もこれに該当する可能性があります- awk はリーダーの1つです。
この領域を離れると、開発が行われます。言語またはフレームワーク。状況によっては、すぐに理解しているフレームワークを取得せずに言語をコーディングすることが「難しい」場合があります。
多くの言語には、ある程度の下位互換性があります。 Java 1.4は今日でもまだ書くことができますが、おそらくお勧めできません-人々が書いたフレームワークは言語よりも速く変更されています。f77とf90コンパイラはまだそこにあります。 20年または40年で変更されていない言語仕様。C、Objective C、C++は、言語の古い仕様にコーディングすることができます。新しい仕様がリリースされたか、新しいフレームワークのため、コードを更新し続ける必要はありません。そこにあります。
一部の言語は、言語自体が十分に強力であるため、変更されていない長い歴史があります。 LISPはこの分野の第一候補です。フォースはまた、「それはほとんど変わっていない」領域に分類されます。
より伝統的なスクリプト言語については、TCL、Perl、Pythonをご覧ください。現在「流行」の領域にあるもので、何らかの理由で人気が急上昇しているものは避けてください(Rubyとjavascript、私はあなたを見ています)。 TCL 長年にわたって変更されています 、ただしその目標の1つは設計の一貫性を維持することを試みることです。最新のPerlとPythonはどちらもある程度の設計の一貫性がありますが、確かに新しい機能はボルトオンされているように感じることがあります(ただし、は必要ありませんそれらを使用する)。