« プログラミングを始めるには(2) | Main | プログラミングを始めるには(4) »

July 16, 2014

プログラミングを始めるには(3)

あなたは今いくつかの業務を經て、システム開發とはどういうものかがおぼろげ乍らに分かってきているとする。そして、このままJavaだのC#だのでプログラムを書いていれば、それで良いのだろうか?と疑問を持ち始めているかもしれない。

プログラミングに限らず、それを1個だけしか知らなければ、それ自體を客觀的に見ることは出來ない。やはり何か別のものを經驗した後に初めて評價可能になる。ただ別のものを知れば良いと言っても、C言語を習得した後にPascalの勉强をしたところで、C言語を客觀視するのはむずかしいだろう。似た者同士なら習得は容易かもしれないが、それでプログラミングスキルが向上するかどうかは分からない。どちらかと言えば、かなり特殊なもの、特異なものの方が未知の觀點をより多く得られるのではないか。

そう考えたときに、CやJavaなどのプログラマにとってLispはパッと見でかなり特異なプログラミング言語ではないだろうか。たまに自分で書いたelispのプログラムを周圍のSEに見せると、まるで宇宙人を見るような顏をされることが多い。ほとんど變態扱いである。そして、たいていの人はこんなの分かるわけがないし、こんなプログラムを書けるようになるとは思えない、といった印象を持つ。

しかし、人は見かけによらないと言われるように、プログラミング言語も意外と見かけによらないものだと思う。では、ゆるりと始めましょうか...elisp談義。


Lisp(List Processing)というからには、さぞかしリストを扱うのが得意だろうということだが、Lispはリストを扱うどころか、プログラム自體がリストなのだ。それに比べて、Javaのリスト機能?であるArrayListの何とも貧弱なこと。あれじゃあC言語の配列より扱いにくい氣がするし、あんなもの、とてもリスト機能と呼べるようなシロモノじゃない。

まあリスト機能というのなら、とりあえずこんなことくらいは簡單に出來ないとお話にならない。

Ws000064

Lispなんだからリストの操作が得意なのは當たり前であるが、この中でもっとも驚くべきことは、一番最初のリストをtest-valueという變數に設定しているところである。リストのデータをこんなふうに設定出來るのはLisp系の言語(Schemeとか)やperlなどのスクリプト言語くらいだ。これのことをread表現とprint表現の一致と呼んだりする。Lispの關數の擧動を確かめるのに、このように適當にリスト變數を作れるのは非常に便利だ。これをC言語でやろうと思ったらゾッとする。

Screenshot_from_20140713_132318

たったこれだけのことを、

Screenshot_from_20140713_132418

Screenshot_from_20140713_133548

C言語だとこんなに書かないと出來ない。まして複雜なリスト操作を行おうものなら、ものすごく面倒なことになるのは容易に想像がつくだろう。さらに、これではアルゴリズムの妙を樂しもうなどと考える餘裕など無くなる。ちなみにこんなプログラムを書くのは何年ぶりかなので、コンパイルが通るまでに結構時閒がかかったりした(笑)


|

« プログラミングを始めるには(2) | Main | プログラミングを始めるには(4) »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/74224/59991527

Listed below are links to weblogs that reference プログラミングを始めるには(3):

« プログラミングを始めるには(2) | Main | プログラミングを始めるには(4) »