質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

3回答

2058閲覧

集合の表現

mightyMask

総合スコア143

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

2クリップ

投稿2017/04/28 09:06

編集2017/04/28 09:10

例えば、人間を分けるには様々な手法があり、男性と女性、歴代の総理大臣とそれ以外、等と分類することが出来ます。
また、四角形には長方形とひし形があり、両方の部分集合であるものは全て正方形です。

これらをうまく表現できるような構文を設計したいです。
オブジェクト指向プログラミング言語は、継承を使い集合論をうまく表すことが出来ますが、今ある言語に搭載されている機能だけでは、上のような集合を明示的に表すのは難しい言語ばかりです。私はそれらを実現できる言語を知りません。それらを実現できるような言語を設計したいです。

具体的には、以下のような事が明示できる物です。
1.人間は女性と男性の直和集合である。
2.外延記法(歴代の総理大臣を列挙)と内包記法(女性と男性を分ける)両方の記述が出来る。
3.長方形とひし形をともに多重継承できるのは正方形だけ。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

流行らなかった言語ですが、Ceylonという言語の直和型と合併型がお考えのものに近いと思います。
特に合併型という概念を持っているオブジェクト指向言語はありそうでなかなかありません。


(追記)
ちょっと表層的な回答をしてしまったのでもう少し突っ込んだ内容を。

オブジェクト指向について誤解なさっているところがありそうなので、そこをまず述べる必要があります。
オブジェクト指向プログラミングは、世界のモノを分類したりコードで表現したりするためのものではありません
オブジェクト指向プログラミングで実現したいことはただ一つ、「データ構造が自分自身の操作の仕方を知っている」ことです。

何かの情報を取り扱うためにデータ構造として表現した→構造の仕組みをよくわかっていない人が変な操作をして壊されてしまうのは安全でないし、どう扱ってよいのかわかりにくいのでは分業開発に向かない→データ構造自体がサービスメニューを公開して、そのサービスメニューだけにアクセスできるようにしよう!
これがオブジェクト指向プログラミングであり、サービスメニューとはすなわちメソッドです。

で、このストーリーにはクラスの継承なんかでてきません。継承は、オブジェクト指向プログラミングにとって本質ではないのです。まして、モノの分類をするための道具ではありませんというのがごく真面目な答えになります。

投稿2017/04/28 09:32

編集2017/05/01 12:10
yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

全体集合があり、その内、特定の命題を満たすものが部分集合ですね。
命題は、条件を書いても良いし、要素を列挙しても良いです。
このようにして特定された部分集合に対して、和や交わり等の集合演算を行うことができます。
それらの演算は、命題をANDやOR等の論理演算子で結合したものと同義です。

このような話は命題論理と言う数学の範疇です。
「命題論理」をマスターしている人は的確に集合を明示でき、かつ、明示されたものを読み取れるだろうと思います。

そして、何らかの言語を開発することで、何らかの情報処理を比較的簡単にプログラミングできるようにすることは検討対象になると思います。
命題論理やそれを更に拡張した述語論理は情報工学の1分野です。もし、その分野で有用なプログラミング言語が想定されるのであれば、それらを研究している学者さんたちが、既に開発している可能性はあると思います。

ああ、思い出しました。Prologはそのような言語の1つです。

投稿2017/04/28 10:43

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2017/05/01 12:49 編集

> このような話は命題論理と言う数学の範疇です。 詳しくはないですが、論理学の世界ではこういうことになるのでしょうか。 「Human → 男性 ∨ 女性」⇒「人間ならば、男性または女性である」 パーサを作れば、機械的に集合を認識させる事も可能ですね。
Chironian

2017/05/01 14:20

もう30年前に習ったっきりですので、具体的な内容は忘れてしまってます。 命題とか述語とかトートロジーとかの用語を理解するのに苦労した記憶が残ってます。再度超頑張ればもう一度理解できるとは思いますが、今更使わないですし。
think49

2017/05/01 14:36

私も論理学の初歩は習った覚えがあるのですが、忘れてしまいました。 Wikipedia を探ってみましたが、https://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E6%BC%94%E7%AE%97%E5%AD%90 がまさしく「集合」を表していますね。 https://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E6%BC%94%E7%AE%97 話は変わりますが、正規表現の "|" (OR演算子)とか、Google Web検索の " " (AND 演算子)、"|" (OR 演算子)とか、文法は違えど応用されている技術はいくつかあるように思いました。
Chironian

2017/05/01 14:48

おお、Google Web検索で ORが使えるのですか!! 知らなかった。 やってみました。でたらめなキーワードを2つ入れたので無関係なサイトが入り混じってなかなか不気味でした。
guest

0

私は、オブジェクト指向はモデリングを行う方法だと考えています。

例えて言うなら現実のモノは無数にあり、分類がいくつもあります。分類出来るならまだマシで、例外と呼べるものが無数にあります。

例えば、性別にしてもそうで性的指向・自己認識・表現体・遺伝子・戸籍上の登録それぞれ一般化しづらいものがあります。それで、取り敢えず男性/女性/その他の性などざっくりと分けるのです。これをモデリングと呼びます。そして観て判るとおりこれが適切であるとは言い切れないのです。

もう一度書きますが、現実は無数にあります。オブジェクトという形で表現出来ないのです。オブジェクト指向として、それに近い物ものとして、ダックタイピングがあります。結構望む形で記述出来るのでは無いでしょうか?

これで現実を正確に処理しようとすると、例外だらけになってしまいます。というのも現在のコンピュータはアルゴリズムに従って処理をするという原理になっているので、すべての場合を記述する必要があるからです。

そのため、モデリングはそのシステムで何を必要としているかということを考えて最小限定義をするのが基本大事と考えています。

オブジェクト指向で現実を記述出来ると考える人が多いのは知っていますが、どうしてもその考え方はしっくり来ません。

そもそも我々が何かを分類する際には、余すところなく分類するのではなく経験の集合に名前をつけるということをしていると思います。そうして、集合と集合の間に見つけた例外の集合にまた名前をつけ分類する。そういった解決方法であれば、人口知能分野の方が適切だと思います。

投稿2017/05/08 14:55

iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問