Metaprogramming (original) (raw)

About DBpedia

البرمجة الوصفية تقنية من تقنيات البرمجة تمكن البرنامج من اعتبار البرامج الأخرى بيانات ومعاملتها كذلك، وتستعمل فيها لغة وصفية.

Property Value
dbo:abstract البرمجة الوصفية تقنية من تقنيات البرمجة تمكن البرنامج من اعتبار البرامج الأخرى بيانات ومعاملتها كذلك، وتستعمل فيها لغة وصفية. (ar) Metaprogramování je programovací technika, založená na vytváření programů, které nakládají s jinými počítačovými programy jako se svými daty. Mohou je tedy modifikovat nebo vytvářet, případně i modifikovat samy sebe. To mimo jiné může umožnit již při kompilaci provádět činnosti, které by jinak musely proběhnout až za běhu programu. V mnoha případech tato technika umožňuje programátorovi napsat program úsporněji (zmenšit počet jeho řádků, zjednodušit jeho vnitřní strukturu). Může také pomoci s odstraněním duplikovaného kódu v rámci programu. Jazyk, ve kterém je metaprogram napsán, se nazývá metajazykem. Jazyk programu, se kterým metaprogram manipuluje, se nazývá předmětným jazykem. Schopnost programovacího jazyka být svým vlastním metajazykem se často nazývá reflexí. Reflexe je schopnost programovacího jazyka, která programu v něm napsaném umožňuje zjistit informace o sobě samém. (cs) Metaprogrammierung ist in der Informatik die Erstellung von Computerprogrammen ("Metaprogramme"), die Computerprogramme erzeugen. Das Ziel dabei ist es, den Computer ganz oder teilweise an dem Prozess der Programmierung mitarbeiten zu lassen. Dadurch ist es möglich, Fehler durch Automatisierung zu vermindern und Computerprogramme ad hoc zu erstellen und auszuführen. Metaprogrammierung gestattet es ebenfalls, die Programmiersprache durch den Programmierer um neue Konstruktionen zu erweitern. Daher ist sie in homoikonischen Programmiersprachen ein sehr effektives Mittel zur Entwicklung von Domänenspezifischen Sprachen. (de) Ο όρος Μεταπρογραμματισμός (Αγγλικά: Metaprogramming) χαρακτηρίζει τα προγράμματα υπολογιστών τα οποία μπορούν να τροποποιούν προγράμματα. Για παράδειγμα ένα πρόγραμμα μπορεί κατά την διάρκεια της μεταγλώττισης να παράγει κώδικα ο οποίος στην συνέχεια μεταγλωττίζεται και δημιουργείται το εκτελέσιμο αρχείο σε γλώσσα μηχανής. Ο μεταπρογραμματισμός είναι όρος που χαρακτηρίζει τα «προγράμματα που παράγουν προγράμματα», δηλαδή προγράμματα τα οποία τροποποιούν/δημιουργούν πηγαίο κώδικα. Στην γλώσσα C++ ο μεταπρογραμματισμός συσχετίζεται με τον προγραμματισμό με χρήση πρότυπων templates. Σε γλώσσες σεναρίων (scripting languages) όπως η Ruby ο μεταπρογραμματισμός αναφέρεται στην δυνατότητα να προσθέτουμε νέο εκτελέσιμο κώδικα ο οποίος τροποποιεί την συμπεριφορά του προγράμματος κατά την εκτέλεση (runtime). Στην γλώσσα Ruby ο μεταπρογραμματισμός βασίζεται στο API που επιτρέπει ανάκλαση. (el) Metaprogramado estas skribado de komputilaj programoj kiuj kapablas pritrakti programojn kiel datenoj. La programoj povas esti desegnataj por legi, generi, analizi kaj/aŭ konverti aliajn programojn aŭ ec por evoluigi sin mem dum ili rulas. En kelkaj kazoj metaprogramado permesas al la programistoj uzi malpli da fontkodo ol kutime, kaj tiel malpliiĝas ankaŭ la tempo bezonata por skribi programon. La programlingvo en kiu metaprogramo estas skribita nomiĝas metalingvo. Ekzemploj de metalingvoj estas Lisp, Julia kaj Rust. (eo) La metaprogramación consiste en escribir programas que escriben o manipulan otros programas (o a sí mismos) como datos, o que hacen en tiempo de compilación parte del trabajo que, de otra forma, se haría en tiempo de ejecución. Esto permite al programador ahorrar tiempo en la producción de código. Un ejemplo sencillo de un metaprograma sería este script de Bash: #!/bin/bash # metaprogram echo '#!/bin/bash' >program for ((I=1; I<=992; I++)); do echo "echo $I" >>program done chmod +x program Este script genera un nuevo programa que imprime por pantalla los números 1 a 992. Esto es sólo una muestra de cómo usar código para escribir más código, no la forma más eficiente de imprimir una lista de números. La herramienta de metaprogramación más común es el compilador, el cual permite al programador escribir un programa relativamente corto en un lenguaje de alto nivel para, posteriormente, escribir un programa equivalente en lenguaje ensamblador o lenguaje máquina. Esto, por lo general, significa un buen ahorro de tiempo si se compara con la posibilidad de escribir el programa en lenguaje máquina de forma directa. Otro ejemplo bastante común de metaprogramación se puede encontrar en el uso de Lex (véase también: ) y Yacc (véase también: bison), que son usados para generar compiladores e intérpretes.​​ (es) La métaprogrammation, nommée par analogie avec les métadonnées et les métaclasses[réf. souhaitée], désigne l'écriture de programmes qui manipulent des données décrivant elles-mêmes des programmes. Dans le cas particulier où le programme manipule ses propres instructions pendant son exécution, on parle de programme auto-modifiant. Elle peut être employée pour générer du code interprété par un compilateur et donner un résultat constant, afin d'éviter un calcul manuel. Il permet également de réduire le temps d'exécution du programme si le résultat constant avait été classiquement calculé par le programme comme pour les résultats variables. Cette méthode ne s'applique pas uniquement aux calculs mais aussi au remplissage de données constantes telles que des tableaux ou des structures plus complexes. Cependant cette technique ne fonctionne que pour des valeurs constantes. En effet, si une donnée manipulée par le métaprogramme est une entrée du programme, par exemple une saisie de l’utilisateur, elle ne peut pas être connue avant l'exécution du programme. Il est donc impossible qu'un tel métaprogramme soit interprété par un compilateur. L'optimisation par métaprogrammation est alors totalement perdue. La métaprogrammation ne se limite pas seulement à l'écriture de données contenant un programme destiné au compilateur. Elle peut simplement être la manipulation d'un programme en fonction d'entrées variables. Par exemple, un programme peut, selon ses entrées, muter le code d'un métaprogramme. Ce métaprogramme peut alors être destiné à une exécution ultérieure ou une génération de code. (fr) Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyze or transform other programs, and even modify itself while running. In some cases, this allows programmers to minimize the number of lines of code to express a solution, in turn reducing development time. It also allows programs a greater flexibility to efficiently handle new situations without recompilation. Metaprogramming can be used to move computations from run-time to compile-time, to generate code using compile time computations, and to enable self-modifying code. The ability of a programming language to be its own metalanguage is called reflection. Reflection is a valuable language feature to facilitate metaprogramming. Metaprogramming was popular in the 1970s and 1980s using list processing languages such as LISP. LISP hardware machines were popular in the 1980s and enabled applications that could process code. They were frequently used for artificial intelligence applications. (en) 메타프로그래밍(Metaprogramming)이란 자기 자신 혹은 다른 컴퓨터 프로그램을 데이터로 취급하며 프로그램을 작성·수정하는 것을 말한다. 넓은 의미에서, 런타임에 수행해야 할 작업의 일부를 컴파일 타임 동안 수행하는 프로그램을 말하기도 한다. 메타 프로그래밍에 이용되는 언어를 메타 언어라고 하고, 메타 프로그래밍의 대상이 되는 언어를 대상 언어라고 한다. 한 프로그래밍 언어가 자기 자신의 메타 언어가 되는 것을 반영이라고 한다. 메타 프로그래밍이 동작하는 방식은 세 가지 종류가 있다. 첫째 방식은, 런타임 엔진 코드를 API를 통해 프로그램에 노출시키는 방식이다. 둘째 방식은, 문자열이나 혹은 다른 형태로 된 프로그래밍 명령을 동적으로 수행시키는 방식이다. 둘째 방식을 이용하면 프로그램이 프로그램을 작성하게 할 수 있다. 한 언어가 이 두 방식을 동시에 취할 수도 있으나, 대개의 언어들은 둘 중 한 방식으로 치우치는 경향이 있다. 셋째 방식은, 해당 언어의 범주를 완전히 벗어나는 것이다. 범용 프로그램 변환(program transformation) 시스템은 일반적인 메타프로그래밍을 직접 구현한다. 이와 같은 방식은 해당 언어에서 메타 프로그램 지원 여부와 상관없이 거의 모든 대상 언어에 적용될 수 있다. 종류에는 3가지가 있는데 타입 내성 또는 타입 자기성찰(Type Introspection), 반영(Reflection), 자기-수정 코드(Self-Modifying Code)이다. 타입 자기성찰은 수행중인 프로그램에서 변수나 함수들의 타입이나 속성을 알아내는 능력을 말한다. 반영(Reflection)은 실행중인 프로그램 자신의 구조와 행동을 조사하고 자가성찰(introspect) 하고 변경할 수 있는 능력을 말한다. 자기-수정 코드(Self-Modifying Code)는 코드를 스스로 고칠 수 있는 것을 말하는 것이다. 메타 프로그래밍의 종류가 구현되어 있는 언어로는 자바, 파이썬, Go, Lisp 등이 있다. (ko) メタプログラミング (metaprogramming) とはプログラミング技法の一種で、ロジックを直接コーディングするのではなく、あるパターンをもったロジックを生成する高位ロジックによってプログラミングを行う方法、またその高位ロジックを定義する方法のこと。主に対象言語に埋め込まれたマクロ言語によって行われる。 (ja) Metaprogrammeren is het schrijven van computerprogramma's die andere programma's kunnen lezen, genereren, analyseren en/of transformeren. Sommige metaprogramma's kunnen zichzelf aanpassen terwijl deze actief zijn. In enkele gevallen van metaprogrammeren stelt het programmeurs in staat om minder broncode te gebruiken dan normaal, en dus is er ook minder tijd nodig om een programma te schrijven. De programmeertaal waarin een metaprogramma wordt geschreven noemen we meestal metataal. De taal van de programma's die gemanipuleerd worden noemen we objecttaal. (nl) Metaprogramowanie – technika umożliwiająca programom tworzenie lub modyfikację kodu innych programów (lub ich samych). Program będący w stanie modyfikować lub generować kod innego programu nazywa się metaprogramem. Wykorzystanie zasad metaprogramowania pozwala na przykład na dynamiczną modyfikację programu podczas jego kompilacji. Metaprogramy tworzy się w metajęzykach. Jeśli język jest jednocześnie swoim metajęzykiem, taką cechę nazywamy refleksyjnością (ang. reflexivity). Metaprogramowanie może polegać nie tylko na generowaniu kodu, ale również na modyfikacjach w czasie wykonania programu. Takie możliwości dają języki Javascript, C#, Lisp, Perl, PHP, Prolog, Python, Ruby, Groovy, Smalltalk, R oraz Tcl. (pl) Metaprogramação é a programação de programas que escrevem ou manipulam outros programas (ou a si próprios) assim como seus dados, ou que fazem parte do trabalho em tempo de compilação. Em alguns casos, isso permite que os programadores sejam mais produtivos ao evitar que parte do código seja escrita manualmente. A linguagem em que o metaprograma é escrito é chamada metalinguagem. A linguagem dos programas que são manipulados é chamada linguagem objeto. A habilidade de uma linguagem de programação de ser sua própria metalinguagem é chamada reflexão. A reflexão facilita a metaprogramação, assim como ter uma linguagem de programação que é um tipo de dado de primeira classe de si mesma. Por exemplo, a programação genérica invoca a metaprogramação na própria linguagem. A metaprogramação é geralmente implementada através de duas formas. A primeira é a exposição do mecanismo interno de execução ao código através de uma API. A segunda é a execução dinâmica de expressões de texto que contém comandos de programação. (pt) Метапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы (в частности, на стадии компиляции их исходного кода) либо программ, которые меняют себя во время выполнения (самомодифицирующийся код). Первое позволяет получать программы при меньших затратах времени и усилий на кодирование, чем если бы программист писал их вручную целиком, второе позволяет улучшить свойства кода (размер и быстродействие). (ru) 元編程(英語:Metaprogramming),又譯超編程,是指某类计算机程序的编写,这类计算机程序编写或者操纵其它程序(或者自身)作为它们的資料,或者在编译时完成部分本应在运行时完成的工作。多数情况下,与手工编写全部代码相比,程序员可以获得更高的工作效率,或者给与程序更大的灵活度去处理新的情形而无需重新编译。 编写元程序的语言称之为元语言。被操纵的程序的语言称之为「」。一门编程语言同时也是自身的元语言的能力称之为「反射」或者「自反」。 反射是促进元编程的一种很有价值的语言特性。把编程语言自身作为一級資料類型(如LISP、Forth或Rebol)也很有用。支持泛型编程的语言也使用元编程能力。 元编程通常通过两种方式实现。一种是通过应用程序编程接口(APIs)将运行时引擎的内部信息暴露于编程代码。另一种是动态执行包含编程命令的字符串表达式。因此,“程序能够编写程序”。虽然两种方式都能用于同一种语言,但大多数语言趋向于偏向其中一种。 (zh) Метапрограмування — вид програмування, пов'язаний із створенням програмного коду, який на основі описів (метаданих) деяких процесів, алгоритмів або даних породжує інші програми для автоматизації описаних процесів, виконання послідовностей операцій алгоритмів або обробки даних. Метапрограмування засноване на метаданих, які можуть визначати типи, структуру або правила обробки даних, але не обмежується лише цим. Генеруючі код програми часто називають метапрограмами, a написання цих програм називається метапрограмуванням. (uk)
dbo:wikiPageExternalLink http://www.qcodo.com/wiki/article/background/metaprogramming https://docs.scala-lang.org/scala3/reference/metaprogramming.html http://c2.com/cgi/wiki%3FMetaProgramming http://www.program-transformation.org/Transform/MetaProgramming http://exist-db.org http://terralang.org https://web.archive.org/web/20160503055316/http:/solenoid.schematronic.org/
dbo:wikiPageID 393460 (xsd:integer)
dbo:wikiPageLength 15268 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID 1120546751 (xsd:integer)
dbo:wikiPageWikiLink dbr:Prolog dbr:Python_(programming_language) dbr:Ruby_(programming_language) dbr:Scala_(programming_language) dbr:Scheme_(programming_language) dbr:Metaobject dbr:Parsing dbr:C++_Templates dbr:Dependent_type dbr:Julia_(programming_language) dbr:Perl dbr:Regular_expression dbr:Unix_shell dbr:Inferential_programming dbr:Instruction_set_simulator dbr:Lexical_analysis dbr:.NET_Framework dbr:Common_Lisp dbr:Comparison_of_code_generation_tools dbr:Context-free_grammar dbr:Run_time_(program_lifecycle_phase) dbr:Rust_(programming_language) dbr:SAS_(software) dbr:SNOBOL dbr:Generic_programming dbr:Genetic_programming dbr:Elixir_(programming_language) dbr:Generative_programming dbr:Application_programming_interface dbr:Lisp_(programming_language) dbr:Lua_(programming_language) dbr:Machine_learning dbr:MacroML dbr:Macro_assembler dbr:Smalltalk dbc:Metaprogramming dbr:Compile-time_function_execution dbr:Computer_program dbr:Frink_(programming_language) dbr:Parameter_(computer_programming) dbr:CICS dbr:COBOL dbr:C_(programming_language) dbr:C_Sharp_(programming_language) dbr:Transcompiler dbr:Domain-specific_language dbr:Lisp_machine dbr:Yacc dbr:D_(programming_language) dbr:Dynamic_program_analysis dbr:Forth_(programming_language) dbr:Nim_(programming_language) dbr:PHP dbr:Partial_evaluation dbr:Pascal_Script dbr:Groovy_(programming_language) dbr:Quine_(computing) dbr:Haxe dbr:JavaScript dbr:Tcl dbr:Template_Haskell dbr:Hygienic_macro dbr:Artificial_intelligence dbr:Assembly_language dbc:Programming_paradigms dbr:LISP dbr:Homoiconicity dbr:Program_transformation dbr:Transaction_processing dbr:Aspect-oriented_programming dbr:Aspect_weaver dbr:Microsoft_Intermediate_Language dbr:IBM/360 dbr:Metaclass dbr:OCaml dbr:Object_Pascal dbr:Racket_(programming_language) dbr:Rebol dbr:Reflection_(computer_programming) dbr:Self-interpreter dbr:Self-modifying_code dbr:Metacompiler dbr:Very_Large_Scale_Integration dbr:Intentional_Programming dbr:Interpreted_language dbr:List_of_Program_Transformation_Systems dbr:X_Macro dbr:Nil_(programming_language) dbr:REBOL dbr:Feature_flag dbr:Source_code_generation dbr:Script_(computer_programming) dbr:First-class_object dbr:Lex_programming_tool dbr:MASM dbr:RemObjects dbr:Reflection_(computer_science) dbr:Clojure_(programming_language) dbr:Compile-time dbr:Compile-time_reflection dbr:Lightweight_Modular_Staging dbr:MetaML
dbp:wikiPageUsesTemplate dbt:Programming_paradigms dbt:Types_of_programming_languages dbt:About dbt:Citation_needed dbt:Div_col dbt:Div_col_end dbt:Main dbt:More_citations_needed dbt:Multiple_issues dbt:Reflist dbt:Short_description dbt:Tone
dcterms:subject dbc:Metaprogramming dbc:Programming_paradigms
gold:hypernym dbr:Writing
rdf:type dbo:Person yago:Abstraction100002137 yago:GrammaticalRelation113796779 yago:Inflection113803782 yago:LinguisticRelation113797142 yago:Paradigm113804375 yago:Relation100031921 yago:WikicatProgrammingParadigms
rdfs:comment البرمجة الوصفية تقنية من تقنيات البرمجة تمكن البرنامج من اعتبار البرامج الأخرى بيانات ومعاملتها كذلك، وتستعمل فيها لغة وصفية. (ar) Metaprogrammierung ist in der Informatik die Erstellung von Computerprogrammen ("Metaprogramme"), die Computerprogramme erzeugen. Das Ziel dabei ist es, den Computer ganz oder teilweise an dem Prozess der Programmierung mitarbeiten zu lassen. Dadurch ist es möglich, Fehler durch Automatisierung zu vermindern und Computerprogramme ad hoc zu erstellen und auszuführen. Metaprogrammierung gestattet es ebenfalls, die Programmiersprache durch den Programmierer um neue Konstruktionen zu erweitern. Daher ist sie in homoikonischen Programmiersprachen ein sehr effektives Mittel zur Entwicklung von Domänenspezifischen Sprachen. (de) Metaprogramado estas skribado de komputilaj programoj kiuj kapablas pritrakti programojn kiel datenoj. La programoj povas esti desegnataj por legi, generi, analizi kaj/aŭ konverti aliajn programojn aŭ ec por evoluigi sin mem dum ili rulas. En kelkaj kazoj metaprogramado permesas al la programistoj uzi malpli da fontkodo ol kutime, kaj tiel malpliiĝas ankaŭ la tempo bezonata por skribi programon. La programlingvo en kiu metaprogramo estas skribita nomiĝas metalingvo. Ekzemploj de metalingvoj estas Lisp, Julia kaj Rust. (eo) メタプログラミング (metaprogramming) とはプログラミング技法の一種で、ロジックを直接コーディングするのではなく、あるパターンをもったロジックを生成する高位ロジックによってプログラミングを行う方法、またその高位ロジックを定義する方法のこと。主に対象言語に埋め込まれたマクロ言語によって行われる。 (ja) Metaprogrammeren is het schrijven van computerprogramma's die andere programma's kunnen lezen, genereren, analyseren en/of transformeren. Sommige metaprogramma's kunnen zichzelf aanpassen terwijl deze actief zijn. In enkele gevallen van metaprogrammeren stelt het programmeurs in staat om minder broncode te gebruiken dan normaal, en dus is er ook minder tijd nodig om een programma te schrijven. De programmeertaal waarin een metaprogramma wordt geschreven noemen we meestal metataal. De taal van de programma's die gemanipuleerd worden noemen we objecttaal. (nl) Метапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы (в частности, на стадии компиляции их исходного кода) либо программ, которые меняют себя во время выполнения (самомодифицирующийся код). Первое позволяет получать программы при меньших затратах времени и усилий на кодирование, чем если бы программист писал их вручную целиком, второе позволяет улучшить свойства кода (размер и быстродействие). (ru) 元編程(英語:Metaprogramming),又譯超編程,是指某类计算机程序的编写,这类计算机程序编写或者操纵其它程序(或者自身)作为它们的資料,或者在编译时完成部分本应在运行时完成的工作。多数情况下,与手工编写全部代码相比,程序员可以获得更高的工作效率,或者给与程序更大的灵活度去处理新的情形而无需重新编译。 编写元程序的语言称之为元语言。被操纵的程序的语言称之为「」。一门编程语言同时也是自身的元语言的能力称之为「反射」或者「自反」。 反射是促进元编程的一种很有价值的语言特性。把编程语言自身作为一級資料類型(如LISP、Forth或Rebol)也很有用。支持泛型编程的语言也使用元编程能力。 元编程通常通过两种方式实现。一种是通过应用程序编程接口(APIs)将运行时引擎的内部信息暴露于编程代码。另一种是动态执行包含编程命令的字符串表达式。因此,“程序能够编写程序”。虽然两种方式都能用于同一种语言,但大多数语言趋向于偏向其中一种。 (zh) Метапрограмування — вид програмування, пов'язаний із створенням програмного коду, який на основі описів (метаданих) деяких процесів, алгоритмів або даних породжує інші програми для автоматизації описаних процесів, виконання послідовностей операцій алгоритмів або обробки даних. Метапрограмування засноване на метаданих, які можуть визначати типи, структуру або правила обробки даних, але не обмежується лише цим. Генеруючі код програми часто називають метапрограмами, a написання цих програм називається метапрограмуванням. (uk) Metaprogramování je programovací technika, založená na vytváření programů, které nakládají s jinými počítačovými programy jako se svými daty. Mohou je tedy modifikovat nebo vytvářet, případně i modifikovat samy sebe. To mimo jiné může umožnit již při kompilaci provádět činnosti, které by jinak musely proběhnout až za běhu programu. (cs) Ο όρος Μεταπρογραμματισμός (Αγγλικά: Metaprogramming) χαρακτηρίζει τα προγράμματα υπολογιστών τα οποία μπορούν να τροποποιούν προγράμματα. Για παράδειγμα ένα πρόγραμμα μπορεί κατά την διάρκεια της μεταγλώττισης να παράγει κώδικα ο οποίος στην συνέχεια μεταγλωττίζεται και δημιουργείται το εκτελέσιμο αρχείο σε γλώσσα μηχανής. Ο μεταπρογραμματισμός είναι όρος που χαρακτηρίζει τα «προγράμματα που παράγουν προγράμματα», δηλαδή προγράμματα τα οποία τροποποιούν/δημιουργούν πηγαίο κώδικα. Στην γλώσσα C++ ο μεταπρογραμματισμός συσχετίζεται με τον προγραμματισμό με χρήση πρότυπων templates. Σε γλώσσες σεναρίων (scripting languages) όπως η Ruby ο μεταπρογραμματισμός αναφέρεται στην δυνατότητα να προσθέτουμε νέο εκτελέσιμο κώδικα ο οποίος τροποποιεί την συμπεριφορά του προγράμματος κατά την εκτέλεση (el) La metaprogramación consiste en escribir programas que escriben o manipulan otros programas (o a sí mismos) como datos, o que hacen en tiempo de compilación parte del trabajo que, de otra forma, se haría en tiempo de ejecución. Esto permite al programador ahorrar tiempo en la producción de código. Un ejemplo sencillo de un metaprograma sería este script de Bash: #!/bin/bash # metaprogram echo '#!/bin/bash' >program for ((I=1; I<=992; I++)); do echo "echo $I" >>program done chmod +x program (es) Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyze or transform other programs, and even modify itself while running. In some cases, this allows programmers to minimize the number of lines of code to express a solution, in turn reducing development time. It also allows programs a greater flexibility to efficiently handle new situations without recompilation. (en) La métaprogrammation, nommée par analogie avec les métadonnées et les métaclasses[réf. souhaitée], désigne l'écriture de programmes qui manipulent des données décrivant elles-mêmes des programmes. Dans le cas particulier où le programme manipule ses propres instructions pendant son exécution, on parle de programme auto-modifiant. (fr) 메타프로그래밍(Metaprogramming)이란 자기 자신 혹은 다른 컴퓨터 프로그램을 데이터로 취급하며 프로그램을 작성·수정하는 것을 말한다. 넓은 의미에서, 런타임에 수행해야 할 작업의 일부를 컴파일 타임 동안 수행하는 프로그램을 말하기도 한다. 메타 프로그래밍에 이용되는 언어를 메타 언어라고 하고, 메타 프로그래밍의 대상이 되는 언어를 대상 언어라고 한다. 한 프로그래밍 언어가 자기 자신의 메타 언어가 되는 것을 반영이라고 한다. 메타 프로그래밍이 동작하는 방식은 세 가지 종류가 있다. 첫째 방식은, 런타임 엔진 코드를 API를 통해 프로그램에 노출시키는 방식이다. 둘째 방식은, 문자열이나 혹은 다른 형태로 된 프로그래밍 명령을 동적으로 수행시키는 방식이다. 둘째 방식을 이용하면 프로그램이 프로그램을 작성하게 할 수 있다. 한 언어가 이 두 방식을 동시에 취할 수도 있으나, 대개의 언어들은 둘 중 한 방식으로 치우치는 경향이 있다. (ko) Metaprogramowanie – technika umożliwiająca programom tworzenie lub modyfikację kodu innych programów (lub ich samych). Program będący w stanie modyfikować lub generować kod innego programu nazywa się metaprogramem. Wykorzystanie zasad metaprogramowania pozwala na przykład na dynamiczną modyfikację programu podczas jego kompilacji. Metaprogramy tworzy się w metajęzykach. Jeśli język jest jednocześnie swoim metajęzykiem, taką cechę nazywamy refleksyjnością (ang. reflexivity). (pl) Metaprogramação é a programação de programas que escrevem ou manipulam outros programas (ou a si próprios) assim como seus dados, ou que fazem parte do trabalho em tempo de compilação. Em alguns casos, isso permite que os programadores sejam mais produtivos ao evitar que parte do código seja escrita manualmente. A metaprogramação é geralmente implementada através de duas formas. A primeira é a exposição do mecanismo interno de execução ao código através de uma API. A segunda é a execução dinâmica de expressões de texto que contém comandos de programação. (pt)
rdfs:label Metaprogramming (en) برمجة وصفية (ar) Metaprogramování (cs) Metaprogrammierung (de) Μεταπρογραμματισμός (el) Metaprogramado (eo) Metaprogramación (es) Métaprogrammation (fr) メタプログラミング (ja) 메타프로그래밍 (ko) Metaprogramowanie (pl) Metaprogrammeren (nl) Metaprogramação (pt) Метапрограммирование (ru) Метапрограмування (uk) 元编程 (zh)
owl:sameAs freebase:Metaprogramming yago-res:Metaprogramming wikidata:Metaprogramming dbpedia-ar:Metaprogramming dbpedia-bg:Metaprogramming http://bn.dbpedia.org/resource/মেটাপ্রোগ্রামিং dbpedia-cs:Metaprogramming dbpedia-de:Metaprogramming dbpedia-el:Metaprogramming dbpedia-eo:Metaprogramming dbpedia-es:Metaprogramming dbpedia-et:Metaprogramming dbpedia-fa:Metaprogramming dbpedia-fr:Metaprogramming dbpedia-hu:Metaprogramming http://hy.dbpedia.org/resource/Մետածրագրավորում dbpedia-ja:Metaprogramming dbpedia-ko:Metaprogramming dbpedia-nl:Metaprogramming dbpedia-nn:Metaprogramming dbpedia-no:Metaprogramming dbpedia-pl:Metaprogramming dbpedia-pt:Metaprogramming dbpedia-ro:Metaprogramming dbpedia-ru:Metaprogramming dbpedia-sr:Metaprogramming dbpedia-th:Metaprogramming dbpedia-uk:Metaprogramming dbpedia-vi:Metaprogramming dbpedia-zh:Metaprogramming https://global.dbpedia.org/id/4qSNG
prov:wasDerivedFrom wikipedia-en:Metaprogramming?oldid=1120546751&ns=0
foaf:isPrimaryTopicOf wikipedia-en:Metaprogramming
is dbo:wikiPageRedirects of dbr:Meta-programming dbr:Meta_Programming dbr:Meta_programming dbr:Metaprogramming_(programming)
is dbo:wikiPageWikiLink of dbr:Program_synthesis dbr:Python_(programming_language) dbr:Ruby_(programming_language) dbr:Scheme_(programming_language) dbr:Scheme_48 dbr:Maya_Embedded_Language dbr:Meta dbr:M_Sharp dbr:Meta-knowledge dbr:Metacomputing dbr:Programming_and_Metaprogramming_in_the_Human_Biocomputer dbr:Bigloo dbr:Boost_(C++_libraries) dbr:AoS_and_SoA dbr:Hy dbr:JuMP dbr:Julia_(programming_language) dbr:Ring_(programming_language) dbr:Ur_(programming_language) dbr:Dynamic_compilation dbr:Incremental_compiler dbr:Index_of_object-oriented_programming_articles dbr:Inferential_programming dbr:Instruction_set_simulator dbr:Intentional_programming dbr:Interpreter_(computing) dbr:Let_expression dbr:Lib_Sh dbr:List_of_programming_languages_by_type dbr:Script.NET dbr:*Lisp dbr:Common_Lisp dbr:Maude_system dbr:SCM_(Scheme_implementation) dbr:SIOD dbr:Python_syntax_and_semantics dbr:Elixir_(programming_language) dbr:Emacs_Lisp dbr:Embeddable_Common_Lisp dbr:Franz_Lisp dbr:Fril dbr:Gambit_(Scheme_implementation) dbr:Glasgow_Haskell_Compiler dbr:Graph-tool dbr:Mocl dbr:MultiLisp dbr:Control_table dbr:Arc_(programming_language) dbr:LispWorks dbr:Lisp_(programming_language) dbr:Lua_(programming_language) dbr:MDL_(programming_language) dbr:MIT/GNU_Scheme dbr:Maclisp dbr:Boilerplate_code dbr:Snap!_(programming_language) dbr:Stalin_(Scheme_implementation) dbr:Comparison_of_multi-paradigm_programming_languages dbr:Comparison_of_programming_languages dbr:Compiler-compiler dbr:Feature-oriented_programming dbr:Programming_language_theory dbr:Spirit_Parser_Framework dbr:Baby_Modula-3 dbr:C++11 dbr:C_Sharp_(programming_language) dbr:TnFOX dbr:Type_system dbr:Data_(computer_science) dbr:Domain-specific_language dbr:Code_as_data dbr:Lambda_lifting dbr:UPCRC_Illinois dbr:ACL2 dbr:Ada_(programming_language) dbr:Allegro_Common_Lisp dbr:D_(programming_language) dbr:EuLisp dbr:Exception_handling dbr:Extensible_Embeddable_Language dbr:F_Sharp_(programming_language) dbr:Fantom_(programming_language) dbr:Flix_(programming_language) dbr:Nim_(programming_language) dbr:Form_follows_function dbr:History_of_programming_languages dbr:Iterative_Stencil_Loops dbr:RascalMPL dbr:Reification_(computer_science) dbr:Io_(programming_language) dbr:Template_(C++) dbr:Template_Haskell dbr:Hume_(programming_language) dbr:Why's_(poignant)_Guide_to_Ruby dbr:Assembly_language dbr:Abstraction_(computer_science) dbr:Ceylon_(programming_language) dbr:Chez_Scheme dbr:Chicken_(Scheme_implementation) dbr:LFE_(programming_language) dbr:Lasso_(programming_language) dbr:Le_Lisp dbr:T_(programming_language) dbr:Code_reuse dbr:Homoiconicity dbr:Program_transformation dbr:Template_metaprogramming dbr:Mogensen–Scott_encoding dbr:Tombstone_diagram dbr:Reflective_programming dbr:Aspect_weaver dbr:Automatic_programming dbr:PicoLisp dbr:Portable_Standard_Lisp dbr:Spice_Lisp dbr:Meta-programming dbr:Meta_Programming dbr:Meta_programming dbr:Metaprogramming_(programming) dbr:Ikarus_(Scheme_implementation) dbr:Interlisp dbr:Metaclass dbr:Metalanguage dbr:Nemerle dbr:Objective-C dbr:OpenLisp dbr:Open_Cobalt dbr:Racket_(programming_language) dbr:Red_(programming_language) dbr:Self-modifying_code dbr:Yesod_(web_framework) dbr:Macro_(computer_science) dbr:Model-driven_engineering dbr:Program_lifecycle_phase dbr:Extensible_programming dbr:ISLISP dbr:Programming_language dbr:Syntax-directed_translation dbr:Multi-stage_programming dbr:XBase dbr:Outline_of_computer_programming
is dbp:paradigm of dbr:M_Sharp dbr:Hy dbr:Julia_(programming_language) dbr:Script.NET dbr:Common_Lisp dbr:Emacs_Lisp dbr:Lisp_(programming_language) dbr:ACL2 dbr:Ada_(programming_language) dbr:EuLisp dbr:F_Sharp_(programming_language) dbr:T_(programming_language) dbr:Nemerle dbr:Racket_(programming_language)
is dbp:paradigms of dbr:Scheme_(programming_language) dbr:Scheme_48 dbr:Bigloo dbr:*Lisp dbr:SCM_(Scheme_implementation) dbr:SIOD dbr:Embeddable_Common_Lisp dbr:Franz_Lisp dbr:Gambit_(Scheme_implementation) dbr:Mocl dbr:MultiLisp dbr:Arc_(programming_language) dbr:LispWorks dbr:MDL_(programming_language) dbr:MIT/GNU_Scheme dbr:Maclisp dbr:Stalin_(Scheme_implementation) dbr:Allegro_Common_Lisp dbr:Nim_(programming_language) dbr:Chez_Scheme dbr:Chicken_(Scheme_implementation) dbr:Le_Lisp dbr:PicoLisp dbr:Portable_Standard_Lisp dbr:Spice_Lisp dbr:Ikarus_(Scheme_implementation) dbr:Interlisp dbr:OpenLisp dbr:ISLISP
is foaf:primaryTopic of wikipedia-en:Metaprogramming