タイピングとプログラムの書き進め方 その1

その1 その2 その3

shinshi_j
タイピング速度とかコーディングにはあんま関係無いんだよなぁ 結局設計をどうするかだし
shinshi_j
と今まで真面目にタイピングを改善しようとしなかった人間が言ってみる
koizuka
@shinshi_j タイプが遅いと思考を妨げることもあるけどね
shinshi_j
@koizuka あー確かにあるかもしれないですな ただ自分の仕事はコード見てる時間より書類作ってる時間の方が遥かに長いもんで…
tetetep
気分が乗ってタイピングおせえええと思うほどガシガシ書いているときはたいてい間違っている ☆彡
koizuka
プログラミングするときは日本語ではなくプログラミング言語で考えてるな。いや、もっと漠然とした言語化されない論理?? 手から紡ぎ出されるコードを見てこれは違う、なるほどそうか、などと自分で感心したりもするので、手から打ち出されるまで具現化されていない気はする
chopin_nanoda
@koizuka えっとつまり、考えるのとコーディングするのが同時ということですか?
koizuka
だが自然言語の文を書くときも似た感じがあるな。書いてる瞬間は数語以上先は多くの場合、頭の中でも具体化してない気はする。書いてから推敲する?
koizuka
@chopin_nanoda うん
koizuka
プログラミングも「ネイティブ思考」か、「翻訳記述」かでコードの洗練度が違う感じはする。
trashtoy
@koizuka それわかります!!! 自分の脳が、ディスプレイに映し出される記号の羅列と自らの指に転移したような感じがしますね
myrmecoleon
プログラム言語を組むのって,自分ではことばで考えるというより「ボールをグローブで受け取ってから投げる」みたいなスポーツの動きのパターンに似てる。とはいえ,スポーツ選手ならそういうのは身体で覚え込ましちゃうわけだが。
chopin_nanoda
@koizuka コーディングしてるところを見てみたいですなぁw
tetetep
@koizuka 要点だけ考えて決まり文句的な物は手が書いている感じ? ☆彡
tenja
開発は、メモ帳、テキストエディタマインドマップExcelでロジック構築は行う。コードを書くのは単純作業、頭を使ったりはほとんどしない。悩むのは変数名の付け方とか
koizuka
@tetetep 構造のパターンを当てはめて展開しているんだろうなあ
myrmecoleon
神業プログラマーの人だと,反射で簡単なコードくらい書けそう。
tetetep
やることが決まってれば書いているときはあまり考えないか ☆彡
trashtoy
自分がプログラミングしてる姿を家族が見たことがあって、タイピングとBackspaceをものすごく頻繁に繰り返している光景がすごく奇妙に見えたらしい。メールを書いたり、Wordでレポートを書いたりするのとは全然違う作業だからなぁ
tenja
頭使うプログラムの構造は、移動中の電車の中や、公園に、メモ帳に図とか箇条書きで書いて構築してる。後は散歩中の頭の中とか
koizuka
「試行錯誤型の開発」か、「先に決めた仕様に従った開発」かで当然「コーディングの位置づけ」は違うよな。前者は思考の道具としてのプログラミング言語。後者はタダの結果の定着手段
myrmecoleon
プログラムの手続き(オブジェクト指向嫌い)をメモ帳で作るのに数分,使う関数のつづりを検索するのに10分,$とか;の抜けとか細かいところを動かしながら確認するのに20分,みたいな感じでうちのお手軽スクリプトは作られていきます。
tenja
何を試行錯誤するのか、テストコード書くのかも最初の段階をWBSとして決めている
myrmecoleon
関数名を暗記じゃなくて毎回検索してるあたりが本当にダメですね。
koizuka
@tenja なるほど、試行錯誤型というのは分析不足だったか。試行錯誤であってもプログラミング言語はただの結果という分解もできるもんな
koizuka
試行錯誤の思考にプログラミング言語を使わないこともできるので、結局のところ、「プログラミング言語で直接思考するかどうか」というだけか。
koizuka
直接思考するなら、別に事前にメモなんて要らない。
koizuka
ただし、プログラミング言語自体は思考の目的に関する記述が含まれないので、それだけだとその部分は失われてしまうが。
tenja
@koizuka 道具としてプログラミング言語をどう使うかですかね
koizuka
@tenja ですな〜
tenja
@myrmecoleon 複数の言語を並行で使ってるので、はなから正確な関数名を暗記する気は全くないです
shinshi_j
直接思考… 色々アプローチの方向を変えながらやる時には偶に何も無しでコーディングすることはあるけど中々その機会ががが
tenja
プログラミング中に思考しないのは、思考とコーディングを分けて作業時間を正確に算出するため、と、作業を途中で誰かに引き継ぐ、または、複数人に展開するため
koizuka
@tenja うん、コード単品だと引き継ぎにくいね
koizuka
理屈で行けば、プログラミングは思考の部分であって、記述する言語が何であろうと(自然言語であろうと)実装に十分な情報が含まれるに至ったら「完成」で、その先機械が実行できるに至る「製造」は自動化されるべき。
koizuka
自動化されるべき、から逆算すると、直接プログラミング言語で書くのがもっともその結果を得る近道となる。ただしそれ以外の目的は考えない場合。
tsukuneP
@koizuka プログラミング言語でどこまでコミュニケーションができるかが鍵。「他人のコードは読みにくい」は常套句なので、標準化が突破口なのか?でも限界はありそう。
koizuka
プログラミング言語はまた、「機械にも実行できる」とはいえ、主に「人間が読むための言語」なので、もちろん共同開発する場合はその間における標準化ができないと揉めるだけだのう
myrmecoleon
プログラム言語が,思考を記述するための記号であると同時に,機械を動かすための記号でもあるのが問題なのかな,だったら前者に特化した記号法が,とか言ってたらUMLとか思い出したけどあれもちゃんと勉強してないなあ。
tenja
プログラミングの師匠たちに、実行環境がないところでのコードリーディングや机上デバッグを鍛えられてるから、PCなくてもコーディングがかなりできる方だと思う
trashtoy
@koizuka そのへん、UMLのドローツールのコード生成機能にも通じるところがありますね。UMLの設計が「思考」の過程みたいな感じで。確か Poseidon for UML にもあったような気が。
tsukuneP
標準化は過度に推し進めると処理の冗長化アルゴリズムの破壊につながる面もあり、どこまで「機械にやさしく書くか」「人にやさしく書くか」が分岐点。でも最近の処理系はH/Wの力が強いので(入出力はトラフィックに負けるけど)、人にやさしく書いたほうがいいのかな
chopin_nanoda
@koizuka すごすぐる。。。
その1 その2 その3