X



プログラミングしているときの思考ついて話そうぜ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2017/12/29(金) 17:26:40.19ID:qm74VhKk
俺たちはプログラミングしてるとき
どこまで自分で「論理的に考えて」
どこまでをコピペやおまじないイディオムやパターンを「信じて」
使っているのだろうか。
自分の頭で論理的に組み立ててることを認知科学の分野で「アルゴリズム」
という。
これはコンピュータのアルゴリズムとは別に、「人間の頭の中で組みたてられる
アルゴリズム」という意味。「演繹」といってもいいだろう。
すべてアルゴリズム的にプログラミングを考えるのは無理だ。
すべての命令名をCPUの0と1の処理に変換してアセンブリレベルとかで
プログラム考えてるやつはまずほとんどいない。

一方「何らかの名前」を信じて「そういうものだ」として使うことを
「ヒューリスティクス」という。「帰納」に近いものの考え方だ。
大量にコードを書くときは人間はヒューリスティクスに頼らざるを得ない。
ヒューリスティクスの究極系が「丸コピペ」だ。
ただし丸コピペすると「勘違い」が発生して目標が達成できないことが多い。
0002デフォルトの名無しさん2017/12/29(金) 17:33:32.94ID:qm74VhKk
この2つの思考方法をどう配分すれば適切なんだろうか?
例えば「System.out.println();」はかなり「信じられる」メソッドだろう。
おれはJavaの「System.out.println()」以外の「System」クラスの
他の機能はあまり使わないし、「System.out」以外に「System」が「out」
以外のオブジェクトを持っていることを知らない。
どうように「System.out」のメソッドの内、「.println()」か
「.print()」メソッドぐらいしかほぼ使わないし、ほかにどんな
メソッドがあるかも知らない。
しかし「System.out.println();」という「一連の名前」だけ
つまみ食いで覚えて(ほかのオブジェクトやメソッドを網羅的に覚えずに)
使っている。
ただ言語のリファレンスドキュメントを調べる場合「網羅的に」
説明が載っているから「どれだけつまみ食いで覚えればいいのか」が
迷うことがある。
結局手探りで、いろんなコードをコピペして試しに使ってみて、
「使えたもの」だけ覚えていく感じで、プログラミングを覚えていく。

でもそれでは困るときがある。
それは「高度な設計上の技術」を学ぶ時で、
「あと後になってからそのメリットがわかる」タイプの技法は
その場で「使えた感」が得られないとき。
「おまじない系」「読み込み系」も「なぜそれが必要なのか」と悩む。
例えば「#include<stdio.h>」とか
「public static void main(String[] args){} 」は最初
「そういうものだ」と受け入れるしかないだろう。
「読み込み」は「それ自身で何か実行している」訳じゃないが、
「間接的に何かの実行の前提」となっているから厄介だと思う。
あと「例外処理」みたいな「何かあった時の予防処理」も覚えるの
が大変だと思う。何か「実行できた感」が得られないから。
0003デフォルトの名無しさん2017/12/29(金) 19:26:04.73ID:ou1aPpyv
>>1-2みたいな糞スレ立てるバカはいなくならねーかなと思いながらプログラム書いてます
0004デフォルトの名無しさん2017/12/30(土) 00:56:39.27ID:v7snHGTb
哲学やると脳が腐るからな可哀そうに
プログラミングが彼の病気を癒してくれるといいが
0006デフォルトの名無しさん2017/12/30(土) 06:51:27.96ID:5OT4pq7I
だいたい世代でどこまでのレイヤーを理解してるか違うよな
最近の子はフレームワークから上
その前は素の言語
そして年寄りになるほど
ビット
ハードウェア
分子レベルの理解になっていく
0007デフォルトの名無しさん2017/12/30(土) 07:02:02.20ID:+RhipkWM
よく分かんないけど理想的なオブジェクト志向ではヒューリティクスとやらは存在しないんじゃないの?
例えば何か画面に表示したいときはOSに属してる標準出力に文字列を送るわけだからOSに相当するSystemっていうクラスの標準出力に相当するoutのメソッドにありそうって推理できるわけじゃん?
んでもってリファレンスで相当のメソッドを調べて書くわけじゃん

