アカウント名:
パスワード:
>オブジェクト指向でプログラミングしなければならないかどうかは言語に依存するものではないでしょう。
「郷に入りては郷に従え」って言葉がありまして。IOCCC が開催されることとなったきっかけ [kaimei.org]は御存知?その言語にあわない流儀を用いてコーディングするなら最初からその言語を使うな、というお話。仲間内だけでやるならともかく外に出したら困ることになりますよ、と。# そのきっかけを忘れてアホ実装したのが Boost の lambda だったりするわけだが、何故か一部でもてはやされていて困る。
オブジェクト指向がしっくりこないなら、オブジェクト指向ではない言語を使って作れば良いだけです。ですから私の意見としては NG 。
だいたい、履歴書にコーディング経験C++10年、C#5年なんて書いていてあんなコードしか書けないのがいたら詐欺レベルですよね。
一個のシステムが異なる性質を持つ場合もあり、複数の言語を混合するのはそれはそれで異言語インターフェースが大変(必要があればできるし、不可能ではないが)なので、広くつかわれる言語に他言語の特徴を模倣するライブラリが追加されるのは仕方ないとは思います。
C++templateに関してはtemplate自身、元来は「クラス付きのC」でC++に対して後付けですし、メタプログラミングに至っては意図的に設計されたものではなく利用サイドからの創発なので。
実用を指向する場合、既成言語の改修・拡張とその利用経験から新しい言語が生まれるのだと思います。
誤)元来は「クラス付きのC」でC++に対して後付けですし、正)元来は「クラス付きのC」であったC++に対しては後付けですし、
読む人が構文解析&補完しにくい編集ミスがありましたので謹んで訂正します。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家
質問が間違いですね (スコア:5, すばらしい洞察)
そもそも設計がオブジェクト指向でなければ実装だけオブジェクト指向になることもないですし、オブジェクト指向設計はプログラミング言語抜きに行うことも出来ますよね。
(言語に対してある程度のオブジェクト指向的な機能は仮定するにしても)
あと、もとの記事を見るとC++が挙がっていますが、C++は「オブジェクト指向にも書ける」言語であって「オブジェクト指向のための」言語ではありません。
なので「C++を利用するならオブジェクト指向でプログラミングしなければならないか」というように質問を解釈したとすれば、「否」が答ですね。
STLの実装を見てもらえば分かりますが、C++の機能をふんだんに利用して「オブジェクト指向でなく」書いていますね。
各々のコンテナやアルゴリズムはできるだけ独立で直交するように設計されています。
# STLをUMLで再設計してみようとすれば如何にSTLがオブジェクト指向でないかが分かります
Best regards, でぃーすけ
Re: (スコア:0)
>オブジェクト指向でプログラミングしなければならないかどうかは言語に依存するものではないでしょう。
「郷に入りては郷に従え」って言葉がありまして。IOCCC が開催されることとなったきっかけ [kaimei.org]は御存知?
その言語にあわない流儀を用いてコーディングするなら最初からその言語を使うな、というお話。仲間内だけでやるならともかく外に出したら困ることになりますよ、と。
# そのきっかけを忘れてアホ実装したのが Boost の lambda だったりするわけだが、何故か一部でもてはやされていて困る。
オブジェクト指向がしっくりこないなら、オブジェクト指向ではない言語を使って作れば良いだけです。
ですから私の意見としては NG 。
だいたい、履歴書にコーディング経験C++10年、C#5年なんて書いていてあんなコードしか書けないのがいたら詐欺レベルですよね。
生きたソフトウェアは改修され続ける (スコア:1)
一個のシステムが異なる性質を持つ場合もあり、複数の言語を混合するのはそれはそれで異言語インターフェースが大変(必要があればできるし、不可能ではないが)なので、広くつかわれる言語に他言語の特徴を模倣するライブラリが追加されるのは仕方ないとは思います。
C++templateに関してはtemplate自身、
元来は「クラス付きのC」でC++に対して後付けですし、
メタプログラミングに至っては意図的に設計されたものではなく
利用サイドからの創発なので。
実用を指向する場合、
既成言語の改修・拡張とその利用経験から新しい言語が生まれるのだと思います。
訂正 (スコア:1)
誤)元来は「クラス付きのC」でC++に対して後付けですし、
正)元来は「クラス付きのC」であったC++に対しては後付けですし、
読む人が構文解析&補完しにくい編集ミスがありましたので謹んで訂正します。