プログラミング言語にとっての成功とは? 80
ストーリー by mhatta
SNOBOLはいい言語だったんだけどな 部門より
SNOBOLはいい言語だったんだけどな 部門より
あるAnonymous Coward 曰く、
本家/.に"What Makes a Programming Language Successful?”という質問が投稿されている。
/.Jの皆様がお使いのプログラミング言語は「いい」言語ですか? どんな言語が、どのように「成功」していると言えるでしょうか?「いい」と思うのに「成功」していないと思う言語などありますか?/.Jの皆様のご意見を是非お聞かせ下さい。「RubyやPythonとその仲間達がJavaを追いやって死に至らしめる13の理由・・・死因は老衰(13 reasons why Ruby, Python and the gang will push Java to die… of old age)」という記事では、様々なプログラミング言語が普及めざして奮闘する模様の興味深い分析が展開されている。広く使われるようになるプログラミング言語は一体何が違うのだろうか? 「いい」言語とは何だろうか? プログラミング言語が成功するとはどういうことを指すのだろうか? COBOLは成功したといえるだろうか? RubyやPythonなどについてはどうだろう?
商売として考えるなら (スコア:4, 興味深い)
資格ビジネスが成立するようになったら成功。
初級、中級、上級、その他用途別に細かく別れ、資格の有効期間がありバージョンアップ用の試験も用意。
もちろん公式のテキストが、それぞれの試験向けに存在し、テキストの公認にも金を取る。
専門学校では最低でも初級を取るように指導。
企業では、中級以上で特別手当が出るようになり、資格なんて現場では意味がないと言う人も、
持ってないことをちょっと気にしちゃう。
実際どうかというと、初級ぐらいでは確かに意味がなく、バージョンアップが頻繁なので、
上級の資格もすぐに陳腐化するという状態。
それでも多くの人が取っているという事実によって、上司から中級以上を取るように地味な圧力が、、、
これくらいになれば、大成功でしょう。
#資格ビジネスが成立した後を書くのに夢中になって、成立するまでを書きそびれてしまった
…が問題 (スコア:4, 参考になる)
「RubyやPythonとその仲間達がJavaを追いやって死に至らしめる^Hない13の理由・・・死因は老衰」とでも訳すのが適当かもしれない。
13もの理由を全部読む気はないが、最初の理由を読むと「構文が問題」と言って、C で慣れた構文である Java を持ち上げてる。
要するに、生き残る理由は「慣性」なのであって、それが「いい」かどうかという問題ではないように思う。
re:C で慣れた構文(Re:…が問題) (スコア:3, 参考になる)
例えばjavaがあれこれ問題を抱えていようとも、
他にもphpが、セキュリティの面から疑問を持たれていても、
またc言語自体が、融通の利きすぎる仕様から問題視されていても、
「cみたいに書ける」というのは、ずいぶん魅力的な言葉に聞こえます。
Re:C で慣れた構文(Re:…が問題) (スコア:1)
Re:…が問題 (スコア:1)
難しいです (スコア:3, 参考になる)
Adaで書かれているという話です。
私の周りには、Adaの使い手というのは、
過去も現在も一人もいないのですが、
米国政府機関向けに限って言えば、
経緯はともかく非常に成功した言語と言えるのかもです。
B777なりF22に利用されているということは、
少なくともこれから20年位は使い道があるということですし、
継続して価値を生み出し続ける訳です。
成功かそうでないかは、
難しい。というか、奥が深いかもですね。
-- LightSpeed-J
Re:難しいです (スコア:2, すばらしい洞察)
>経緯はともかく非常に成功した言語と言えるのかもです。
つまり言語そのものの成功だけでなく、
それを使っている商品の成功が重要だということでしょうか。
米国の軍事ビジネス/兵器ビジネスが成功しているからAdaが成功している
と言えるけれど、これが、たとえば日本の兵器にAdaが採用されていたとしても
日本の軍事ビジネスは風前の灯火ですからAdaが成功したとは言われないでしょう。
Re:難しいです (スコア:1)
欧州向けの(以下もごもご)
# 情報公開されてるんだろうけど、どこまで公開されてるか分からないのでもごもご。
Re:難しいです (スコア:1, 興味深い)
NTTも以前使っていたよ
今でも使っているかどうかは知らない
#1353954
> 実世界に存在する他のものと同じように振る舞うプログラムを書きたかったら、
こういう気分になることは稀なんだけどね
シミュレーションでも精度やアルゴリズムの効率の問題があるゆえ
Re: (スコア:0)
国防省が音頭を取って成立させてしまった以上、(この先陳腐化しようが、問題が出てこようが)嫌でも使わざるおえないっていう事情もあるんでないかなぁ?
これを成功と言っていいものなのだろうか?
『無理やり成功させた』と言われたら納得できそうな気もするけどw
#でも当時は各社の使ってる開発言語がバラバラで保守等でパニック状態だったそうです。
#それを解消したい(言語統一化したい)って思惑もあったようですから、こうなっても仕方ないといえば仕方ないのかな。
#たしかにこういう評価って難しい…
Re:難しいです (スコア:1, 興味深い)
と、雇われプログラマが書いてみる。はじめて見たときはPascalかと思った。
ヒゲがあるのは強いらしい (スコア:3, おもしろおかしい)
髭がある程プログラミング言語は繁栄する?
http://srad.jp/developers/article.pl?sid=08/04/30/0830201 [srad.jp]
Re: (スコア:0)
あたしにとっちゃ (スコア:3, おもしろおかしい)
Groovy (スコア:2, おもしろおかしい)
まだ、よちよち歩きで、赤ちゃんだから顔も少し親に似てないところもあるみたいけど、もう、ご両親と会話しているらしいよ。
Re:Groovy (スコア:1, 参考になる)
ただ、Groovyが子なのかどうかは微妙だな。どっちかというと子じゃなかったのに後から
●実子にみえるように擬態する程度が激しくなった
●本家が養子に迎えた
というような感じがする。
Groovyはどちらかというと角谷さんとの距離が気になる言語ですね(苦笑)。
あ。GroovyのGrailsのスキーマ管理 [thinkit.co.jp]なんかはけっこう筋が良いと思う。
RailsみたいにDBの都合(だけ)考えた方式だと、モデルの属性を宣言的に知る手段が(DBかまして動かすまでは)何処にも無いということになり、ちょっと怖い。
Railsもプログラム(モデルクラス定義)側からDBへ落としてくふうにすればいいのにな。
Re: (スコア:0)
ほら、Java 6で正式にJavaんちの子になったでしょ。
Groovyくんは・・・
Re:Groovy (スコア:1, 興味深い)
理論的にはできる、といわれていたものを、Jythonが実際にできるということを証明し、
JRuby、Rhino、Groobyなどが続いた、と。
Microsoftの.NET Frameworkは最初から多言語指向なわけですが、これからの言語は、
2大VM上での実行ができるか、というのも成功のキーポイントになりそうな。
Perl6/Parrotは、いまさら感が。言い出したのは早かったんですけどね。
Re: (スコア:0)
# Pythonではネイティブスレッドにならないということに最近ようやく気づいてJythonを使ってみたが、Pythonで1スレッドのほうが速くて、結局Cで書き直してしまった悲しい体験
Re:Groovy (スコア:1)
たくさんの人がご飯を食べられること (スコア:2, 興味深い)
前に、引く手あまたのプログラミング言語は? って記事がありました。
http://srad.jp/developers/article.pl?sid=08/04/06/2313251 [srad.jp]
# 個人的には、ググればすぐにフリーのコンパイラと分かりやすい解説サイトがひっかかるのが成功した言語。
話せる人が (スコア:1)
多くなればなるほど「良い」言語ということでどうでしょう.
Re:話せる人が (スコア:1)
勝手に拡張したりして方言が増えるなんて言うのがある気がしますが
いかがでしょう?
COBOLなんかは方言いっぱいですし。
Re:話せる人が (スコア:1, おもしろおかしい)
そういえば、「良い」と「成功」とは微妙にベクトルが違いますね。
悪い言語でも「成功」してるといえば例えばVBなんかが思いつきますが。
Re:話せる人が (スコア:1)
# もちろん、BCPL → B → C → …のことですよ。
「プログラミングErlang」を読んで (スコア:1)
バカにでもそれなりに書ける言語 (スコア:1, 興味深い)
「プログラムとしての信頼性よりも豊富な機能が満載」が最大の市場価値を持つ(と、ベンダーが勝手に誤解してる)昨今のマーケットでは、少数の上級技術者より単純な実装を繰り返しやってくれる大量の人手が必要なわけで、そこにある「プログラマを安く使って使い捨てる」というビジネスモデル維持のためには「バカでも書ける」ことが絶対条件だ。
だいたい、業界のシェアNo.1が「信頼性は低くてもリリースすることに意味がある」を体現しているので、疑いの余地がない。
今となっては低級言語になったCにしたって、当時の開発環境の水準では非常に高級な言語なわけで、バカでもそれなりに書ける言語なのでユーザを拡大していけた面が大きいんじゃないかなと思う。それ以降生まれた言語は少なからずCの影響を受けた言語なので、Cほど成功した言語はない。(まぁ、高級言語がCとその派生言語が少数しかなかった頃は、それなりに素養がある層以外は業界に入ってこなかったので、「バカ」より「優秀な人材が煩雑な手続きから解放される手段」としての功績が大きいと思うけど)
ただ、Javaに関してはオブジェクト指向という新しい概念を強制したことで超バカによる脊髄反射実装をフィルターした反面、一部の天才も理解に苦しむという変な状況を作り出したことは興味深い。そのJavaも、Javaの影響を受けたバカ向けスクリプト系オブジェクト指向言語に少なからず影響を与えたので、Java単独では微妙でも言語グループとしては成功なんじゃないかなと。
言葉は乱暴だったけど、実際そんなもんじゃなかろーかと。
Re:バカにでもそれなりに書ける言語 (スコア:2, すばらしい洞察)
それはなんか違うだろ。
●Javaでもクラスをたった1つしか作らず、かつstaticメソッドのみにすることで、Cとほぼ同じ(ただしマクロなし)書き方にできる。良くも悪くも。よって「馬鹿を排除」は出来ていない。実際そういう馬鹿は時折居る。
●上記と全く同じ意味で、非OOP的に(staticメソッドしか使わないんだったらそれは「オブジェクト」指向ではありません)書けるんだから、天才だって迷わないじゃないか?
そもそもJava程度で「OOを強制」できてるわけがない。RubyどころかSmalltalkですらそういう意味では強制は出来ない。「OOしやすさ」が有るだけだ。あとは敢えて言えば文化が有るだけ。
歴史に名を残す (スコア:1)
後継の言語が作られるか、その特徴が受け継がれた新しい言語が生まれれば概ね成功と言えるのではないでしょうか。
歴史の長いFortranやCobolだって不変じゃないし。
# 知名度が重要?
愚かさによって説明できるものを悪意のせいにしてはならない
Re:歴史に名を残す (スコア:1)
ErlangとかD言語もないようですし、若手(?)がまだその表にのってないだけなのか分かりませんけど。
ネット普及でコミュニティがまとまりやすくなって、それぞれに集約されてきたとか?
#後が出てこなかったSNOBOLとか、(OS環境との関係もありそうだけど)打ち捨てられたalefとかは...
アカデミックな成功 (スコア:1, 興味深い)
後世の言語設計に影響を与えた=成功、と見なしていいね
ここは視野の広い人が多いからわかるよねwww
Re:アカデミックな成功 (スコア:1)
個人的にはPerlが後のスクリプト言語に与えた影響は大きいと考えています。アカデミックにと言われるとちょっと疑問もありますがw
みなさんは、どんな言語が影響があったと思いますか?
Re:アカデミックな成功 (スコア:1)
視野が狭いのでALGOLとかSimulaなのかな〜と思ったです。Smalltalkはふつうに成功してますしね。
prologはそういう意味では成功したのかしてないのか。
不謹慎ながらまつもとさんが以前書かれていたコメント [srad.jp]を思い出すとrubyはSimulaの後に続くものだと考えると『Simulaうしろ〜Simulaうしろ〜』とか思うのでAC
Re:アカデミックな成功 (スコア:1)
PostScriptもFlash(ActionScript)もjavaもスタックマシンだしねぇ。(CLRはどうなのか知らない)
うじゃうじゃ
顔が見えなくなること (スコア:1, 興味深い)
開発者やコミュニティが増え、個人の色が薄まって、思想やしゅーきょー的な匂いが感じられなくなってようやく成功。
Re:顔が見えなくなること (スコア:2, おもしろおかしい)
Re:顔が見えなくなること (スコア:2, すばらしい洞察)
カーニハン&リッチー@ベル研(C)でしょ、
Wirth@スイスのどっか(Pascal)でしょ、
バッカス@IBM(Fortran)でしょ、
グレースホッパー@レミントンランド社(COBOL)でしょ…
なんだ、どいつもこいつも名前浮かんでくるぞ。
ならばみんなキモイってことだな!
…みんなエジソン(メンロパークの魔術師)を覚えてるから電球はウザイ、とか言うのかねキミは?
Re:顔が見えなくなること (スコア:2, おもしろおかしい)
だからあまりんが「白熱電球は製造中止だ」とか言い出したのか! [srad.jp](違
Re:顔が見えなくなること (スコア:1)
宗教的なものはともかくとして、思想が感じられない言語で有名だったり
成功したといえるものってあるの?
Objective Cは? (スコア:0)
もっとも、Macの開発言語として存在するだけ、成功している方なのかもしれませんが。
LISPは? (スコア:2, 興味深い)
Objective CよりもLISPをまな板に乗せたほうが議論が発散しそう.
同様にしてラテン語やエスペラント語が成功したかどうかも議論できそうですけど.
Re:LISPは? (スコア:1, 興味深い)
英語もフランス語もドイツ語も全てラテン語の子孫なんだし。
Re:LISPは? (スコア:2, 興味深い)
確かにヨーロッパの多くの言語は、
特に語彙においてラテン語(やギリシア語)の影響を強く受けているのは間違いありません。
しかしラテン語の直接の子孫と言えるのはフランス語やイタリア語、
スペイン語などのいわゆる「ロマンス諸語」と呼ばれるものに限られます。
これに対して英語やドイツ語などはゲルマン語派の西ゲルマン語群に属し
(ラテン語、ロマンス諸語はイタリック語派)、
ラテン語とは共通の祖先である印欧祖語を介した遠戚関係にあるというのが現在の定説です。
そのため、良く似た語があるからといって、それが親子関係にあるとは簡単に断定できないそうです。
それにしてもプログラミング言語を自然言語からどこまで類比して考えることが許されるものなのか、
ちょっと私には判断しかねるものがあります。
;;;興味がおありでしたら「インド・ヨーロッパ語族」等で検索してみてください。
;;;上記の用語法の詳細も検索して出てきたWikipedia の記事 [wikipedia.org]に負っております。
Re:LISPは? (スコア:1)
外交官の公用語がフランス語だったり、いろいろいわく因縁があるせいで、
ラテン語だけでなくフランス語の影響をきわめて強く受けているので、
ゲルマン系の中では特にラテン系の言語に似て感じられるでしょうね。
余談ですが、英語は仏語からの借用語が多いので、日本で利用するときには
発音をどっちかに統一しろと思うときがあります。
「『コンシェルジュ』に『ボン・ボヤージ』と言われたり」するのが気持ち悪いです。
「いちごミルクパフェ」とか、「抹茶ラテのプチケーキ」とかは、
もうどうにでもしてくれというかんじです。
Re:LISPは? (スコア:1, すばらしい洞察)
で、表面的な最大の特徴である「読みにくい」って点は、もしかしてラテン語にも通じるんでしょうか?私はラテン語は(どっかの魔法漫画で出てくる奴以外)知らないんですが…
Re:LISPは? (スコア:1)
ラテン語というと実質、
現在の欧米の知識階級が覚えている古典ラテン語を指します。
欧米の新聞なんかを読んでいるとラテン語が引用されることが多々あります。
学術誌にも論文をラテン語でしか受け付けないものがあるそうです。
また、アカデミックな人は、外国人と会話に使ったりもするそうです。
(日本と中国で漢文で筆談したみたいなものです)
ちなみにラテン語は屈折語で活用形がかなりあります(40くらいだったかな)
テニヲハにあたる助詞がない(全部語尾変化であらわします)
その代わり語順は自由できます。
興味があれば、新ラテン文法(東洋出版)をどうぞ。
ラテン語がいろんな言語を生み出したのだから・・・というであれば、
再帰、ガベージコレクションその他を
他の言語に採用されたLispも成功したことになるような気がするのですが。
ラテン語とLispってやっぱ似てるなぁ。
Re: (スコア:0)
Re:Objective Cは? (スコア:3, 参考になる)
まぁ、それはCarbonとCocoaという2つの選択肢を与えているコトをふまえた上で言えるのかもしれないけど。
Objective-Cを“言語”として耳にすると、未知のマイナー言語として大きな障害に聞こえるけど、実際Objective-Cの大部分はスーパーセットであるC言語だから、Cを習得している人なら学習コストは少ない。少なくともちょっと大きなC/C++ライブラリやフレームワークを覚えるより全然楽。
また、Objective-CのLL言語系に近い動的具合はC++やJavaがまねできないし、実際にGUIのフレームワークとしてともて相性がいい。少なくともC+++MFCよりも全然いい感じ。
iPhoneのSDKはObjective-Cらしく、Apple自身もその優位性を見いだしていると思えるし、Apple製品の好調ぶりと比例して少しずつ認知されていくでしょう。
Re:Objective Cは? (スコア:1)
SmallTalkもCもC++も知っている身としては、言語の学習コストはほぼ0でした。AppKit/CocoaやUIKit/Cocoa についてはまだまだ学習コストがたまっていく感じ。
そもそも実用的にはObjectiveCやCocoaに限らず、「言語の学習コスト << フレームワークの学習コスト」です。C言語についても(アセンブラ知ってれば)3日で覚えられます(演算子順位などはマニュアルを見ながら書けば良い)が、printf()やFILE構造体、fopen()などの標準ライブラリの使い方を覚える方は1月くらいはかかるはず。設計としてはUI側からみた大枠のMVCはCocoa/ObjectiveCで書き、Mの中からロジック部分を抜きだしてそこはtemplateばりばりのC++で書く、というのが私のスタイルになっています。glueになるMのところは ObjectiveC++です。すなわちフレームワークから遠いところはObjectiveCで書く必要はない。
話は発散しましたが、言語なんてどうでも良くて「フレームワークこそが問題」で、ただしCocoaのフレームワークの場合はObjectiveCじゃないと利用しづらいので(Cocoa javaは失敗作だと思います、もともと無理があった)ObjectiveCである、ということ。そもそもObjectiveCの発生の起源を考えてもNextを動かすために出来た言語だと言っても良いと思います。
またObjectiveCから見れば、それが成功しているかどうかはおいといて、MacOSXで採用されている事実はその普及にとって非常に大きなプラスであることも事実。
あと、このツリーでの別の話題について言えば、AppleはObjectiveCを選んだのではなくジョブズがNextを持ち込んだだけでしょう。その際にpostscript→pdfにしたのは一般ユーザから見れば成功だったかも(OS側が「PDF出力できるプリンタ」を用意しているので、どんなプリントできるアプリでもPDF出力が出来る。これがPSだと一般ユーザはうれしくない)。
Best regards, でぃーすけ
Re:Objective Cは? (スコア:2, 興味深い)
なぜ良いかと思うと
・C言語とObjectiveな部分が切り離してある
・隠蔽がしやすい
・かといって、内部仕様はポインタでぶっこぬける
・NextStepの進化系であるMacはNextStepの遺産をたくさん使えた。(内部のAPIはNSで始まるクラスばかり)
言語としての好き嫌いはあると思いますが、なぜ失敗なのか理由が聞きたい。