どっちかっていうとクラス設計のときの思考について考えたほうが有意義だと思う
0008デフォルトの名無しさん2017/12/30(土) 15:10:38.40ID:DzO+KqCk
>>7
それは「名前」を手掛かりにそう「推測」しているだけであって
厳密な論理レベルで確証を得ているのとは違う。
「OS」が「Operating System」だと推測する人が多いと思うが、
「名付けた人の意図」が「Ossan Surume」の略だったらどうする?
「System」とは何のことを指している?
どこかに推測を入れないと読めないだろ。
「名づけた人の意図」と「使う人のが推測した意図」がずれていたら・・?
もし推測が勘違いだったらそのメソッドは「作者の意図通りに」
使えないかもしれない。
0009デフォルトの名無しさん2017/12/30(土) 18:30:30.08ID:+RhipkWM
>>8
人間厳密な論理で物事を考えていくなんて無理だぞ
そもそもドキュメントが文章になってる時点である程度の曖昧さは残るわけで
だからこそ利用者が困惑しないようにデザインパターンとかある程度のお約束が用意されてるわけだよ

人間が文章読むときだっていちいち文法レベルで理解しながら読んでないだろ
0010デフォルトの名無しさん2017/12/30(土) 21:29:15.73ID:DzO+KqCk
>>9
ではレビューなんかで他人のソースを見て「よい/わるい」
「これじゃバグになる(なりそう)」
「きれい/汚い」これはどう判断している?
感情か...? 論理的に説明できないとしたら
なにを以てそう直感するんだろうか??
「自分が良いと思っているお約束と違う」だろうか。
「長い」「くどい」だろうか。
0011デフォルトの名無しさん2017/12/31(日) 13:54:33.78ID:mwmGYsg1
リファレンス読むだけじゃなくガイドも読めよ。
目的に応じた適切な使い方、たいてい書いてあるぞ。
0012デフォルトの名無しさん2017/12/31(日) 14:08:21.28ID:zXBPoV46
「プログラミングしているときの死相について話そうぜ。」
「マ板でやれ。」
0013デフォルトの名無しさん2017/12/31(日) 16:28:43.21ID:bwD9nsLu
天から降りてきて


ピーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーー
シッカリシロ!( ‘д‘⊂彡☆))Д´) パーン

( ゚д゚)ハッ!
0014デフォルトの名無しさん2017/12/31(日) 23:18:22.77ID:O8VQbgC0
プログラムの読んだり書いたりする順序っていつもどうしてる?
読む順序はよく言われるのは「ネストの一番深いところから読む」
のが効率がいいって聞くからそうしてるんだけど
つまり「一番最初の }」が出てくるまで読み飛ばして、
「}」が出てきたところから「内側 -> 外側」にさかのぼって処理を
読んいく。

全然関係ないけど「カレー作る順序」ってどうしてる?
「皮をむいてから切る」のと「切ってから皮をむく」なら
「皮をむいてから切る」ほうが正解だよな。
「ニンジンの皮をむいてから」「ジャガイモの皮をむいて」
「ニンジンを切って」「ジャガイモを切る」ほうがいいか
「ニンジンの皮をむいて切って」
「ジャガイモの皮をむいて切る」ほうがいいのかは
前者のほうがいい気がするなニンジンもジャガイモも
複数あって処理が似ている。
ニンジンもジャガイモもあとでまぜる訳だから混ざっても困らない。
でももしこれらが「混ざってはいけない」モノだったら
慎重に後者のやり方をするな。
0015デフォルトの名無しさん2018/01/01(月) 06:22:00.74ID:+ZNxt5nC
自分は自明な結果を操作してくっつけてから逆算でコード化していく。
1+1=2は多分自明なので2から1+1を想像する。
0016デフォルトの名無しさん2018/01/01(月) 22:06:08.15ID:Fw+SS/HB
両方とも皮をむいてから切るんだったら
まな板の上があふれちゃうから
1個ずつ個別に片づけて鍋に入れる
0017デフォルトの名無しさん2018/01/02(火) 20:29:29.16ID:BjzEXOV6
>>14
書くときは特に考えることないかな
モジュールに分けて個別に作って繋ぐだけ

読むときが難問なんだけど
まず、大まかな目次を頭の中に作って
どれか一つを開けて見てどの程度信頼できるコード能力の人が書いたかをざっくりと見て…
その出来によって、どれだけコードの記述を信用するか、信用ならないからロジックを追うかを決める

カレーの話はマジレスする気にならんがw
玉ねぎを切って炒めてる間に、じゃがいもの皮を剥いてから切って水に晒す、人参の皮を剥いてから切る
理由は、皮を剥いたものを一時領域に置くのが無駄だだし、ニンジンを切る間にジャガイモを水に晒せるから
あと、同じ「切る」だけど、ジャガイモとニンジンでは切る大きさや形が違うから、並べたときに結局別のものと認識して切らなければいけないし
0018デフォルトの名無しさん2018/01/02(火) 22:27:16.91ID:d9IhsZac
プログラムのように未知の課題に取り組む場合に
あんまり効率的に行動しようとしたら頭ごちゃごちゃにならんか?

