An Entity of Type: building, from Named Graph: http://dbpedia.org, within Data Space: dbpedia.org

In computer science, referential transparency and referential opacity are properties of parts of computer programs. An expression is called referentially transparent if it can be replaced with its corresponding value (and vice-versa) without changing the program's behavior. This requires that the expression be pure – its value must be the same for the same inputs and its evaluation must have no side effects. An expression that is not referentially transparent is called referentially opaque.

Property Value
dbo:abstract
  • يشير كلا المصطلحين: الشفافية المرجعية (بالإنجليزية: Referential transparency)‏ و العتامة المرجعية (بالإنجليزية: referential opaqueness)‏ إلى خصائصٍ لأجزاءٍ من برمجيات الحاسوب. حيث يُقال أن (بالإنجليزية: Expression (computer science))‏ شفافٌ مرجعياً إن أُمْكِنَ استبداله (بالإنجليزية: Value (computer science))‏ بدون تغيير البرنامج (بصيغةٍ أخرى، إنتاج برنامج له نفس تأثيرات ومخرجات على نفس المدخل). في حين يعتبر النقيض لتلك العملية تعبيراً يُطلق عليه «عاتم مرجعياً». وبينما تكون كل تطبيقات الدوال الوظيفية في الرياضيات شفافةً مرجعياً، ففي برمجيات الحاسوب ليس الوضع هكذا دائماً. فأهمية الشفافية تتمثل في أنها تسمح للمبرمج والمترجم (المصرف) بتعليل وتبرير سلوك أداء برنامجٍ ما. وقد يساعد هذا في إثبات (بالإنجليزية: Correctness (computer science))‏، تبسيط الخوارزميات، المساعدة في تعديل الكود بدون كسره وتدميره، أو مواءمة الكود باستخدام وسائل التوازي أو إزالة التعابير الفرعية الشائعة (بالإنجليزية: common subexpression elimination)‏. مما يجعل الشفافية المرجعية أحد مباديء البرمجة الوظيفية؛ حيث لا تتحول سوى الوظائف شفافة أو جلية المرجعية فقط إلى وظائفٍ مكافئةٍ أو مماثلةٍ تخبيء النتائج. فبعض لغات البرمجة توفِّر وسيلةً لضمان الشفافية المرجعية. في حين تُلزم بعض لغات البرمجة الوظيفية وجود الشفافية المرجعية لكل الوظائف جميعها. وبسبب أن الشفافية المرجعية تتطلب نفس النتائج لمجموعةٍ متاحةٍ من المدخلات في أي نقطةٍ زمنيةٍ، فنتيجةً لذلك يصبح التعبير الجلي أو الشفاف مرجعياً قطعي التعريف. (ar)
  • Referenční průhlednost neboli referenční transparentnost je v programování vlastnost výrazů, která znamená, že daný výraz lze bez ohledu na jeho kontext v rámci zdrojového kódu. Tedy že výraz se zadanými stejnými hodnotami bude vyhodnocen vždy na stejný výsledek (neboť nezávisí na skrytých hodnotách, například na globálních proměnných) a sám nemá žádné skryté vedlejší účinky. Referenčně průhledný podprogram je tak funkcí v matematickém smyslu. Díky tomu na něj programátor i překladač mohou nahlížet izolovaně a počítačový program složený z referenčně průhledných výrazů je vlastně . To usnadňuje dosáhnout dokazatelné , umožňuje nebo alespoň výrazně usnadňuje či zefektivňuje řadu optimalizačních technik (například líné vyhodnocování, statickou analýzu kódu) a usnadňuje vytváření paralelních programů. Tím je motivován vznik programovacích jazyků, které referenční průhlednost do značné míry podporují a nebo i vyžadují. Na druhou stranu referenčně průhledné výrazy jsou z definice deterministické, přičemž praxe vyžaduje i implementace nedeterministických algoritmů, a nepředpokládají dodatečné vedlejší vstupy a výstupy, přičemž interaktivní programy v praxi využívají hojně vstupní a výstupní zařízení. Proto existují jednak jazyky využívající referenční průhlednost jen částečně, jednak pokročilé techniky (například monády), které umožňují v referenčně průhledných funkcích implementovat i postupy zdánlivě s referenční průhledností zcela nekompatibilní. Referenční průhlednost je jedním ze základních paradigmat deklarativního programování (tedy například funkcionálního a logického programování). (cs)
  • Die referenzielle Transparenz besagt, dass ein Ausdruck mit seinem Wert ersetzt werden kann, ohne das Verhalten des Programms zu ändern. Dies bedeutet, dass der Ausdruck pur ist, also für gleiche Eingabewerte das gleiche Ergebnis liefert und keine Seiteneffekte hat. Dies ist eine wichtige Eigenschaft des funktionalen Programmierparadigmas. Außerdem ermöglicht dies Programmtransformationen, also die Ersetzung von aufwändig durch einfach zu berechnende Ausdrücke. Das Prinzip der referenziellen Transparenz wirft aber auch Probleme auf. So ist das einfache Auslesen eines mit der Tastatur eingegebenen Zeichens nicht direkt möglich; solch eine Funktion – wie getchar in C – ist nicht erlaubt. Jedes Mal wäre der Rückgabewert abhängig von der Eingabe des Benutzers. Damit entstünden Kommunikationsprobleme mit der Umgebung. So werden z. B. in der funktionalen Programmiersprache Haskell Aktionen, die mit der Umgebung interagieren können, als Werte des Datentyps IO beschrieben. Mittels spezieller Operatoren können aus elementaren Aktionsbeschreibungen komplexe Beschreibungen konstruiert werden. Jedes Haskell-Programm definiert eine Variable main, deren Wert eine Aktionsbeschreibung des gesamten Programms ist. Aktionen können ausgeführt werden, indem ihre Beschreibung in den Wert von main eingebettet wird. (de)
  • La transparencia referencial es un término utilizado en la programación funcional que se refiere a la propiedad por la cual "en un programa, una expresión E del lenguaje puede ser sustituida por otra de igual valor V, resultando en un programa cuya semántica no va a diferir de la del original". En otras palabras, el resultado de evaluar una expresión compuesta depende únicamente del resultado de evaluar las subexpresiones que la componen y de nada más; no depende de la historia del programa en ejecución ni del orden de evaluación de las subexpresiones que la componen. Esta propiedad no se da en lenguajes imperativos, donde abundan los efectos colaterales por asignaciones destructivas. Por ejemplo, en esta clase escrita en lenguaje Java: class Clase{ static int m = 1; static int dame { m++; return m-1;} static int hola { return dame;} static int a1 { return m + dame;} static int a2 { return dame + m;}} No podemos sustituir dame por su valor, en el método hola, pues suprimiríamos el efecto lateral de incremento dando un estado del programa diferente al original. La sustitución de una expresión por su valor genera un estado diferente. Como ya se ha dicho, otra complicación de los lenguajes sin transparencia referencial es que dificultan el razonamiento ecuacional: los métodos a1,a2 no devuelven los mismos resultados con un mismo valor inicial de m. Por ejemplo: para m=0, a1 devolverá 0 la primera vez que se ejecute, mientras que a2 devolverá 1 la primera vez que se ejecute. La transparencia referencial es muy útil a la hora de modificar un programa, ya que no tenemos que preocuparnos de que las modificaciones que hagamos en una parte del mismo afecten los cálculos que se hacen en otras. También es muy poderosa a la hora de un programa (demostrar matemáticamente que cumple la especificación), ya que podemos utilizar propiedades ya demostradas de todas las subexpresiones que constituyen una expresión y que son válidas en cualquier contexto. * Datos: Q1754278 (es)
  • La transparence référentielle est une propriété des expressions d'un langage de programmation qui fait qu'une expression peut être remplacée par sa valeur sans changer le comportement du programme. (fr)
  • In computer science, referential transparency and referential opacity are properties of parts of computer programs. An expression is called referentially transparent if it can be replaced with its corresponding value (and vice-versa) without changing the program's behavior. This requires that the expression be pure – its value must be the same for the same inputs and its evaluation must have no side effects. An expression that is not referentially transparent is called referentially opaque. In mathematics, all function applications are referentially transparent, by the definition of what constitutes a mathematical function. However, this is not always the case in programming, where the terms procedure and method are used to avoid misleading connotations. A defining characteristic of functional programming is that it only allows referentially transparent functions. Other programming languages may provide means to selectively guarantee referential transparency. Some functional programming languages enforce referential transparency for all functions. The importance of referential transparency is that it allows the programmer and the compiler to reason about program behavior as a rewrite system. This can help in proving correctness, simplifying an algorithm, assisting in modifying code without breaking it, or optimizing code by means of memoization, common subexpression elimination, lazy evaluation, or parallelization. (en)
  • In informatica, si definisce trasparente referenzialmente una funzione che non ha effetti collaterali e che quando riceve lo stesso parametro in input, restituisce sempre lo stesso valore. (it)
  • 참조 투명성와 참조 투명도는 컴퓨터 프로그램의 일부 속성이다. 프로그램 동작의 변경없이 관련 값을 대체할 수 있다면 표현식을 참조 상 투명하다고 할 수 있다. 그 결과, 참조 상 투명한 함수를 평가하게 되면 동일한 인자에 대해 동일한 값을 반환해야 한다. 그러한 함수를 순수 함수라고 부른다. 참조상 투명하지 않은 표현식은 참조상 불투명 하다고 한다. 수학에서 모든 함수 응용은 수학적 함수를 구성하는 요소의 정의에 의해 참조 상 투명하다. 하지만, 프로그래밍에서는 그런 케이스가 항상 맞는 것은 아니며, 함축된 의미의 오해를 피하고자 프로시저와 메소드라는 용어가 사용된다. 함수형 프로그래밍에서는 오로지 참조 상 투명한 함수 만이 고려된다. 어떤 프로그래밍 언어들은 참조 투명성을 보장하기 위한 수단을 제공한다. 어떤 함수형 프로그래밍 언어들은 모든 함수에 대해 참조 투명성을 강제하기도 한다. 참조 투명성의 중요성은 프로그래머와 컴파일러가 프로그램 동작을 재작성 시스템으로써 추론할 수 있게 한다는 것이다. 이것은 정확성 증명, 알고리즘 단순화, 코드 깨짐없는 코드 수정의 원조, 메모이제이션, 공통 하위 표현식 제거, 지연 평가 혹은 병렬성을 수단으로 하는 코드 최적화를 도울 수 있다. 참조 투명성은 어떤 임의의 시점에 주어진 임의의 입력 집합에 대해 동일한 결과를 요구하는데, 그러므로 참조 상 투명한 표현식은 확정성을 갖는다. (ko)
  • Referentiële transparantie is een eigenschap van delen van broncode van computerprogramma's. Een expressie is referentieel transparant als deze vervangen kan worden door de waarde van die expressie zonder dat de werking van het programma verandert. Om dit te bewerkstelligen mag een referentieel transparante expressie alleen bestaan uit constanten en functies die geen neveneffecten hebben en moet ze voor dezelfde invoer telkens dezelfde uitvoer geven. Referentiële transparantie is een van de principes van functionele programmeertalen. De eigenschap van referentiële transparantie wordt met name gebruikt om te redeneren over de correctheid van een computerprogramma. Doordat een referentieel transparante expressie vervangen kan worden door haar waarde, kan de code vereenvoudigd worden om zo de correcte werking van het programma in te zien en te bewijzen. De referentiële transparantie van expressies kan ook gebruikt worden om de code te optimaliseren en te vervangen door kortere en efficiëntere expressies. (nl)
  • 参照透過性(さんしょうとうかせい、英: Referential transparency)は、計算機言語の概念の一種である。ある式が参照透過であるとは、その式をその式の値に置き換えてもプログラムの振る舞いが変わらない(言い換えれば、同じ入力に対して同じ作用と同じ出力とを持つプログラムになる)ことを言う。具体的には変数の値は最初に定義した値と常に同じであり、関数は同じ変数を引数として与えられれば同じ値を返すということになる。当然変数に値を割り当てなおす演算である代入 (Assignment) を行う式は存在しない。このように参照透過性が成り立っている場合、ある式の値、例えば関数値、変数値についてどこに記憶されている値を参照しているかということは考慮する必要がない、即ち参照について透過的であるといえる。 参照透過性が成り立つ言語は式の値がプログラムのテキストから定まるという特徴から宣言型言語 (Declarative language) と呼ばれたり、関数の数学的性質が保たれるという特徴から純粋関数型言語 (Pure functional language) と呼ばれたりする。一方変数の値の変更が認められているような参照透過的でない言語を手続き型言語と呼ぶ。ただ、手続き型言語は機械語プログラミングとの繋がりという歴史的な事情により手続きが式でなく命令列で表現されたことから命令型言語と呼ばれることもあり、そのような場合との対比で単に式(例えば関数や変数の組み合わせ)でプログラムが表現されているだけの言語、あるいは高階関数の仕組みを備えた言語をひっくるめて、代入が可能であるかないかを問わず、関数型言語と呼ぶことも多い。結局現状では単に関数型言語という場合は参照透過的な言語(即ち純粋関数型言語)とそうでない関数型言語を両方とも含むということになっている。 また以上に関連して分散処理を記述する場合に、あるデータがどのノード上にあるかを意識せず透過的にアクセスできるという性質も参照透過性と呼ばれる。 (ja)
  • Ссылочная прозрачность и ссылочная непрозрачность — это свойства частей компьютерных программ. Выражение называется ссылочно прозрачным, если его можно заменить соответствующим значением без изменения поведения программы. В результате вычисления ссылочно прозрачной функции дают одно и то же значение для одних и тех же аргументов. Такие функции называются чистыми функциями. В математике все функции являются ссылочно прозрачными согласно определению математической функции. Однако в программировании это не всегда так. Чтобы дополнительные смысловые ассоциации слова «функция» не вводили в заблуждение, нередко используют термины «процедура» и «метод». В функциональном программировании рассматриваются только ссылочные прозрачные функции. Некоторые языки программирования обеспечивают средства для гарантирования ссылочной прозрачности. Некоторые языки функционального программирования обеспечивают ссылочную прозрачность для всех функций. Важность ссылочной прозрачности заключается в том, что она позволяет программисту и компилятору рассуждать о поведении программы как о системе перезаписи. Это может помочь в проверке правильности, упрощении алгоритма, помощи в модификации кода без его нарушения или оптимизации кода с помощью мемоизации, удаления общих подвыражений, ленивых вычислений или распараллеливания. Поскольку прозрачность ссылок требует одинаковых результатов для любого заданного набора входных данных в любой момент времени, то ссылочно прозрачное выражение является поэтому детерминированным. (ru)
  • Прозорість посилань і непрозорість посилань — це властивості частин комп'ютерних програм. Вираз називають прозорим за посиланнями, якщо його можна замінити на його і це не вплине на поведінку програми. Для цього потрібно аби вираз був чистим - його значення повинно бути однаковим для однакових аргументів і обчислення не повинно створювати побічних ефектів. Вираз який не є прозорим за посиланнями називають непрозорим за посиланнями. В математиці всі функції прозорі за посиланнями, за визначенням математичної функції. Проте, в програмуванні це не завжди так, і часто для уникнення плутанити використовуються терміни процедура та метод. Ключовою характеристикою функційного програмування є те, що воно дозволяє лише прозорі за посиланням функції. Важливість прозорості посилань полягає в тому, що вони дозволяють програмісту та компілятору робити здогади про поведінку програми. Це може допомогти в доведенні , спрощенні алгоритму, допомагає при зміні коду без отримання нових помилок або оптимізації коду за допомогою мемоізації, усунення спільних підвиразів, лінивого обчислення або паралелізації. (uk)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 26526 (xsd:integer)
