2016年06月18日

プログラマーはなぜ手書きするのか?

情報化社会と言われて久しいのですが、パーソナルコンピュータが生まれてから40年が経過しても、未だに最も普及している情報処理手段は紙と手書きです。
 そのなかでも非常に興味深いのは、コンピュータという最も高度な情報処理装置を使いこなすプログラマーほど、手書きを必要としているという点です。

 この写真は弊社のとあるプログラマーの作業風景ですが、キーボードの下に紙のノートを挟んで使っています。

 さらに、彼の左側には、ホワイトボードが設置され、そこにも何かを書いています。
 なぜ情報処理の達人であり、普通の人の何倍ものスピードでキーボードを打ち、自らのイメージする論理を直接コンピュータに
入力できる能力に長けたプログラマーたちが、よりによって紙への手書きを必要とするのでしょうか。
たとえば、これは筆者が高校生に最新の深層学習の用語や原理を教えた時のホワイトボードです。
 これを見ると一目瞭然ですが、複雑な概念や新規性の高い概念はキーボードで書くよりもまず手書きで書くほうが圧倒的に速く伝えることが出来ます。
 文字の配置や大きさによる強弱、数式、図、図と図の関係、文字と文字の関係、そういったものが一切の制約なしに書き下せるからです。

こちらも、筆者のオフィスのホワイトボードです。
 これは、プログラミングという道具と数学という道具の関係性を説明した図で、古典的な数学という(古い)道具ではシグマ(Σ)を使って
表さなければならなりませんでした。

 ところがΣで表現可能な演算は積和演算だけです。
 これはプログラミング言語ならforループという単純な構図で表せます。
 ただしシグマにもメリットがあって、プログラミング言語に比べると簡潔に表現できるのでより上位の概念を簡略化して説明することができます。
 プログラミング言語の場合、単純なシグマではできない複雑な計算や条件分岐ができるのも特徴です。
 同じ概念を表現するのに複数の表現手段を持っていることは強みである、ということでもあります。

 手書きで書く場合はシグマを使ったほうが圧倒的に速く、簡潔に書けますから板書を中心とする学校ではシグマを使った計算が多用されます。
しかし実際の計算をやらせるためには、シグマを使った数式を人間のプログラマーがプログラミング言語にいわば翻訳してやる必要があります。本来、これは非常にバカバカしく、非効率的なことです。
 しかし今のところ、本格的な数式を自動的にプログラミングする方法はありません。紺屋の白袴ではないのですが、プログラマーは怠惰なので、
自分に必要な数式をプログラミング言語に翻訳してしまうか、もしくはだれかが翻訳した実装をどこかから拾ってきて、それで良しとしてしまう癖があります。
 また、数式は単なる関係性を表現しているに過ぎず、数式のどの部分をどのように使うかということはその都度プログラマーが考えなくてはなりません。

2 名前:海江田三郎 ★[] 投稿日:2016/06/18(土) 08:34:34.93 ID:CAP_USER [2/2]
 たとえば筆者がよく使う例ですが
https://wirelesswire.jp/wp-content/uploads/2016/05/29b4788882c4b204451f7aa71856a87a.png
 この数式は物理学で最初に習う運動方程式ですが、これをそのままプログラミング言語にして「F=ma」としてもきちんと動作しません。
 まず、プログラミング言語では変数名が一文字であるという暗黙の了解事項はなく、「ma」が「m」と「a」なのか、それとも「ma」というひとつ
の名前なのか区別できません。多くのプログラミング言語では「ma」をひとつの名前として扱います。それがFに代入されるわけですが、
当然、maにはなにも初期値が与えられていないので多くのプログラミング言語ではエラーになるか、ならなかったとしてもなんの意味もない数式ということになります。
 数学で変数が一文字と決められているのは、そのほうが手書きのコストが少なくて済むからでしょう。そのかわり、書く位置や大きさを変えることで意味を変化させ、
より簡潔に関係性を表現できるようになっていますし、補足的に変数のちかくに小さな添字を加えて修飾することもできます。
 ところがプログラミング言語でこれを表現しようとすると、関係式ではなく関係式から導き出される手順をプログラミングしなくてはなりません。
