「Fortran」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
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">
 
<source lang="fortran">
program array
+
! 配列bの11から20までと、配列cの21から30までを足して、配列aの1から10に格納する。
    ! C言語のように変数の型宣言を強制させる。
+
a(1 : 10) = b(11 : 20) + c(21 : 30)
    !  fortranでは初期状態で変数の型宣言が不要であり、変数名の1文字目によって整数になったり実数になったりするが、
 
    !  いわゆる動的言語の同じくタイプミスでもエラーにならずバグの温床になるので可能な限り以下の一行は含めよう。
 
    implicit none
 
 
 
    ! 配列を宣言する。
 
    integer a(10), b(20), c(30)
 
 
 
    ! 並列処理
 
    ! 配列を初期化する。
 
    ! 添字なしで配列に代入すると全部に入る。
 
    a = 0    ! 配列全部に0を代入する。
 
    b = 1    ! 配列全部に1を代入する。
 
    c = 2    ! 配列全部に2を代入する。
 
 
 
    ! 並列処理
 
    ! 配列bの添字11から20までと、配列cの21から30までを足して、配列aの1から10に格納する。
 
    ! fortranの添字は1から始まる。C言語から来た人は注意。
 
    a(1 : 10) = b(11 : 20) + c(21 : 30)
 
 
 
    ! 配列の中身を表示する。
 
    print *, a
 
 
 
end program array
 
 
</source>
 
</source>
  
上記の演算部分を[[C Sharp|C#]]で書くと以下のような感じである。
+
上記を[[C Sharp|C#]]で書くと以下のような感じである。
 
<source lang="csharp">
 
<source 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] );
53行目: 23行目:
 
}
 
}
 
</source>
 
</source>
 
== 主な仕様 ==
 
Fortranと一言でいっても時代とともに進化しており、文法なども変化している。
 
* [[IBM 704 FORTRAN]]
 
*: 1953年に開発された最初のFORTRANは32の命令をもち[[IBM 704]]で動作した。輸送中に転ぶと殴られる[[パンチカード]]の時代である。
 
* [[FORTRAN II]]
 
*: 1958年に開発された安定バージョン。[[関数]]と[[サブルーチン]]が使えるようになった。
 
* [[FORTRAN III]]
 
*: 1958年に開発された実験バージョン。一般流通はしなかったという。IIとIIIの関係は[[FreeBSD]]のSTABLEとCURRENTのようなものである。
 
* [[IBM 1401 FORTRAN]]
 
*: 1959年、[[中間コード]]と[[JITコンパイラ]]という驚異的な技術が生み出された。もはや伝説である。
 
* [[FORTRAN IV]]
 
*: 1961年、[[IBM 1401 FORTRAN]]の[[算術IF文]]が[[Excel]]のIF文風であり、あまりに[[C言語]]に似ていないため批判が殺到し、[[C言語]]風の[[論理IF文]]が取り入れられた。この批判は[[C言語]]も[[Excel]]もまだ考案されていないにもかかわらず起きている。
 
* [[FORTRAN 66]]
 
*: 1966年の魔改造である。
 
* [[FORTRAN 77]]
 
*: 1977年の魔改造である。
 
* [[Fortran 90]]
 
*: 1990年の魔改造である。1980年代から延々と議論された挙げ句に決定した最大の変更点は、名称表記が全部大文字の「FORTRAN」から「Fortran」になったことである。
 
* [[Fortran 95]]
 
*: 1995年の魔改造である。
 
* [[Fortran 2003]]
 
*: 2003年の魔改造である。
 
* [[Fortran 2008]]
 
*: 2008年の魔改造である。
 
* [[Fortran 2015]]
 
*: 2015年の魔改造である。
 
 
== 主な実装 ==
 
ざっくり
 
{|class="wikitable"
 
|-
 
! 製品名
 
! 対応[[OS]]
 
! [[ライセンス]]
 
! style="width:30em" | 概要
 
|-
 
| [[Oracle Solaris Studio]]
 
| [[Solaris]], [[Linux]]
 
| [[フリーソフト]]
 
| [[NetBeans]]をベースに[[C言語]]と[[C++]]と[[FORTRAN]]の[[コンパイラ]]や[[デバッガー]]、[[パフォーマンスアナライザー]]を搭載したもの。
 
|-
 
| [[PGFORTRAN]]
 
| [[Windows]], [[Linux]]
 
| [[プロプライエタリ]]
 
| [[Visual Studio]]の[[アドオン]]も付いてくる。
 
|-
 
| [[PathScale Compiler Suite]]
 
| [[Linux]]
 
| [[プロプライエタリ]]
 
|
 
|-
 
| [[Absoft Pro Fortran]]
 
| [[Windows]], [[POSIX]]
 
| [[プロプライエタリ]]
 
|
 
|-
 
| [[G95]]
 
| [[Windows]], [[POSIX]]
 
| [[GPL]]
 
|
 
|-
 
| [[GFortran]]
 
| [[Windows]], [[POSIX]]
 
| [[GPL v3]]
 
|
 
|-
 
| [[Intel Fortran Compiler]]
 
| [[Windows]], [[Linux]], [[Mac OS X]]
 
| [[プロプライエタリ]]
 
| [[Visual Studio]][[やEclipse]]、[[XCode]]の[[アドオン]]あり
 
|-
 
| [[Lahey Fortran]]
 
| [[Linux]]
 
| [[プロプライエタリ]]
 
|
 
|-
 
| [[Open64]]
 
| [[Windows]], [[POSIX]]
 
| [[GPL]]
 
|
 
|-
 
| [[FNT95]]
 
| [[Windows]]
 
| [[プロプライエタリ]]
 
|
 
|-
 
| [[NAG Fortran]]
 
| [[Windows]], [[POSIX]]
 
| [[プロプライエタリ]]
 
|
 
|-
 
| [[VS Fortran]]
 
| [[z/OS]], [[z/VM]]
 
| [[プロプライエタリ]]
 
| [[IBM]]製の元祖Fortranの[[メインフレーム]]版である。最近では[[Eclipse]]ベースの[[IDE]]が付いてる。
 
|-
 
| [[Force]]
 
| [[Windows]]
 
| [[フリーソフト]]
 
| [[プログラミング言語]]の[[Forth]]と名前が似てるので注意。
 
|-
 
| [[XL Fortran]]
 
| [[Linux]] ([[POWER]]と[[Cell]]限定), [[AIX]], [[BlueGene]]
 
| [[プロプライエタリ]]
 
| [[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]]
 
  
 
== 関連項目 ==
 
== 関連項目 ==
176行目: 30行目:
 
{{reflist}}
 
{{reflist}}
  
[[category: プログラミング言語]]
+
{{stub}}

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート: