「Fortran」の版間の差分
ナビゲーションに移動
検索に移動
imported>GamerBook |
imported>News4vip (→並列処理) |
||
7行目: | 7行目: | ||
FORTRANは基本的な演算や[[条件分岐]]などは何の特徴もない平凡な[[プログラミング言語]]であるが、[[配列]]の演算は以下のように範囲指定で一気に計算が行えるという特徴がある。この記述だけで自動的に賢い[[コンパイラ]]は[[並列処理]]としてくれる。このため[[CPU]]のコア数だのスレッド数だのと言った細かいことを意識しなくてもよいので、もう規模が大きすぎて人力では把握しきれない[[スーパーコンピューター]]などの世界では人気が高いという。 | FORTRANは基本的な演算や[[条件分岐]]などは何の特徴もない平凡な[[プログラミング言語]]であるが、[[配列]]の演算は以下のように範囲指定で一気に計算が行えるという特徴がある。この記述だけで自動的に賢い[[コンパイラ]]は[[並列処理]]としてくれる。このため[[CPU]]のコア数だのスレッド数だのと言った細かいことを意識しなくてもよいので、もう規模が大きすぎて人力では把握しきれない[[スーパーコンピューター]]などの世界では人気が高いという。 | ||
<source lang="fortran"> | <source lang="fortran"> | ||
− | ! | + | program array |
− | a(1 : 10) = b(11 : 20) + c(21 : 30) | + | ! 配列を宣言する。 |
+ | 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#]]で書くと以下のような感じである。 | |
<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] ); |
2013年10月11日 (金) 07:45時点における版
FORTRAN(読み:ふぉーとらん)とは、ジョン・バッカスとIBMの愉快な仲間たちが開発したプログラミング言語である。
概要
IBMとFORTRANには何も面白いところはない。青いネクタイを装着せずにFORTRANを書くのはシンタックスエラーとなる。
並列処理
FORTRANは基本的な演算や条件分岐などは何の特徴もない平凡なプログラミング言語であるが、配列の演算は以下のように範囲指定で一気に計算が行えるという特徴がある。この記述だけで自動的に賢いコンパイラは並列処理としてくれる。このためCPUのコア数だのスレッド数だのと言った細かいことを意識しなくてもよいので、もう規模が大きすぎて人力では把握しきれないスーパーコンピューターなどの世界では人気が高いという。
program array
! 配列を宣言する。
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
上記の演算部分をC#で書くと以下のような感じである。
Parallel.For( 0, 10, i => a[i] = b[i + 10] + c[i + 20] );
C言語やJavaで並列処理を考慮せず書くと以下のような感じである。
for (i = 0; i < 10; i++)
{
a[i] = b[i + 10] + c[i + 20];
}