• ベストアンサー

プログラミングと人間の思考に関する本

普段思考するときにプログラミングの関数型を使用するような感じで思考するための枠組みを学びたいなぁと思っています。あるオブジェクト(概念の固まり)に関数を適用して望む結果を受け取る…、あるいはちょっと言語学寄りで動詞にオペレータを追加することで熟語動詞をつくってそれが拡張関数になってるとか…言語空間をブラウズする上での効率的な方法が知りたいです。そのような内容の本があれば教えていただきたいです。

noname#121989
noname#121989

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

 句読点がほとんどないのでよくわかりませんが、こんな感じでしょうか? オブジェクト=普段思考するときにプログラミングの関数型を使用するような感じで思考するための枠組みを学びたい。  手段1=あるオブジェクト(概念の固まり)に関数を適用して望む結果を受け取る  手段2=ちょっと言語学寄りで動詞にオペレータを追加することで熟語動詞をつくってそれが拡張関数になってる  オブジェクト補助=言語空間をブラウズする上での効率的な方法が知りたい。  最近よく見かける、投入口にデータを放り込むと、枠にはまった答えがガチャポンと下から出てくるような感じを受けます。(フレームワークは、フレームワークと言う方程式があるわけではない)不可能というより矛盾している。  プログラミングに関数型を使うとか、言語空間を…効率的方法。という考えは、あいまいであい路に入り込みやすく、なおかつすぐに入り組んでくる非効率な思索を、関数と言うパッケージに押し込んでしまい、思考の持つ広がりや、つながることによる拡張性を妨げる。これは動詞にオペレータをくっつけても同じ。とくにこの場合言語の抽象度[一般意味論]の違い[一般意味論、コーチング関連、UML]が、妨げになる。  プログラミング言語と違い、普段使われている言葉はばらばらな抽象レベルにあり、両者を結合するのは不可能。そのうえ上下関係の観念を含みやすい日本語ではさらに困難。  それと、思考過程のパターンをリスト化したアーカイブが必要。つまり哲学関連書籍のほとんどを読む。  ただ、人間の思考を真似できるというので、デジタルがコンピュータで使われているというのもあるので、必ずしも中身が分からなくても、外部への反応をリスト化しても可能でしょう。ただ、例外だらけになりそうだが。  以下参照 http://www.amazon.co.jp/パターン、Wiki、XP-~時を超えた創造の原則-WEB-PRESS-plusシリーズ/dp/4774138975/ref=sr_1_1?ie=UTF8&s=books&qid=1290450718&sr=1-1  

noname#121989
質問者

お礼

ありがとうございます。 参考になりました。

その他の回答 (4)

  • f2s3f2
  • ベストアンサー率20% (73/350)
回答No.5

プログラミング手法とかそういうのが学びたいわけではなく、一般的に通用するそういう考え方ってことですかね? もしそうなら、ロジカルシンキングで検索してみてください。

noname#217196
noname#217196
回答No.3

「コンセプト検索」、「オントロジー」、「セマンティックWeb」をキーワードに研究論文や研究サイトをインターネット検索してみることをおすすめします。 なお以下余談ながら。ワインバーグの問題解決の心理学系統の本は、利用者の誤認や苛立ちを回避するにはプログラミング等の工学技術より人間心理への想像力を向上させると有効な場合を取り上げていて (つまりは質問内容への解答にはあたらない本なんですが、質問タイトルからすぐ思い浮かぶ本でもあります)面白い読み物です。ただし執筆当時のソフト開発ってかなりひどかったんだとわかるだけかもしれません。 永年の改良を経た道具や案内板に関する利用者便宜性について書いた佐貫亦男(さぬきまたお)やペトロフスキーの著作、あるいは野中郁次郎の『創造的模倣経営』(画期的発明製品への不満を後発企業が解消し成功した事例の紹介)の方がより普遍的な問題実例、問題解決実例を紹介していると思います。

noname#121989
質問者

お礼

ありがとうございます。 参考にしていろいろ調べてみます。

回答No.2

