トップ «前の日記(2007-07-21) 最新 次の日記(2007-07-23)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2007-07-22

_ ++が必要ない

Yuguiさんのコメント の、イテレータとか数え上げってのは、こういうことなのかなぁ? と考えてみる。(追記:合ってたらしい

for (int i = 0; i < limit; i++) {
  ...
}

(確かに、i++と何も考えなくても書いているなぁ)

に対してRubyだと

0.upto(limit - 1) do |i|
  ...
end
とか、
(0...limit).each do |i|
  ...
end

と書くわけで、確かに++は出てこない。

あ、イテレータってあれか。

for (std::string::iterator it = str.begin(); it != str.end(); it++) {
  ...
}
これはもろに、
str.each_byte do |c|
  ...
end
だしな。

_ 視野の問題

あまりにくだらないので何かを書く必要もないように思ったんだけど(木村さんのちくちく遊びだなぁとか思った)、暇なので問題提起。

事前確率、事後確率

とか、

××は燃えているか

のあたり。

(追記:もう1人の緑茶さんも釣れている。Cから覚えるべき?

7月下旬の日曜日ってのはみんな閑みたいだ。追記の追記:どこが閑なんだ? とふと気付いてしまった……ばかだ)

そうじゃなくて、あなたがウチの業界でメシを食って行こうと志すなら、あるいは

プログラミングの本質を理解し、プログラミング上級者を志すなら、是非C言語で

基本をしっかり勉強して下さい。

はっきり言って、基本をマスターしないうちにJavaやVB、Perlなどでいい加減な感覚を

身に付けてしまった人は、ちょっとやそっとでは矯正が効きません。

という愚かな言葉が、なぜ愚かかを考えてみよう。

疑問: ということは、Cより歴史的に前のプログラマは基本をマスターしていないので、だめということか? MARSはどうよ? (あれは、並行処理にもかかわらず、トランザクションのACID特性とかそれ以前に排他制御に最初、思いがいたらなかった(というか、ああいう歴史がトランザクションとして認識されてTPモニタによるフレームワーク化とかに通じるんだなぁってあたり)ってことだとテレビ見て思った)。

基本ってのが、過去のなんちゃらを見ることだったら、ヘブライ語でしっかり基本を、とか、MAC-LISPでしっかり基本を、とか、いや基本はABCのプログラミングです(ってどうやるんだろう?)、最初に購入するパソコンは、TK-80じゃなければなりません。基本をマスターしないうちに、VAIOだのMacBookなどでいい加減な感覚を…… あるいは、車の運転の前に基本を学ぶために大八車を引っ張れとか、ファッションセンスを磨くために、基本は貫頭衣とか。竹槍と気合で戦闘機と戦えとか、まるで旧日本軍(イメージとしての)だ。

どこまでさかのぼれば気が済むんだ?

その答えは、簡単で、「基本をマスター」先生の出発点にさかのぼれということなのだ。馬鹿げている。こういうことを言うやつがいるから、老いぼれは引っ込んでろ、となる。年を取れば取るほど、現実から乖離して言うことがずれてくるからだ。

それこそ、基本の問題だ。

歴史の流れを見極め、節目となったポイントを見逃さず、現在をゼロとした場合の最短となる基点を考える。人類の進歩は梯子を上るように、ステップを上げて行く。地面から現在までをたどり直す必要があるのは、そういう学問を志す人だけで十分だ。

まあ、梯子がはずされることもあるけどな。

いい加減が良いか悪いかは言語とは別の話だし、そもそもいい加減が本当に悪いことかどうかもわからない。いい加減っていい湯加減にも通じるし、良い加減であるということでもあったり。むしろ、「良い加減」を知っていたほうが、幅があっていいだろう(というようなのを言葉尻をとらえた言葉いじりというのだと思う)。

Cはある時点までは確かに基点だったと言える。

でも、1999年には、ほぼ間違いなく、Javaか、VBか、C++のいずれかを基点とすれば良い。

で、今は2007年の真ん中あたりだ。

さて、なんでしょう?

(思いつくのは、マルチパラダイムな言語なんじゃないかということで、C++か、Rubyか、Lispか、OCaml(知らないけど) なんじゃないかな、と。あとは教科書しだいなんじゃない? ということで、これなのかな?

プログラミングの基礎 (Computer Science Library)(浅井 健一)

って言うか、RHG読書会の次のお題だと思って買ってしまったわけだが(予習で第1〜4章を読んだけど、なんか新鮮な感覚)、実際のところ、何に決まったんだろう? (KISHIMOTOさんのメールへの返事もないし)

追記:K&Rを取り上げていることについて、自分の足を撃ってるように見えるかも知れないが、それは違うんだな。スティーヴンスの本については技術的な課題のために読めなのだが、K&Rは歴史を知るために読めで、BHはコンピュータを楽しむために読め、なのだ。K&Rをスティーヴンスの本のように読めと書いているわけじゃない。

本日のツッコミ(全5件) [ツッコミを入れる]
_ ishisaka (2007-07-22 14:05)

プログラミングの基礎は間違いなく良いです。<br><br>視野って言う点では、必要なのは基礎なんでしょうね。簡単に書けば自分の書いたコードが計算機上でどう実行されているかイメージできるかどうかでしょう。僕は配列のコードを書くと頭の中に直方体の透明なブロックが連なる固まりが出来て、その中にデータが入って、配列操作の時にはポインタの位置のブロックが赤く光るイメージが絵としてできあがるんですが、まぁそういうイメージが出来るかどうか何じゃないかと思ったり。<br>配列がかけない人って、頭の中で配列替えになっていない人が多いです。<br>で、経験的にこの絵を描いてもらうには計算機の物理メモリやCPUの動作をある程度理解してもらう必要があります。この辺が基礎が必要ってところです。頭のいい人はそこら辺すっ飛んで数学的に理解できちゃうみたいですけどね。

_ ishisaka (2007-07-22 14:07)

配列替えになっていない<br>< 配列が絵になっていない<br>です。すいません。<br>伊達に会社で誤字脱字大王とは言われてませんね。

_ arton (2007-07-22 14:09)

ああ、僕の理解と同じようです。<br>>頭のいい人はそこら辺すっ飛んで数学的に理解できちゃうみたいですけどね<br>これができるらしい人は、うらやましいんだけど、僕も物理イメージに置き換えることが最初は必要でした。<br>#ふと思ったけど、VRAMいじくるプログラムってまさに、それだったんですよね、とisisakaさんがそういうことをやられてたかどうかは知らないけど。

_ mumurik (2007-07-23 21:36)

基礎から学ぼうとフリップフロップの動作原理を学ぼうとしたのですが電子の挙動が良く分かりませんでした。<br>さらに基礎として電子の挙動を学ぼうとしたら、どうもU(1)のゲージ粒子を媒介とした相互作用を学ばなくてはいけないらしく、その為にはファイマンダイアグラムを学べと言われました。<br>いつプログラムが始められますか?

_ arton (2007-07-24 00:50)

書を捨て街に出れば、3日後にはプログラムを始められます。勇気をもってください。<br>なんてね。「物理イメージ」とか大雑把なこと書いたから電子の妖精を召還しちゃったみたいだなぁ。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|

ジェズイットを見習え