トーク:Swift

ページのコンテンツが他言語でサポートされていません。
出典: フリー教科書『ウィキブックス(Wikibooks)』

構造体はオブジェクト指向の単元に分類すべきか[編集]

サブページのリンクで、『Swift/オブジェクト指向 - 主に列挙体、クラス、構造体について』ってありますけど、標準C言語にも90年代の昔からある列挙体と構造体って「オブジェクト指向」なんですかね?

普通、構造体と列挙体は構造化プログラミングに分類されると思うんですが・・・。一般的に「オブジェクト指向」ってC++以降を言うと思いますし、カプセル化とかポリモ-フィズムがうんたらかんたらだったと思いますが。あるいはJavaScript的なアレ。


Wikipedia日本語版を見ても、あまり構造体と列挙隊の歴史的な経緯が書いてないので、ついでに調べたところ『C言語の構造体をめぐって』(2022年6月16日に確認)、構造体に至っては algol 68 ですでに構造体が存在していたとのこと。

さらに 『ALGOL ‐ 通信用語の基礎知識』1999/09/25 作成, 2008/01/20 更新によると、当然ですが1968年にAlgol 68 が発表されたとのこと。


Wikipedia日本語版によると、歴史的には1960年代から「オブジェクト」「指向」という言い回しはIT業界にあったらしいですが。 C89でenumが追加されたとのこと。 なお、wikipediaによるとC言語は1972年に発表とのこと。


構造体についてはググって調べたところ、COBOLに似たような機能があるらしく、1964年のPL/1を経て、さらにalgol 68に「構造体(structure)」という用語もあり、それをC言語が参考にした可能性が高いと主張しているサイトが見つかりました。『C言語の構造体をめぐって』(2022年6月16日に確認)。COBOLをオブジェクト指向プログラミングとは言わないと思います。そもそも構造化プログラミングと言えるかどうかすら怪しい。


構造体は、「オブジェクト」と言うより「データ構造」と言うべきだと思います。よく「配列」がデータ構造の例だと言われますが。でも通信用語の基礎知識のサイトでもAlgol 68 が「構造化言語」として分類されていますし。構造体は構造化言語にあるデータ処理の便利概念なんだがら、データ構造と呼んでもいいでしょ。


学者の書いた『データ構造とアルゴリズム』とかの書名の教科書には配列と二分木とかの話題ばかりが書いてある事なんて、どうでもいい。--すじにくシチュー (トーク) 2022年6月15日 (水) 21:16 (UTC)[返信]

私はあまりプログラミングについては知らないんだけど……知らないんなら口出すなと言われそうだけど……^^;;……
クラスは明らかにオブジェクトでは? 今では構造体と列挙型はクラスに準じるものと見られているように思いますね…。
私の手元には「パーフェクトC#」という本があって、しかも私の持ってるのは2008年版ですよ。この本でC#の勉強はじめましてね……でも2022の現在でも半分しか読んでいない^^;;。
この本の本文ではなくCDROM付録にオブジェクト指向の解説がありまして……いつか読みたい読みたいと思っていて、いまだに読んでいません^^
しかしいつごろからか、オブジェト指向ってやたら云われるようになりましたね……私は大した理解してませんよ……object、プログラムの要素をすべて客体にしていこうという事ですかね…。そういえばすべてのオブジェクトは、objectクラスから発生しているのが、C#だったような…。
あと学者の二分木なんてどうでもいいという事ですが、やはりプログラムやオブジェクトの原理として重要な事だと思うので、どうでもいいは言い過ぎでは?^^;。--Honooo (トーク) 2022年6月15日 (水) 21:58 (UTC)[返信]