それでも静的型付けがいいに決まっている

俺は静的型付けができない言語は嫌いだ。
F#最高!

俺はPHPJavaScriptも嫌いだ。なんとでも言え。ダメなプログラマーで結構。
PHPの$を見ているだけでめまいがする。


PHPは意地でも使わないが、JavaScriptは必要に迫られているから使いたい。

でも、動的型付けでブロックスコープもないJavaScriptなんか使いたくない。
だからHaxeを使いたい。


静的型付けだと、IDEが良い感じの補完をしてくれるんだぜ。
自分がいじくっている変数にどんなメンバーがあるかわかるんだぜ。
ケアレスミスだってコンパイル時にわかるんだぜ。

なんでこの良さがわかんねーんだよ。


JavaScriptでがりがりクールなコードを書くような連中は若い奴が多いんだろうよ。
若い頃はいいんだよ。何十万行ソースがあっても頭の中で全部処理できるだろ?
だからIDEのコード補完もいらないし、コンパイラーの補助なんかいらない。

でもな、若い頃に書いた素晴らしいコードは何年もメンテナンスされていくんだぜ。
何年もの間に他に面白いことを考えついて別のプロジェクトを始めたりするんだぜ。
スランプで全然頭が動かなくなることもあるんだぜ。
若いやつだって年を取るんだぜ。

デキルやつはそんな状態にはならないか?
何億行コードがあろうと全部頭の中で処理OKか。
さすができる奴は違うなぁ。
でも、俺はできない子だから、コンピューターがやってくれるどうでもいいことは、コンピューターに任せたい。
問題が起きる可能性がある状況下で必死にミスしないように無駄な努力をするより、最初から問題が起きない状況下で楽をしたい。


でもま、JavaScriptをそのままガリガリ書きたくなる気持ちはわかる。
やりたいことがたくさんあるのに、Haxeからライブラリを使えるようにちんたらラッパーなんか書きたくないよな。俺も書きたくないよ。だから矛盾しているけどJavaScriptで書くよ。
書き捨てみたいなコードはJavaScriptで、重要なコードをHaxeに置き換えていくとか?
JavaScriptなから書いてすぐ実行なのに、コンパイルのステップが入るHaxeはどうしてもここのリズムが悪いわ。


その点F#はすごいよな。
書き捨てのコードだろうがなんだろうがなんでもF#でできるんだぜ。
面倒くさいから最初は型推論に任せておいて、込み入ってきたら型で縛っていくような良い感じの書き方ができるんだぜ。
あーもうF#最高。最高すぎる。なんでみんな使わないのかな。こんな素晴らしい言語。

最近はサーバー系は全部F#で書いているけど、楽ちんすぎてマジ最高。
F#より何十倍も遅くて、しかも実行して初めてエラーがわかったり意味不明な仕様に気をつけながらPHPを使う人達、マジ気の毒(TT)


F#でもHaxeでも好きに使ってろ、って感じだろうけど、俺は今でも悩んでいる。
F#はすばらしい。関数型言語はすばらしい!
だが学習コストが高い!
だから使える人が少ない!人気がない!
だからF#やHaxeみたいなマイナー言語を使うと、書いた俺がずっとメンテナンスしなくちゃいけない!
援軍なしに一人で敵を倒しまくる真・三國無双みたいな状態になる。


やっぱ数は力だよなぁ。
長いものには巻かれろとは良く言ったもんだよ。
悔しいなぁ。
それでも俺はF#とHaxeで行けるところまで行くつもりだけどね。

よーし、パパ酔った勢いで言語について語っちゃうぞ

ま、F#が最高だって言いたいだけだけなんだけどね。


静的型付け言語

Pascal
 昔はC言語なんて高くて買えなかったんだよ。
 子供がお小遣いを貯めて買えるコンパイラーはTurboPascalしかなかった。
 Pascalは文の区切りが ; とか . 場所によって変わるんだけども、Erlangもこんな感じだね。
 昔のMacPascalでプログラムを書いたんだゼェ。InsideMacはPascalで解説してあったんだゼェ。


C
 高級なアセンブラ


C++
 俺はboostを使い始める前にC++は使わなくなったので最近のことはわからん。
 C++stlとかスマートポインタを使うとメモリー管理とかをほとんど気にせず使えるようになる。
 それでも常に死と隣り合わせの緊張感あるプログラミング。
 よほどパフォーマンスが必要な物を書く時以外はもう触らないね。


Java
 すごく保守的な静的型付け言語。未だにlambdaすら無いんだゼェ。
 型推論が無いので型の記述が面倒くさい。
 型推論なしの静的型付け言語使うってどんなドMだよって今は思う。
 サーバーでもAndroidでも書けちゃう。
 みんなが使っているから俺も使う、そんな言語。


C#
 アグレッシブなJava。痒いところに手が届く良い感じのJava
 簡単な型推論があるので、まあないよりはまし。
 MonoTouchを使うとiOSのアプリだって書けるんだゼェ。

 
VisualBasic
 VB6までは本当にBasicって感じだったけど、それ以降のバージョンは書き方が違う劣化C#みたいなもの。
 ゴルゴ13で世界最高の言語はBASICだとか言っていた愚かな教授がいましたが、それ間違いなので。
 そもそもVisualBasicって静的型付けだっけ? ま、いいや、VisualBasicなんて。


