フューチュラマ
次の大きなプログラミング言語は期待されていません。 少なくとも進化論の観点からは理由はありません。
進化は動物の世界だけでなく、適切な環境でも機能します。 1976年にリチャードドーキンスの本「The Selfish Gene」がリリースされて、このアイデアが初めて広まりました。 社会的および文化的環境の進化の例として、おなじみの用語「ミーム」を導入しました。 プログラミング言語も進化しています。 そのため、それらの開発は進化の原則に従い、それに基づいて将来の開発について推測することができます。
![画像](https://habrastorage.org/getpro/habr/post_images/c40/5ab/14e/c405ab14e3927774868916d3a50ed839.jpg)
次のメカニズムは、進化の原理の作業に必要です:変動性、形質の継承、自然選択。 プログラミング言語のこれらの要件を満たすことはかなり明白であるようです。 簡単な例は、プログラミング言語の開発の図であり、おそらくあなたの後ろのポスターに誇示されています。
![画像](https://habrastorage.org/getpro/habr/post_images/3cc/8f3/172/3cc8f3172fb092c84b11a2c55c096484.gif)
新しいプログラミング言語の作成は、作成者のメリットにすぎないと反対する人もいるかもしれません。 James GoslingはJava、Guido Van Rossum(Python)、およびKernighan and Richie-Cを作成しました。しかし、実際には、プログラミング言語の「遺伝子」から何か新しいものを収集することによって、変動のメカニズムを実装するだけです。 たとえば、ABAPで全世界を開発することを強制することはできませんが、それは著者のメリットを損なうものではありません。
次の大きなプログラミング言語がいつ登場するかを理解するには、島の原理をよく理解する必要があります。 しかし最初に、好奇心のためだけに、プログラミング言語への進化の他の原則の適用を見てみましょう。
絶滅と遺伝子
口頭スピーチとの類推を使用して、誰も現在開発していない言語を消滅させることを検討します。 これらの言語のコンパイラが存在する場合でも、それらの言語用に作成されたプログラムを起動できます。一部の「プログラミング歴史家」は、それらの言語で新しいコードを作成できます。
言語C(1972)とパスカル(1970)の先祖がB(1969)とAlgol(1958-68)であったことは誰もが知っています。 言語Bは「古い」ために忘れられていると言うのは誤りです。 Lisp(1958)は古く、その方言は言語の名前と同様にまだ使用されています。 はい、そしてCは、彼がもう若くないという事実にもかかわらず、世界中の何百万人もの開発者による最高のプログラミング言語としての地位を固く守ります。
元の言語マニュアルの Bのサンプルコードを見てみましょう。 同意します、それは現代のCからそれほど遠くありません:
main() { extrn putchar, n, v; auto i, c, col, a; i = col = 0; while(i<n) v[i++] = 1; while(col<2*n) { a = n+1 ; c = i = 0; while (i<n) { c =+ v[i] *10; v[i++] = c%a; c =/ a--; } putchar(c+'0'); if(!(++col%5)) putchar(col%50?' ': '*n'); } putchar('*n*n'); } v[2000]; n 2000;
, B , — “” . C Pascal — “struct” “record”. , , C Pascal , ? .
«» , : . , «, , , !». , — , 1946 (ENIAC).
— , , . . Fortran (1957), 1977 . .
C — . , “ ” , , . , — , , B Algol . Fortran , 1990 .
. , . , — . , , .
, . C Pascal — , -.
Windows 1.0 (1985) node.js (2009). Windows 1.0 , node.js — -. , — . , “” “”. node.js watchdog .
, “” , UNIX (1969) — Erlang (1986). , node.js , , C Pascal — .
, 2009 Go, — ”go routines”. , , Erlang.
, “ ” “ ”. , - , - . , “” . , — , , . , , «, ».
C. , . C/C++. , , , . , .
— Java. , . “synchronized”, , , “Hashtable”. , Java — “concurrent” . , “stateless” “immutability”, “concurrency” — “ConcurrentHashMap”, . , . “Hashtable” Java , , “StringBuilder”, “StringBuffer” — , Java-.
Java , “” “” . .Net , .
. , — , — , . .
, . .
Java. , Java , — , . . Java 1991 ( Oak). , Java- . , Java Sun Microsystems — “” , . 1993 Mosaic, .
, , . . 1995 Java . , , . , Java , Applet — , 2015, HotJava. Java . , . 1990-, , — C++ Perl, . Java , 2002 Microsoft.
, 1995 JavaScript. Java , .
, 1995 PHP . , “P”.
. . , - .
. . Apple iPhone (2007) Objective-C (1984), Google — Java Android (2008). , (. « Apple Google»). , Swift, .
- 2009 , - WebSocket . Node.js Go, Erlang. Go Node.js Erlang, Go , , , “”. . - — Elixir (2012), Erlang.
— Doom, . -, , Tizen.
C++ Python, Java, Lua (1993) R (1993). — .
, . “ ” “ ”. , . , , . .
Apple Swift Objective-C 2014. , .
JetBrains Kotlin 2011, IDEA NullPointerException. .
Google Dart “ JavaScript” 2011. , , , Dart . Dart TypeScript (2012) JavaScript, , .
Mozilla Firefox Rust (2010). — , Rust . — Go - , Rust .
Python 3, , 2006 Python 3000. 2008. Python 2 , , , 3000 .
Python - , Perl 6 . 2000, Perl 5 (1994), Perl 6, , - 2015.
, . , , , . , .
— . JavaScript, Java, C#, Python PHP, . , . , Rust Go , , , .
,
,
,
“”