歴史と意義
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/24 05:47 UTC 版)
「ボルツァーノ=ワイエルシュトラスの定理」の記事における「歴史と意義」の解説
ボルツァノ–ヴァイヤシュトラスの定理は、ボルツァノとヴァイヤシュトラスという二人の名前が冠されているが、実際には1817年にボルツァノが中間値の定理の証明において補題として証明したのが初出である。50年ほどしてから、この結果自身の重要性が見いだされ、ヴァイヤシュトラスによって再び証明された。それ以降、実解析における本質的な定理と位置付けられた。
※この「歴史と意義」の解説は、「ボルツァーノ=ワイエルシュトラスの定理」の解説の一部です。
「歴史と意義」を含む「ボルツァーノ=ワイエルシュトラスの定理」の記事については、「ボルツァーノ=ワイエルシュトラスの定理」の概要を参照ください。
歴史と意義
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/10/21 04:55 UTC 版)
「メモリモデル (プログラミング)」の記事における「歴史と意義」の解説
メモリモデルを使用することで、コンパイラは多数の重要な最適化を行えるようになる。loop fusionのようなコンパイラ最適化では、プログラム内のステートメントの移動が行われ、共有されている可能性がある変数の読み取り・書き込みの操作の順序に影響を与える。読み取り・書き込みの操作の変更は競合状態を引き起こすことがある。そのため、メモリモデルがなければ、一般にコンパイラは、マルチスレッドのプログラムを最適化できなくなるか、できるとしても、特殊なケースのみに限定されることになってしまう。 そのため、Javaなどの言語ではメモリモデルを実装している。メモリモデルは、同期ブロックや同期メソッドに突入する際のロックの獲得などの、よく定義された特別な同期操作を用いた同期バリアを規定している。また、メモリモデルは、同期バリアに到達した時点で、共有変数の値の変更が他のスレッドから確認できるようにすることも規定している。さらに、競合状態の完全な表記は、メモリバリアに関する順序の操作を通して定義されている。 このようなセマンティクスのおかげで、最適化コンパイラが最適化を施す際に高い自由度が与えられることになる。コンパイラは、同期バリアに到達した時点で、(共有される可能性のある)変数の値が、最適化された場合と最適化されていない場合で、ともに同じ値になることだけを保証すれば良いことになる。特に、同期バリアが含まれないコードブロック内では、コンパイラは文の順序の交換をしても安全であるという前提を置くことができるようになっている。 メモリモデルの分野における研究の大部分は、以下のいずれかに関係している。 競合フリーかつ(より重要かもしれないが)競合状態を含むプログラムに対して十分な保証を与えつつ、コンパイラ最適化に最大限の自由を許すメモリモデルの設計。 プログラムの最適化がメモリモデルの観点から正当であることの証明。 当初、Javaのメモリモデル(英語版)は、よく使われるプログラミング言語のために、包括的なスレッディングメモリモデルを提供しようとしていた。しかし、後に、実装にある種の制約を課さない限り、スレッドをライブラリとして実装することができないこと、そして特に、CおよびC++の標準(C99およびC++03(英語版))では必要な制約が欠けていることが明らかになると、C++のスレッディング小委員会は、適したメモリモデルを見つけるための作業を開始した。2005年、委員会はCのワーキングドキュメントn1131を提出し、Cの委員会に協力を提案した。提案された最終バージョンのメモリモデルC++ n2429は、2007年10月のKonaにおける会議でC++の標準のドラフトに採択された。このメモリモデルは、次のC++およびCの標準であるC++11およびC11に含まれることになっている。
※この「歴史と意義」の解説は、「メモリモデル (プログラミング)」の解説の一部です。
「歴史と意義」を含む「メモリモデル (プログラミング)」の記事については、「メモリモデル (プログラミング)」の概要を参照ください。
- 歴史と意義のページへのリンク