「Fortran」の版間の差分

imported>News4vip
 
(3人の利用者による、間の9版が非表示)
1行目: 1行目:
'''FORTRAN'''(読み:ふぉーとらん)とは、[[ジョン・バッカス]]と[[IBM]]の愉快な仲間たちが開発した[[プログラミング言語]]である。
'''FORTRAN'''(読み:ふぉーとらん)とは、[[ジョン・バッカス]]と[[IBM]]の愉快な仲間たちが開発した[[プログラミング言語]]である。


== 概要 ==
== 概要 ==
[[IBM]]とFORTRANには何も面白いところはない。[[青いネクタイ]]を装着せずにFORTRANを書くのは[[シンタックスエラー]]となる。
[[IBM]]とFORTRANには何も面白いところはない。[[青いネクタイ]]を装着せずにFORTRANを書くのは[[シンタックスエラー]]となる。
=== 表記について ===
フォートランの英語表記には「FORTRAN」と「Fortran」がある。
フォートランは[[ソースコード]]を紙に書いて[[パンチカード]]に起こしていた古代から、[[統合開発環境]]を用いる現代まで日々進化しつづけ、時代とともに文法なども変化してきた。そのため近代的なフォートランでは初期の原型をとどめておらず既に別の[[プログラミング言語]]とも言える状態となっている。
このためFortran 90の制定にあたり古代と現代の明確な区別として、「FORTRAN」という表記は[[FORTRAN 77]]までの古い仕様を指し、「Fortran」という表記は[[Fortran 90]]以降の新しい仕様を指すという取り決めが行われた。


=== 並列処理 ===
=== 並列処理 ===
FORTRANは基本的な演算や[[条件分岐]]などは何の特徴もない平凡な[[プログラミング言語]]であるが、[[配列]]の演算は以下のように範囲指定で一気に計算が行えるという特徴がある。この記述だけで自動的に賢い[[コンパイラ]][[並列処理]]としてくれる。このため[[CPU]]のコア数だのスレッド数だのと言った細かいことを意識しなくてもよいので、もう規模が大きすぎて人力では把握しきれない[[スーパーコンピューター]]などの世界では人気が高いという。
FORTRANは基本的な演算や[[条件分岐]]などは何の特徴もない平凡な[[プログラミング言語]]であるが、[[配列]]の演算は以下のように範囲指定で一気に計算が行えるという特徴がある。この記述だけで賢い[[コンパイラ]]は自動的に[[並列処理]]としてくれる。このため[[プログラマー]]は[[CPU]]のコア数だのスレッド数だのと言った細かいことを意識しなくてもよく、もう規模が大きすぎて人力ではそれらを把握しきれない[[スーパーコンピューター]]などの世界では人気が高いという。
<source lang="fortran">
<syntaxhighlight lang="fortran">
program array
program array
     ! C言語のように変数の型宣言を強制させる。
     ! C言語のように変数の型宣言を強制させる。
32行目: 39行目:


end program array
end program array
</source>
</syntaxhighlight>


上記の演算部分を[[C Sharp|C#]]で書くと以下のような感じである。
上記の演算部分を[[C Sharp|C#]]で書くと以下のような感じである。
<source lang="csharp">
<syntaxhighlight lang="csharp">
Parallel.For( 0, 10, i => a[i] = b[i + 10] + c[i + 20] );
Parallel.For( 0, 10, i => a[i] = b[i + 10] + c[i + 20] );
</source>
</syntaxhighlight>


[[C言語]]や[[Java]]で[[並列処理]]を考慮せず書くと以下のような感じである。
[[C言語]]や[[Java]]で[[並列処理]]を考慮せず書くと以下のような感じである。
<source lang="java">
<syntaxhighlight lang="java">
for (i = 0; i < 10; i++)
for (i = 0; i < 10; i++)
{
{
     a[i] = b[i + 10] + c[i + 20];
     a[i] = b[i + 10] + c[i + 20];
}
}
</source>
</syntaxhighlight>


== 主な仕様 ==
== 主な仕様 ==
Fortranと一言でいっても時代とともに進化しており、文法なども変化している。
Fortranと一言でいっても時代とともに進化しており、文法なども変化している。
* [[IBM 704 FORTRAN]]
* [[IBM 704 FORTRAN]]
*: 1953年に開発された開発された最初のFORTRANは32の命令をもち[[IBM 704]]で動作した。輸送中に転ぶと殴られる[[パンチカード]]の時代である。
*: 1953年に開発された最初のFORTRANは32の命令をもち[[IBM 704]]で動作した。輸送中に転ぶと殴られる[[パンチカード]]の時代である。
* [[FORTRAN II]]
* [[FORTRAN II]]
*: 1958年に開発された安定バージョン。[[関数]]と[[サブルーチン]]が使えるようになった。
*: 1958年に開発された安定バージョン。[[関数]]と[[サブルーチン]]が使えるようになった。
64行目: 71行目:
*: 1977年の魔改造である。
*: 1977年の魔改造である。
* [[Fortran 90]]
* [[Fortran 90]]
*: 1990年の魔改造である。1980年代から延々と議論された挙げ句に決定した最大の変更点は、名称表記が全部大文字の「FORTRAN」から「Fortran」になったことである。
*: 1990年の魔改造である。1977年から1980年代の間、10年以上も延々と議論された挙げ句に決定した最大の変更点は、名称表記が全部大文字の「FORTRAN」から「Fortran」になったことである。
* [[Fortran 95]]
* [[Fortran 95]]
*: 1995年の魔改造である。
*: 1995年の魔改造である。
155行目: 162行目:


== 文法 ==
== 文法 ==
* [[Fortran/PROGRAM|PROGRAM]]
* [[FortranのPROGRAM文|PROGRAM]]
* [[Fortran/SUBROUTINE|SUBROUTINE]]
* [[FortranのSUBROUTINE文|SUBROUTINE]]
* [[Fortran/FUNCTION|FUNCTION]]
* [[FortranのFUNCTION文|FUNCTION]]
* [[Fortran/MODULE|MODULE]]
* [[FortranのMODULE文|MODULE]]
* [[Fortran/CONTAINS|CONTAINS]]
* [[FortranのCONTAINS文|CONTAINS]]
* [[Fortran/INTERFACE|INTERFACE]]
* [[FortranのINTERFACE文|INTERFACE]]
* [[Fortran/USE|USE]]
* [[FortranのUSE文|USE]]


== 関連項目 ==
== 関連項目 ==
169行目: 176行目:
{{reflist}}
{{reflist}}


{{stub}}
[[category: Fortran]]