| dbpprop:abstract
|
- In computer science, a function or expression is said to have a side effect if, in addition to producing a value, it also modifies some state or has an observable interaction with calling functions or the outside world. For example, a function might modify a global or a static variable, modify one of its arguments, raise an exception, write data to a display or file, read data, or call other side-effecting functions. In the presence of side effects, a program's behavior depends on history; that is, the order of evaluation matters. Because understanding an effectful program requires thinking about all possible histories, side effects often make a program harder to understand. Side effects are essential to enable a program to interact with the outside world (people, filesystems, other computers on networks). But the degree to which side effects are used depends on the programming paradigm. Imperative programming is known for uncontrolled, promiscuous use of side effects. In functional programming, side effects are rarely used. Functional languages such as Standard ML and Scheme do not restrict side effects, but it is customary for programmers to avoid them. The functional language Haskell restricts side effects with a static type system; it uses the concept of Monads to do stateful and IO computations. Assembly-language programmers must be aware of hidden side effects — instructions that modify parts of the processor state which are not mentioned in the instruction's mnemonic. A classic example of a hidden side effect is an arithmetic instruction which explicitly modifies a register (an overt effect) and implicitly modifies condition codes (a hidden side effect). One defect of an instruction set with many hidden side effects is that if many instructions all have side effects on a single piece of state, like condition codes, then the logic required to update that state sequentially may become a performance bottleneck. The problem is particularly acute on processors designed with instruction pipeline (since 1990) or with out-of-order execution. Such a processor may require additional control circuitry to detect hidden side effects and stall the pipeline if the next instruction depends on the results of those effects.
- In der Programmierung bezeichnet Wirkung (engl. effect) die Veränderung des Zustands, in dem sich ein Computersystem befindet. Beispiele sind das Verändern von Inhalten des Speichers oder die Ausgabe eines Textes auf Bildschirm oder Drucker. Da solche Wirkungen in den meisten Programmiersprachen etwas ganz Gewöhnliches darstellen, wird ihr Vorhandensein außerhalb der theoretischen Informatik meist nicht weiter thematisiert. Der Begriff wird vor allem dort gebraucht, wo Wirkungen entweder ganz fehlen oder wo die Abgrenzung verschiedenartiger Wirkungen voneinander betont werden soll. Letzteres wird „Nebenwirkung“, häufig auch „Nebeneffekt“ genannt. Auch die Bezeichnung „Seiteneffekt“, eine falsche Rückübersetzung des englischen side effect, ist weit verbreitet.
- V programování pojem vedlejší účinek (angl. side effect) představuje situaci, kdy volaná funkce nebo výpočetní výraz mění i jiný stav procesu, než je návratová hodnota funkce nebo výrazu nebo změna hodnoty parametru odkazovaného přes odkaz referencí. Vedlejší účinek může být úmyslný nebo neumyslný. Neúmyslný vedlejší účinek je častým zdrojem mnoha programátorských chyb. Úmyslný vedlejší účinek pokud se používá přehledně a účelně může zjednodušit implementaci programového kódu.
- En ciencias de la computación se dice que una función o expresión tiene efecto colateral o efecto secundario si esta, además de retornar un valor, modifica el estado de su entorno. Por ejemplo, una función puede modificar una variable global o estática, modificar uno de sus argumentos, escribir datos a la pantalla o a un archivo, o leer datos de otras funciones que tienen efecto secundario. Los efectos secundarios frecuentemente hacen que el comportamiento de un programa sea más difícil de predecir. La programación imperativa generalmente emplea funciones con efecto secundario para hacer que los programas funcionen, la programación funcional en cambio se caracteriza por minimizar estos efectos. En el diseño de CPU las instrucciones con efecto colateral son aquellas instrucciones que modifican valores internos del CPU de forma no explícita - de hecho, la instrucción ADD puede o no modificar otros registros (carry, zero, overflow, etc). Esto causa un problema cuando se diseña un CPU que usa "pipeline" de instrucciones y soporta instrucciones con efecto colateral. Se debe prestar especial cuidado para evitar este riesgo.
- En informatique, une fonction est dite à effet de bord si elle modifie un état autre que sa valeur de retour. Par exemple, une fonction peut modifier une variable statique ou globale, modifier un ou plusieurs de ses arguments, écrire des données vers un écran ou un fichier ou lire des données provenant d'autres fonctions à effet de bord. Les effets de bord rendent souvent le comportement des programmes plus difficiles à comprendre. Effet de bord est un barbarisme né d'une traduction fautive de l'anglais lang|en|side-effect (le mot lang|en|side signifiant « côté » et non pas « bord », une traduction littérale et correcte aurait donné « effet latéral »; cependant, en français, on utilise plus fréquemment l'expression synonyme Guil|effet secondaire.). La programmation impérative emploie des effets de bord dans le fonctionnement de ses programmes. La programmation fonctionnelle cherche a minimiser les effets de bord et les isole souvent dans des structures prévues notamment pour cela : les monades. Dans la conception des processeurs, les instructions à effet de bord sont celles qui modifient l'état interne du processeur sans le déclarer explicitement. Par exemple une instruction d'addition peut ou non modifier des variables de conditions (retenue, zéro, débordement...). Cela peut poser un problème lors de la conception d'un processeur s'il comporte un pipeline d'instructions et des instructions à effet de bord. Il faut prendre soin d'éviter ces aléas. Il est possible d´éviter cela en limitant le jeu d'instruction à des instructions sans effet de bord. Dans le pire des cas, des circuits additionnels détectent les effets de bord et invalide le pipeline si l'instruction suivante dans celui-ci dépend des valeurs affectées.
- In informatica si dice che una funzione produce un effetto collaterale quando modifica un valore o uno stato al di fuori del proprio scoping locale. Per esempio, una funzione ha un effetto collaterale quando modifica una variabile globale o statica, quando modifica uno dei suoi argomenti, quando scrive dati su di un display o su di un file o quando invoca altre funzioni con effetti collaterali. Gli effetti collaterali presenti in un programma spesso rendono difficile la comprensione del suo flusso di esecuzione e se non gestiti bene possono portare facilmente a bug difficili da scovare. La programmazione imperativa utilizza gli effetti collaterali come uno strumento, cioè i programmi si servono di essi per svolgere i propri compiti (si pensi ad esempio alla funzione printf del linguaggio C); nella programmazione funzionale, invece, si tende a minimizzare gli effetti collaterali: questo rende più facile la dimostrazione della correttezza di un programma, più difficile che vi siano bug nascosti e più semplice il debugging ma tutto ciò al costo di una maggiore complessità per svolgere le operazioni di input/output (si pensi al meccanismo delle monadi del linguaggio Haskell). Nel design delle CPU le istruzioni con effetti collaterali sono quelle istruzioni che modificano i valori interni della CPU senza dichiararlo esplicitamente; per esempio, l'istruzione ADD a volte modifica delle variabili di condizione (carry, zero, overflow, ecc). Questo può generare problemi quando si progetta una CPU con pipeline e con istruzioni con effetti collaterali; per evitare questi problemi è possibile limitare il set di istruzioni a sole istruzioni senza effetti collaterali o, nel caso peggiore, aggiungere ulteriore circuiteria per rilevare gli effetti collaterali e bloccare la pipeline nel caso in cui l'istruzione successiva dipende dai valori modificati.
- プログラミングにおける副作用(ふくさよう)とは、ある機能がコンピュータの(論理的な)状態を変化させ、それ以降で得られる結果に影響を与えることをいう。代表的な例は変数への値の代入である。 例えば与えられた数字を二倍して返す機能"double"があるとする。 double: x -> 2*x 例: このような機能では次のことが成立する。 同じ条件を与えれば必ず同じ結果が得られる 他のいかなる機能の結果にも影響を与えない このような性質を参照透過性という。参照透過な機能はそれ自身状態を持たないことで副作用と独立している。 一方状態を持つ機能"add"を考える。addは外側の変数eを増加させて返すものとすれば: add: x -> e:e+x 例: e: 1 のようになるだろう。このような機能では見えない所で条件を変化させてしまうために、参照透過性の一つ目の仮定が崩れ、また他のeを利用する機能の結果も変化させるので二つ目の仮定も成立しない。addは副作用を持つ機能である。 副作用を伴う機能の例としては、I/O制御(write/print等)、上記addのように破壊的代入を行う機能などがある。ノイマン型のアーキテクチャは副作用を前提として動作するため、多くのプログラミング言語では変数の破壊的代入機能を持つ。一方関数型言語では原則として副作用を存在しないものとみなし、モナドなどの手法で抽象化している。 機能が副作用を持たないことの利点は、いかなる状況でも常に同じ結果が得られるために、機能を純粋にアルゴリズムとして定義でき、状況依存でのバグの発生が抑えられるということである。反面副作用を持たない言語設計はノイマン型アーキテクチャと反りが合わず、効率の点で不利になることが多い。また単純な逐次処理を行う場合は状態を中心に命令的な思考をした方が扱いやすい場合がある。このためLISPやMLなどは原則として関数型ながら、副作用を許容する設計になっている。
- In de informatica heeft een functie of expressie een of meer neveneffecten als het naast het teruggeven van een waarde ook een toestand aanpast. Voorbeelden hiervan zijn het aanpassen van een globale variabele of het wegschrijven van informatie naar een bestand of beeldscherm. Door neveneffecten wordt het gedrag van het programma mogelijk moeilijker te voorspellen. Een operatie die geen neveneffecten heeft kan veilig worden uitgevoerd zonder dat de toestand van het systeem wordt aangepast. Het opvragen van een waarde is een voorbeeld van een veilige operatie. In imperatieve programmeertalen hebben veel berekeningen neveneffecten, terwijl functies in functionele programmeertalen weinig tot geen neveneffecten hebben. Wil een functie of expressie referentieel transparant zijn, dan is een van de vereisten daarvoor dat de functie geen neveneffecten heeft.
- Skutek uboczny lub efekt uboczny – w programowaniu dowolny efekt wyrażenia, który zmienia stan programu. Pomimo nazwy zwykle jest to właśnie spodziewany efekt. Np. wyrażenie 2 + 3 nie ma skutków ubocznych, wyrażenie a = 2 + 3 ma skutek uboczny na zmiennej a. W językach niskopoziomowych jest dużo skutków ubocznych - w asemblerze istnieją wyłącznie skutki uboczne i nie ma żadnego innego mechanizmu wykonywania obliczeń. W językach funkcyjnych dla odmiany skutków ubocznych jest bardzo mało - i tylko tam gdzie są rzeczywiście niezbędne - np. do operacji wejścia/wyjścia. Skutki uboczne znacznie utrudniają przeprowadzenie wielu rodzajów optymalizacji kodu wynikowego.
- Побо́чный эффе́кт функции — возможность в процессе выполнения своих вычислений читать и модифицировать значения глобальных переменных, осуществлять операции ввода/вывода, реагировать на исключительные ситуации, вызывать их обработчики. Если вызвать функцию с побочным эффектом дважды с одним и тем же набором значений входных аргументов, может случиться так, что в качестве результата вычислятся разные значения. Такие функции называются недетерминированными функциями с побочными эффектами.
- Med sidoeffekter avses inom datorprogrammering och datalogi effekter vid exempelvis funktionsanrop som inte är uppenbara att de ska inträffa. Sidoeffekter kan vara önskade och medvetet införda, eller oönskade och omedvetet införda. Ett vanligt exempel är att variabelvärden som andra delar av programvaran är beroende av, globala variabler, ändras. Det anses vara dålig programmeringssed att införa sidoeffekter eftersom de drabbar programvarans överskådlighet och dessutom ofta inför felaktigheter i programvarans funktion.
|
| rdfs:comment
|
- In computer science, a function or expression is said to have a side effect if, in addition to producing a value, it also modifies some state or has an observable interaction with calling functions or the outside world. For example, a function might modify a global or a static variable, modify one of its arguments, raise an exception, write data to a display or file, read data, or call other side-effecting functions.
- In der Programmierung bezeichnet Wirkung (engl. effect) die Veränderung des Zustands, in dem sich ein Computersystem befindet. Beispiele sind das Verändern von Inhalten des Speichers oder die Ausgabe eines Textes auf Bildschirm oder Drucker. Da solche Wirkungen in den meisten Programmiersprachen etwas ganz Gewöhnliches darstellen, wird ihr Vorhandensein außerhalb der theoretischen Informatik meist nicht weiter thematisiert.
- V programování pojem vedlejší účinek (angl. side effect) představuje situaci, kdy volaná funkce nebo výpočetní výraz mění i jiný stav procesu, než je návratová hodnota funkce nebo výrazu nebo změna hodnoty parametru odkazovaného přes odkaz referencí. Vedlejší účinek může být úmyslný nebo neumyslný. Neúmyslný vedlejší účinek je častým zdrojem mnoha programátorských chyb.
- En ciencias de la computación se dice que una función o expresión tiene efecto colateral o efecto secundario si esta, además de retornar un valor, modifica el estado de su entorno. Por ejemplo, una función puede modificar una variable global o estática, modificar uno de sus argumentos, escribir datos a la pantalla o a un archivo, o leer datos de otras funciones que tienen efecto secundario.
- En informatique, une fonction est dite à effet de bord si elle modifie un état autre que sa valeur de retour. Par exemple, une fonction peut modifier une variable statique ou globale, modifier un ou plusieurs de ses arguments, écrire des données vers un écran ou un fichier ou lire des données provenant d'autres fonctions à effet de bord. Les effets de bord rendent souvent le comportement des programmes plus difficiles à comprendre.
- In informatica si dice che una funzione produce un effetto collaterale quando modifica un valore o uno stato al di fuori del proprio scoping locale. Per esempio, una funzione ha un effetto collaterale quando modifica una variabile globale o statica, quando modifica uno dei suoi argomenti, quando scrive dati su di un display o su di un file o quando invoca altre funzioni con effetti collaterali.
- In de informatica heeft een functie of expressie een of meer neveneffecten als het naast het teruggeven van een waarde ook een toestand aanpast. Voorbeelden hiervan zijn het aanpassen van een globale variabele of het wegschrijven van informatie naar een bestand of beeldscherm. Door neveneffecten wordt het gedrag van het programma mogelijk moeilijker te voorspellen. Een operatie die geen neveneffecten heeft kan veilig worden uitgevoerd zonder dat de toestand van het systeem wordt aangepast.
- Skutek uboczny lub efekt uboczny – w programowaniu dowolny efekt wyrażenia, który zmienia stan programu. Pomimo nazwy zwykle jest to właśnie spodziewany efekt. Np. wyrażenie 2 + 3 nie ma skutków ubocznych, wyrażenie a = 2 + 3 ma skutek uboczny na zmiennej a. W językach niskopoziomowych jest dużo skutków ubocznych - w asemblerze istnieją wyłącznie skutki uboczne i nie ma żadnego innego mechanizmu wykonywania obliczeń.
- Побо́чный эффе́кт функции — возможность в процессе выполнения своих вычислений читать и модифицировать значения глобальных переменных, осуществлять операции ввода/вывода, реагировать на исключительные ситуации, вызывать их обработчики.
- Med sidoeffekter avses inom datorprogrammering och datalogi effekter vid exempelvis funktionsanrop som inte är uppenbara att de ska inträffa. Sidoeffekter kan vara önskade och medvetet införda, eller oönskade och omedvetet införda. Ett vanligt exempel är att variabelvärden som andra delar av programvaran är beroende av, globala variabler, ändras.
|