Goが特徴とするプログラミングパラダイムの名前は何ですか?


8

Goがクラス階層を放棄する方法に興味をそそられ、典型的なオブジェクト指向の意味でのクラスの概念を完全に放棄しているようです。また、そのインターフェースを実装する型を知る必要なしにインターフェースを定義できる方法にも驚いています。

このタイプのプログラミング方法論と言語パラダイム(またはおそらくそれの特定の側面)を特徴付けるために使用できる/使用できる用語はありますか?Go言語のパラダイムは、古典的なOOPパラダイムから十分に新しく、明確であり、一意の名前を保証するためにコンピュータプログラミングの歴史において十分に重要ですか?


2
「Go-goコーディング」と呼ぶことをお勧めします。:P
FrustratedWithFormsDesigner 2012年

4
「型に型自体を知らせずにインターフェースを実装させる」という概念は新しいものではありません。Haskellは、かなり以前から、ほとんど同じものを(インターフェイスではなくタイプクラスと呼んでいます)持っています。
tdammers 2012年

7
type-ignorantly-implementing-interfaceはダックタイピングの一種と考えており、Rob Pikeはこのプレゼンテーションでそのように明言しています:golang.org/doc/ExpressivenessOfGo.pdf
Adam Crossland

回答:


10

これらのコンテキストを動的に作成および破棄する機能と相まって、軽量の実行コンテキスト間で受け渡しされるメッセージは、基本的にはアクターモデルです。

プログラミング言語は、次の2つの方法のいずれかで式の問題にアプローチする傾向があります。オブジェクト指向言語は、異なるデータ型を使用して同じ操作を実装しやすくすることに焦点を当てる傾向があります(たとえば、「マウスでクリックできるオブジェクト」はスクロールバーになる場合があります)。ウィンドウ、メニュー、テキストボックスなど-同じ操作、異なるデータ表現)、関数型言語は同じ基本データ型に対して新しい操作を簡単に実装することに焦点を合わせる傾向があります。クラス階層を放棄することにより、Goはこの分割の「機能的」側により多く行き着くようです。

Adam Crosslandが彼のコメントで指摘したように、「type-ignorantly-implementing-interface」は、動的言語で非常に普及しているアヒル型付けの一種と見なすことができます。(ただし、これをGo内の構造型システムと見なす方が技術的に正確です。C++テンプレートは、おそらく現在最も一般的な構造型システムの実装です。)

Goには多くの前例があります。そのアイデアのいずれも言語に固有のものではないと思います。しかし、私はそれが実用的であることを意図された言語にとって一般的に間違った尺度だと思います。Goは、いくつかの異なるドメインからの有用なアイデアをエレガントな方法で組み合わせたように見えます。これにより、C#やJavaがもたらすよりも生産性の高いプログラミングが得られると思います。私はそれが牽引力を得ることを望みます。


1
+1、特に「Goは複数の異なるドメインからの便利なアイデアをエレガントな方法で混ぜ合わせているように見える」
RCE

3

並行処理プリミティブ。

Communicating Sequential ProcessesまたはCSPは、Charles Antony Richard Hoareによる論文で、1985年にPrentice Hall Internationalによって最初に発行されました。

Erlangは関数型言語であり、Goは構造化されています。ErlangはGoの述語であると言えるかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.