>>2016年06月18日プログラマーはなぜ手書きするのか?情報化社会と言われて久しいのですが、パーソナルコンピュータが生まれてから40年が経過しても、未だに最も普及している情報処理手段は紙と手書きです。そのなかでも非常に興味深いのは、コンピュータという最も高度な情報処理装置を使いこなすプログラマーほど、手書きを必要としているという点です。この写真は弊社のとあるプログラマーの作業風景ですが、キーボードの下に紙のノートを挟んで使っています。彼の左側には、ホワイトボードが設置され、そこにも何かを書いています。情報処理の達人であり、普通の人の何倍ものスピードでキーボードを打ち、自らのイメージする論理を直接コンピュータに入力できる能力に長けたプログラマーたちが、よりによって紙への手書きを必要とするのでしょうか。これは筆者が高校生に最新の深層学習の用語や原理を教えた時のホワイトボードです。これを見ると一目瞭然ですが、複雑な概念や新規性の高い概念はキーボードで書くよりもまず手書きで書くほうが圧倒的に速く伝えることが出来ます。図の関係、文字と文字の関係、そういったものが一切の制約なしに書き下せるからです。こちらも、筆者のオフィスのホワイトボードです。これは、プログラミングという道具と数学という道具の関係性を説明した図で、古典的な数学という(古い)道具ではシグマ(Σ)を使って表さなければならなりませんでした。ところがΣで表現可能な演算は積和演算だけです。これはプログラミング言語ならforループという単純な構図で表せます。シグマにもメリットがあって、プログラミング言語に比べると簡潔に表現できるのでより上位の概念を簡略化して説明することができます。プログラミング言語の場合、単純なシグマではできない複雑な計算や条件分岐ができるのも特徴です。同じ概念を表現するのに複数の表現手段を持っていることは強みである、ということでもあります。手書きで書く場合はシグマを使ったほうが圧倒的に速く、簡潔に書けますから板書を中心とする学校ではシグマを使った計算が多用されます。実際の計算をやらせるためには、シグマを使った数式を人間のプログラマーがプログラミング言語にいわば翻訳してやる必要があります。本来、これは非常にバカバカしく、非効率的なことです。今のところ、本格的な数式を自動的にプログラミングする方法はありません。自分に必要な数式をプログラミング言語に翻訳してしまうか、もしくはだれかが翻訳した実装をどこかから拾ってきて、それで良しとしてしまう癖があります。数式は単なる関係性を表現しているに過ぎず、数式のどの部分をどのように使うかということはその都度プログラマーが考えなくてはなりません。[2/2]たとえば筆者がよく使う例ですがhttps://wirelesswire.jp/wp-content/uploads/2016/05/29b4788882c4b204451f7aa71856a87a.pngこの数式は物理学で最初に習う運動方程式ですが、これをそのままプログラミング言語にして「F=ma」としてもきちんと動作しません。プログラミング言語では変数名が一文字であるという暗黙の了解事項はなく、「ma」が「m」と「a」なのか、それとも「ma」というひとつの名前なのか区別できません。多くのプログラミング言語では「ma」をひとつの名前として扱います。maにはなにも初期値が与えられていないので多くのプログラミング言語ではエラーになるか、ならなかったとしてもなんの意味もない数式ということになります。数学で変数が一文字と決められているのは、そのほうが手書きのコストが少なくて済むからでしょう。そのかわり、書く位置や大きさを変えることで意味を変化させ、より簡潔に関係性を表現できるようになっていますし、補足的に変数のちかくに小さな添字を加えて修飾することもできます。ところがプログラミング言語でこれを表現しようとすると、関係式ではなく関係式から導き出される手順をプログラミングしなくてはなりません。これを扱うためにはコペルニクス的転回が必要で、たとえば一次元の数直線上を移動する物体を想定してみると、F=maを正しく表現するには以下のようなプログラムを書かなくてはなりません。onenterframeは一定期間おきに呼び出される関数だと思ってください。F=maという関係式から、実際の物体の位置の変化を決めるために暗黙的に存在が想定されていた速度vと位置xという2つの変数がいきなり登場します。これは、F=maのa(加速度)が暗黙的にv(速度)とx(位置)の存在を想定しているからです。プログラミングとは関係式が暗黙的に持つ隠れた意味を明確化し、手順に還元するという役割を持っています。このとき、明確でない関係式を理解するために、実際に数直線を書いて検討したりというプロセスが欠かせません。結果、手書きが必要ということになるのです。ID:g+n7WBGh理系の研究室いくとかならず黒板があって黒板があるとそこには必ず誰かが書いた数式が残っている。世界中どこいってもそう。ID:XCcVA3C9設計。ID:0j6zvKz1ちなみに、自分も入社1年目で、プログラミング=作文だとつくづく思った。[1/4]>>10だよね。資料なんかでも、草案や叩き台レベルは手書きのほうが早いし、修正も早い。みんなで大きい紙に書いて、それに書き加えていく止揚もとりやすいしね。一人は自分の資料をまずパワポで作って、上司に見せるってスタイルだった。前者はポンポンと短時間でアップデートしていくから、結局ハイレベルなものができてた。単位枚数あたりの作成時間って、手書きだと15分で済むものが、パワポだと見栄えにこだわって1時間以上かかってた(笑)こういうのが積み重なって、この後者の去年の新入社員は既に仕事ができない馬鹿認定されてる。ID:SmISlMeH>>15早い方で、理解・整理しやすい方でやれと言う指示を出さない上司が無能。[2/4]>>17いや、その程度のこと、学生時代に経験してきているだろ。効率的に物事を処理する方法を経験するって学生なら誰でもやっているだろ。してきてないのが完全に無能だわ。ちなみにな、その後者に手書きのほうが早いからそうしろと指示したらどうしたと思う?20枚続きものの資料のうち、7枚を既に2日かけてパワポで作成していたのに手書きを指示されたからと、7枚分をファイルごとデリート。1枚目から、再度手書きで作り直す、馬鹿っぷり。つくった7枚は仕方ないから、使えば良いじゃないかっていう思考もないお馬鹿なんだぜ。ID:i6+cLdYOプログラミングといえば、コーディングシート。ID:nm/qG95M一からアイデア練る時なんかは、自由に書き込める紙に手書きじゃないと無理だろ。[1/5]・Flashのプログラミングかぁ?!。ボードに手書きするし。[3/4]>>29育てるって専門知識は育てることはできる。社内の事務処理だって教えて育てることはできる。考え方の部分は自分で勉強するしかない。マジメなんじゃなくて、馬鹿なんだよ。マジメだったら、学生時代に合理的手法って経験してきてる。してきてないのは馬鹿だから。[4/4]>>31どこをどうよんだら、1年間放置したとなる。まじで、日本語を読めない馬鹿の批判だけは、たまらん。場かってほんとそういうところあるよな事実を理解しないで、とりあえず批判する傾向。うちの馬鹿もその傾向強いわ。ID:YyjDYXh1>>22こいつ効率悪いなと思ったらオレはこうやってると過去に作ったモノを見せてやる(もしくは他人がやったモノとか)。旧人が無能だと新人が育たない良い例だね。ID:iRSjml63CG描くときも、まず最初は紙に描く人が多い。