Evaluation strategy (original) (raw)
- Vyhodnocovací strategie (nebo také redukční strategie – pojem se typicky používá ve funkcionálních jazycích) v programovacím jazyce je množina pravidel (většinou deterministických), která definuje způsob vyhodnocování výrazů. Důraz je obvykle kladen na funkce a operátory – vyhodnocovací strategie definuje, kdy a v jakém pořadí jsou vyhodnocovány argumenty funkce, a kdy a jakým způsobem jsou ve funkci nahrazovány. Jazyk může kombinovat několik vyhodnocovacích strategií. Například C++ kombinuje volání hodnotou a volání referencí. Většina jazyků, které jsou převážně striktní, používají nějakou formu nestriktního vyhodnocování pro booleovské výrazy a podmíněné příkazy. (cs)
- Auswertung (engl. evaluation als Beschreibung, Analyse und Bewertung) bezeichnet in der Informatik den Vorgang, der einem Ausdruck (eventuell in einem gegebenen Kontext von Variablenbindungen) einen Wert zuordnet. Programmiersprachen sind nach ihrer Auswertungsstrategie unterscheidbar: * Bei strenger Auswertung oder strikter Auswertung (engl. eager bzw. ) werden Ausdrücke sofort ausgewertet. Zum Beispiel bei der Berechnung einer Funktion werden bei strikter Auswertung erst die Argumentausdrücke ausgewertet, bevor der ausgewertet wird. * Dem gegenüber steht die Bedarfsauswertung oder verzögerte Auswertung (engl. Lazy Evaluation), bei der Ausdrücke erst ausgewertet werden, wenn deren Wert in einer Berechnung benötigt wird. Dadurch lassen sich z. B. unendlich große Datenstrukturen (z. B. die Liste aller natürlicher Zahlen, die Liste aller Primzahlen usw.) definieren und bestimmte Algorithmen vereinfachen sich. Diese Datenstrukturen bezeichnet man als Ströme (engl. streams). Manche Berechnungen lassen sich mit strenger Auswertung, andere mit Bedarfsauswertung effizienter ausführen. Bei der Auswertung von Funktionen mit mehreren Argumenten besteht ein weiterer Freiheitsgrad darin, in welcher Reihenfolge die Argumente ausgewertet werden. In der Theoretischen Informatik (Lambda-Kalkül) wird formal gezeigt, dass die Reihenfolge der Auswertung keine Rolle spielt beim berechneten Wert eines Ausdrucks, so er denn ausgewertet werden kann; siehe auch Currying bzw. Schönfinkeln. Die Anwendung der Funktion (bzw. Funktionsdefinition) auf ihre Argumente bezeichnet man auch als Applikation. Eng verwandt mit dem Begriff der Auswertung ist der Begriff der Semantik, das ist eine Abbildung, die einem Programm (meistens ein Programmtext bzw. Quellcode) seine berechenbare Funktion zuordnet. Dieses stimmt mit der umgangssprachlichen Deutung des Begriffs Semantik als Bedeutungszuordnung gut überein. (de)
- In a programming language, an evaluation strategy is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a parameter-passing strategy that defines the kind of value that is passed to the function for each parameter (the binding strategy) and whether to evaluate the parameters of a function call, and if so in what order (the evaluation order). The notion of reduction strategy is distinct, although some authors conflate the two terms and the definition of each term is not widely agreed upon. To illustrate, executing a function call f(a,b) may first evaluate the arguments a and b, store the results in references or memory locations ref_a and ref_b, then evaluate the function's body with those references passed in. This gives the function the ability to look up the argument values, to modify them via assignment as if they were local variables, and to return values via the references. This is the call-by-reference evaluation strategy. Evaluation strategy is specified by the programming language definition, and is not a function of any specific implementation. The calling convention defines implementation-specific parameter passing details. (en)
- Un langage de programmation utilise une stratégie d'évaluation pour déterminer « quand » évaluer les arguments à l'appel d'une fonction (ou encore, opération, méthode) et « comment » passer les arguments à la fonction. Par exemple, dans l'appel par valeur, les arguments doivent être évalués avant d'être passés à la fonction. La stratégie d'évaluation d'un langage de programmation est spécifiée par la définition du langage même. En pratique, la plupart des langages de programmation (Java, C...) utilisent l'appel par valeur. En effet, l'appel par valeur permet de raisonner plus facilement lorsque l'on essaie de déterminer et de calculer la complexité algorithmique d'un programme puisque l'on sait précisément quand les arguments sont évalués. (fr)
- 評価戦略(ひょうかせんりゃく、英: evaluation strategy)とは、プログラミング言語や、ラムダ計算のような式から成る計算模型において、如何なる手順で、評価すなわち式から値を得るか、という(通常決定的な)規則群である。 (ja)
- 평가 전략(영어: Evaluation Strategy)은 프로그래밍 언어에서 함수 호출의 아규먼트(argument)의 순서를 언제 결정하고 함수에 어떤 종류의 값을 통과시킬지 결정하는 것이다. 람다 대수에서 (reduction strategy)과 유사하지만 다르다.근래의 대부분의 프로그래밍 언어들은 값에 의한 호출(call-by-value)과 참조에 의한 전달(pass-by-reference)가 통합되고 있다. C++와 같은 일부 안전하지 않은 오래된 프로그래밍 언어들은 파라미터 통과의 여러 가지 개념을 혼용한다. 역사적으로, 값에 의한 호출과 이름에 의한 호출(call-by-name)은 1950년대 후반에 설계된 Algol 60까지 거슬러 올라간다. Clean이나 하스켈과 같은 순수한 함수 언어(functional language)는 요구에 의한 호출(call-by-need)를 사용한다. (ko)
- Стратегия вычисления (англ. evaluation strategy) — правила семантики языка программирования, определяющие, когда следует вычислять аргументы функции (метода, операции, отношения), и какие значения следует передавать. Например, стратегия «вызов-при-упоминании/передача-по-ссылке» (call-by-worth/pass-by-reference) диктует, что аргументы должны быть вычислены перед выполнением тела вызываемой функции, и что ей должны быть предоставлены две возможности в отношении каждого аргумента: чтение текущего значения и его изменение посредством операции присваивания. На эту стратегию похожа в лямбда-исчислении, но есть отличия. На практике модель вычисления многих промышленных языков (Java, C#) сводится к стратегии «вызов-при-упоминании/передача-по-ссылке». Некоторые более старые языки, в особенности небезопасные, такие как C++, сочетают несколько разных моделей вызова. Исторически «» и «» восходят к Алголу-60, созданному в конце 1950-х годов. Только чистые функциональные языки, такие как Clean и Haskell, используют «». Примечание — в русскоязычной литературе стратегия вычислений также называется «способом передачи параметров», «моделью вычислений» или «моделью вызова». Последний вариант может вызвать путаницу с соглашением о вызове (calling convention). Термин «передача параметров» для многих стратегий вычисления является некорректным. (ru)
- Em ciência da computação, estratégia de avaliação é um conjunto de regras para determinar a avaliação de expressões em uma linguagem de programação. A ênfase é colocada, tipicamente, em funções ou operadores. Uma estratégia de avaliação define quando e em que ordem os parâmetros para uma função são avaliados, quando eles são substituídos dentro da função, e de que forma tal substituição ocorre. O cálculo lambda, um sistema formal para o estudo de funções, tem sido freqüentemente usado para modelar estratégias de avaliação, onde são habitualmente chamadas de estratégias de redução. Estratégias de avaliação são divididas em dois grupos básicos, estrito e não-estrito, baseado em como os argumentos para cada função são tratados. Uma linguagem pode combinar várias estratégias de avaliação; por exemplo, C++, combina chamada-por-valor com chamada-por-referência. A maiorias das linguagens que são predominantemente estrita usam algumas formas de avaliação não-estrita para expressões booleanas e condicionais (if-else). (pt)
- 在计算机科学中,求值策略(英語:Evaluation strategy)是确定编程语言中表达式的求值的一组(通常确定性的)规则。重点典型的位于函数或算子上——求值策略定义何时和以何种次序求值给函数的实际参数,什么时候把它们代换入函数,和代换以何种形式发生。经常使用用来研究函数的形式系统λ演算来建模求值策略,这里它们通常叫做归约策略。求值策略分为两大基本类,严格的和非严格的,基于如何处理给函数的实际参数。一个语言可以组合多种求值策略;例如C++组合了传值调用和传引用调用。多数语言对布尔表达式和if语句使用某种形式的非严格求值。 (zh)
- Мова програмування використовує стратегії обчислення для того, щоб визначити, коли обчислювати аргумент(и) виклику функції (або операції, методу чи співвідношення) і які значення передавати до функції. Наприклад, виклик за значенням/виклик за посиланням визначають, що аргумент обчислюється до виконання тіла функції, і надає дві можливості для функції – отримати поточне значення аргументу та змінити його через вираз присвоєння. Поняття стратегії скорочення в лямбда обчисленнях є схожим, але має відмінності. На практиці, багато сучасних мов програмування зійшлись на використанні стратегії виклику по значенню/виклику по посиланню для виклику функцій (C#, Java). Деякі мови, особливо нижчого рівня, такі як С++, поєднують декілька ідей передачі параметрів. Історично, виклик за значенням/виклик за посиланням бере свій початок в ALGOL 60, мові, створеній в пізніх 1950-х. Виклик по посиланню використовується в PL/I та деяких дистрибутивах Fortran. Виключно функціональні мови, такі як Haskell, а також не повністю функціональні мови, такі як R, використовують виклик за потребою. (uk)
- yago:Abstraction100002137
- yago:Cognition100023271
- yago:Communication100033020
- yago:Concept105835747
- yago:Content105809192
- yago:Idea105833840
- yago:Message106598915
- yago:PsychologicalFeature100023100
- yago:Subject106599788
- yago:WikicatProgrammingConstructs
- yago:WikicatProgrammingLanguageConcepts
- yago:WikicatProgrammingLanguageTopics
- 評価戦略(ひょうかせんりゃく、英: evaluation strategy)とは、プログラミング言語や、ラムダ計算のような式から成る計算模型において、如何なる手順で、評価すなわち式から値を得るか、という(通常決定的な)規則群である。 (ja)
- 평가 전략(영어: Evaluation Strategy)은 프로그래밍 언어에서 함수 호출의 아규먼트(argument)의 순서를 언제 결정하고 함수에 어떤 종류의 값을 통과시킬지 결정하는 것이다. 람다 대수에서 (reduction strategy)과 유사하지만 다르다.근래의 대부분의 프로그래밍 언어들은 값에 의한 호출(call-by-value)과 참조에 의한 전달(pass-by-reference)가 통합되고 있다. C++와 같은 일부 안전하지 않은 오래된 프로그래밍 언어들은 파라미터 통과의 여러 가지 개념을 혼용한다. 역사적으로, 값에 의한 호출과 이름에 의한 호출(call-by-name)은 1950년대 후반에 설계된 Algol 60까지 거슬러 올라간다. Clean이나 하스켈과 같은 순수한 함수 언어(functional language)는 요구에 의한 호출(call-by-need)를 사용한다. (ko)
- 在计算机科学中,求值策略(英語:Evaluation strategy)是确定编程语言中表达式的求值的一组(通常确定性的)规则。重点典型的位于函数或算子上——求值策略定义何时和以何种次序求值给函数的实际参数,什么时候把它们代换入函数,和代换以何种形式发生。经常使用用来研究函数的形式系统λ演算来建模求值策略,这里它们通常叫做归约策略。求值策略分为两大基本类,严格的和非严格的,基于如何处理给函数的实际参数。一个语言可以组合多种求值策略;例如C++组合了传值调用和传引用调用。多数语言对布尔表达式和if语句使用某种形式的非严格求值。 (zh)
- Vyhodnocovací strategie (nebo také redukční strategie – pojem se typicky používá ve funkcionálních jazycích) v programovacím jazyce je množina pravidel (většinou deterministických), která definuje způsob vyhodnocování výrazů. Důraz je obvykle kladen na funkce a operátory – vyhodnocovací strategie definuje, kdy a v jakém pořadí jsou vyhodnocovány argumenty funkce, a kdy a jakým způsobem jsou ve funkci nahrazovány. (cs)
- In a programming language, an evaluation strategy is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a parameter-passing strategy that defines the kind of value that is passed to the function for each parameter (the binding strategy) and whether to evaluate the parameters of a function call, and if so in what order (the evaluation order). The notion of reduction strategy is distinct, although some authors conflate the two terms and the definition of each term is not widely agreed upon. (en)
- Auswertung (engl. evaluation als Beschreibung, Analyse und Bewertung) bezeichnet in der Informatik den Vorgang, der einem Ausdruck (eventuell in einem gegebenen Kontext von Variablenbindungen) einen Wert zuordnet. Programmiersprachen sind nach ihrer Auswertungsstrategie unterscheidbar: Manche Berechnungen lassen sich mit strenger Auswertung, andere mit Bedarfsauswertung effizienter ausführen. Die Anwendung der Funktion (bzw. Funktionsdefinition) auf ihre Argumente bezeichnet man auch als Applikation. (de)
- Un langage de programmation utilise une stratégie d'évaluation pour déterminer « quand » évaluer les arguments à l'appel d'une fonction (ou encore, opération, méthode) et « comment » passer les arguments à la fonction. Par exemple, dans l'appel par valeur, les arguments doivent être évalués avant d'être passés à la fonction. (fr)
- Em ciência da computação, estratégia de avaliação é um conjunto de regras para determinar a avaliação de expressões em uma linguagem de programação. A ênfase é colocada, tipicamente, em funções ou operadores. Uma estratégia de avaliação define quando e em que ordem os parâmetros para uma função são avaliados, quando eles são substituídos dentro da função, e de que forma tal substituição ocorre. O cálculo lambda, um sistema formal para o estudo de funções, tem sido freqüentemente usado para modelar estratégias de avaliação, onde são habitualmente chamadas de estratégias de redução. Estratégias de avaliação são divididas em dois grupos básicos, estrito e não-estrito, baseado em como os argumentos para cada função são tratados. Uma linguagem pode combinar várias estratégias de avaliação; por (pt)
- Стратегия вычисления (англ. evaluation strategy) — правила семантики языка программирования, определяющие, когда следует вычислять аргументы функции (метода, операции, отношения), и какие значения следует передавать. Например, стратегия «вызов-при-упоминании/передача-по-ссылке» (call-by-worth/pass-by-reference) диктует, что аргументы должны быть вычислены перед выполнением тела вызываемой функции, и что ей должны быть предоставлены две возможности в отношении каждого аргумента: чтение текущего значения и его изменение посредством операции присваивания. На эту стратегию похожа в лямбда-исчислении, но есть отличия. (ru)
- Мова програмування використовує стратегії обчислення для того, щоб визначити, коли обчислювати аргумент(и) виклику функції (або операції, методу чи співвідношення) і які значення передавати до функції. Наприклад, виклик за значенням/виклик за посиланням визначають, що аргумент обчислюється до виконання тіла функції, і надає дві можливості для функції – отримати поточне значення аргументу та змінити його через вираз присвоєння. Поняття стратегії скорочення в лямбда обчисленнях є схожим, але має відмінності. (uk)
- Evaluation strategy (en)
- Vyhodnocovací strategie (cs)
- Auswertung (Informatik) (de)
- Stratégie d'évaluation (informatique) (fr)
- 평가 전략 (컴퓨터 프로그래밍) (ko)
- 評価戦略 (ja)
- Estratégia de avaliação (pt)
- Стратегия вычисления (ru)
- 求值策略 (zh)
- Стратегії обчислення (uk)
is dbo:wikiPageWikiLink of
- dbr:Call-by-reference
- dbr:Call-by-value
- dbr:PureScript
- dbr:One-pass_compiler
- dbr:Tail_call
- dbr:Non-strict_evaluation
- dbr:Non-strict_semantics
- dbr:Normal_order_reduction
- dbr:Volatile_(computer_programming)
- dbr:Call-by-sharing
- dbr:Call_By_Reference
- dbr:Call_by_future
- dbr:Call_by_name
- dbr:Call_by_reference
- dbr:Call_by_sharing
- dbr:Call_by_value
- dbr:Intel_iAPX_432
- dbr:Interprocedural_optimization
- dbr:Orthogonality_(programming)
- dbr:Predicate_transformer_semantics
- dbr:Normal_order_evaluation
- dbr:Function_(computer_programming)
- dbr:Gordon_Plotkin
- dbr:Greedy_evaluation
- dbr:Constraint_logic_programming
- dbr:Applicative-order_evaluation
- dbr:ML_(programming_language)
- dbr:Call_by_address
- dbr:Call_by_copy-restore
- dbr:Call_by_macro_expansion
- dbr:Calling_convention
- dbr:Simply_typed_lambda_calculus
- dbr:Strict_programming_language
- dbr:Parameter_(computer_programming)
- dbr:Futures_and_promises
- dbr:Eager_evaluation
- dbr:Lazy_evaluation
- dbr:ALGOL
- dbr:ALGOL_58
- dbr:ALGOL_60
- dbr:ALGOL_W
- dbr:Cuneiform_(programming_language)
- dbr:Curry–Howard_correspondence
- dbr:Normal-order_evaluation
- dbr:Graph_reduction
- dbr:SGML_entity
- dbr:Purely_functional_programming
- dbr:Reference_(computer_science)
- dbr:Haskell
- dbr:Pattern_calculus
- dbr:Abstract_machine
- dbr:Lambda_calculus
- dbr:Syntactic_sugar
- dbr:Telescript_(programming_language)
- dbr:Tensor_(intrinsic_definition)
- dbr:Thunk
- dbr:Autovivification
- dbr:Applicative_order
- dbr:Applicative_order_evaluation
- dbr:Evaluation_(disambiguation)
- dbr:Avaliacao_ansiosa
- dbr:Avaliação_ansiosa
- dbr:Categorical_abstract_machine
- dbr:Reduction_strategy
- dbr:Π-calculus
- dbr:Meta-circular_evaluator
- dbr:Side_effect_(computer_science)
- dbr:Expression_(computer_science)
- dbr:IDL_(programming_language)
- dbr:Immediately_invoked_function_expression
- dbr:Programming_language
- dbr:Product_type
- dbr:Perl_language_structure
- dbr:Outline_of_computer_programming
- dbr:XHarbour
- dbr:Ternary_conditional_operator
- dbr:Cbpv
- dbr:Call-By-Reference_Evaluation
- dbr:Call-By-Value_Evaluation
- dbr:Call-by-name
- dbr:Call-by-need
- dbr:Call-by-object
- dbr:Call-by-result
- dbr:Call-by-something
- dbr:Call-by-value-result
- dbr:Call_by_Name
- dbr:Call_by_object
- dbr:Call_by_result
- dbr:Call_by_something
- dbr:Call_by_value-result
- dbr:Call_by_value/result
- dbr:Call_by_value_result
- dbr:Called_by_value
- dbr:Return-by-reference
- dbr:Pass-By-Name
- dbr:Pass-By-Reference
- dbr:Pass-By-Value
- dbr:Pass-by-reference
- dbr:Pass-by-value
- dbr:Pass_By_Name
- dbr:Pass_By_Reference
- dbr:Pass_By_Value
- dbr:Pass_by_reference
- dbr:Pass_by_value
- dbr:Eager_execution
- dbr:Lazy_language
- dbr:Comparison_of_normal-order_evaluation_and_applicative-order_evaluation
- dbr:Strict_evaluation