dbo:wikiPageLength
  • 12996 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 1117250292 (xsd:integer)
dbo:wikiPageWikiLink
dbp:wikiPageUsesTemplate
dcterms:subject
gold:hypernym
rdf:type
rdfs:comment
  • La transparence référentielle est une propriété des expressions d'un langage de programmation qui fait qu'une expression peut être remplacée par sa valeur sans changer le comportement du programme. (fr)
  • In informatica, si definisce trasparente referenzialmente una funzione che non ha effetti collaterali e che quando riceve lo stesso parametro in input, restituisce sempre lo stesso valore. (it)
  • يشير كلا المصطلحين: الشفافية المرجعية (بالإنجليزية: Referential transparency)‏ و العتامة المرجعية (بالإنجليزية: referential opaqueness)‏ إلى خصائصٍ لأجزاءٍ من برمجيات الحاسوب. حيث يُقال أن (بالإنجليزية: Expression (computer science))‏ شفافٌ مرجعياً إن أُمْكِنَ استبداله (بالإنجليزية: Value (computer science))‏ بدون تغيير البرنامج (بصيغةٍ أخرى، إنتاج برنامج له نفس تأثيرات ومخرجات على نفس المدخل). في حين يعتبر النقيض لتلك العملية تعبيراً يُطلق عليه «عاتم مرجعياً». (ar)
  • Referenční průhlednost neboli referenční transparentnost je v programování vlastnost výrazů, která znamená, že daný výraz lze bez ohledu na jeho kontext v rámci zdrojového kódu. Tedy že výraz se zadanými stejnými hodnotami bude vyhodnocen vždy na stejný výsledek (neboť nezávisí na skrytých hodnotách, například na globálních proměnných) a sám nemá žádné skryté vedlejší účinky. Referenční průhlednost je jedním ze základních paradigmat deklarativního programování (tedy například funkcionálního a logického programování). (cs)
  • Die referenzielle Transparenz besagt, dass ein Ausdruck mit seinem Wert ersetzt werden kann, ohne das Verhalten des Programms zu ändern. Dies bedeutet, dass der Ausdruck pur ist, also für gleiche Eingabewerte das gleiche Ergebnis liefert und keine Seiteneffekte hat. Dies ist eine wichtige Eigenschaft des funktionalen Programmierparadigmas. Außerdem ermöglicht dies Programmtransformationen, also die Ersetzung von aufwändig durch einfach zu berechnende Ausdrücke. (de)
  • La transparencia referencial es un término utilizado en la programación funcional que se refiere a la propiedad por la cual "en un programa, una expresión E del lenguaje puede ser sustituida por otra de igual valor V, resultando en un programa cuya semántica no va a diferir de la del original". En otras palabras, el resultado de evaluar una expresión compuesta depende únicamente del resultado de evaluar las subexpresiones que la componen y de nada más; no depende de la historia del programa en ejecución ni del orden de evaluación de las subexpresiones que la componen. * Datos: Q1754278 (es)
  • In computer science, referential transparency and referential opacity are properties of parts of computer programs. An expression is called referentially transparent if it can be replaced with its corresponding value (and vice-versa) without changing the program's behavior. This requires that the expression be pure – its value must be the same for the same inputs and its evaluation must have no side effects. An expression that is not referentially transparent is called referentially opaque. (en)
  • 참조 투명성와 참조 투명도는 컴퓨터 프로그램의 일부 속성이다. 프로그램 동작의 변경없이 관련 값을 대체할 수 있다면 표현식을 참조 상 투명하다고 할 수 있다. 그 결과, 참조 상 투명한 함수를 평가하게 되면 동일한 인자에 대해 동일한 값을 반환해야 한다. 그러한 함수를 순수 함수라고 부른다. 참조상 투명하지 않은 표현식은 참조상 불투명 하다고 한다. 수학에서 모든 함수 응용은 수학적 함수를 구성하는 요소의 정의에 의해 참조 상 투명하다. 하지만, 프로그래밍에서는 그런 케이스가 항상 맞는 것은 아니며, 함축된 의미의 오해를 피하고자 프로시저와 메소드라는 용어가 사용된다. 함수형 프로그래밍에서는 오로지 참조 상 투명한 함수 만이 고려된다. 어떤 프로그래밍 언어들은 참조 투명성을 보장하기 위한 수단을 제공한다. 어떤 함수형 프로그래밍 언어들은 모든 함수에 대해 참조 투명성을 강제하기도 한다. 참조 투명성은 어떤 임의의 시점에 주어진 임의의 입력 집합에 대해 동일한 결과를 요구하는데, 그러므로 참조 상 투명한 표현식은 확정성을 갖는다. (ko)
  • 参照透過性(さんしょうとうかせい、英: Referential transparency)は、計算機言語の概念の一種である。ある式が参照透過であるとは、その式をその式の値に置き換えてもプログラムの振る舞いが変わらない(言い換えれば、同じ入力に対して同じ作用と同じ出力とを持つプログラムになる)ことを言う。具体的には変数の値は最初に定義した値と常に同じであり、関数は同じ変数を引数として与えられれば同じ値を返すということになる。当然変数に値を割り当てなおす演算である代入 (Assignment) を行う式は存在しない。このように参照透過性が成り立っている場合、ある式の値、例えば関数値、変数値についてどこに記憶されている値を参照しているかということは考慮する必要がない、即ち参照について透過的であるといえる。 また以上に関連して分散処理を記述する場合に、あるデータがどのノード上にあるかを意識せず透過的にアクセスできるという性質も参照透過性と呼ばれる。 (ja)
  • Referentiële transparantie is een eigenschap van delen van broncode van computerprogramma's. Een expressie is referentieel transparant als deze vervangen kan worden door de waarde van die expressie zonder dat de werking van het programma verandert. Om dit te bewerkstelligen mag een referentieel transparante expressie alleen bestaan uit constanten en functies die geen neveneffecten hebben en moet ze voor dezelfde invoer telkens dezelfde uitvoer geven. Referentiële transparantie is een van de principes van functionele programmeertalen. (nl)
  • Ссылочная прозрачность и ссылочная непрозрачность — это свойства частей компьютерных программ. Выражение называется ссылочно прозрачным, если его можно заменить соответствующим значением без изменения поведения программы. В результате вычисления ссылочно прозрачной функции дают одно и то же значение для одних и тех же аргументов. Такие функции называются чистыми функциями. Поскольку прозрачность ссылок требует одинаковых результатов для любого заданного набора входных данных в любой момент времени, то ссылочно прозрачное выражение является поэтому детерминированным. (ru)
  • Прозорість посилань і непрозорість посилань — це властивості частин комп'ютерних програм. Вираз називають прозорим за посиланнями, якщо його можна замінити на його і це не вплине на поведінку програми. Для цього потрібно аби вираз був чистим - його значення повинно бути однаковим для однакових аргументів і обчислення не повинно створювати побічних ефектів. Вираз який не є прозорим за посиланнями називають непрозорим за посиланнями. (uk)
rdfs:label
  • شفافية مرجعية (ar)
  • Referenční průhlednost (cs)
  • Referenzielle Transparenz (de)
  • Transparencia referencial (es)
  • Transparence référentielle (fr)
  • Trasparenza referenziale (it)
  • 参照透過性 (ja)
  • 참조 투명성 (ko)
  • Referential transparency (en)
  • Referentiële transparantie (nl)
  • Ссылочная прозрачность (ru)
  • Прозорість посилань (інформатика) (uk)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:notableIdea of
is dbo:wikiPageDisambiguates of
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is rdfs:seeAlso of
is foaf:primaryTopic of
Powered by OpenLink Virtuoso    This material is Open Knowledge     W3C Semantic Web Technology     This material is Open Knowledge    Valid XHTML + RDFa
This content was extracted from Wikipedia and is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License