遠隔操作事件の議論で、C#ができる・できないを重要視してる人がいて「被告はC#はたいしてできない」→「マルウエアは作成不能」という意見を述べられていますね。
被告の方のスキルがどの程度か知りませんけど、仮にほかの言語でマルウエアを作成できる能力があったら、C#でも普通に作成可能ですよね。実務経験がなくても休日にでも少し勉強するくらいで。
マルウエアを作成可能かどうかの議論が「C#ができるかできないか」の議論にすり替えられていてどうしてこうなっているんだって思います。
で、常日頃感じているのが、言語を複数使えるというのが理解できない人が世の中には相当数いて、もしかするとそちらのほうが多数派なのではないかということ。
プログラマの能力を測るのに「Java歴3年以上」みたいな条件を見るのって普通に行われてますよね。
たとえばPHPを使用するプロジェクトのプログラマを選ぶのに、個人的にはPHP歴5年のヘボプログラマより、PHP経験なしでも他の言語でWeb開発の経験があって優秀なプログラマを採用したほうが生産性が高いと思うんですよ。
何年もPHPをやっていても成長曲線が1年や半年で止まってるようなプログラマなんて、優秀なプログラマならPHPの経験なしでも一瞬で追い抜けます。
でも世の中、PHPの経験がないと他の言語でWebの開発経験があって優秀でも、検討もされないみたな採用基準のところばかりですよね。
それと2chあたりで「同じパラダイムの言語なら複数の言語を使うのは簡単だよ」「言語って二つ目からはそんなに難しくないよね」みたいなことを言うと、猛烈に反論されることがあります。まるで己のアイデンティティを否定でもされたかのように、簡単に複数の言語を使えるってことに反論してきます。
joel on softwareに、ポインタと再帰がプログラミングをできる人とできない人の壁になっているという話がありますけど、これと同じで複数の言語を使えるか使えないかにも壁があるような気がします。
言語の機能を抽象的にとらえて、それぞれの言語の共通点や違いを把握する能力がある人と無い人が世の中にはいて、プログラミングができてもそういう能力に欠けていると、複数の言語を使いこなすってことが想像もできないんじゃないかって推測します。
で、世の中にはそういう人のほうが多数派だから、プログラマの採用とか遠隔操作事件の議論でも特定の言語の使用歴がプログラミングの能力に直結してるかのような前提で議論になってしまっているのではないかと。
原理を理解しない人はいるな。 Webアプリだと、フレームワークの作法を真似ることはできても、HTTPは知らない、みたいな。 標準ライブラリに関数が用意されてるかどうかの違いを、PHP...
漏れの中では、「コレできます」って自己申告した言語からプログラミング能力をランク付けするなら zsh,bash > PHP,Javascript > C# > Ruby,Python(ここに記述の無い言語) > Java > C++ > C ...
パラダイムが一緒ならあとは方言みたいなもんだよね。 パラダイムが違うと、パラダイムを理解するのに時間かかるけど、それはもはや言語の問題じゃないし。 とか偉そうに言うけ...
ラムダ式とどう違うのかはよく分からんけど、Javascriptでいうイベントハンドリング系、Objective-Cでも非同期処理系では それぞれブロック構文だったりで似たようなの使うから、やってれ...
関数型というかループを抽象化する系の書き方は今後あらゆる言語に導入されると思うので、慣れといたほうがいいと思う。 map,reduce,filter みたいなやつね。 for文書いてると老害扱いされ...
異議あり! Javaのイテレーションの書き方はfor(型 変数名 in コレクション );だ! for文でも老害ではない!
その抽象化されたコードでアセンブラレベルで最適化された機械語を吐いてくれるようになる日をずっと待ってるんだけど一向にそうなる気配がない。 いつになったらできるんだ?
コード自体の速さじゃなくてインスタンスの数で処理速度を上げようって発想だろ >map,reduce,filter コンパイラとかの話じゃねえよ。(まあJIT的にパラレルなコード吐き出してくれるって...
手で書いたアセンブラに追いつくのは難しいかもしれないが、自動的に並列化してくれる方向には期待してる。