代入と参照透過性を取り巻く技術的課題とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 代入と参照透過性を取り巻く技術的課題の意味・解説 

代入と参照透過性を取り巻く技術的課題

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/10/03 03:23 UTC 版)

参照透過性」の記事における「代入と参照透過性を取り巻く技術的課題」の解説

参照透過性成り立つような言語では変数の値を定義する構文はあっても変数の値を再定義するような変数への代入 (Assignment) を行う構文存在せず、ある式の値、例え関数値変数値についてどこに記憶されている値を参照しているかということ考慮する必要がない。 ただこのような違いありながら参照透過性有無は、計算理論上は言語記述能力左右しない。代入プログラム、またその要素である関数内での変数変更を許す、つまり内部状態を作るため数学的にチューリングマシンのような状態機械モデル化できる一方純粋関数言語ラムダ計算モデル化できるが、両者記述できるプログラム集合同一であることが証明されいるからである。とはいえ人間にとっての記述しやすさ、可読性現時点技術実現した場合実行効率などは両者で当然異なる。 例え関数値変数値についてどこに記憶されている値を参照しているかということ考慮する必要がないということは記憶領域使い方管理プログラマの手から完全に離れているということ意味するため、プログラム表現簡明にすることに寄与する一方で実行効率上のためには言語処理系によるデータ管理最適化多分に必要とする。具体的な例挙げれば参照透過性成り立つような言語では大きなデータ構造例え要素数の多い配列レコード型など)の極一部変更するような場合でも主記憶上にあるデータ構造一部だけを単純に書き直すことが出来ない例えばAとBが同じ式で配列として定義されているときにBの3番目を変更したらAの3番目をアクセスする式の値がどうなるか)。 また、当然のことながら参照透過性成り立つような言語では参照され共有されている記憶領域格納された値を監視するようなコード書けない。このことはプログラム動作副作用考察なしに追跡しその実行をスケジューリングできるというようにプログラム理解簡単に最適化可能性広げる一方で変数同期を取るような素朴な並行並列処理プログラム最早書けず、入力動作表現するためには様々な工夫が必要となり、スケジューリング左右されないように出力順序正しく行うためにも様々な工夫が必要となることを意味する。 以上のような理由からMLのように、基本的に関数型指向して作られいながら補助的に代入機能備え、式に状態を持たせられるようにするケースがしばしばある。Haskellではモナド (Monad) 型と構文糖衣利用して参照透過性保ったまま手続き型的な表現可能にしている。また、Haskell相互に影響与え合ったもう一つ純粋関数言語Cleanでは、一度参照した二度と参照しないという一意性をその値の型に付加属性として与え代入利用しつつ参照透過性維持し効率化実現している。

※この「代入と参照透過性を取り巻く技術的課題」の解説は、「参照透過性」の解説の一部です。
「代入と参照透過性を取り巻く技術的課題」を含む「参照透過性」の記事については、「参照透過性」の概要を参照ください。

ウィキペディア小見出し辞書の「代入と参照透過性を取り巻く技術的課題」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「代入と参照透過性を取り巻く技術的課題」の関連用語

代入と参照透過性を取り巻く技術的課題のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



代入と参照透過性を取り巻く技術的課題のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの参照透過性 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS