- - PR -
たくさんの言語があふれていますが…
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-09 23:35
最近C++/CLIとかも出て、世の中にはいっぱい一般的に使われている言語があふれていますね。そこで、疑問に思っているのですが、これから言語はどのように進化(消滅)していくと予想しますか?僕なりの考えを下に書いてみます。
# 実際僕もC#のほかの言語には詳しくないので聞いた話うわべだけで予想してます、だから皆さんの意見も聞きたいなと思ってます。 【Visual Basic】 .net になってから入門用言語から多少外れた、Visual Basic 6.0での功績と知名度があって現在非常にホビープログラマ等に使用されているような…利点として 《利点》 ・支持されてきた言語なのでサンプル・解説書等が豊富 ・Basicの流れを継いでるのでほかの言語と比べて入門しやすい。 ・.netになってかなり強力なプログラミングもできるようになった。 などでしょうか?しかし欠点として 《欠点》 ・構文が独特 ・ネイティブコードを作れない ・同じ.net frameworkで動くものとしてC#でできることができない場合がある。 ・Visual Basic6.0の時代に比べてとっつきにくくなった(らしぃ) 以上のことから、これからもしばらく伸びてはいくがやはり入門用言語としてとどまりそう、加えてVisual Basicを勉強すると『VB病(構文の独自性やコード数が少ないことなどによってほかの言語を習得する際に億劫になる病 - 命名、有末清華w)』にかかってしまい、ほかの言語に移りにくくなる。 【C++/CLI】 実際よくわからない(汗。C++がマネージドコードに対応すべく進化したもの(らしぃ)アンマネージドのコードとマネージドのコードが混合でき、今までの知的財産をそのまま使用してプログラミングができるというすばらしいもの。 《利点》 ・今までの知的財産がそのままの形で使用できる(はず) ・マネージドコードを出力するからプラットフォームに依存しない(現状はWindowsのみ、ってか一生な気がする) ・もちろんネイティブコードをはける。 ・実行速度が速い。 ・最も使われている(いた?)C++がベースなのでもっとも強力な言語(いざというときに一番役に立つ?) 《欠点》 ・コーディングスタイルが多数ありすぎて他人が書いたコードが解析不可能に近くなる可能性がある(C++だもんね) ・オブジェクト指向から逃げれる -> 最終的に保守性が下がる。 ・習得が難しい、ホビープログラマにとって完全に使いこなすのはほぼ不可能(ごく少数使いこなせてる?) 【C#】 非常にコーディングの規則に厳しく、出来上がったコードが統一性があり読みやすい、またC++の流れを受け継いでいるのでC++やJavaを使える人には使いやすい、.net frameworkの全機能を利用可能、コーディングがなれると楽。(好きな言語だから肯定ばっかりだ…) 《利点》 ・C++の流れを受け継いでいるからほかの言語から移りやすい ・規則がしっかりしているから出来上がったコードが読みやすい ・実行速度がそこそこ ・プラットフォームに依存しない(予定) ・C++とくらべてコーディングの量が少なくてすむ 《欠点》 ・C++と比べて力が劣る ・難しいこと(WindowsのShellとかAPIの深いところとかメモリ操作)をしようとするとC++で書いたほうが早いし綺麗。 ・起動速度が遅い(.net frameworkを使うすべての言語の欠点?) ・必要な機能がすべて.net frameworkで用意されているわけではなく、変わったことをしたい場合事実上APIに頼った開発が必要となるがめんどくさい。 【Java】 まったくわからない。Exeがはけない・速度が遅いって聞いて興味もわかなかった。 《利点》 ? 《欠点》 ? こうやってまとめてみるとC#がこれから進化して標準となっていきそうな(なってほしいいような)気がしますが、どうでしょうか?C#でもネイティブコードをはけるようにするということに対して見解がもたれているらしいですし…。逆に新しく出たC++/CLIはコードの読みにくさを倍増させるだけのような気がしますが…(もう少し詳しく勉強すれば違った見解もあるかと思いますが…) どうでしょう?いろいろな意見をお聞きしてみたいのですが?賛否両論大歓迎です、僕が書いた利点・欠点に対する文句・嫌味も歓迎です(笑。 # ぜんぜん関係ないですけどネット上で一番使われている言語ってまだPerlかな?それともASP.net?レンタルじゃASP.net使えないところが多いなぁ。 _________________ 9uiet design(http://quietdesign.rental.allinoneserver.net/) - 超更新停滞中 [ メッセージ編集済み 編集者: Seiga Alisue 編集日時 2006-10-09 23:50 ] | ||||||||
|
投稿日時: 2006-10-10 01:19
開発言語を比較する上で、比較の材料とされやすいのが言語仕様ですが、
実際には用途と環境も含めて考えたほうが良いと思いますよ。 それぞれの言語に得意分野・不得意分野があり、それに見合った用途が あるのでそれで選ぶと良いと思います。そのために複数の言語があるので あって、そうでなければ単一のメーカー(MSやボーランド等)が複数の言語を わざわざ多額の開発費をかけてリリースしないと思います。 環境で考えられるのは、どれだけサードパーティが参入しているか、 日本全体(または世界全体)で開発者人数がどれくらいいるか、サポート がどれくらいしっかりしているか、開発ツールが安定しており、 バグフィックスやバージョンアップも適度に行われているかという ことです。 Javaについて少し書かれていますが、それについて追記したいと思います。 以前、マイクロソフト社もJavaの実行環境を提供していました。ただ、 あまりに独自仕様を追加したためSunからライセンスを剥奪されてしまいました。 今では、その独自仕様を進化させたJ#という言語がありますが、Javaとは違った ものになっており、さしずめ「Javaっぽい記述のできるC#」といったところです。 EXEは生成できませんが、そのかわり.classファイルというのができます。 JavaVMという実行環境で実行可能です。C#で書かれたプログラムが .net framework上で動くのに似ています。 長所は、サードパーティや開発人数がやたら多いこと、仕様やソースコードが 公開されていること(オープンソースとはちょっと違う)、とにかくネットで 調べればわからない事はすぐ出てくることです。短所は、起動速度が遅い こと、WinAPIなどOSを直接操作するようなことはJNIを経由しなければ ならないこと、タイミングにシビアな処理には向かないことなどです。 いろいろな言語を触ってみた上で比較検討されるのが良いと思いますよ。 | ||||||||
|
投稿日時: 2006-10-10 10:25
この手の話は、前提が曖昧だと収束しないと思うので、Seiga Alisueさんが
挙げた言語に絞った方が、Seiga Alisueさん自身が知りたい情報が多くなるの ではないかと思いますよ。PHP、Perl、Rubyなど、スクリプト言語の元気が良い ご時勢ですしね。利点、欠点も、用途によっては利点も欠点になってしまうこと もあるので、どういった観点から見た場合の利点、欠点というのも提示された 方が良いですよ、話がブレなくなって。 さて、Windows系の環境で動作する言語が多いようですので、Java屋さんとして は、
・・・残念でございます。ま、Seiga Alisueさんの問い掛けの前提が出てくると思う のですが、ネットワーク経由で稼動するシステムの場合、Exeがはけるはけないとい うのはどうでもいい話でして、むしろ OSが変わってもそのまま動作する ↓ 環境依存しない(しづらい) ↓ より性能の高い環境で動作させるだけで、処理能力を向上させることが可能 といった論理もアリになります。演算速度はCと同等、場合によってはそれより も速いなんてこともありますよ。 [ メッセージ編集済み 編集者: 小僧 編集日時 2006-10-10 10:26 ] | ||||||||
|
投稿日時: 2006-10-10 10:40
どういう条件でそう判断しているか知らんけどはつみみ。 | ||||||||
|
投稿日時: 2006-10-10 10:50
Javaの実行モジュールをハードで持っていれば…だろうけど、そう多くないんじゃないかと。
Javaの利点は開発の容易さと依存性の低さであって、パフォーマンスではないですね。 | ||||||||
|
投稿日時: 2006-10-10 12:13
「場合によっては」 という意味合いの文章を、再編集で削除してしまいました、失礼いたしました。 | ||||||||
|
投稿日時: 2006-10-10 12:45
実行時の動的最適化の結果、静的最適化しか行っていないネィティブコードよりも早くなる場合があります。JVMに限らず、CLIやTransmetaのEfficeonでも同様の事が起こり得ます。 ・・・現行のMicrosoft製CLIに動的最適化機能があるのか知らないけど。 _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||||||
|
投稿日時: 2006-10-10 12:50
がっつり最適化されたCのコードには勝てないが、そうでなければ勝てる見込みあり。 javaは実行時にHotSpotによって最適化をかけることができるので、プラットフォームに即した最適化を行えば、Cのコードといい勝負になるかもしれない。 他に、標準ライブラリのmallocは、フリーリストチェーンでメモリ管理しているため、断片化すると、極端に性能が低下したはず。 断片化を解消させようと思うと、やることが結局GCと同じになってしまうため、やっぱり性能が落ちてしまうと。 情報源は確かJava Performance Tuning Newsのどこかだったかと。 追加 甕星さんとかぶった。OTL [ メッセージ編集済み 編集者: かずくん 編集日時 2006-10-10 12:54 ] |