Dartが発表になったし軽くまとめてみる

GoogleがDartを発表したのでちょっくら軽くまとめてみる。大雑把な翻訳かな

Dart公式サイト

特徴:

  1. クラス (Classes):JavaScriptもクラスを使うことはできなくはないけど、Dartは初めからクラスベースの開発言語として作られてる。オブジェクト指向の恩恵を受けられる?
  2. 選択的型付 (Optional types): 型付けを任意で行えるようになっている。型付けをすることでコードの意味をわかりやすくし、デバッグ時に型チェックツールを使えるようになっている。
  3. ライブラリ (Libraries) : 実行時に不変(この辺ちょっと意味がわかってない)なライブラリを使ったり、作ったりできたりできる。それ故に、個別に作られたコードは共有ライブラリに依存できる。
  4. 開発ツール (Tooling): Dartには実行環境とライブラリと開発環境が含まれる。効率的でダイナミックな開発ができる。コーディングしながらのデバッグが可能。
Design goal: Dartはまだ駆け出しでまだこれからやることがいっぱいある。これからの進化と改善点は以下のようになるらしい。
  1. web開発の為の構造化され(structured)その上柔軟な(flexible)言語
  2. Dartをプログラマーに自然で馴染み易い言語にし、学習コストを下げる。
  3. すべてのDart言語で作られたものは、ハイパフォーマンスで、アプリケーションの立ち上げ(創り上げる)が早いことを確実にする。
  4. web上のタブレットや電話やPCやサーバを含むすべてのデバイスに対応するようにする。
  5. すべてのメジャーなモダンなブラウザ上で早く動くようにツールを提供する。
これらのゴールは以下の現在のwebデベロッパーが直面している問題に取り組む。
  1. 小さなコード、スクリプトが明確な構造を持たずに大きなwebアプリケーションに進化してしまっている。これらのものはデバッグするのもメンテナンスするのも面倒くさい。チームで各々が独立して作業するのにこういったコードは分割することができない。大きくなりすぎたときに生産的に開発を行うことが難しい
  2. スクリプト言語は、ライトウェイトな本質(学習コスト、記述の容易性など)ゆえにコードを早く書けるゆえに人気がある。一般的にアプリケーションの中でのやり取り(the contracts with other parts of an application)はコードの構造によってでなく、コメントによってなされる。コードの著者以外はコードを読んだり、メンテナンスすることが難しい。
  3. 現存の言語から開発言語を選ぶと、動的か静的型付けの一方の性質をもつ言語しか選べない。昔からあるような静的言語では、手間が掛かるツールチェーンとコーディングスタイルが課され、柔軟性と過度に制約がプログラマーに課されてしまっている。
  4. 開発者は、一貫したサーバからクライアントまでを対象とした同一のシステムを開発することができない。ただし、node.jsやGWTは例外
  5. 複数の言語、フォーマットにまたがった開発は頭の切り替えが必要で骨が折れるうえに複雑性を開発にもたらしている。
ClassとInterface
Interfaceはメソッドやプロパティを定義できる。また、Interfaceは他のInterfaceを継承することができる。Classは複数のInterfaceを実装することができる。しかし、継承できるスーパークラスはひとつののみで多重継承はできない。
Optional type
Dartは動的な型付け、静的な型付けの両方の選択肢をプログラマーに提供する。とりあえずの実装時に型付けなしで定義しておいて、後から静的に型付けに変更することができる。開発中のアプリケーションが大きくなり、安定してきたら、デバッグと構造の決定のために任意を箇所を静的型付けに変更することができる。
サンプルコードは元サイトを参照されたし。
どうやって使えるの?
  1. 一般的なモダンブラウザ(Chrome, Safari 5+, and Firefox 4+ )で動くようにJavaScriptにコンパイルする。
  2. サーバー上でVMで直接Dartのコードを実行する
  3. Dartboardを使ってブラウザ上で開発、変更、実行できる。
http://www.dartlang.org/docs/technical-overview/index.html と概要にある。
とりあえず概要的にこんな感じ。すべては訳してないので必要に応じて原文を参照してください。
所感としては、ライトウェイトな言語使っていて静的型付けがなくて気持ち悪いとか感じてる人にはいいのかもしれない。その上、Interfaceを定義できるという点で、他のオブジェクト指向に慣れている人にはかなり馴染みやすい感じになってるのではないかと思った。JS使っているけど、どうもクラスを使えなくはないけど、一般的な書き方するのに色々用意してやらないといけないし面倒くさいなと思っていたのでこれからの進歩の仕方によってはいい開発時のいい選択肢になってくれるのではないかと思った。

ruby-gem関係のエラーが出る

Invalid gemspec in [/Library/Ruby/Gems/1.8/specifications/json-1.6.1.gemspec]: invalid date format in specification: "2011-09-18 00:00:00.000000000Z" Invalid gemspec in [/Library/Ruby/Gems/1.8/specifications/rack-cache-1.0.3.gemspec]: invalid date format in specification: "2011-08-27 00:00:00.000000000Z" Invalid gemspec in [/Library/Ruby/Gems/1.8/specifications/tilt-1.3.3.gemspec]: invalid date format in specification: "2011-08-25 00:00:00.000000000Z" Invalid gemspec in [/Library/Ruby/Gems/1.8/specifications/twitter-1.7.2.gemspec]: invalid date format in specification: "2011-09-22 00:00:00.000000000Z" Invalid gemspec in [/Library/Ruby/Gems/1.8/specifications/typus-3.1.2.gem

railsコマンド、gemコマンドで上記のエラーが出ていた。で、

gem update --system 
をしてgemのバージョンを上げて、
gem pristine --all 
をして、再インストール。または
gem update 
これで、問題解決した。
元ネタは、

Hello New World!

久々に、blogなるものを更新しようと思う。

アウトプットをするということが、何かを作ってリリースするだけでは足らないなというのと、プログラマー界隈で、それなりに出来るようになるには、ブログで技術的なメモをしていくことが大事だということ。この辺を踏まえて、ちらちら、技術的なメモをしていこうかと思う。出来る限り日本語ブログの再編集したような記事は避けるようにしたいと思う。ひとつあるのは自分の英語力を強化したいというのと、英語でしか手に入らない情報が結構あるってことで、それを日本語に落としこむと結構見てくれる人がいるんじゃないかという打算的な考えを元にそ~しようと思った。

出来る限り、正確性を求めて書いていこうとは思っているけれども、なにか間違い、致命的なバグ等あれば、ご指摘、ご教授ください。なにぶん、走りだしたばかりのペーペーなもので、わからないことだらけなので。