好奇心を持って学ぶ:一言で言えば現代のFortran

科学と工学の進歩は、多くの重要な手段によって、他のどの言語よりもFortranに依然依存しています。びっくり?自分自身をプログラマーと呼ぶ多くの人々が実際にFortranを学んだことはありませんが、そうすべきではありません。5分以内にFortranをお教えします。それは害を及ぼすことはなく、おそらくこれまでで最も重要で影響力のあるプログラミング言語が何であるかがわかります。

コンピューター科学者はFortranが存在しないように振る舞うかもしれませんが、大衆文化(The Simpsons、シーズン26、エピソード10)は、「Fortran、プログラミング言語の最大のものです!」という賢明な観察によってうまくいきました。実際、計算の半分以上が世界で最も強力なコンピューターによって行われるのはFortranです。一部の大規模システムでは、Fortranコードが計算の80〜100%を担当する場合があります。

このFortranプログラミングの簡単な紹介でわかるように、習得も非常に簡単です。Fortran以外でプログラミングする方法をすでに知っていると思います(プログラミングにまったく慣れていない場合は、「Fortranの塗り絵」でFortranを学ぶことを強くお勧めします)。

 始めましょう

 プログラムこんにちは

    print *、「Hello、World!」

プログラム終了こんにちは

入力し(ファイルに.f95または.f90拡張子を使用)、コンパイルして実行すると、「Hello、World!」と出力されます。printステートメントの「*」は、基本的に自動的にフォーマットすることを意味します

私の2番目の例は、いくつかの計算を行い、「if / then / else」ステートメントで終了します。

プログラムmymath

  暗黙的なし

  実数:: answer、x、y、sum、prod、cubedx、cubedy

  print *、 '2つの数値(xとy)を入力してください'

  読み取り*、x                                          

  読む*、y                                          

  合計= x + y  

  prod = x * y                                       

  cubedx = x ** 3;

  cubedy = y ** 3;

  print *、 '合計x + yは'、合計

  print *、 '積x * yは'、prod

  print *、 'Cubed x and y'、cubedx、cubedy

  print *、 'xとyの正弦'、sin(x)、sin(y)

  if(x> y)then

    print *、 'xがyより大きいことに気づきました'

  そうしないと

    print *、 'yはxより小さくないようです'

  終了する場合

プログラムmymathを終了します  

私が「暗黙のなし」に陥ったことに気付くかもしれません。これは最近のFortranでは正常です。不明な変数にエラーのフラグが付けられるように、変数を明示的に宣言する必要があることをコンパイラーに指示します。これがない場合、Fortranは、「i」から「n」(整数の最初の2文字)で始まる変数は整数であり、その他は浮動小数点数(「実数」)であると想定します。これにより、数十年前にパンチしなければならなかったカードの数が減りましたが、これらの現代では一般的に嫌われています。

 このプログラムを実行すると(そして3.14と1.57と入力すると)、次のようになります。

2つの数字(xとy)を入力します

3.14

1.57

 x + yの合計は4.71000004です   

 積x * yは4.92980051です   

 立方体のxとy30.9591484 3.86989355   

 xとyの正弦1.59254798E-030.999999702

 xがyよりも大きいことに気づきました   

Fortranは数学(FORmula TRANslation)用に設計されています。「sin(…)」はヘッダーやパッケージを含める必要なしに組み込まれていることに注意してください。もちろん、Fortranは浮動小数点数と整数をサポートしていますが、複素数もサポートしています。添加物は必要ありません。

私の3番目の例には、ループ(Fortranでは「do」と呼ばれます)が含まれます。

 プログラムループ

  暗黙的なし    

  整数:: i、j、keep(100,2)、w

  w = 0

  do i = 10、50、5

    do j = i、20、5

       印刷*、i、j

       w = w + 1

       keep(w、1)= i

       keep(w、2)= j

    終わります

  終わります

  do i = 1、w

    print *、 'keep:'、keep(i、1)、keep(i、2)

  終わります

プログラムループの終了

