scalaの歴史 その1

scalaの歴史って書いてみましたが、別に詳しいわけではありません。
オープンソースなんで、古いリポジトリ見て、気付いたこと書いてくだけです(・ω・`)
しかもその1って書いたけど、その2があるかは未定・・・(・ω・`)

ここにアクセスすれば、誰でも自由にソースコード見れます。

いま(2010年6月22日現在)のリビジョンが2万1千いくつとかだけど、ここ

にみたいリビジョンの番号入れれば古いのがみれます。(Trac便利だな。。。)

一番古いのを見ていくとこのあたりかなぁ。216のコメントに、

New repository initialized by cvs2svn.

って書いてあるから、これ以前はCSVだったらしいね。とりあえずこれより昔は見れるのかわからんし、見方もわからんので保留して、このあたりを見てみる。
で、ライブラリのファイル一覧がこれ↓

すくねぇ・・・( ̄△ ̄;)
まぁ言語作ったばかりなんだからあたりまえだけど。

で、なんでこんなことしてるかっていうと、
昔のものを見れば、言語作成当時からあるクラスってことは、それは言語のコアとなる部分なんじゃないかってことで、色々勉強になる気がしたので、歴史を追うことにしてみたわけです。

やっぱり、List、Option、Tuple、あたりがあるね。Predefも最初からあったのはちょっと以外。(でも中身46行しかないけど)

で、$colon$colonクラスがある。scalaにある程度詳しい人なら知っているはずだが、これはリストでの(パターンマッチ用も兼ねた)空でないListのクラス。caseクラスもあるみたいだね。てか、Listクラスのメソッドは基本的なところは大体揃っているな。ソース観てみても、高階関数のメソッドとかちゃんとあるし。
でも、Functionトレイトがないけど、どうなっているんだろ?まだSVNに追加してないだけかな?

あとStreamも最初からあったのか!!!すげぇ

やっぱりこうして見ていくと、単にJavaを拡張した言語をつくろうとしたわけではなく、(Lispなどのcarとcdrの構造のような)Listとか、Tupleとか、Optionとか、他の言語の考えを取り入れつつ、オブジェクト指向って感じだなぁ。

Javaの配列に対応するArray自体がないし。てことは、Javaのライブラリで引数や戻り値の型が配列のものとかどうしてたんだろう?

ていうか、コンパイラの方のソースが多そう。コンパイラは、まだセルフホスティングできるレベルじゃないから、ほぼJavaで書かれてるっぽいね。
こっちも時間あったら調べようかな。この時のほうが言語仕様が単純だろうから、言語処理系のソースコードとして読むなら、ちょうどいい量で、読みやすいかもしれない。

なんか、調べれば調べるほど疑問がわくので、今日はこれくらいで終了。