飽きっぽい人のブログ

プログラマとしてもテスターとしても中途半端な人のブログ

Microsoftが研究中の新言語について思うこと

昨日書いたM#ネタ(C# for Systems Programingとも。ながいのでこの記事ではM#とします)の続き。昨日は訳を上げるだけで力尽きたので思ってることを書いてきます。

新しいOSを記述するための言語

M#は中間言語(非JIT)を出力する言語で、これまたMicrosoftで研究中のOSであるMidoriを記述するために開発が始められたそうです。
C++の代わりにこれ使うぜ!みたいなノリですね。ようはMicrosoft版DやGoと思ってもらえれば。
ただ、最初からOSを書くことを目的としているだけあってGCに依存しない言語仕様になるようです。また一方でWebサービスを提供できる程度のポテンシャルを持っているとか。
それだったらGC使う道筋もほしいなあと思うけど、言語仕様についてはまだほとんど公開されていないのでこうだとは決めつけて書けないのがなんとも。

ぶっちゃけいるの?

「古いC++を捨てて、新しくきれいに設計された言語を使おう!」というのはやや安直な気はします。
正直俺はC++の言語仕様(C++11以降)も結構気に入っていて、レガシーな部分を引きづっていますが結局のところ言語仕様というのは月日が経つとどうしても汚くなっちゃうんじゃないかなと思います。 これはソフトウェアの技術革新が起こり続ける限りしょうがないことじゃないでしょうか。なので新しく設計された言語を使ってもいずれは汚くなって意味なくなるんじゃないかなと思っています。
ただ、Microsfotとしては必要なのではないでしょうか。
というのも今までC++/CLIC++/CXといった標準のC++言語仕様から逸脱した拡張をやってきたわけで、 それが続くとC++標準化の進行妨げになるか、あるいはいずれC++標準化委員会からMicrosoftが見捨てられるかのどちらかに行っちゃうんじゃないかなと思います。
それでまあ、M#の言語機能にMicorosoftが独自に盛り込みたい機能をつければ、MicrosoftC++に対していらん拡張しなくなってC++側にもメリットはあるんじゃないかなと。
当然C++の覇権は薄れますが、さすがに全てのコンパイラの面倒を見る以上、Microsoft固有の事情には構っていられないわけで、仕方のないことじゃないですかね。
例えば、最近公開された.NET Nativeのようなクラウド上のコンパイルに密接に言語仕様を絡めたプログラミング言語を提供したいと思ったときに、C++が対応してくれるかといったらそうじゃないと思うんですよ。
俺個人としてもこのクラウド上のコンパイルにはいろいろ可能性があるかなと思っていて、そういう意味においては今更感のあるMicrosoftの新言語開発を応援してる、といったところです。

ま、お蔵入りするかもしれないんですけどね(^q^)