古いプログラミング言語が滅びない理由は? 113
ストーリー by headless
遺産 部門より
遺産 部門より
insiderman 曰く、
FORTRANやCOBOL、LISPなどが開発されてからすでに50年以上が経過している。ITの世界で50年前というと、太古の昔のようにも思えるが、これら言語はいまだ滅びていない。プログラミング言語がどのようにして選択されるのか、プリンストン大学とカリフォルニア大学バークレー校の研究者が2年かけて分析した論文をReadWriteが紹介している(論文: PDF、 ReadWrite Japanの記事)。
論文ではSourceForgeの20万件以上のプロジェクトと、Ohlohがリストアップしている59万件のプロジェクト、1,000人~13,000人のプログラマーを対象に行われた複数の調査の結果を分析。その主な発見は「開発者がすでに知っている言語を使う」ということだったという。開発者の年齢と知っている言語の数の関係についての調査では、年齢に関わらず知っている言語の数に大きな差はなかったそうだ。つまり、ある言語を知る機会は年齢に関係ないということだ。また、プログラマーコミュニティーが言語の選択に影響を与えることもあるという話も掲載されている。
結局のところ、古い言語を使う人たちが活発に活動していれば新しい利用者も増え、その言語が使われ続ける、という話のようだ。
古いのではない、伝統があるのだ。 (スコア:5, すばらしい洞察)
今あるのは生存競争に打ち勝った強さをを持つものです。
古い言語とはこの生存競争に負けて消えた言語です。
伝統と云う名の資産 (スコア:5, すばらしい洞察)
別のトピックでも書いたが、ユーザが欲しいのはコードじゃ無く機能。
(負の遺産を含む)「資産」が機能を提供する限り、その言語は滅びない。
FORTRANの場合は、桁落ち対策等を行った「精度を保障するライブラリ」が重大な資産。
新言語のライブラリは、信頼性に保証が無いので、置き換えられない。
COBOLは、メンテ不能でブラックボックス化した業務ルールを含むコードが(負の)資産として存在するので、やはり置き換えられない。
一方、FORTANやCOBOLを置き換える筈のPL/IやADAは、過去の資産不足の為に滅びかけてる。
RATFORなんて、立ち上がりもせずに消えた。
Objective-COBOLは一体どうなった事やら。
又、システムと直結したFORTHやAPL、samalltalk等の言語は、あっさりと滅んでいる。
これは、システム寿命が言語寿命と直結してる故だろう。
FORTANやCOBOL、LISP等は、システムに依存しない言語なので現役なのだと推測される。
更に、C言語でも、K&Rはさすがに消えた。
こっちは、同等の規模の上位互換言語になら駆逐されると云う事を示している。
PL/IやADAは、言語仕様の規模が巨大な為に、短命と推測される。
そして、やはり言語仕様の規模が巨大なC++は、新規格が出る毎に世代交代を繰り返しているので、古いC++は相当数が消えている。Java等も、一部メンテされ居ないアプリを除いては、旧バージョンは駆逐された。
トピック本文では、LISPは健在とされているが、Common-LISPはどうなんだろう?
結局の所、プリミティブな機能だけな言語や、最先端を維持するフレームワークやライブラリを持つ言語だけが生き残ることになるだろうかと。
-- Buy It When You Found It --
Re:古いのではない、伝統があるのだ。 (スコア:2)
人生80年、古いプログラマーが死に絶えないと、伝統のある言語も無くならないのです..... orz
# BASICは絶滅したのかな~
Re:古いのではない、伝統があるのだ。 (スコア:1)
生きています、Excelの中に。
お遊びならプチコンも
http://smileboom.com/special/ptcm2/ [smileboom.com]
Re:古いのではない、伝統があるのだ。 (スコア:1)
伝統になると次世代が生まれるようになるから、個人の人生時間は関係なくなるよ。
#BASICもそういう意味でまだ当分は消えない。(最近のは悪い言語でもないし)
Re: (スコア:0)
私も十分古い人間なのだが、同世代の方が技術を習得する気が無いのにイラつく事がある。
コードを理解できずに良い設計が出来ると思うのか?
コードレビューすら出来ない。
Re: (スコア:0)
回りの人の質が自分より低いと愚痴ったのは解かったが
このトピックとの関連は何なのでしょう?
Re: (スコア:0)
ただのカルシウム不足でしょ
Re:古いのではない、伝統があるのだ。 (スコア:1)
これっていわゆる「生存バイアス」ですよね。消えた言語は忘れている。覚えているのは生き残った言語だけ。
Re:古いのではない、伝統があるのだ。 (スコア:1)
業界の伝統ってのもありますね。半導体開発EDAの現場だと Tcl がさまざまなツールのマクロ言語として今もバリバリ現役ですし、Tcl は業界標準的なマクロ言語です。(ちなみに、これは 言語単体としての Tcl についてであって、GUI ライブラリーの Tk はこの限りではありません。)
システムが残れば言語も残ります。 (スコア:5, すばらしい洞察)
システムに置き換わらないと、メンテやら改修やらしてる限りその言語は廃れないと思います。
Re: (スコア:0)
N88-Basicあたりは機械寿命=言語寿命ってことでまさに消えつつあるんだろうね。
Re:システムが残れば言語も残ります。 (スコア:2)
FC98、いつまで続くのかしら?
# 工作機器は50年以上使うからなぁ…
notice : I ignore an anonymous contribution.
Re: (スコア:0)
PCのほうの寿命が尽きても、お守りをしている機械のほうが現役、ってケースは多いでしょうけどね。
処理系が滅びぬ限り (スコア:4, 興味深い)
友人にPL/Iプログラマが居ます。(まだ20代なのに…)
過去の資産があるのと、それを動かす処理系が現役なのも、原因なのかなと思いました。
特にメインフレームなどは過去の資産(負の遺産とも…)がバカにならないため
古いシステムをオープン系に移行し損ねる → それを動かすメインフレームに需要が出て処理系が存続 → メインフレーム上の資産がまた増える
というようなループがあり、なかなか言語・処理系共に滅びないと。
Re: (スコア:0)
メインフレームが負の遺産なんて一言もかいてないじゃない。
メインフレームにある過去の資産が負の遺産(の場合もある)ていう意味だろ?
たぶん。
Re: (スコア:0)
地球に優しくないことは確かだろう。
ワットパフォーマンスという意味で。
Re: (スコア:0)
ワットパフォーマンスの点でいうと、PCよりもよほどいいが?
Re:処理系が滅びぬ限り (スコア:1)
>金融機関やエアラインの基幹システムのような業務ではいまだに分散型に移行する兆しはないでしょ。
分散型に移行する兆しはないけど、ホスト離れは(業界の速度なりに)進んでますよ。
今や、金融機関の基幹系システムも Linux サーバ上で Java で書かれはじめたりしてる時代です。
まあ、それが IBM の z サーバで動いてたりもしますけど、まあ、昔ながらのホスト-COBOLシステムではない。
可搬性、可読性 (スコア:4, 興味深い)
そもそも、古い=悪であるような論調がとても引っかかるわけだけど、
昔からあるということは、処理系の選択肢が多い(と思われている)ということでもある。
記述の抽象度が低いということは、ロジックを追ってちょっと治すだけならオリジナルの作者でなくても簡単にできる(と思われている)ということでもある。
そういう点が評価されて使われ続けているのではないだろうか
もちろん、新しい言語がそれを解決する手段を提供しているんだろうけど、決定者を納得させるだけの力がない。
だってさ、Web関係の仕事へ行くとすぐ”捨てて作り直しましょう”とか言い出す。
そういう用途向けでないものをリプレースするのは難しいんじゃないかな。
Re: (スコア:0)
新しい言語を追い続けなければいけない?とかなんなんだろな
開発効率・生産性の向上や独自性があるならその部分は分かるが
同じようでちょっと違う文法とか
枯れていないゆえのトラブルとか
もういくつ経験されられた事か・・
OSのUIでも語りつくされてると思うけど
新規性の雇用や機会が生まれるより非効率が勝ってる現状で新言語って。
COBOL50年って自然言語に比べれば若造もいいとこでしょ
Re: (スコア:0)
Perl6のことですか?
初動の問題じゃないですか? (スコア:3, 興味深い)
最初に使い始めた人がどれだけいるかが普及範囲を決めるんじゃないかなぁ、と。
そこで広まらなければ消えていくんじゃないかと思うわけで、全体としてみれば昔も今も多くの言語が生まれて消えていると思いますよ。
#きっと初期普及の臨界量みたいなものがあるに違いない。
#その臨界量は階段状に複数段階あって、第一臨界を超えると消えない言語、第二臨界を超えると実用的に使われる言語・・・といった感じになってるんじゃないだろうか。
Re:初動の問題じゃないですか? (スコア:1)
第一臨界で、そこそこのコミュニティが出来て、
第二臨界で、RoRが出来て爆発的に普及、
のようなケースかな。
十把一絡げにプログラミング言語って言うけど (スコア:3, すばらしい洞察)
古参の御三家(FORTRAN, COBOL、LISP)とモダンな言語とでは、言語からみたコンピュータが提供するもの/期待されること全然違うよね。
古い言語が残っているのは、古い言語が前提としてる「コンピュータ」が、プリミティブであって、それだけ普遍性を持っていて、故に真っ先に実装されたということでしょう。
逆にモダンな言語は面倒な手続きはうまく隠蔽されて、上位概念でプログラミングできるけど、主に技術進化にともなう環境の変化で裏方の黒子たちの勢力分布が変わったら、その生態系の階層の一番上にいるプログラミング言語も無事ではいられなくて場合によっては廃れていく。
そんな感じじゃないのかなぁ。
Re:十把一絡げにプログラミング言語って言うけど (スコア:2)
「言語に特定の機能が有る・無い」をlispに対して言うのはお門違いというか。
言語機能が欲しければ実装できるのがlisp。最近ではjuliaもそこに加わったけど。
http://lparallel.org/ [lparallel.org]
新人。プログラマレベルをポケモンで言うと、コラッタぐらい
天文学者の言語 (スコア:2, 興味深い)
「利用されている言語があるのは、我々がいつもそれを使っているからだ。
例えば天文学者は昔からプログラミングにIDL(Interactive data Language)を使う。
別にその言語が天文学の解析に最適な特徴があるからという理由ではなく、
そのようにせざるを得ない理由があるからだ。既にその言語で書かれた資産があり、
それを手放したくないのだ」
NHKの宇宙関連番組を見ていて、天文学者が使っているコンピュータの環境が気になった人も
多いと思うのですが、彼らが使っているのはコレだったんですね。
FORTRANの構文に近い。ベクトル処理はFORTRAN並みに最適化。
画像処理など大量のデータを対話的に処理する。GUI用のウィジェットも有り。
出自が実用本位であるため、様々な過去のしがらみが残っている。
http://ja.wikipedia.org/wiki/IDL_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9... [wikipedia.org]
Re: (スコア:0)
最適なのかは知らないが、ライブラリがあり、ベクトル化が強いというなら、「適しているから」選ぶという理由にはなっているよね。
単に知っているからというくくりで理解していいのか疑問。
それで目的が達成できると見通せることを「知っている」というのならあたりかな。
Re:天文学者の言語 (スコア:1)
プログラミング言語じゃないけど。
エスペラント語ってどうなってんですかね。
どっかで普及してるのかな。
Re: (スコア:0)
普及はしてないかもしれないけど脈々と受け継がれて生きてますよ。あまり詳しくは知らないけど。
ちなみにエスペラントは、各民族の母語や文化の尊重という思想(理念)を込めて作られた言語です。ソフトウェアでいうならGNUに近い気がする。まあGNU(RMS)ほど戦闘的(?)ではないけど。
なんで、その思想に共鳴する人達が滅びない限りは使い続け伝え続けられていくんじゃないでしょうか。
詳しくはWikipediaとか日本エスペラント協会のサイトとかをどうぞ。
新規開発ばっかじゃないけどね (スコア:1)
> その主な発見は「開発者がすでに知っている言語を使う」ということだったという。
ってことだけど、単に別の言語で再構築できないから使わざるをえない
↓
しかたなく育成から始める...
ってのもあることを考慮した方がよいかと。
ある業界に特化してるとかって機能やシステムは、大抵構築した当時の修正やマイグレによる延命だったりする事がざらだからな。
方言と一緒です (スコア:0)
「ザギンでシースー」なんて言いたくないプログラマーがいっぱいいるんですよ
┐(´ー`)┌
そりゃそうじゃ (スコア:0)
>その主な発見は「開発者がすでに知っている言語を使う」ということだったという
そりゃHello Worldぐらいのソフトなら知らない言語でもいいけど、
数百万ステップにもなるソフトをいきなり知らない言語で書きたくないわな。
まあ新しい言語を覚えるついでにアプリを書くなんて事もないとは言わんけどさ・・・
# 初期のAndroidアプリ開発の時のようにとりあえずJava覚えろ、って事もある。
特に今回の調査がSourceForgeやOhlohを元にしてるって事は今回のターゲットに
なってるプロジェクトのそれなりの量がオープンソース系でそ? 仕事だといろんな
事情で知らない言語で書かなきゃならない(メンテしなきゃならない)事も多々ある
けど趣味だと知ってる言語でなんとかなりそうならそのままそれを使っちまうし。
Re: (スコア:0)
そうそう「Javaが出来るならPHPも出来るよね?」みたいなセリフはよく聞くわけよ。
そりゃ確かに、出来る出来ないでいや出来る。
だけど、数日で慣れた言語と同じ開発スピードで、パフォーマンスやセキュリティに配慮しつつ、その言語の特徴を生かしたプログラムを書けるか?って言われたら、そりゃ無理なわけで。
仕事でも悩みどころなんだから、仕事じゃないなら慣れた言語を使おうとするのは当然でしょう。
プログラミング言語は「目的」ではなく「手段」なのだから。
# さすがに「手段」が非効率的になって来たら移行するが。
Re: (スコア:0)
Javaはかなりの部分それ自体が目的だ。
Javaの目的というのは、コードの再利用を極大にする、ということであって、その目的に沿わないなら別にJavaを使う必要はない。
そういう観点から言えば、フレームワークなどの共通部分を書くならJavaを知ってるPHPプログラマは非常に有益だ。
仕事じゃないなら、なおさら目的に合った道具を使おうよ。覚えるのに時間がかかったっていいじゃんか、納期もないんだから。
Re: (スコア:0)
だから世の多くの人にとって、プログラミングは「目的」じゃなくて「手段」なんだってばさ。
趣味で写真を撮ってる人は写真を撮るのが趣味なんであってカメラが趣味なのとは違うし、同じく映画を見るのが趣味な人もAV機器を揃えるのが趣味な人とは違うのよ。
趣味で面白いアプリを作ってみたい人なんかも、アプリを作るのが目的であって、プログラミングが趣味なわけではないのよ。
趣味なんだからもっと良い開発手法を用いるべきだ!っていうのは、(例えそうした方が効率的だとしても)手段と目的がごっちゃになってる。
LISPに関しては (スコア:0)
まだ時代が追いついていない
Re: (スコア:0)
どうかな。
3者のなかでは一番存亡危機なのがLispだと思うが。
モダンな処理系にはたいていDOMがついていて、DOM使うとLispが得意だったことはたいていできるんよ。
DOMの方がポータブルだし、Webとの親和性も高い。わざわざLisp動かしてプログラム書く必要性が薄くなっていくと思う。
Lispのアプリケーションってどれもプロトタイプみたいなものばかりしか作られていない印象があるし、
なくなるならLispが一番だと思われ。
Re:LISPに関しては (スコア:1)
# と主張したい
Re: (スコア:0)
DOMはデータアクセス手段であって、Lispとはまったく違う。
Lisp系の弱点は、その記述能力の高さ故に、作られたアプリケーションがドメイン特化しすぎる点にあると思う。
言語自体の汎用性が高い故に、ライブラリのレイヤーが弱くなってしまうわけ。
Re:Document Object Model ? (スコア:1)
この人が何言ってるのか理解できない
DOM って、HTML や XML の木構造をオブジェクト化して API として整備したもんでしょ?
http://www.w3.org/DOM/DOMTR [w3.org]
S 式は確かに木構造ではあるけど DOM とイコールでくくるとか、それは絶対に違うでしょ
DOM は単なるオブジェクトに過ぎないけど
S 式はコードとしても動くし、より抽象度が高いよね?
Re: (スコア:0)
いつの時代も斜め上を進んでいるLISPだな
Re: (スコア:0)
Prologもね
新しい言語は古い言語を置き換えない (スコア:0)
単純に新しい言語は古い言語を置き換えないだけ
この世に万能プログラミング言語は存在しない
高レベルの機能を持った仕様の規模の大きい言語は、低レベルな(リソースの制約の大きい)ハードウェアで動かしたり小規模なシステムを開発するのには適さない
まるで階段/梯子を上るように、あるいはブロックを少しずつ積み重ねるようにプログラミング言語は進歩していくと思っているお馬鹿さんが多いのには困ったものだ
Re: (スコア:0)
Re:新しい言語は古い言語を置き換えない (スコア:3)
beginとendを書くのがめんどくさいからだと思う。
Re:新しい言語は古い言語を置き換えない (スコア:1)
使うにあたってのハードルがそれだけならプリプロセッサを準備して皆で使用することで問題は解決しそうなもんだけど。
bit誌の記事で女性ハッカーがluisという処理系を使っていたのを読んだ男性読者がビビッて敬遠したからということはないか?
Re:新しい言語は古い言語を置き換えない (スコア:2)
あとは,コードを見たとき、begin endが雑音になって見にくいということもあると思います。
例えば、もしLISPの()が、begin endだったらすごいことになると思います。
Re: (スコア:0)
Pascalの他の実装を駆逐するほど普及したTurboPascalの末裔が自殺したからだと思う。
いや、生きているっちゃあ生きてるけど。
バージョンアップしてるだろうに (スコア:0)
言語が生まれてから時が経ってはいるけど、すっとそのまま使われていたわけではないですね。
時代の要求で進化しるでしょ。