« プログラムに固定値を書いてはいけません | Main | プログラミングを始めるには(2) »

July 12, 2014

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

常日頃、會社の若手社員や付き合いのあるベンダの若手SEにelispの面白さや便利さを敎えてあげようとしているのだが、やってみようという人はなかなか現れない。

若い人で、仕事として(生きる糧として)プログラムを作ったことがない人が、何かプログラミング言語を習得しようと思ったときに、どのプログラミング言語を選ぶのか。これは「プログラミングの話」というタイトルで、プログラミング言語を習得する際に言語選擇の餘地など無いのが常だということを書いた。というのも、ほとんどのプログラマがどれかのプログラミング言語について習得したと言えるほど習熟するには、仕事としてそれを實踐する以外に方法が無いからだ。

仕事でプログラムを作るのと、そういう經驗のない人がプライベートでプログラムを作るのでは何が違うのか。簡單に言えば、仕事でプログラムを作る=開發であり、要件定義、仕樣檢討、機能設計、詳細設計、プログラム製造(プログラムコーディング、コンパイル、單體試驗)、結合試驗、總合試驗、運用試驗という工程(開發プロセス)を經て出來上がる。この中で、何も知らない人がイメージするところのプログラムを作るという作業はプログラムコーディングにあたるが、それが占めるウエイトは開發全體の10%に滿たないことが多い。なので、プログラムを書く前にかなり時閒をかけていろいろ考えないと、どう書けば良いのか分からないのだ。

だから、プライベートで何かプログラミング言語を習得したいと思っても、何を書いたら良いか分からないし、具體的にこういうことが出來るようになりたいと思ったとしても、すぐにプログラムをすらすらと書けるわけではない。假に世の中の多くの若者が憧れるカリスマプログラマでも、何かシステムと呼べるほどの規模のプログラムを作ろうと思ったら、上記の開發プロセス通りに事を進めるしかないし、そうでなければマトモに動くシステムは出來上がらない。

ここまで讀んでも、プログラマになりたい若者には小賢しい能書きとしか思えないかもしれない。そこでさらに具體的に掘り下げてみよう。

どのようなプログラムであれ、極論すれば入力した情報を加工して別の情報を出力する。2つの數字を足し算するプログラムは、2つの數値を入力して、足し算し、その結果を出力する。そんな簡單なプログラム?と思うかもしれないが、それは要件によって大きく變わってくる。もしも、その2つの數字がWEBブラウザから入力され、それをサーバで受け取って計算し、入力每に結果を蓄積して、好きな時にその結果一覽を參照したいという要件だとしても簡單に作れるだろうか?

おそらく學校でやるようなプログラム演習の解答例はせいぜい以下のようなものだろう。

Ws000058

いや、もしかしたらこれで良しとする場合だってあるだろう。

Ws000062

elispならば、(mylib-plus-two-numbers 1 2)とタイプして評價すれば結果が得られる。しかし、C言語だとそういうわけにはいかない。C言語で同じように書いても、これだけでは動作しないからだ。

Screenshot_from_20140713_113120

これをコンパイルしても、實行出來るプログラムを生成することが出來ない。最近のgccって、こんなにいっぱいエラーメッセージを出してくれる。

Screenshot_from_20140713_114231

で、エラーが出ないよう、思いっきり手拔きの實行可能プログラムを書いてみたのだが、あまりに久しぶりなので、こういうワーニングが出てもすぐに對處が出來ない。

Screenshot_from_20140713_115641

/usr/include配下のヘッダをprintfでgrepすると、stdio.hに外部宣言があったのでインクルードしてみた。實行ファイルは生成されているが、これでワーニングは解消する。

Screenshot_from_20140713_120853

結果はこの通り。

Screenshot_from_20140713_121232

途中から環境を假想マシン上のLinux(Ubuntu)に變更した。一應、最新のEmacsをコンパイル出來る程度には整備してあるので、C言語のプログラムをあれこれ試すのは朝飯前だ。

ところで、話がだいぶ逸れた。「2つの數字をWEBブラウザから入力して」云々のプログラムは、C言語では出來そうになく、WEB系のプログラムはやり方を知らないし、調査するのも面倒だ。しかし、同樣のことをelispで試すのは非常に簡單だ。

Ws000063


|

« プログラムに固定値を書いてはいけません | Main | プログラミングを始めるには(2) »

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/59971996

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

« プログラムに固定値を書いてはいけません | Main | プログラミングを始めるには(2) »