すみません、いまいち質問のイメージがつかめませんので言い方がキツクなる箇所が出るかも知れませんが御容赦の程。 まず、御所望に叶う様な書籍は無いと思います。 >普段思考するときにプログラミングの関数型を使用するような感じで思考するための枠組みを学びたいなぁと思っています。 ここだけ見れば理解可能です。 物事のロジックを立て、一つ一つの要因毎に頭を整理するだけです。 その際に、頭の中にスタック領域が必要になって来ますので記憶の印象付けが大切です。 >あるオブジェクト(概念の固まり)に関数を適用して望む結果を受け取る…、 これは全くイメージがわきません。 オブジェクトとは、データや関数など、一つの目的の為にカプセル化されたものです。 つまり、思考の元になる情報と、思考の方向性です。 もっとシンプルに言えば、部品レベルでの方法論と言えるでしょう。 何か論文を書くときとかでも、この様な部品レベルの方法論を沢山持っていれば全体が効率的に書けるとか、そう言うイメージだと思うんですけど、オブジェクトに関数を適用して・・・とか言われると全く見当が付かなくなってしまいます。 >あるいはちょっと言語学寄りで動詞にオペレータを追加することで熟語動詞をつくってそれが拡張関数になってるとか… これもちょっとイメージが湧きません。 動詞にオペレータを追加って、演算子のオーバーロードみたいなイメージ? 良く分かりませんが、いずれにせよエイリアス的な話なんでしょうね。 でも、それが拡張関数って・・・ちんぷんかんぷんです。 そもそも拡張関数って何を指してるんですか? 多分、ほんとに、多分ですけど、一つの方法論の塊を自分なりにエイリアスしてそれを他の方法論と掛け合わせたいとかってイメージなのかなと思いますが、そんなのは自分の中でルール付けすれば済む話だとも思います。 >言語空間をブラウズする この表現もちんぷんかんぷんです。 この言葉からイメージされるのは、非常に左脳的だと言う事です。 しかし、プログラミングの様な論理的な思考は右脳的で有るべきです。 基本は、論理学かなと思います。 しかし、論理学など覚えなくても、プログラミングを多数こなせば、自然にその様な思考方法は身に付くと思いますよ。 なので敢えて書籍を薦めるとすれば、論理学入門かプログラムロジック関連の書籍かなと思います。

noname#121989
質問者

お礼

ありがとうございます。 参考になりました。

  • gtx456gtx
  • ベストアンサー率18% (194/1035)
回答No.1

具体的な著書を読んだ訳ではないのですが・・・他の方の引用などからですがが参考になればと思います。 wiki http://ja.wikipedia.org/wiki/%E3%82%B8%E3%82%A7%E3%83%A9%E3%83%AB%E3%83%89%E3%83%BB%E3%83%AF%E3%82%A4%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B0 『ライト、ついてますか—問題発見の人間学 』はどうでしょうか?

noname#121989
質問者

お礼

ありがとうございます。 参考にします。