これを扱うためにはコペルニクス的転回が必要で、たとえば一次元の数直線上を移動する物体を想定してみると、F=maを正しく表現するには以下の
ようなプログラムを書かなくてはなりません。

x=0; //位置
v=0; //速度
a=0; //加速度
m=1; //質量
F=1; //力
function onenterframe(){
a = F/m; // F=maの式変形
v += a; // 加速度を時間積分して速度に
x += v; // 速度を時間積分して位置に
} onenterframeは一定期間おきに呼び出される関数だと思ってください。
 F=maという関係式から、実際の物体の位置の変化を決めるために暗黙的に存在が想定されていた速度vと位置xという2つの変数がいきなり登場します。
 これは、F=maのa(加速度)が暗黙的にv(速度)とx(位置)の存在を想定しているからです。
 つまりプログラミングとは関係式が暗黙的に持つ隠れた意味を明確化し、手順に還元するという役割を持っています。
 このとき、明確でない関係式を理解するために、実際に数直線を書いて検討したりというプロセスが欠かせません。結果、手書きが必要ということになるのです。


 手書きを多用するのはプログラマーだけとは限りません
(続きはサイトで)

3 08:36:25.29 ID:kRzAwdmJ
いつの時代だよ

4 08:37:23.80 ID:5I1G8r7u
なんの話かよくわからん

5 08:42:35.90 ID:HKbVd/Rp
例えば図を使って頭整理したいときがある
その時に
紙とペンは有効なんだよな

記憶しておきたいだけならメモ帳でいい

6 08:43:00.30 ID:g+n7WBGh
理系の研究室いくとかならず黒板があって
黒板があるとそこには必ず誰かが書いた数式が残っている。
世界中どこいってもそう。
たまにその前で舌出して自撮りするw

7 08:43:03.78 ID:YFO8yiAi
プログラムは数学じゃないことがよくわかった
ただ人のレベルにもよるし昔は端末が少なくて使用時間が貴重だったこともあり
手書きは欠かせなかったし構想や構図を練る関係でよく手書きはしてた

8 08:45:31.69 ID:Akx8dr+g
プログラムは作文、黒板は理に叶ってるよ

