「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] ); | ||