Ocaml
 実用的な関数型言語
 俺は好きだよ。うん、すごく好き。


Haskell
 純粋関数型言語。理想を貫くことが至上の命題。
 関数型言語のお勉強には良いと思う。
 でも実用には使えないな。でも、それは俺の頭が足りないからなのかな。


Scala
 悪くはないよ。
 良い、と言い切れないのは、リストをわざわざList()とか書かなくちゃいけないとか、そんな些細な部分。
 でも、関数型言語に慣れていない人が使うと、ちょっと書き方が違うだけのJavaになる罠。
 JVMで開発するならコレだね。


F#
 msilで動くOcaml。どうしてもF#がマッチしないところはC#で書けばいい。
 .net frameworkが使えて、c#で書かれたライブラリーが全部使える。
 書き方がOcaml。見た目からして今までの言語と違う。とりあえず普通に書くと関数型言語っぽく書ける。
 今更パターンマッチの無い言語なんか使う気にもならないよ。
 IDEであるVisualStudioがすばらしい。
 「俺はLinuxしか使わない」とかハッカー気取っているバカは悔い改めなさい。
 最高だね。


Haxe
 型推論がある静的型付けのJavaScriptって感じ。
 Ocamlで書かれていて、Ocamlの影響を多大に受けている。JavaScriptの皮をかぶったOcaml
 enumとかswitchとか、名前は同じだけど超拡張されている機能があったりして、Ocamlみたいにパターンマッチもできるんだゼェ。
 HaxeのコードはPHPやらC++やらC#JavaJavaScriptとかいろんなコードにコンパイルできるんだゼェ。
 JavaScriptだけでは信頼性に足りないような部分をHaxeで書けたらいいんじゃないかな。


JSX
 Haxe使えよ


動的型付け言語

マイクロソフトBASIC(N88Basicとか)
 昔はみんなこれでプログラムを書いたんだ。
 VisualBasicなんかとはぜんぜん違う。変数スコープなんてないんだ。


Objective-C
 静的型付け言語のC言語と動的型付け言語のSmallTalkをまぜこぜにしたような言語。
 iOSMacOSのアプリを書くならこれだね。
 割かし好きな部類に入るんだけど、動的型付け部分はやっぱり実行しないとエラーがわからない。
 でも、Appleへの愛があれば乗り越えられる


PHP
 $にアレルギーがある人は使えません。俺はアナフィラキシーショックを起こして死ぬ
 クロージャを取り入れたりがんばってはいる。
 でも、謎な仕様がいろいろあって、怖くて使えない。
 サーバーサイドは安全な言語で書こうよ。


Perl
 俺はアナフィラキシーショックを起こして死ぬ
 関数の書き方がわからなかった。つまり、引数ってどうやって渡すの? って感じ。
 受け付ける引数はちゃんと宣言しようよ。型どころかアリティもわかんねぇじゃん。生理的に受け付けない。
 こんなのありがたがって使っているMixiやらGREEなんかに負ける気はしないんだけど、なぜか全然勝てない(お金的に)
 こんなのありがたがって使っている小飼弾にも負ける気はしないんだけど、全然勝てない(髭的に)


Erlang
 ErlangOcamlよりも純粋関数型のHaskellっぽい。
 一時期入れ込んでいたけど、F#があるからもう使わないな。
 そもそも堅牢なサーバーを動的型付けで書く、っていうのが俺には理解できんよ。


JavaScript
 function <- 長すぎる
 ブロックスコープがない。
 でも、俺にはその程度しかケチを付けることはできないよ。
 悔しいけどこいつはデキる子。避けては通れない。
 憎み過ぎて逆に好きになっちゃいそう。


Node.js
 JavaScriptだけど。
 サーバーサイドを全部非同期IOのJavaScriptで書こうという楽しいプロジェクト。
 きらいじゃないね。でもF#があるからいらない。
 まー、そもそも、Node.jsで書くようなものはErlangで書けばいいんじゃねーの?


CoffeeScript
 変数のシャドウィングができない。ケチを付けるのはこんだけだな。
 すごく素敵な言語。でも、やっぱJavaScriptを直接書く。


Ruby
 MatzLisp。こいつはいいと思うよ。でもF#があるから使わないけど。


Python
 こいつはいいよ。なんかパワーが渦巻いている。
 でもF#があるから使わないけど。


Prolog
 子供の頃勉強してもわかんなかったけど、最近やりなおしてやっとわかった。
 でも、Lispで書けばいいんちゃう?


CommonLisp
 もはやLispには宇宙を感じる。
 動的型付けとして書いたけど、型の制約を入れることもできるんだ。
 MSIL、JVMで動くCommonLispがあればなぁ・・・・
 あ、ABCLはだめよ。JVMで動くけど遅すぎる。話にならん。
 動的型付け言語を使いたいなら、CommonLisp使えばいいんじゃねーの?
 誰の支援もいらない、一人で敵を皆殺しにする覚悟ができたらCommonLispで書きたいね。


気になっている言語
Google Dart
 Haxe使・・いや、いいと思うよ。パターンマッチ入れてくれたらぜひ使いたいな。


Mozilla Rust
 F#使・・いや、いいと思うよ。パターンマッチも使えるし。うん、いいと思うよ。


ちなみに俺の開発環境はこんな感じ

MacBookPro RAM8G

そいじゃ今日はこんなところで。See you!