2011年2月26日土曜日

懐かしいPascal

オー!ヘクトパスカル!!

と叫んだ後に、プログラミング言語のPascalを思い出しました。Pascalは、大学の2年生のときに、情報系の講義で一番最初に習ったプログラミング言語でした。
最初に出た課題は、ダイキストラのアルゴリズムを使って最短経路を求めるプログラムだったでしょうか。
再帰呼び出しを学ぶ課題として、ハノイの塔もありました。東横線で渋谷に向かう途中、急にひらめいて、窓ガラスにコードを書いて、これでできるじゃん!と一緒に居た人に説明してたことまで、思い出しました。時間が余ったので、Emacsのhanoiみたいに、絵も表示させました。




FreeBSDのportsをgrepで探してみると[E:coldsweats01]


  • Free Pascal (lang/fpc)


  • Pascal to C translator (lang/p2c)



なんてのがありました。




Free Pascalはかなり本格的なものらしいので、p2cを試しました。




え~と、Pascalってこんな感じでしたっけ?




% cat hello.p

begin

   writeln("Hello world");

end;




p2cではこんなんでも処理できてしまったのですが、違うみたい。
ネット検索して、修正。




% cat hello.p

program hello;

begin

   writeln('Hello world');

end.




ドキュメントも見ないで、適当にp2cを実行。




% p2c hello.p

hello




Translation completed.




こんなのが出てきました。




% cat hello.c

/* Output from p2c 1.21alpha-07.Dec.93, the Pascal-to-C translator */

/* From input file "hello.p" */



#include <p2c/p2c.h>



main(argc, argv)

int argc;

Char *argv[];

{

  PASCAL_MAIN(argc, argv);

  printf("Hello world\n");

  exit(EXIT_SUCCESS);

}





/* End. */



そのまんまですなぁ[E:coldsweats01]




これ、どうやってコンパイルするんだろう?と、これまた感に頼って試行錯誤、3回目に当たり。とりあえず、これでよいらしいです。




% gcc -I/usr/local/include hello.c -L/usr/local/lib -lp2c



そして実行。



% ./a.out
Hello world



とりあえず満足。





Nintendo DSi用にBASICが出る、しかも8bitマイコン時代の雰囲気のBASICが!
…と話題になっているようです。ごく一部、年齢層の高い人たちの間だけですか。



あのころ、BASICの次は、PASCALだ、と言われることもありました。
そんなことなかったですね[E:coldsweats01]



私の場合、BASIC、Z80アセンブラ、FORTH([E:happy01] Oh!MZ、Oh!Xを読んで)、ポケコンでBASICとアセンブラ、C言語、…と、ここまで独学、むちゃくちゃな我流で。



アセンブラとか言わずに、機械語とかマシン語って呼んでたっけ。ハンドアセンブル…



大学の講義では、Pascal、Lisp、Prologなど。マニアックな講義では、sh、csh、sed、awk、perl。



さらには、lex、yaccを使って、ちょっとした処理系を作るところまで、手を出すようになったりも。



それくらいやれば、もうたいていのプログラミング言語は、見ればすぐに覚えられるようになります。C++、Java、PHPなどは文法が似てるので、すんなり使えるようになりました。オブジェクト指向な考え方も、大学の講義ではあまり無かったと思いますが、やってるうちに、いつのまにか、身についてしまいました。





20110226
写真は本文とまったく関係ありません





0 件のコメント:

コメントを投稿