私のサンプルプログラムの印刷行は、jdo-loopが実行されている場合にのみ実行されます。iが20を超えると、jループはまったく実行されません。この例では、「keep」という名前の配列を使用した配列も紹介しています。Fortranは、ゼロではなく「1」から配列の番号付けを開始します。これは、アメリカ人が建物のフロアに番号を付けるのと同じ方法です(フロア#2は、「1」と見なされる1階を指します)。CやC ++が配列に対して行うように、世界の他の場所では、建物にゼロベースの番号付けを使用しています(「1階」はアメリカ人が「2階」と呼んでいます)。その「プログラムループ」の例からの出力を以下に示します。

           10 10

          10 15

          10 20

          15 15

          15 20

          20 20

 維持:10 10

 維持:10 15

 維持:10 20

 維持:15 15

 維持:15 20

 維持:20 20

 最後の例では、静的に定義した3つの数値の平均を取るために、「ave」というサブルーチン(関数)を定義します。あなたは私が怠惰になり、プログラムと関数の後に「end」と書いたことに気付くでしょう。それは問題ありませんが、以前のように名前を使用すると、コンパイラーは、末尾が一致させたいものと一致することを確認するのに役立ちます。

プログラムカレット

  暗黙的なし

  レアルa、b、c

  実際のav、avsq1、avsq2

  本物のアベニュー

  データa、b、c / 5.0、2.0、3.0 /

  av = ave(a、b、c)

  print *、 ''、a、b、c、 'の平均は:'、AV

終わり

実関数ave(x、y、z)

  実数x、y、z、sum

  合計= x + y + z

  ave =合​​計/3.0

  戻る

終わり

 これは印刷します:

 5.00000000 2.000000003.00000000の平均は次のとおりです。3.33333325 

 はい、Fortranは出力をフォーマットできます。上記の「印刷」を次のように置き換える場合:

  印刷8、「の平均」、a、b、c、「は」、AV

8フォーマット(a、2(f4.2、 '、')、f4.2、a、f7.5)

出力は次のようになります。

5.00、2.00、3.00の平均は3.33333です

Fortranのフォーマットも1行で実行でき、同じきれいな出力が得られます。

print "(a、2(f4.2、 '、')、f4.2、a、f7.5)"、 ''、a、b、c、 'の平均は'、AV

あなたがFortranが変だと信じるように導かれたなら、あなたは誤解されました。私はこれらすべての例をFortranプログラマーが「自由形式」と呼ぶもので書きました。これは正式に「Fortran90」標準でFortranの一部になりました(したがって、ファイル拡張子として.f90または.f95を使用するように指示します。これらは、特別なオプションスイッチなしで、自由形式を使用していることをコンパイラに通知します)。 1956年、ユーザーはカードパンチ用の何かを望んでいたことを覚えておいてください。私はFortranが列指向のフォーマットや継続文字などでそれをどのように受け入れるかについて何時間も続けることができました。しかし、私が示したように、Fortranコードを書いたり読んだりするためにそれを学ぶ必要はありません。

では、なぜFortranはコンピューター科学者に敬遠されているのでしょうか。素晴らしい質問です。Fortranは最も古い言語です(1956年頃)。それは、テープ、パンチカード、そして人間のコンピューターに取って代わる時代に始まりました。これは、ブロック構造化プログラミング、構文解析理論、およびグラフィックスよりも前のものです。その過程で、コンピューターサイエンティストは、何千ものプログラミング言語を導入しながらコンピューティングの進歩を探求しましたが、そのほとんどはうまくいきませんでした。それにもかかわらず、人間の努力のあらゆる分野で、「古いものと一緒に、新しいものと一緒に」はファッショナブルです。コンピュータサイエンスも例外ではありません。 

しかし、数の計算が重要な場合、Fortranほど優れたものや簡単なものはありません。私たちは皆、たくさんのツールを知っていて、仕事に最適なツールを使うべきだと提案します。私の信頼できるハンマーが私のツールボックスに長い間入っていたからといって、私が正しい仕事のためにそれを必要としないという意味ではありません。Fortranも例外ではありません。

Fortranは、元の高級プログラミング言語であるだけでなく、生きていて、重要で、広く使用されています。誰が他のことを提案するという噂を始めましたか?

 リソース

  • Intel Fortran – x86(Intel / AMD)で頻繁に使用され、高性能
    • 無料のコンパイラ(およびその他のツール)の資格を得ることができます
    • 後で購入するオプション付きの試用版が利用可能
    •  2018ベータ版は2018年7月まで実行されます:Fortranおよび関連ツールを含むこの最新かつ最高の完全に機能するベータ版をそれまで無料でお試しください:Intel Parallel Studio XE2018ベータ版-今すぐ参加
  • GNU Fortran –幅広いサポート(多くのプロセッサ、多くのシステム)、パフォーマンスの低下
    • オープンソースで無料
    • MacBookAirで…「brewinstallgcc」と言うだけで、gfortranを無料で入手できます。

Intel Parallel Studio XEの30日間無料トライアルをダウンロードするには、ここをクリックしてください