2

プログラミングは長い道のりを歩んできました。私はまだ比較的若いので(最初のコンピューター:C64)、プログラミングの多くのことを当然のことと考えています。これらは、ある時点で明らかに導入され、現在では一般的なプログラミング方法を促進します。

以下は、機能の(完全ではない)リストです。ここで、どの言語でいつ導入されたかを知りたいと思います。

  • 機能の紹介
  • コンパイル言語
  • 通訳言語
  • 条件付きおよびループ構造
  • アレイ
  • 辞書(ハッシュテーブル)
  • マルチスレッドの許容値
  • 関数型プログラミング(データとして機能)
  • オブジェクト指向(より具体的にする必要がありますか?おそらく、インターフェースよりも先に継承がありましたか?)
  • ジェネリック
  • アスペクト指向プログラミング
  • メタプログラミング

可能であれば、いくつかの参照を使用してステートメントをバックアップしてみてください。重要なプログラミング言語の機能を見逃していると感じた場合は、その紹介も評価してください。リストに追加できるように、この質問にコメントしてください。

更新: プログラミング言語では、アセンブラーでは不可能なことは何も導入できないと思います。むしろ、特定の機能を「単なる人間」が利用できるようにする言語を探しています。

4

5 に答える 5

8

舌足らずの発音。1958年。

または、

  • 関数の紹介-アロンゾチャーチのラムダ計算、1930年

  • コンパイル型言語-GraceHopper、1952

  • 通訳言語-Lisp、1958年、多分以前の何か。

  • 条件付きおよびループ構造-BletchleyParkBombe 1940年代(ループで実行)。ジャカード、1801年

  • 配列-インデックス付きの連続したメモリチャンクとして、BletchleyParkまたはManchesterBaby、1940年代

  • 辞書(ハッシュテーブル)-?

  • マルチスレッドの許容量-Jacquard、1801; マルチックス1965

  • 関数型プログラミング(データとして機能)-ゲーデル、1930年代

  • オブジェクト指向

    • 継承を伴うクラスベースOOのSimula(Dahl and Nygaard 1967)
    • CLU(Liskov 1975)イテレーターは共通のインターフェースを持ち、カプセル化された状態と動作を持つ抽象データ型を許可していました
    • Smalltalk(Kay 1970年代後半)'すべてがオブジェクトです'
    • Eifell(Meyer 1986)の契約による設計は、Javainterface
  • ジェネリックス-ジェネリックメソッド(再びLisp)またはパラメトリック型(modula ???)?

  • アスペクト指向プログラミング-一般的なlispメタオブジェクトプロトコル、1980年代後半

  • メタプログラミング-50年代または60年代のLispマクロ

于 2009-07-06T09:22:35.720 に答える
4

私の知る限り(ウィキペディアの助けを借りて)、次のように述べます。

  • 関数- 「サブルーチンにジャンプ」などの命令を使用した早期アセンブリ。
  • コンパイルされた言語- おそらく1952 年の A-0または1957 年の[FORTRAN]( http://en.wikipedia.org/wiki/FORTRAN .
  • 通訳言語- 1970 年代のSmalltalk (?)。
  • 条件付き & ループ構造-ブランチ/ジャンプを使用した早期アセンブリ。
  • 配列- 最も初期のコンピューター (1940 年代) で使用されていました。FORTRANの言語機能として登場。このテキストを参照してください。
  • Hashtable - 配列データ構造の上で基本的なアルゴリズムのみを実際に使用するため、配列とほぼ同じ時期に. クラスとして、おそらくSmalltalkDictionaryで。
  • マルチスレッド- これはさらに、オペレーティング システム/ライブラリの機能ですが、もちろん言語機能によってマルチスレッド コーディングが容易になります。おそらく1960年代/​​1970年代にさかのぼりますが、Assembyでそれを行うことができると思います.
  • 関数型プログラミング-アラン・チューリングのラムダ計算に触発された、1950 年代のLISP
  • オブジェクト指向 (OOP) - 1960 年代のSimula
  • ジェネリック- 1970 年代のCLU
  • アスペクト指向プログラミング- おそらく2001 年のAspectJ 。
  • メタプログラミング- 初期アセンブリ、自己変更コード。

これを追加情報で自由に変更/更新してください。

于 2009-07-06T09:48:38.570 に答える
1

最初のものを見つけることは常に髪の分裂につながります。あなたがおっしゃったことは、大成功を収める前に何度か行われたに違いありません。それにもかかわらず、ここに試みがあります:

  • 関数-FORTRANですが、再帰的ではありません。再帰のためのLISPまたはAlgol。
  • コンパイル言語-FORTRAN
  • 通訳言語-LISP
  • 条件付きおよびループ構造-FORTRAN、しかしAlgolは私たちに構造プログラミングを与えました
  • 配列--FORTRAN
  • 辞書-Snobol、私は思う
  • マルチスレッドの許容量-PL/I
  • 関数型プログラミング-LISPですが、おそらく強い意味ではありません。
  • オブジェクト指向-Simulaですが、Smalltalkが真の人気者でした
  • ジェネリック-dunno
  • アスペクト指向-dunno
  • メタプログラミング-おそらくC++ですが、コード生成コードは新しいアイデアではありません
于 2009-07-06T09:25:46.697 に答える
1

ここで言語グラフを使用できます: http://www.levenez.com/lang/とウィキペディアで答えを見つけることができます。まず、Fortran 以来、関数、ループ、および条件分岐が使用されています。そして、1958 年に Lisp が登場しました。残りはその時だったと主張する人もいると思います :)

于 2009-07-06T08:55:29.130 に答える
0

「アセンブラ」と言っても差し支えないと思います。これらの概念のすべてではないにしても、ほとんどは非常に長い間存在しています。

于 2009-07-06T08:57:50.887 に答える