Uploaded avatar of iHiD

Jurassic Julyがやってきました!

@iHiD
約3年前
動画

はじめに

こんにちは。ようこそ。みなさん、お元気でお過ごしでしょうか

Exercismにとって6月は、Premiumのローンチと10周年という大きな1か月でした。

そして、Summer of SexpsでLispに親しんで楽しんでいたらうれしいです。

さて、2023年も7番目の月、6回目のテーマ月であるJurassic Julyに移りましょう。

Jurassicとはどういう意味でしょうか? これらの言語が絶滅したという意味ではありません。とはいえ、今どきCOBOLで新しいソフトウェアを書くことはほとんどないでしょう。 しかし、これらは最も古い言語の一部で、なかには60年以上の歴史を持つものもあります。 これらの言語で書かれたソフトウェアは驚くほど膨大です(特にエンタープライズ向けソフトウェア)。 どれも非常に成功を収めた言語です。

では、どの言語を取り上げるのでしょうか。C、C++、COBOL、Fortran、Visual Basicです。 この動画ではCとC++は扱いません。Mechanical Marchですでに取り上げているので、これらの言語に興味がある方はそちらの動画をチェックしてみてください。COBOL、Fortran、Visual Basicについては、このあと少し見ていきます!

バッジ

今月、これらの言語のいずれかで演習を5つ完了するとバッジを獲得できます。 1年を通してのバッジを得るには、次の演習を完了する必要があります。

  • ボブ: 文字列と条件分岐を扱います
  • アレルギー: 文字列、数値、ビット演算を扱います
  • 文字列の反転: 文字列内の文字を繰り返し処理します
  • ハイスコア: 数値の配列を繰り返し処理します
  • アームストロング数: 数値とループ/繰り返しを扱います

概要

Fortran

  • 1950年代に、IBMのJohn Backusが、IBM 704メインフレームのプログラミング用に、アセンブリ言語に代わるより実用的な手段を作るために始めました

  • 科学技術系や工学系のアプリケーションを作るのが得意になるよう設計されました(名前はFormula Translating Systemの略です)

  • 最初の高水準プログラミング言語です(コードの行数を約20分の1に減らします)

  • 最初の最適化コンパイラーでもあります(コンパイラーが手書きのアセンブリ言語に匹敵する性能のコードを生成できなければ、顧客は高水準プログラミング言語を使いたがりませんでした)

  • 静的かつ強い型付けの言語です

  • 当初は命令型プログラミングのみをサポートしていましたが、まもなく手続き型プログラミングが追加されました。その後の拡張で、オブジェクト指向プログラミングや配列プログラミングなど、他のパラダイムもサポートされるようになりました

  • 標準化されたのは1966年のFortran 66が最初で、最後に更新されたのは2018年です!

  • 非常に影響力が大きく、BasicからALGOLまで、多くの言語の着想元になりました。初期のプログラミング言語研究の多くは、Fortranを改良することを目的としていました

  • 現在も活発に開発が続けられ、新機能が追加される一方で、強い後方互換性が保証されています(古いコードも通常はそのままコンパイルして実行できます)

  • コアレイを使った並列処理を標準で備えています。これは並列性を安全かつ効率的に表現する方法です。関数はpureとしてマークでき、コンパイラーが並列計算向けに最適化しやすくなります

  • allocatable変数を使った安全なメモリ管理ができます。メモリの解放はコンパイラーが担当します。

  • C言語との相互運用性を標準で備えています

COBOL

  • 1959年、業務アプリケーションの開発コストを下げるために、CODASYLコンソーシアム(米国国防総省の支援を受けていました!)によって設計されました(名前はCommon Business-Oriented Languageの略です)

  • 1968年に標準となり、最新の改訂は2014年です

  • IBM COBOL、GnuCOBOL(C言語にコンパイルされます)、そしてJVMと.NETランタイムの両方で動作するMicro Focus™ Visual COBOLなど、さまざまな実装があります

  • 静的型付け言語です

  • マルチパラダイムで、命令型プログラミングとオブジェクト指向プログラミングをサポートしています

  • 冗長(キーワードが多い)ですが、とても人間が読みやすい構文です。可読性と保守性に優れています

  • 仕様が安定しており、後方互換性も良好です。実戦で鍛えられています

  • 性能も良好です(金融分野で使われています)

