crowzの日記: 新しいプログラミング言語を覚える為にはどうしたらいいだろうか? 7
日記 by
crowz
今までプログラマとして多くのシステムに関わってきたけども
ある程度この業界にいるとプログラム言語を新たに覚えるよりも
今までの経験を生かした(既に習得済みの)プログラム言語での仕事を求められることが多い。
今はプログラマじゃなくてシステム管理業務を主に担っているが
暇を見つけては新しい言語を習得しようとするもなかなか身につかない。
たとえばrubyを覚えようと思ってもPHPやPerlで事足りることが多く、
CやC++を覚えようと思ってもプログラミング初心者の本はあれど、
ある程度CやC++の利点を生かしたプログラミングを習得できる術がない。
CやC++等はOSSプロジェクトからソースを落として勉強すれば良いとよく言われるが
いきなりは敷居が高すぎて全くわからない。
誰でもかける"Hello world"から始まらないプログラム習得方法という選択肢は無いものだろうか?
プログラミングに王道なし (スコア:1)
ないです。
チューリング完全な言語を一つ覚えてしまうと、本質的には他のチューリング完全な言語でできる事は全て、あなたが覚えた言語でできてしまいます。後は「この言語はこれこれこういう系統の処理が記述しやすい」というのがあるだけ。
なので、「A は yyy でもできるが zzz でもできるので、zzz を知っているとなかなか yyy を学習する気になれない」のはまったくもって同意するが、それを言っている限り yyy は習得できない。
.
例として perl を考えてみてください。perl には正規表現という強力無比な機能がデフォルトで組み込まれています。C,C++にはこのような機能はデフォルトでは存在しません(ライブラリとしてしか存在しない、という意味で)。ライブラリだということは、使わなくてもC,C++のコーディングはできます。このような状態にある人は、正規表現の便利さを理解するのはとても難しいです。で、正規表現の便利さを理解しない人が perl の利便性を理解するのは、やはり難しい。なぜなら、perl の利便性の大黒柱である正規表現を理解できていないから、これがどれほど強力なのか、判らない。
結局、どうにかして新しい言語を学習しないと新しい概念を理解するのは難しく、新しい概念を理解しないと新しい言語の価値を理解するのは難しいのです。で、大抵の人にとって、新しいプログラミング言語を学習するほうが、新しい概念を理解するよりも容易なはずなのです。
というわけで、強引に新しいプログラミング言語を学習し始めると、とりあえず "Hello world" から、という事になってしまうわけですよ。
fjの教祖様
Re:プログラミングに王道なし (スコア:1)
なるほど!
めちゃめちゃ納得しました。
Re: (スコア:0)
TCP/IP、ソケットファイル、共有メモリ等、手法がいろいろあってそれぞれ得意分野があっておもしろいですよ。
Re:プログラミングに王道なし (スコア:1)
極端な例としてはbashの /dev/tcp/IPアドレス(あるいはhost name)/portnumber ってのがありますな。
一歩間違えると、言語ではなくOSを変えたくなりますが(Plan9とか)。
fjの教祖様
とりあえず読む (スコア:1)
私は昨年Perlに嫌気が差してPythonに手を出してみましたが、そのときは
・入門書を1冊読む
・とりあえず作りたい物を見つける(私の場合Webアプリケーション)
・作りたい物と似た分野のOSSを見つけて参考にしながらひたすらコーディング
という感じでやりました。
「その言語でコーディングする利点」とか「○○らしく」とか考えず、まずは手を動かしてみて、疑問に感じた点は適宜Googleで探すなり応用書を読むなりして移行していくしかないのでは。
移植かな (スコア:0)
自分に合わせたその言語の使い方ってものが身につきます。
で、移植できたら次は改良。
その言語で特化した機能を使って移植したプログラムを改良していきます。
もちろんハードルは高いですが、一気に覚えるならこれ。
それでもHello Worldから (スコア:0)
「Hello Worldを移植する」というところからスタートして改良していけという話ですね。
#そうやってObjective-Cを学んだ