コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
Fortran
」を編集中
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
2013年10月18日 (金) 00:59時点における
imported>News4vip
による版
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
'''FORTRAN'''(読み:ふぉーとらん)とは、[[ジョン・バッカス]]と[[IBM]]の愉快な仲間たちが開発した[[プログラミング言語]]である。 == 概要 == [[IBM]]とFORTRANには何も面白いところはない。[[青いネクタイ]]を装着せずにFORTRANを書くのは[[シンタックスエラー]]となる。 === 表記について === フォートランの英語表記には「FORTRAN」と「Fortran」がある。 フォートランは[[ソースコード]]を紙に書いて[[パンチカード]]に起こしていた古代から、[[統合開発環境]]を用いる現代まで日々進化しつづけ、時代とともに文法なども変化してきた。そのため近代的なフォートランでは初期の原型をとどめておらず既に別の[[プログラミング言語]]とも言える状態となっている。 このためFortran 90の制定にあたり古代と現代の明確な区別として、「FORTRAN」という表記は[[FORTRAN 77]]までの古い仕様を指し、「Fortran」という表記は[[Fortran 90]]以降の新しい仕様を指すという取り決めが行われた。 === 並列処理 === FORTRANは基本的な演算や[[条件分岐]]などは何の特徴もない平凡な[[プログラミング言語]]であるが、[[配列]]の演算は以下のように範囲指定で一気に計算が行えるという特徴がある。この記述だけで自動的に賢い[[コンパイラ]]は[[並列処理]]としてくれる。このため[[CPU]]のコア数だのスレッド数だのと言った細かいことを意識しなくてもよいので、もう規模が大きすぎて人力では把握しきれない[[スーパーコンピューター]]などの世界では人気が高いという。 <source lang="fortran"> program array ! C言語のように変数の型宣言を強制させる。 ! 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> 上記の演算部分を[[C Sharp|C#]]で書くと以下のような感じである。 <source lang="csharp"> Parallel.For( 0, 10, i => a[i] = b[i + 10] + c[i + 20] ); </source> [[C言語]]や[[Java]]で[[並列処理]]を考慮せず書くと以下のような感じである。 <source lang="java"> for (i = 0; i < 10; i++) { a[i] = b[i + 10] + c[i + 20]; } </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]] == 関連項目 == * [[不完全にしておよそ正しくないプログラミング言語小史]] == 参考文献 == {{reflist}} {{stub}}
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
このページで使用されているテンプレート:
テンプレート:Reflist
(
編集
)
本文の横幅制限を有効化/無効化