9 08:46:38.38 ID:iK8rQdan
グラマーはなぜテコキをするのかにみえた(´ノω;`)

10 08:47:29.41 ID:uwfV2KDF
手書きは便利だよ
人間はミスするからねミスチェックするときの答え合わせにいいよ

11 08:51:53.10 ID:fq0KcPb7
複雑なコードを求められてるからじゃないかな
ホワイトボードは使わないけどノートは使う
考えてるだけの無駄な時間が減るのと、無駄なエラーが減ったね

12 08:52:17.92 ID:XCcVA3C9
設計。

13 08:52:24.97 ID:I+SoIQQk
手書きタッチパネルがイライラしないで紙とペン並みになる時代は来るのだろうか
まあ、紙とペン使えってことになって需要が無いか

14 08:54:11.63 ID:0j6zvKz1
ちなみに、自分も入社1年目で、プログラミング=作文だとつくづく思った。
何もないところから、序章に始まり、理路整然と終結に向かう

15 08:55:13.84 ID:jucuhMWG [1/4]
>>10
だよね。

資料なんかでも、草案や叩き台レベルは手書きのほうが早いし、修正も早い。
みんなで大きい紙に書いて、それに書き加えていく止揚もとりやすいしね。

うちの去年の新入社員の二人の話だけど
一人は自分の資料をまず手書きで作って、上司や先輩と一緒に修正
一人は自分の資料をまずパワポで作って、上司に見せる
ってスタイルだった。

前者はポンポンと短時間でアップデートしていくから、結局ハイレベルなものができてた。
単位枚数あたりの作成時間って、手書きだと15分で済むものが、パワポだと見栄えにこだわって1時間以上かかってた(笑)

こういうのが積み重なって、この後者の去年の新入社員は既に仕事ができない馬鹿認定されてる。

16 08:58:24.27 ID:cunGKa6q [1/2]
光学式マウスが出る前の時代に、リング綴じノート
をマウスパッド代わりに使ったことあるよな?

17 08:59:45.05 ID:SmISlMeH
>>15
早い方で、理解・整理しやすい方でやれと言う指示を出さない上司が無能。

18 09:01:30.48 ID:CUCg9+Jm
画像の方がイメージしやすい概念があるから
文字だけじゃあね

19 09:02:28.58 ID:/nYIJlmH
プログラマはなぜ手抜きするのか?

20 09:03:09.34 ID:AB+MuECi
紙は設計図という感じかな
これがないと凡人はプログラミングなんてできない
書いた人以外の人が理解でいないとそれも困るしね

21 09:03:35.43 ID:SbjV8A7E
手書きは好きな場所に書き加えられるというのが大きい
これは本当に大きい

22 09:05:00.10 ID:jucuhMWG [2/4]
>>17
いや、その程度のこと、学生時代に経験してきているだろ。
効率的に物事を処理する方法を経験するって学生なら誰でもやっているだろ。
してきてないのが完全に無能だわ。

ちなみにな、その後者に
手書きのほうが早いからそうしろと指示したらどうしたと思う?

20枚続きものの資料のうち、7枚を既に2日かけてパワポで作成していたのに
手書きを指示されたからと、7枚分をファイルごとデリート。
1枚目から、再度手書きで作り直す、馬鹿っぷり。
つくった7枚は仕方ないから、使えば良いじゃないかっていう思考もないお馬鹿なんだぜ。

23 09:06:56.25 ID:kFkmfpgs [1/3]
マジレスすると、コンピュータは落ちるし飛ぶから信用出来ないんだよw

24 09:08:04.97 ID:i6+cLdYO
プログラミングといえば、コーディングシート。文字間違いやヌルストリングをはっきりさせる
http://www.transsoft.co.jp/blog/wp-content/uploads/2015/11/mittake-code.jpg

25 09:08:16.48 ID:nm/qG95M
一からアイデア練る時なんかは、自由に書き込める紙に手書きじゃないと無理だろ。

26 09:10:47.26 ID:Xe8tyStB [1/5]
>>24
これをパンチングカード何十枚何百枚に一文字も間違えずに打たねばならない

27 09:11:46.75 ID:sm38Uv/u [1/5]


Flash

プログラミングかぁ?!。

タイマーイベントで 呼び出す 関数 で 記述してる。


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

クラス図やオブジェクト指向図なども  ボードに手書きするし。

TDDやリファクタリング、そして みんなで プログラミングするとき  一発で 理解できるから。

28 09:14:20.74 ID:cunGKa6q [2/2]
>>26
打ち間違えてもパンチくずを拾ってテープではっつけて穴を埋めればおk

29 09:14:33.10 ID:qwJPvNrW
>>22
真面目そうだから育ててやればいいんじゃないの?

なんつうか酷い会社だなとしか

30 09:15:11.90 ID:sm38Uv/u [2/5]
タイマーフレームなら
静止画つなげて 動画も作れるし、 物理数式の記述にも 役立つ とかぁ?

31 09:16:48.40 ID:GkIO9cIG
>>15
それさぁ、後者の新人がパワポ着手するか1時間経つあたりで指導する必要があったんじゃね
それを1年放置して馬鹿認定って…
そんな会社の方にも問題ありだな

32 09:18:06.85 ID:1m8fEN0e
手書きも手マンもなくならない

33 09:18:30.84 ID:jucuhMWG [3/4]
>>29
育てるって専門知識は育てることはできる。
社内の事務処理だって教えて育てることはできる。

でも、考え方の部分は自分で勉強するしかない。
マジメなんじゃなくて、馬鹿なんだよ。
マジメだったら、学生時代に合理的手法って経験してきてる。
してきてないのは馬鹿だから。

34 09:19:36.72 ID:jucuhMWG [4/4]
>>31
どこをどうよんだら、1年間放置したとなる。
まじで、日本語を読めない馬鹿の批判だけは、たまらん。

場かってほんとそういうところあるよな
事実を理解しないで、とりあえず批判する傾向。

うちの馬鹿もその傾向強いわ。

35 09:19:53.50 ID:Hhkvmf0I
>>24
COBOLかよw
昔やったなぁ

36 09:23:00.90 ID:Cep3IIc9
羽衣チョークが無いとアメリカの数学者が困るって話題を思い出した

37 09:23:56.18 ID:WZ12835v
>>24
COBOLかよw

38 09:25:37.23 ID:IEwEvtl7
>>1
Πも知らないのか

39 09:27:51.07 ID:YyjDYXh1
>>22
こいつ効率悪いなと思ったらオレはこうやってると過去に作ったモノを見せてやる(もしくは他人がやったモノとか)。
それもやらんとあまりにも無能過ぎる。
新人君可哀想。
配属先に旧人が無能だと新人が育たない良い例だね。

40 09:29:30.96 ID:smvzvw+c
右脳と左脳の関係だろう?

41 09:32:46.55 ID:APWTEokm
ペンタブでアイデアをお絵描きしてファイル保存する連中はどうなんだ
手書きか?手書きでないのか?

42 09:33:34.63 ID:iRSjml63
CG描くときも、まず最初は紙に描く人が多い。似たようだものだ。

43 09:34:01.95 ID:/Lm6DgVA [1/5]
仮説や検討ならホワイトボードや紙の方が早いからな

44 09:34:03.43 ID:Xe8tyStB [2/5]
>>33
君は君で人の育て方を学んだ方が良いね
君にも足りないところがあるということだよ
誰でもそう、その新人だけでなくね

45 09:36:48.70 ID:t/AScpqh
紙は最強の記憶補助媒体である

46 09:37:10.23 ID:/Lm6DgVA [2/5]
>>34
こういう新人必死に見下して自尊心保ってるタイプって
実際1人分の仕事は出来ても
全体としての仕事に貢献してないから困る

47 09:38:20.43 ID:/Lm6DgVA [3/5]
>>45
いい表現だね

短期記憶に限界がある以上
アウトプットの早い方法は強いよね

48 09:38:28.60 ID:eflegS1P
状態遷移図はよく手書きするかな

49 09:40:23.94 ID:TctN/NWj
手で書かないと脳が退化するからな
豆な

50 09:43:17.19 ID:sm38Uv/u [3/5]
>>1


お前自身が  コペルニクス的転回が 必要。


だいたい
簡単な微分方程式などで記述できる  現象のほうが  少ないって事実を 全く理解してない。



とくに 
自然現象なんて。

方程式で表せない 現象 そのものを うまくパターンなどで取り出して 記述する もっと アナログ的な手法による模索が ・・・・

51 09:44:43.70 ID:oZJnEmsv
紙の方がアクセスが圧倒的に早い

52 09:46:39.51 ID:XMYLHN32 [1/3]
イメージ図を作って、丸や四角を線で結んで
お絵かきすると、ひらめく時がある!

53 09:46:44.24 ID:sm38Uv/u [4/5]


それに
手書き って言うと、 紙テープ、 みたいな  馬鹿が  叫んでるけど、


所詮
コンピュータなんて
紙テープ程度で  すべて記述できるって 証明したのが チューリングマシン。

54 09:48:51.58 ID:XMYLHN32 [2/3]
プログラミングって意外とビジュアルな脳の作業だよね
Visual Studioって言うくらいだし

55 09:49:58.86 ID:lkvbPi0+
日本人と中国人プログラマの書くコードは特に汚い印象
手書きメモの習慣がいけないのか

56 09:50:14.62 ID:RfGqVGAu
Σをforで表現するって、いつの時代のプログラマだよって感じだな
でも考えやアイデアをまとめるにには手描きが一番いい。
キーボードは所詮文字を並べる役にしかたたん。

57 09:51:30.11 ID:fUMw7UgU [1/3]
オレさまはイメージで理解派なので一度図を描かないとダメだなー
構造とか頭に入らない

>>15
随分と残念な職場でつね
※>>22も見てます

58 09:55:14.54 ID:DR5kUBZp
気にすんな。プロの運転手だって自宅の駐車場から玄関まではクルマ使わずに歩くだろ。

59 09:59:44.28 ID:kFkmfpgs [2/3]
教育で激論になってるとこアレだけど、そもそもパワポって必要かなという疑問w
個人的感想だと、大概の業界で本当は要らない気が。
何か中身の無い物を誤魔化したりでっち上げる為のツールにしか見えない。
ハッタリ系チャラい系と虚業系の業種なら有りかも知れんけど。
多くの業種で物凄く無駄な感じがする。

60 09:59:48.20 ID:fm48DCH0
結局のところ01信号を全部の
抽象化してるんだけど
抽象化の能力って
手を動かさないとどんどん
落ちてくるんだよね
特に線を引くとか丸を描くのはよい

61 10:00:22.53 ID:IRHazjSt
いったい何が言いたい記事なのか?

62 10:01:57.58 ID:/Lm6DgVA [4/5]
>>53
改行と空白の使い方がキモい

63 10:03:41.35 ID:/Lm6DgVA [5/5]
>>59
それはちょっと視野狭い

プログラマー向きではないだけ

64 10:03:49.56 ID:uPzYwe9p [1/2]
マインドマップ

65 10:03:56.13 ID:8OFyurcr
僕は手コキ

66 10:06:53.46 ID:kFkmfpgs [3/3]
>>63
確かに視野は狭いかもw

67 10:08:31.68 ID:rDv+1Lsr
あたま中の記憶の消滅時間が短いので
さっさ書けないとまとまらない

68 10:08:57.22 ID:PTg9xCuu [1/2]
.
 図形で考えた方が、視覚野のほうが大脳皮質で広いし、初等教育から図形で
 考えるように教えられている。
 数学は、記号論理学の側面があって、Σや微積分、アインシュタインの縮約記法
 なんて便利じゃない。

 汎用の言語では無理じゃないそういうのをプログラム言語へすぐ変換するのは。
 

69 10:12:07.80 ID:PTg9xCuu [2/2]
.
 しかしさあ、何かのライブラリとか何とかエンジンと言われるものは、ブラックボックスで、
 中を見ずにプログラミングできるじゃない。ということは、その辺りは自動化されていて
 Σみたいなもんじゃないかな。

 一々、車輪の再発明をしなくて良いわけだし。
 

70 10:12:58.15 ID:GxLLivCb
UIをデザインしたりロジックを組み立てるとき
紙に書いたほうが速いんだよな

71 10:15:16.75 ID:xZxvG/6/
>情報処理手段は紙と手書きです

ねえよ
この記事書いたのはどんだけのおっさんだよw

72 10:16:32.41 ID:sm38Uv/u [5/5]

数学の
数理論理学は  今  人口知能で かなり使われてるけど。命題論理も 述語論理も。様相論理も。

73 10:21:15.68 ID:164RRPzq [1/2]
手書きはしないけど、実装すべきロジックに悩んだらテキストエディタで
文章で一旦箇条書きにして、それをコードに置き換えることはよくやる。

同じ経験のある人には共感できることだけど、そうでない人には何を言ってるのかわかんないんじゃないかなこれ。

74 10:21:36.06 ID:H/tgn8/R
プログラマが手書きするってことは、手書きが一番効率的なんだろう。

75 10:25:58.40 ID:1RQCfiCv
胡麻を磨るのに一々フードプロセッサー使わんだろ

76 10:29:30.58 ID:164RRPzq [2/2]
実装すべきロジックを考える思考の補助として、コードを打つ前に
一度紙に書いて整理するとわかりやすいってことを言いたいのだと思うんだけど。

77 10:32:24.72 ID:BxXTSB2Q
タイトルだけでshi3zとわかったw

78 10:35:09.93 ID:TNm9XmDC
つまり
アナログ最強 
 

79 名前:名刺は切らしておりまして[age] 投稿日:2016/06/18(土) 10:36:50.51 ID:y+4K5d6v [1/3]
そりゃあ、仕事のメインはその手書きが出来るかどうかなんだよ。
コーディングなんて、手書きの成果を翻訳するだけだ。
場合によってはそのコーディングは部下や若い人にやらせてもいい。

80 10:38:24.99 ID:RIqWHaLz
ロジックについてはエディタでもインデントつけたアウトライン形式でメモを書いていけるけど、
データやオブジェクトの構造については、絵に描くことで依存性や関係性、ライフサイクルがより明確に理解できるようになる
そういうのをGUIで書いてスキームとして出力するツールもあるけど、ある程度の形とイメージが出来るまでは手書きの柔軟性にはかなわない

81 名前:名刺は切らしておりまして[age] 投稿日:2016/06/18(土) 10:39:13.82 ID:y+4K5d6v [2/3]
>>59
パワポってのは、口や手書きで言っても
納得し動いてはくれない人のために用意するもので
自分の権威が通用する範囲内ではそんなに要らないけど
自分のテリトリーを広げるときには必要になってくる

82 10:45:34.18 ID:UH5n6SJd
ラフも描けないないデザイナーとか ?

83 10:48:01.65 ID:G2aGkMkb
Oは筆記体で書くかマクロンを書く
0は左上から右下に斜線を入れる(右上から左下はΦや製図記号のマルと紛らわしいので駄目)
Dの左側に短い横線を入れる
あと何だったっけ?

84 10:52:23.32 ID:AHa5yGC3
>>7
プログラムは構文だが?最初から。

数学処理に使われるのと、少しとか多くとか曖昧な記述じゃだめだから数式を使うだけ。

85 10:54:01.35 ID:xX8raa/p
>>1
話の前半は良いが後半のたとえの部分の論理はむちゃくちゃ。
ロジックを自ら実装して解を求める話と、公式を適用する話が
ごちゃまぜに論じられてるから。別に解を求めるなら手書きで
公式を適用するようにライブラリ関数を使えば良い。
F=maの変数名がmなのかmaなのかという話に至っては、プログラム
書く人間なら、mとaの間に乗算演算子入れるし、それが手書き優位の
理由になるわけがない。

86 10:57:14.96 ID:SDzqKUrC
手書きだと一見似たような内容でも区別がすぐつくんだよ
書いた時の思考記憶や書いた字体から微妙にな

87 11:05:46.53 ID:ybSp5xqp
最近プログラミングに注目画集まってるせいか、Excelでマクロを組める俺が部所でちょっとしたヒーローになってる。
プログラミングなんて誰でもできそうなのにね。

88 11:07:13.19 ID:5n8sD330
>>87
その壁はなかなか高いよ
一旦できてしまえばこんなもんか、だけどさ
恋と同じでね

89 11:12:40.59 ID:tJXVKmIe
>>19
そもそもプログラムを作る動機は人間が楽をしたいことだから

90 11:19:17.09 ID:d/ymp/S6 [1/2]
ID:jucuhMWGが関わりたくないタイプなのはよく分かった

91 11:24:33.25 ID:d/ymp/S6 [2/2]
>>81
だから客先や自社の役員にはパワポが必要になるのか
納得した

92 11:27:57.92 ID:Yk0RJZ0a
コピペに手書きは不要、

おまえらのようなコピペ厨房が手書きするわけねぇだろ、

93 11:31:16.58 ID:8+nvOcqG
だから万年筆が売れているわけですね。

94 11:32:46.26 ID:RVG5FFAL
ARで制限のない画用紙に手書きでメモしたい

95 11:35:00.29 ID:Xe8tyStB [3/5]
ガリレオの人もそこらじゅうに手書きしてた

96 11:40:02.05 ID:c3VdJYpR
主にメーカーで仕事してる個人事業主だけど、説明のためにホワイトボード使うことはあっても紙に書くなんてほとんどない。そもそも情報漏洩の原因になるし、ノートPCやタブレット支給されるから紙に書く意味がない。
デジタルデータなら検索も編集も思いのまま、情報共有もしやすい。

ほんといつの時代の話だよ。金のない大学の研究室とかじゃないの?

97 11:42:14.83 ID:skVOTh6k
>>1

会議のときは、もちろんホワイトボードに手書きだけど

基本は、設計書作って、その設計書にしたがってコーディングだから

手書きは、そんなに多くないよ。

現場を知らないヤツか、設計書をちゃんとドキュメント化しない弱小ソフトハウスの話か?

98 11:42:48.56 ID:Xe8tyStB [4/5]
>>96
>>1の画像くらい見なよ

99 11:44:03.97 ID:bZOn78/H
体重60kgのプログラマーのプログラムは60000g

100 11:53:14.54 ID:qA/sj0gY [1/4]
プログラムとは関数である。
ある入力値を別の出力値に変換するものだ。
posted by log at 16:47| 日記 | このブログの読者になる | 更新情報をチェックする