カレーのその例だけ見ても
玉ねぎ炒めてる間にジャガイモの皮むけとかタイムライン破綻してる気がするが
少なくとも俺は無理だ
0019デフォルトの名無しさん2018/01/02(火) 22:41:51.58ID:yZA9m26O
人生は魂の修行の場というのは本当なのでしょうか?
0020デフォルトの名無しさん2018/01/03(水) 00:46:08.27ID:vrM4pm+g
カレーの話は
料理なら個人でやるのが前提になるけど
プログラムを複数人で、なら意思疏通が大変ね

上手い人、及びそのノウハウがすでに蓄積されてる人ならそれこそ一瞬で手法も成果物もいっぱい作れるかもしれないけど
ほとんどの人はカレーがちゃんとできるかもわからん状態で
愚直に一から作っていくしかないと思う
0021デフォルトの名無しさん2018/01/03(水) 09:07:56.34ID:IyLrFEDa
あえてカレーに例えるなら
カレーというものがよく分からない状態から
必要な材料を類推していき、更にそれらを
どう調理していけばいいかを論理的に組み立てるのが
プラグラマ的思考じゃないか?

「インド発のご飯にかけて食べる辛くて
美味しい食べ物」という注文こそが
プログラミングで言うところの要件
0022デフォルトの名無しさん2018/01/03(水) 09:38:47.68ID:svAFKRu2
自由意志はあるのでしょうか?
0023デフォルトの名無しさん2018/01/03(水) 09:41:36.51ID:Ao9PJWxb
>>18
プログラムは未知ではないだろ

あと玉ねぎの話はタイムスライスで処理するんだよ
火力を考えて、焦げない程度の時間で
0024デフォルトの名無しさん2018/01/03(水) 09:46:56.59ID:Ao9PJWxb
>>21
まず君は要件を整理することとプログラミングがごっちゃになってるよ
おそらく受託開発前提の発想なんだろうけど