Visual Basic

  • Microsoftが、.NETランタイム上で動作するVisual Basicの後継として開発しました(Visual Basic 2003以降、.NETという接尾辞は外れました)

  • 最初のバージョンは2002年にリリースされ、2023年に言語として「stable」と位置づけられました。これは、新しい構文が言語に追加されないことを意味しますが、引き続きサポートされている言語です

  • 構文の多くはVisual Basicと共通ですが、いくつか変更が加えられています

  • 静的型付け言語で、強い型付けと弱い型付けの両方をサポートします

  • マルチパラダイム言語です。主にオブジェクト指向ですが、命令型プログラミングやイベント駆動型プログラミングも可能です

  • 習得が容易です(Visual Basicは学びやすいように設計されました)

  • オブジェクト指向プログラミングのサポートが充実しています

  • 実績のある.NETランタイム上で動作し、すべての.NETライブラリを利用できます

  • ClickOnceによる簡単なデプロイができます

ユースケース

Fortran

気象予報、天文学、構造工学など、ハイパフォーマンスコンピューティング(スーパーコンピューター)の場面で使われています。CADソフトウェアでも使われており、FORTRAN上に構築されたアプリケーションも数多くあります。たとえば、さまざまなNumPyモジュールがFORTRAN 77のライブラリを使っています

COBOL

金融分野で多く使われており、多くの金融システムはいまも大部分がCOBOLソフトウェアで動いています(推計では、金融取引の約80%がCOBOLによって支えられているといわれます)。とはいえ、現在はほとんどが保守作業です。多くの業務アプリケーションでも使われており、Walmartで使われているキーと値のストアさえあります。

Visual Basic

GUI(たとえばデータベースへのインターフェース)や、サーバー側で生成されるウェブサイトに使われています。採用企業にはBoeing、Wells Fargo、General Electricなどがあります

プログラミングの観点ではどう違うのでしょうか?

Fortran

当初は命令型プログラミングのみをサポートしていましたが、まもなく手続き型プログラミングが追加されました。その後の拡張で、オブジェクト指向プログラミングや配列プログラミングなど、他のパラダイムもサポートされるようになりました

COBOL

マルチパラダイムで、命令型プログラミングとオブジェクト指向プログラミングをサポートしています

Visual Basic

マルチパラダイム言語です。主にオブジェクト指向ですが、命令型プログラミングやイベント駆動型プログラミングも可能です

際立った特徴

Fortran

  • 性能。Fortran言語とそのデータ型/データ構造は、効率的で高い性能を発揮するように設計されています。だからこそスーパーコンピューターで使われているのです
  • 標準で多くの数学関数をサポートしています
  • 配列プログラミングは、手作業で繰り返し処理を書いたり、配列の境界を指定したりすることなく、配列や配列の一部に演算を適用できる、とてもスマートな方法です

COBOL

  • 固定小数点演算には、浮動小数点数と違って丸め誤差がありません。そのため金融に最適です
  • ファイル(レコード)の読み書きに適しています
  • COBOLにはレポート生成のサポートが標準で備わっています(これも業務アプリケーションで人気がある理由のひとつです)

Visual Basic

  • Windows Formsを使ったGUIアプリケーションの構築に最適です。ドラッグ&ドロップのWYSIWYGエディターが使えます
  • IDEのサポートが充実しており、リファクタリング、コード補完など、さまざまな機能があります

どれを試すべき?

  • 科学技術計算や高性能計算に興味があれば、Fortranは絶好の選択です
  • 業務アプリケーションがかつてどのように作られていたかを肌で感じたいなら、COBOLがおすすめです
  • GUIアプリケーションの構築に興味がある方や、すでに.NETプラットフォームを使っている方には、Visual Basicがとてもよく合います
  • プログラミングの歴史に興味があるなら、COBOLとFortranはどちらもチェックする価値のあるトラックです
Translation missing: ja.number.nth.ordinalized Jul 2023 · 役に立ちましたか?