関連するQ&A

  • 定義済み関数を用途別に逆引きしたい

    ボクはプログラミングに関してほぼ初心者で、 プログラミングの基礎はC言語だと聞いたので、C言語の入門本に取り掛かり変数や構造体や関数などの概念を学んだ上で、既存のウィンドウズ付属の定義済み関数を組み合わせてプログラミングしてみようと思ったのですが、一つの疑問が浮かび上がりました。 「定義済み関数を使うには、その関数を知っていることが前提条件なのか?それらは用途や目的など何らかの形で分類されていなくて、ただ漠然と並べられているのか?ボクはいくつ関数を覚えればいいんだ…?orz」という疑問です。 質問する前にボクなりに調べましたが、もしかしてこの「関数を用途や目的等別で分類する」とはオブジェクト指向の「クラス」にあたるのでしょうか?だとすれば、次にボクはオブジェクト指向のプログラミングを学ぶべきでしょうか?

  • プログラミングが得意な方への質問です。

    プログラミング言語を複数使われている方へ質問です。 (1)一言語使えるようになるのに掛かった期間や経過など簡単にまとめて教えてもらえませんか? (2)言語マスターに時間が掛かっている人に対してどこが問題だと思いますか? (3)新しい言語の学習を始めるためには何から手をつけますか? (4)関数やクラスなどはどれ位使えば覚えられますか?  存在を知っていて使う時に調べればよい派ですか?  それとも初めに必要な部分は覚えてしまいますか? (5)言語マスターへの必要要素は、  概念の理解、文法の理解、必要性の高い関数やクラスの熟知  それ以外にありますでしょうか?

  • 人間は数をどこで扱っているか?

    暗算するときに数字を復唱しながら計算するから言語野かな?と思ったのですが、言語っていうのはあくまでコミュニケーションのためのものですよね? コミュニケーションの道具で思考するのは明らかに非効率的ですし、言葉で上手に説明できないなんていうのは言語で扱える情報量が言葉の枠で制限されているからだと思うます。 それにそろばんをやっていた人たちが計算を行うときには、頭の中でそろばんを実際にはじいていると聞いた事もあります。 人間は数という概念をどこで扱っているのでしょう?お願いします。

  • オブジェクト指向のプログラミング言語の勉強法について

    オブジェクト指向のプログラミング言語の勉強法について お尋ねします。 iPhoneアプリを作ってみたいと思い、最近プログラミングの勉強を始め、C言語の入門書を一通り熟読しました。そして、次にオブジェクト指向の言語を勉強しようと思っているのですが、iPhoneアプリの開発に用いる言語は「Objective-C」で、他にも開発に使用できる言語として、「C++」や「Java」などいくつかあると聞き、どれから勉強すればいいのか迷っています。 Objective-CとC++やJavaでは、技術的(表現力?)に大きな差はあるのでしょうか?それとも、Objective-Cだけでも十分なのでしょうか? そのほか、まだC言語を勉強したばかりでわからないことが多いのですが、ゲームアプリの開発にどのような知識が必要なのか、また効率のよい学習順序、お勧めの書籍など助言を頂ければ幸いです(__) ちなみに、 ・プログラミングの経験は全くありません。 ・はじめはシューティングなど動的なゲームアプリを作ろうと思っています。 ・妥協せず、基礎からきちんと勉強したいと思っています。

  • 本当にオブジェクト指向プログラミングっていいのでしょうか?

    いつもお世話になっております。 VC++初心者です。 現在、VC++6.0、MFCのソース修正で四苦八苦しています。 (コーディングするよりも。ソースを追うので苦労してます。) (初心者の私が言うのも難ですが、オブジェクト指向云々言う前に  ソースのif文節が異常に長かったり、3重以上ループが出てくると  とても嫌になります、、、) 一般的(?)に、プログラミングは 手続き型プログラミングよりオブジェクト指向プログラミングが 開発効率がよい、と重宝されているようですが、 どうも納得できていません。 (その手の書籍を2,3冊読みましたが消化不良に終わっています。) 個人的には、手続き型プログラミングの方が好きです。 というのも、慣れているからかもしれませんが、 ソースが追いやすいし、見やすいと思います。 逆にオブジェクト指向プログラミングでは、 ・継承されすぎると、基本クラスまで追うのが一苦労。 ・インスタンスをつくってから、関数を呼ぶのが面倒な気がする。  (手続き型なら関数呼び出しのみで済みます。) ・インスタンスをdeleteし忘れて、メモリを圧迫する危険がある。  (ガーベージコレクションというものもあるようですが、  どこで何を消しているか不安です。) ・ソースを追いにくい(慣れの問題なのでしょうか、、、) そこでですが、 「手続き型は~~で大変だけど、オブジェクト指向ならこんなにすばらしい」 というような対比的に具体例を挙げて説明されている 書籍、サイトの紹介、または、よい助言を頂けませんでしょうか。 また、上記に伴い、 ・手続き型で組んで失敗した例(オブジェクト指向型にすれば良かった例) ・オブジェクト指向型で組んで失敗した例(手続き型にすれば良かった例) も宜しければ教えて頂きたく、お願いします。 (成功例のみよりも、失敗からの成功例を教えて頂けると嬉しいです。) 長くなりましたが、宜しければご教授下さい。

  • Fortranによるオブジェく志向プログラミング

    私は、ずっと、手続き型のプログラミングをやってきて、言語はFortranであり、そのプログラミングの内容は四則計算、ループ、分岐、ファイル入出力みたいなものに限定されていました。 ところが、最近はじめて知ったのですが、Fortranの2003ぐらいになるとオブジェクト指向プログラミングに対応していてクラス、メソッド、インスタンスなどのような概念が出てきたようです(だいぶ前からあったのかもですが、最近まで知りませんでした)。 そこで2つ質問なのですが、従来使っていた手続き型のプログラムはすべて原理的にオブジェクト指向プログラムに移行可能なのでしょうか。無理に移行しなくてもいいとは思いますが、そういう越境のようなことができるのかということですが(手間だけかかって時間の無駄かもしれませんが、訓練という価値はあります)。そして、最終的にはプログラミングというものがすべてオブジェクト指向に収斂してしまうということになるのでしょうか。 もう1つはFortranでオブジェクト指向プログラムができるという場合、バージョンとかそれに応じた仕様とかでその度合いに違いがあるのでしょうか。今までFortranで手続き型のプログラミング(四則計算等)をやっていたのでコンパイラの選択による違いに大差ないという感じでした(あまり方言がないとか)。オブジェクト指向ということになると”これはできるけど、あれはできない”とか際どい問題があるように思います。C++とかJavaの参考書に載っていたようなことがFortranで本当にどこまでできるのかという疑問です。これが明確にならないとただでさえ難しいオブジェクト指向プログラムで私のアルゴリズムにミスがあるのか、アルゴリズムは問題ないけどコンパイラがそれに対応してないという問題の区別がつかなくなると思うのですが。 Fortranのオブジェクト指向の解説本を見たことがないのでお尋ねしました。よろしくお願いします。

  • 関数型言語の普及について

    関数型言語の普及について 趣味でプログラミングを勉強しているものです。今までにJavaやRuby等、オブジェクト指向言語を中心に勉強してきました。 今日、あるきっかけで関数型言語のHaskellを勉強し始めました。 そして、実際にプログラミングをしてみたり、関数型言語について調べてみると、まだ大きなアプリは書けないものの、今までのやり方(手続き指向、オブジェクト指向)が不要なのではないかと危惧する程の斬新さ、強力さが感じられました。 しかし、そんな関数型言語も未だに普及しているとは到底言えません。Haskellは関数型言語の中でも新しいもののようですが、それでもJava、Rubyよりも昔に発表されている言語です。 どうしてHaskell等の関数型言語は主流になっていないのか、関数型言語が従来の言語に劣っている点を中心に、皆さんの意見を聞かせてください。

  • 教えてください。

    プログラミング言語論で、 関数型言語とオブジェクト指向言語について、並列・分散処理に適した言語と大規模開発の適した言語を教えてください。

  • オブジェクト指向、理解しやすい?

     最近、Javaの解説書や解説サイトを見ていて、しばしば、「Javaは完全なオブジェクト指向だから理解しやすい」といった記述を見かけます。(「プログラムが見やすくなる」とかではなく)  Javaに限った話ではないのですが、個人的に、オブジェクト指向の概念は、プログラミング初心者の最大の関門ではないかと勝手に思っています。僕はPHPから入ったのですが、ある程度基本事項をマスターした後も、オブジェクト指向だけは長い間苦手としてきました。(最近やっと慣れてきたところです。)  そこで伺いたいのですが、最初にやったプログラミング言語がオブジェクト指向だったという方、オブジェクト指向の概念は、 1.わかりやすかった 2.そこでつまずいた 3.特に意識せずに通り過ぎた 4.その他 いずれでしょうか? ※最初にJavaについて書きましたが、これはただの例なので、オブジェクト指向言語全般についての質問であるととらえてください。

  • オブジェクト指向の開発の成功事例

     プレゼンテーションの授業でオブジェクト指向言語について調べています。  オブジェクト指向言語の再利用により生産性が向上するのは分かったのですが、それによる具体的な成功事例の資料はありますでしょうか? また、ほかのプログラミング言語と比べてどの程度開発効率が向上するのかの資料があればお教えください。 よろしくお願いします。