パスワードを忘れた? アカウント作成
11593514 story
プログラミング

古いプログラミング言語が滅びない理由は? 113

ストーリー by headless
遺産 部門より
insiderman 曰く、

FORTRANやCOBOL、LISPなどが開発されてからすでに50年以上が経過している。ITの世界で50年前というと、太古の昔のようにも思えるが、これら言語はいまだ滅びていない。プログラミング言語がどのようにして選択されるのか、プリンストン大学とカリフォルニア大学バークレー校の研究者が2年かけて分析した論文をReadWriteが紹介している(論文: PDFReadWrite Japanの記事)。

論文ではSourceForgeの20万件以上のプロジェクトと、Ohlohがリストアップしている59万件のプロジェクト、1,000人~13,000人のプログラマーを対象に行われた複数の調査の結果を分析。その主な発見は「開発者がすでに知っている言語を使う」ということだったという。開発者の年齢と知っている言語の数の関係についての調査では、年齢に関わらず知っている言語の数に大きな差はなかったそうだ。つまり、ある言語を知る機会は年齢に関係ないということだ。また、プログラマーコミュニティーが言語の選択に影響を与えることもあるという話も掲載されている。

結局のところ、古い言語を使う人たちが活発に活動していれば新しい利用者も増え、その言語が使われ続ける、という話のようだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by mtdra (35226) on 2014年09月23日 14時24分 (#2681284) 日記

    今あるのは生存競争に打ち勝った強さをを持つものです。
    古い言語とはこの生存競争に負けて消えた言語です。

    • 伝統と云う名の資産 (スコア:5, すばらしい洞察)

      by BIWYFI (11941) on 2014年09月24日 0時44分 (#2681499) 日記

      別のトピックでも書いたが、ユーザが欲しいのはコードじゃ無く機能。

      (負の遺産を含む)「資産」が機能を提供する限り、その言語は滅びない。

      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 --
      親コメント
    • 人生80年、古いプログラマーが死に絶えないと、伝統のある言語も無くならないのです..... orz
      # BASICは絶滅したのかな~

      親コメント
    • by Anonymous Coward on 2014年09月24日 3時31分 (#2681527)

      これっていわゆる「生存バイアス」ですよね。消えた言語は忘れている。覚えているのは生き残った言語だけ。

      親コメント
    • by Anonymous Coward on 2014年09月24日 8時49分 (#2681559)

      業界の伝統ってのもありますね。半導体開発EDAの現場だと Tcl がさまざまなツールのマクロ言語として今もバリバリ現役ですし、Tcl は業界標準的なマクロ言語です。(ちなみに、これは 言語単体としての Tcl についてであって、GUI ライブラリーの Tk はこの限りではありません。)

      親コメント
  • by wane (8495) on 2014年09月23日 15時14分 (#2681301) 日記
    古いプログラミング言語で作られたシステムが新しいプログラミング言語で作られた
    システムに置き換わらないと、メンテやら改修やらしてる限りその言語は廃れないと思います。
  • by Anonymous Coward on 2014年09月23日 15時22分 (#2681305)

    友人にPL/Iプログラマが居ます。(まだ20代なのに…)
    過去の資産があるのと、それを動かす処理系が現役なのも、原因なのかなと思いました。
    特にメインフレームなどは過去の資産(負の遺産とも…)がバカにならないため
    古いシステムをオープン系に移行し損ねる → それを動かすメインフレームに需要が出て処理系が存続 → メインフレーム上の資産がまた増える
    というようなループがあり、なかなか言語・処理系共に滅びないと。

  • by Anonymous Coward on 2014年09月23日 15時41分 (#2681308)

    そもそも、古い=悪であるような論調がとても引っかかるわけだけど、

    昔からあるということは、処理系の選択肢が多い(と思われている)ということでもある。
    記述の抽象度が低いということは、ロジックを追ってちょっと治すだけならオリジナルの作者でなくても簡単にできる(と思われている)ということでもある。

    そういう点が評価されて使われ続けているのではないだろうか

    もちろん、新しい言語がそれを解決する手段を提供しているんだろうけど、決定者を納得させるだけの力がない。
    だってさ、Web関係の仕事へ行くとすぐ”捨てて作り直しましょう”とか言い出す。

    そういう用途向けでないものをリプレースするのは難しいんじゃないかな。

    • by Anonymous Coward

      新しい言語を追い続けなければいけない?とかなんなんだろな

      開発効率・生産性の向上や独自性があるならその部分は分かるが
      同じようでちょっと違う文法とか
      枯れていないゆえのトラブルとか
      もういくつ経験されられた事か・・

      OSのUIでも語りつくされてると思うけど
      新規性の雇用や機会が生まれるより非効率が勝ってる現状で新言語って。
      COBOL50年って自然言語に比べれば若造もいいとこでしょ

  • by CliffordSakaki (37720) on 2014年09月23日 15時09分 (#2681299)

    最初に使い始めた人がどれだけいるかが普及範囲を決めるんじゃないかなぁ、と。
    そこで広まらなければ消えていくんじゃないかと思うわけで、全体としてみれば昔も今も多くの言語が生まれて消えていると思いますよ。

    #きっと初期普及の臨界量みたいなものがあるに違いない。
    #その臨界量は階段状に複数段階あって、第一臨界を超えると消えない言語、第二臨界を超えると実用的に使われる言語・・・といった感じになってるんじゃないだろうか。

  • 古参の御三家(FORTRAN, COBOL、LISP)とモダンな言語とでは、言語からみたコンピュータが提供するもの/期待されること全然違うよね。
    古い言語が残っているのは、古い言語が前提としてる「コンピュータ」が、プリミティブであって、それだけ普遍性を持っていて、故に真っ先に実装されたということでしょう。
    逆にモダンな言語は面倒な手続きはうまく隠蔽されて、上位概念でプログラミングできるけど、主に技術進化にともなう環境の変化で裏方の黒子たちの勢力分布が変わったら、その生態系の階層の一番上にいるプログラミング言語も無事ではいられなくて場合によっては廃れていく。
    そんな感じじゃないのかなぁ。

  • by Anonymous Coward on 2014年09月23日 15時52分 (#2681309)

    「利用されている言語があるのは、我々がいつもそれを使っているからだ。
    例えば天文学者は昔からプログラミングに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]

    • by Anonymous Coward

      最適なのかは知らないが、ライブラリがあり、ベクトル化が強いというなら、「適しているから」選ぶという理由にはなっているよね。
      単に知っているからというくくりで理解していいのか疑問。

      それで目的が達成できると見通せることを「知っている」というのならあたりかな。

      • by nemui4 (20313) on 2014年09月23日 18時32分 (#2681370) 日記

        プログラミング言語じゃないけど。
        エスペラント語ってどうなってんですかね。
        どっかで普及してるのかな。

        親コメント
        • by Anonymous Coward

          普及はしてないかもしれないけど脈々と受け継がれて生きてますよ。あまり詳しくは知らないけど。
          ちなみにエスペラントは、各民族の母語や文化の尊重という思想(理念)を込めて作られた言語です。ソフトウェアでいうならGNUに近い気がする。まあGNU(RMS)ほど戦闘的(?)ではないけど。
          なんで、その思想に共鳴する人達が滅びない限りは使い続け伝え続けられていくんじゃないでしょうか。
          詳しくはWikipediaとか日本エスペラント協会のサイトとかをどうぞ。

  • > その主な発見は「開発者がすでに知っている言語を使う」ということだったという。

    ってことだけど、単に別の言語で再構築できないから使わざるをえない
     ↓
    しかたなく育成から始める...

    ってのもあることを考慮した方がよいかと。

    ある業界に特化してるとかって機能やシステムは、大抵構築した当時の修正やマイグレによる延命だったりする事がざらだからな。

  • by Sam.Mem (42350) on 2014年09月23日 14時53分 (#2681295)

    「ザギンでシースー」なんて言いたくないプログラマーがいっぱいいるんですよ
      ┐(´ー`)┌

  • by Anonymous Coward on 2014年09月23日 15時13分 (#2681300)

    >その主な発見は「開発者がすでに知っている言語を使う」ということだったという
    そりゃHello Worldぐらいのソフトなら知らない言語でもいいけど、
    数百万ステップにもなるソフトをいきなり知らない言語で書きたくないわな。
    まあ新しい言語を覚えるついでにアプリを書くなんて事もないとは言わんけどさ・・・
    # 初期のAndroidアプリ開発の時のようにとりあえずJava覚えろ、って事もある。

    特に今回の調査がSourceForgeやOhlohを元にしてるって事は今回のターゲットに
    なってるプロジェクトのそれなりの量がオープンソース系でそ? 仕事だといろんな
    事情で知らない言語で書かなきゃならない(メンテしなきゃならない)事も多々ある
    けど趣味だと知ってる言語でなんとかなりそうならそのままそれを使っちまうし。

    • by Anonymous Coward

      そうそう「Javaが出来るならPHPも出来るよね?」みたいなセリフはよく聞くわけよ。
      そりゃ確かに、出来る出来ないでいや出来る。
      だけど、数日で慣れた言語と同じ開発スピードで、パフォーマンスやセキュリティに配慮しつつ、その言語の特徴を生かしたプログラムを書けるか?って言われたら、そりゃ無理なわけで。

      仕事でも悩みどころなんだから、仕事じゃないなら慣れた言語を使おうとするのは当然でしょう。
      プログラミング言語は「目的」ではなく「手段」なのだから。

      # さすがに「手段」が非効率的になって来たら移行するが。

      • by Anonymous Coward

        Javaはかなりの部分それ自体が目的だ。

        Javaの目的というのは、コードの再利用を極大にする、ということであって、その目的に沿わないなら別にJavaを使う必要はない。

        そういう観点から言えば、フレームワークなどの共通部分を書くならJavaを知ってるPHPプログラマは非常に有益だ。

        仕事じゃないなら、なおさら目的に合った道具を使おうよ。覚えるのに時間がかかったっていいじゃんか、納期もないんだから。

        • by Anonymous Coward

          仕事じゃないなら、なおさら目的に合った道具を使おうよ。覚えるのに時間がかかったっていいじゃんか、納期もないんだから。

          だから世の多くの人にとって、プログラミングは「目的」じゃなくて「手段」なんだってばさ。

          趣味で写真を撮ってる人は写真を撮るのが趣味なんであってカメラが趣味なのとは違うし、同じく映画を見るのが趣味な人もAV機器を揃えるのが趣味な人とは違うのよ。
          趣味で面白いアプリを作ってみたい人なんかも、アプリを作るのが目的であって、プログラミングが趣味なわけではないのよ。

          趣味なんだからもっと良い開発手法を用いるべきだ!っていうのは、(例えそうした方が効率的だとしても)手段と目的がごっちゃになってる。

  • by Anonymous Coward on 2014年09月23日 18時44分 (#2681377)

    まだ時代が追いついていない

    • by Anonymous Coward

      どうかな。
      3者のなかでは一番存亡危機なのがLispだと思うが。
      モダンな処理系にはたいていDOMがついていて、DOM使うとLispが得意だったことはたいていできるんよ。
      DOMの方がポータブルだし、Webとの親和性も高い。わざわざLisp動かしてプログラム書く必要性が薄くなっていくと思う。
      Lispのアプリケーションってどれもプロトタイプみたいなものばかりしか作られていない印象があるし、
      なくなるならLispが一番だと思われ。

      • by Anonymous Coward on 2014年09月23日 19時52分 (#2681412)
        Emacs がある限り無くなりません。
        # と主張したい
        親コメント
      • by Anonymous Coward

        DOMはデータアクセス手段であって、Lispとはまったく違う。
        Lisp系の弱点は、その記述能力の高さ故に、作られたアプリケーションがドメイン特化しすぎる点にあると思う。
        言語自体の汎用性が高い故に、ライブラリのレイヤーが弱くなってしまうわけ。

    • by Anonymous Coward

      いつの時代も斜め上を進んでいるLISPだな

    • by Anonymous Coward

      Prologもね

  • by Anonymous Coward on 2014年09月23日 18時45分 (#2681380)

    単純に新しい言語は古い言語を置き換えないだけ
    この世に万能プログラミング言語は存在しない
    高レベルの機能を持った仕様の規模の大きい言語は、低レベルな(リソースの制約の大きい)ハードウェアで動かしたり小規模なシステムを開発するのには適さない
    まるで階段/梯子を上るように、あるいはブロックを少しずつ積み重ねるようにプログラミング言語は進歩していくと思っているお馬鹿さんが多いのには困ったものだ

  • by Anonymous Coward on 2014年09月23日 19時16分 (#2681393)

    言語が生まれてから時が経ってはいるけど、すっとそのまま使われていたわけではないですね。
    時代の要求で進化しるでしょ。

typodupeerror

弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家

読み込み中...