「Fortran」の版間の差分
imported>News4vip 細編集の要約なし |
Administrator (トーク | 投稿記録) |
||
| (3人の利用者による、間の12版が非表示) | |||
| 1行目: | 1行目: | ||
'''FORTRAN'''(読み:ふぉーとらん)とは、[[ジョン・バッカス]]と[[IBM]]の愉快な仲間たちが開発した[[プログラミング言語]]である。 | '''FORTRAN'''(読み:ふぉーとらん)とは、[[ジョン・バッカス]]と[[IBM]]の愉快な仲間たちが開発した[[プログラミング言語]]である。 | ||
== 概要 == | == 概要 == | ||
[[IBM]]とFORTRANには何も面白いところはない。[[青いネクタイ]]を装着せずにFORTRANを書くのは[[シンタックスエラー]]となる。 | [[IBM]]とFORTRANには何も面白いところはない。[[青いネクタイ]]を装着せずにFORTRANを書くのは[[シンタックスエラー]]となる。 | ||
=== 表記について === | |||
フォートランの英語表記には「FORTRAN」と「Fortran」がある。 | |||
フォートランは[[ソースコード]]を紙に書いて[[パンチカード]]に起こしていた古代から、[[統合開発環境]]を用いる現代まで日々進化しつづけ、時代とともに文法なども変化してきた。そのため近代的なフォートランでは初期の原型をとどめておらず既に別の[[プログラミング言語]]とも言える状態となっている。 | |||
このためFortran 90の制定にあたり古代と現代の明確な区別として、「FORTRAN」という表記は[[FORTRAN 77]]までの古い仕様を指し、「Fortran」という表記は[[Fortran 90]]以降の新しい仕様を指すという取り決めが行われた。 | |||
=== 並列処理 === | === 並列処理 === | ||
FORTRANは基本的な演算や[[条件分岐]]などは何の特徴もない平凡な[[プログラミング言語]]であるが、[[配列]] | FORTRANは基本的な演算や[[条件分岐]]などは何の特徴もない平凡な[[プログラミング言語]]であるが、[[配列]]の演算は以下のように範囲指定で一気に計算が行えるという特徴がある。この記述だけで賢い[[コンパイラ]]は自動的に[[並列処理]]としてくれる。このため[[プログラマー]]は[[CPU]]のコア数だのスレッド数だのと言った細かいことを意識しなくてもよく、もう規模が大きすぎて人力ではそれらを把握しきれない[[スーパーコンピューター]]などの世界では人気が高いという。 | ||
< | <syntaxhighlight lang="fortran"> | ||
program array | program array | ||
! C言語のように変数の型宣言を強制させる。 | |||
! fortranでは初期状態で変数の型宣言が不要であり、変数名の1文字目によって整数になったり実数になったりするが、 | |||
! いわゆる動的言語の同じくタイプミスでもエラーにならずバグの温床になるので可能な限り以下の一行は含めよう。 | |||
implicit none | |||
! 配列を宣言する。 | ! 配列を宣言する。 | ||
integer a(10), b(20), c(30) | integer a(10), b(20), c(30) | ||
| 27行目: | 39行目: | ||
end program array | end program array | ||
</ | </syntaxhighlight> | ||
上記の演算部分を[[C Sharp|C#]]で書くと以下のような感じである。 | 上記の演算部分を[[C Sharp|C#]]で書くと以下のような感じである。 | ||
< | <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] ); | ||
</ | </syntaxhighlight> | ||
[[C言語]]や[[Java]]で[[並列処理]]を考慮せず書くと以下のような感じである。 | [[C言語]]や[[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]; | ||
} | } | ||
</ | </syntaxhighlight> | ||
== 主な仕様 == | == 主な仕様 == | ||
Fortranと一言でいっても時代とともに進化しており、文法なども変化している。 | Fortranと一言でいっても時代とともに進化しており、文法なども変化している。 | ||
* [[IBM 704 FORTRAN]] | * [[IBM 704 FORTRAN]] | ||
*: | *: 1953年に開発された最初のFORTRANは32の命令をもち[[IBM 704]]で動作した。輸送中に転ぶと殴られる[[パンチカード]]の時代である。 | ||
* [[FORTRAN II]] | * [[FORTRAN II]] | ||
*: 1958年に開発された安定バージョン。[[関数]]と[[サブルーチン]]が使えるようになった。 | *: 1958年に開発された安定バージョン。[[関数]]と[[サブルーチン]]が使えるようになった。 | ||
| 53行目: | 65行目: | ||
*: 1959年、[[中間コード]]と[[JITコンパイラ]]という驚異的な技術が生み出された。もはや伝説である。 | *: 1959年、[[中間コード]]と[[JITコンパイラ]]という驚異的な技術が生み出された。もはや伝説である。 | ||
* [[FORTRAN IV]] | * [[FORTRAN IV]] | ||
*: 1961年、[[算術IF文]]が[[Excel]] | *: 1961年、[[IBM 1401 FORTRAN]]の[[算術IF文]]が[[Excel]]のIF文風であり、あまりに[[C言語]]に似ていないため批判が殺到し、[[C言語]]風の[[論理IF文]]が取り入れられた。この批判は[[C言語]]も[[Excel]]もまだ考案されていないにもかかわらず起きている。 | ||
* [[FORTRAN 66]] | * [[FORTRAN 66]] | ||
*: 1966年の魔改造である。 | *: 1966年の魔改造である。 | ||
| 59行目: | 71行目: | ||
*: 1977年の魔改造である。 | *: 1977年の魔改造である。 | ||
* [[Fortran 90]] | * [[Fortran 90]] | ||
*: | *: 1990年の魔改造である。1977年から1980年代の間、10年以上も延々と議論された挙げ句に決定した最大の変更点は、名称表記が全部大文字の「FORTRAN」から「Fortran」になったことである。 | ||
* [[Fortran 95]] | * [[Fortran 95]] | ||
*: 1995年の魔改造である。 | *: 1995年の魔改造である。 | ||
| 148行目: | 160行目: | ||
| [[IBM]]製の元祖Fortranの[[スーパーコンピューター]]版である。最近では[[Eclipse]]ベースの[[IDE]]が付いてる。 | | [[IBM]]製の元祖Fortranの[[スーパーコンピューター]]版である。最近では[[Eclipse]]ベースの[[IDE]]が付いてる。 | ||
|} | |} | ||
== 文法 == | |||
* [[FortranのPROGRAM文|PROGRAM]] | |||
* [[FortranのSUBROUTINE文|SUBROUTINE]] | |||
* [[FortranのFUNCTION文|FUNCTION]] | |||
* [[FortranのMODULE文|MODULE]] | |||
* [[FortranのCONTAINS文|CONTAINS]] | |||
* [[FortranのINTERFACE文|INTERFACE]] | |||
* [[FortranのUSE文|USE]] | |||
== 関連項目 == | == 関連項目 == | ||
| 155行目: | 176行目: | ||
{{reflist}} | {{reflist}} | ||
[[category: Fortran]] | |||