仮に受託だとした場合
客は「カレーを作るシステム」と言う漠然とした要望を言うが
であれば「どんな具でどのように作るカレー」という仕様を洗い出して契約をする
プログラムには落とす作業は別に複雑にはならないでしょう
0025デフォルトの名無しさん2018/01/03(水) 09:51:23.32ID:svAFKRu2
無に勝るものなど無いですよね?
0026デフォルトの名無しさん2018/01/03(水) 10:10:01.07ID:16+pSSSN
>>22
一番自由なのは設計してる時だな。
無は何もしてくれない。問題を先延ばししてるだけだ。
0027デフォルトの名無しさん2018/01/03(水) 13:56:58.06ID:bOmt4SzE
[] []] [] [[[] [ []
0029デフォルトの名無しさん2018/01/05(金) 06:22:49.26ID:7gDetB6y
おまえらの前頭葉での電気信号の変化から生成された信号の一部が運動野へ伝達され脊髄を通り運動神経へ到達しアクやミオシンにより [転載禁止]©2ch.net
twitterで共有
LINEで共有

0001 以下、転載禁止でVIPがお送りします 2015/10/24 21:21:11
おまえらの前頭葉での電気信号の変化から生成された信号の一部が運動野へ伝達され脊髄を通り運動神経へ到達しアクやミオシンにより構成された筋繊維内の立体構造を変化させ筋細胞が萎縮し指が動くことによって
入力された文字がキーボード内部の電気回路を巡ってUSBケーブルをUSB2.0規格で電気信号としてPC本体に入力されマザーボードの回路を巡りICに入力されHDDからメモリ上に読み込まれたプログラム従って
N型P型シリコンにより実現された論理回路により信号が操作されTCP/IPプロトコルスイートに従ってLANコネクタへ
信号が出力されルータがDNSサーバーへ接続されホスト名文字列が
IPバイナリに変換されIPプロトコルによりルーティングされ全国を駆けめぐり2chサーバーコンピュータへ入力されCGIが起動しCPUで処理されHDDにアクセスされヘッダやディスクが制御され電磁気によりディスク上の磁性体の磁性が制御され
バイナリとして記録され2chユーザーからのアクセスを検知すると読み込まれインターネットを経由してユーザーのコンピュータに入力され
CPUにより処理されフラットケーブルを経由してLCDコントローラへ入力されレジスタヘ一時保存され電圧信号がLCDセルへ印加され液晶の構造を操作し偏光板との組み合わせにより光を操作しバックライトの光線が空間を伝わりユーザーの眼球の水晶体で屈折し
網膜細胞へ照射され酵素の作用によりイオン濃度の変化が起こり視神経を連鎖的に伝い視床や第一次視覚野や前頭眼野などで処理された信号が頭頂葉や前頭葉に伝わり
シナプスを何度も経由しイオン状態を変化させることにより思考し感情を得るとともに側頭葉にも伝わり海馬の神経細胞の構造を変化させることにより記憶となる。
0030デフォルトの名無しさん2018/01/05(金) 11:00:42.85ID:cHsd4Bik
過程の合成が得意なのが理系で、結果の合成が得意なのが文系だと思う。
なので、理系は強い。
0031デフォルトの名無しさん2018/01/08(月) 18:18:46.35ID:N2zGm9ni
条件分岐は
「条件A」と「条件B」の2つを予め定義しておいて
ベン図を描いて、「NOR」「A - B」「B - A」「AND」の4領域に分けて
if文をネストしないようにしている。この4領域でパズルのようにピッタリと
場合分けができる。(「OR」は3領域分を一緒くたにするのでは混乱の元)

「条件C」が増えるとこれが8領域になるから苦しくなるが、
「NOR(全て偽)」「AND(全て真)」「Aだけ真」「Bだけ真」「Cだけ真」
「Aだけ偽」「Bだけ偽」「Cだけ偽」の8つのif文並列に切ればネスト
せずに論理の漏れを防止できる。
条件が4つ以上は16領域になり制御不能だと思う。
あきらめて漏れを覚悟でネストを書くしかない。
0032デフォルトの名無しさん2018/01/08(月) 18:38:12.96ID:N2zGm9ni
>>17
あるレシピに「根菜の切り方」みたいな手順が書いてあって、
目の前にジャガイモと人参があってこの「根菜の切り方」の
手順に従って無事切ることが出来たとする。
その後たまねぎとピーマンという食材の実物を見たときに、
この「根菜の切り方」が使えるだろうか?って悩む。
たまねぎは「根菜の切り方」にアレンジしたらなんかいけそう、
ピーマンは別の「切り方」手順を作ったほうがいいのではないか?と
思う。
ただそれは「根菜」と「ピーマン」がある程度イメージが付くからであって、
たとえば「アメマの切り方」とか食材が「だっふんだ」だったりとか
自分が知らない未知のものだったら適切に既存手順を再利用することが出来ないから
目の前にある「だっふんだ」をよく観察して処理手順を考えていくしかない。
0033デフォルトの名無しさん2018/01/12(金) 01:07:57.17ID:sVnoQana
>>32
結局のところ
違うものだから同じ処理には当てはめられない
皮の剥き方も一つ一つつくりが違うから剥き方も違うし
0034デフォルトの名無しさん2018/02/16(金) 06:16:59.29ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0035デフォルトの名無しさん2018/05/23(水) 20:47:54.86ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

WUP42
0036デフォルトの名無しさん2018/07/05(木) 01:05:23.17ID:RfoszcD2
0V8
0037デフォルトの名無しさん2018/10/11(木) 15:45:37.54ID:NRtKD33w
小説書いてるときに考えたことを付加したことがあった。
大雑把な考えと行き当たりばったりでどーしよって感じのメモになった。
頼まれて書いたんだけど、1話書いたらモー結構って言われた。
才能の違いを突き付けられてつらいんだって。
もっと細かい考えを聞きたいらしいんだけど、そこは説明のしようがない。
ただあれやらこれやら手探りでやってるだけなんで。
ある程度考えてダメなら寝る。起きたら答えが出てるって感じ。
0038デフォルトの名無しさん2018/10/11(木) 16:02:17.13ID:hieIefkK
トライアンドエラー、試行錯誤

適当にやってみて、上手く動くまでやる
0039デフォルトの名無しさん2018/10/16(火) 03:32:16.89ID:YpDdSbiP
ゆとりブロガー「ドラゴンボールは駄作、ネットやゲームの娯楽が乏しい時代だからヒットしただけ」記事におっさん大激怒で炎上してしまう [579392623]
http://maguro.2ch・sc/test/read.cgi/poverty/1539612733/
> 本作品は、いきあたりばったりで作られているのです。
0040デフォルトの名無しさん2020/05/27(水) 05:24:18.00ID:+afLeVQJ
一般の事柄とあんまり変わらない
こうしたいなーって抽象的なことから始めて大体具体的になったら
構成とか考えて作れるかなってなったらコード書いて
その途中でも効率いいようにしたりとかしてテストしてって
まあ趣味だからね 仕事にしていると制限があるから違うとは思う
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況