Homoiconicity (original) (raw)

About DBpedia

Homoikonicita je v počítačovém programování vlastnost některých programovacích jazyků. Vyjadřuje skutečnost, že struktura programu je podobná jeho syntaxi. Vnitřní strukturu programu je možné odvodit z textového zápisu zdrojového kódu. V homoikonickém jazyce má zdrojový text stejnou strukturu jako jeho abstraktní syntaktický strom, což dovoluje veškerý kód v jazyce zpřístupnit, používat a transformovat jako data za použití stejné datové reprezentace.

Property Value
dbo:abstract Homoikonicita je v počítačovém programování vlastnost některých programovacích jazyků. Vyjadřuje skutečnost, že struktura programu je podobná jeho syntaxi. Vnitřní strukturu programu je možné odvodit z textového zápisu zdrojového kódu. V homoikonickém jazyce má zdrojový text stejnou strukturu jako jeho abstraktní syntaktický strom, což dovoluje veškerý kód v jazyce zpřístupnit, používat a transformovat jako data za použití stejné datové reprezentace. (cs) Homoikonizität (d. h. Selbst-Abbildbarkeit oder Selbst-Repräsentierbarkeit) ist die Eigenschaft von Programmiersprachen, dass Programme gleichzeitig Datenstrukturen derselben Sprache sind. In solchen Sprachen ist es einfach, Programme zu schreiben, die Programmcode derselben Sprache erzeugen. Wichtigstes Beispiel einer homoikonischen Programmiersprache ist Lisp und seine Ableitungen: Die grundlegenden Datenstrukturen sind Listen, Symbole, Zahlen, Strings und diese haben eine einfache externe Repräsentation als S-Expressions. Lisp-Programme werden ebenfalls ausschließlich aus Datenobjekten dieser Typen gebildet. Es ergibt sich somit in Lisp auf natürliche Weise (mit den eingebauten Funktionen für diese Datentypen) die Möglichkeit, Programmcode zu erzeugen und zu manipulieren. Dasselbe gilt für XSLT. Sowohl Programme als auch Daten der Sprache sind valides XML. Ebenfalls homoikonisch ist der Maschinencode von von-Neumann-Rechnern. Hier bestehen Daten und Programme gleichermaßen aus Binärwörtern in der Wortbreite der CPU. In einem erweiterten Sinn kann man weitere Sprachen als homoikonisch betrachten, zum Beispiel Prolog, REBOL, SNOBOL, TRAC, Tcl, Io, Joy, Julia, PostScript, R, und Elixir. Die Einschränkung ist bei diesen jedoch, dass Programme nicht direkt als strukturierte Daten verarbeitet werden können. Es gibt aber jeweils alternative Darstellungsmöglichkeiten für Programmcode, durch die das möglich wird. Eingeführt wurde der Begriff von Douglas McIlroy 1960 in dem Dokument Macro Instruction Extensions of Compiler Languages. 1965 verwendet ihn ein Dokument über die Textverarbeitungssprache TRAC. Alan Kay benutzte den Begriff 1969 in seiner Dissertationsschrift. (de) In computer programming, homoiconicity (from the Greek words homo- meaning "the same" and icon meaning "representation") is a property of some programming languages. A language is homoiconic if a program written in it can be manipulated as data using the language, and thus the program's internal representation can be inferred just by reading the program itself. This property is often summarized by saying that the language treats "code as data". In a homoiconic language, the primary representation of programs is also a data structure in a primitive type of the language itself. This makes metaprogramming easier than in a language without this property: reflection in the language (examining the program's entities at runtime) depends on a single, homogeneous structure, and it does not have to handle several different structures that would appear in a complex syntax. Homoiconic languages typically include full support of syntactic macros, allowing the programmer to express transformations of programs in a concise way. A commonly cited example is Lisp, which was created to allow for easy list manipulations and where the structure is given by S-expressions that take the form of nested lists, and can be manipulated by other Lisp code. Other examples are the programming languages Clojure (a contemporary dialect of Lisp), Rebol (also its successor Red), Refal, Prolog, and possibly Julia (see the section for more details). (en) En programación informática, la homoiconicidad es una propiedad de algunos lenguajes de programación, en los cuales la representación primaria de estos es también una estructura de datos en un tipo primitivo del lenguaje. (es) En programmation informatique, l'homoiconicité (de homo- : semblable, et icône : image) est une propriété de certains langages dans lesquels la principale représentation des programmes est aussi une structure de données d'un type primitif du langage. Les langages homoiconiques rassemblent la plupart des membres de la famille Lisp mais aussi APL, Prolog, REBOL, SNOBOL, XSLT, TRAC, Tcl, Io, Julia et Red. Cette propriété s'apparente à la réflexion dans les langages informatiques. (fr) 同図像性(どうずぞうせい、英:Homoiconicity)は、一部のプログラミング言語が持つ特性である 。 ある言語のコードをその言語で操作できる場合、その言語は同図像性があるという。 「プログラムコードをデータとして扱う」と呼ばれることもある。 同図像性はデータモデルを表現するための言語とプログラム言語が深く関連しているか、同一であることを意味する。 同図像性はメタプログラミングを容易にする。 同図像性を持つ代表的なプログラミング言語はLispである。Lispの構造は階層化されたリストの形式をとるS式によって与えられる。その結果、プログラムは実行中にある関数にアクセスでき、プログラムによってその場でその関数を変更できる。 (ja) Homoikoniczność (łac. homo - ten sam, icon - przedstawienie) - to cecha języków programowania, w których reprezentacja programu jest jednocześnie podstawową strukturą danych wykorzystywaną w języku. (pl) Гомоикони́чность (гомоиконность, англ. homoiconicity, англ. homoiconic, от греч. ὁμός — равный, одинаковый + «икони́чность» — отношение подобия между знаком и объектом, на который данный знак указывает (см. семиотика) — в свою очередь, от ср.-греч. εἰκόνα — «о́браз», «изображение») — свойство некоторых языков программирования, в которых структура программы похожа на его синтаксис, и поэтому внутреннее представление программы можно определить, прочитав текстовую разметку. Если язык гомоиконичен, это означает, что текст программы имеет такую же структуру, как её абстрактное синтаксическое дерево (то есть AST и синтаксис являются изоморфными). Это позволяет всему коду на языке быть доступным и обработанным в качестве данных, используя одно и то же представление. В гомоиконичном языке первичное представление программ является также структурой данных в примитивном типе самого языка. Это делает метапрограммирование проще, чем на языке без этого свойства, поскольку код может рассматриваться как данные: рефлексия в языке (определение структуры программы во время выполнения) основана на единой, однородной структуре, и не нужно обрабатывать несколько различных конструкций, которые возникают в сложных синтаксических конструкциях. Говоря иначе, гомоиконичность — это когда исходный код программы пишется как базовая структура данных и язык программирования знает, как получить к ней доступ. Типичным примером является язык программирования Лисп, который был создан, чтобы быть лёгким для списочных манипуляций, и где структура задана как S-выражения, которые принимают форму вложенных списков. Лисп-программы записываются в виде списков; в результате получается, что программа может получить доступ к своим собственным функциям во время работы, а также перепрограммировать себя «на лету». Гомоиконичные языки, как правило, включают полную поддержку синтаксических макросов, позволяющих программисту выражать программные преобразования в сжатой форме. Примерами таких языков программирования являются Clojure (современный диалект Лиспа), Rebol и Рефал. (ru) 在计算机编程中,同像性(homoiconicity來自希臘語單詞,homo-意為相同,icon含義表像),是某些编程语言的特殊屬性,它意味着一个程序的结构与其句法是相似的,因此易于通过阅读程序来推测程序的内在涵义。如果一门编程语言具备了同像性,说明该语言的文本表示(通常指源代码),與其抽象語法樹(AST)具有相同的結構(即AST和語法是同形的)。该特性允許使用相同的表示語法,將語言中的所有代碼當成数据,來存取以及轉換,提供了“代码即数据”的理论前提。 (zh) «Гомоіконність» (англ. Homoiconicity) — властивість мови програмування, у яких нема розрізнення між інструкціями програми і даними. Завдяки цьому код програми описується, як структура даних, яка однозначно відповідає її синтаксичному дереву. Це дозволяє мові легко описувати метапрограми, які можуть динамічно міняти свої інструкції. Наприклад, у Common Lisp та Scheme і код, і дані, описуються у вигляді так званих «списків». Машинні команди в архітектурі фон Неймана теж є гомоіконними, бо розглядають інструкції й дані узагальнено, як послідовність байтів. (uk)
dbo:wikiPageExternalLink http://c2.com/cgi/wiki%3FDefinitionOfHomoiconic
dbo:wikiPageID 4447184 (xsd:integer)
dbo:wikiPageLength 16298 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID 1109757100 (xsd:integer)
dbo:wikiPageWikiLink dbr:Prolog dbr:Scheme_(programming_language) dbr:Julia_(programming_language) dbr:Rexx dbr:Run_time_(program_lifecycle_phase) dbr:SNOBOL dbr:Nesting_(computing) dbr:Clojure dbr:Elixir_(programming_language) dbr:Greek_language dbr:Concatenative_programming_language dbr:Syntactic_macro dbr:Arity dbr:Lisp_(programming_language) dbr:Computer_programming dbr:Symbol_(programming) dbr:TRAC_(programming_language) dbr:Data_structure dbr:Language-oriented_programming dbr:APL_(programming_language) dbr:ASCII dbr:Alan_Kay dbr:Curl_(programming_language) dbr:S-expression dbr:Reification_(computer_science) dbr:Io_(programming_language) dbr:Tcl dbr:Abstract_syntax_tree dbc:Programming_language_topics dbr:LISP_(programming_language) dbr:Cognitive_dimensions_of_notations dbr:Douglas_McIlroy dbr:Metaprogramming dbr:R_(programming_language) dbr:Racket_(programming_language) dbr:Rebol dbr:Red_(programming_language) dbr:Refal dbr:Reflection_(computer_programming) dbr:Self-modifying_code dbr:Wolfram_Language dbr:XSLT dbr:Meta-circular_evaluator dbr:Von_Neumann_architecture dbr:Programming_language dbr:Eval dbr:Lisp_programming_language dbr:Symbolic_programming dbr:REFAL dbr:Primitive_type dbr:Burna-Buriash
dbp:wikiPageUsesTemplate dbt:Programming_paradigms dbt:Better_source_needed dbt:Div_col dbt:Div_col_end dbt:Quote dbt:Reflist dbt:Short_description
dcterms:subject dbc:Programming_language_topics
gold:hypernym dbr:Property
rdf:type yago:Abstraction100002137 yago:ArtificialLanguage106894544 yago:Communication100033020 yago:GrammaticalRelation113796779 yago:Inflection113803782 yago:Language106282651 yago:LinguisticRelation113797142 yago:Message106598915 yago:Paradigm113804375 yago:ProgrammingLanguage106898352 yago:Relation100031921 dbo:Building yago:Subject106599788 yago:WikicatProgrammingLanguageTopics yago:WikicatProgrammingLanguages yago:WikicatProgrammingParadigms
rdfs:comment Homoikonicita je v počítačovém programování vlastnost některých programovacích jazyků. Vyjadřuje skutečnost, že struktura programu je podobná jeho syntaxi. Vnitřní strukturu programu je možné odvodit z textového zápisu zdrojového kódu. V homoikonickém jazyce má zdrojový text stejnou strukturu jako jeho abstraktní syntaktický strom, což dovoluje veškerý kód v jazyce zpřístupnit, používat a transformovat jako data za použití stejné datové reprezentace. (cs) En programación informática, la homoiconicidad es una propiedad de algunos lenguajes de programación, en los cuales la representación primaria de estos es también una estructura de datos en un tipo primitivo del lenguaje. (es) En programmation informatique, l'homoiconicité (de homo- : semblable, et icône : image) est une propriété de certains langages dans lesquels la principale représentation des programmes est aussi une structure de données d'un type primitif du langage. Les langages homoiconiques rassemblent la plupart des membres de la famille Lisp mais aussi APL, Prolog, REBOL, SNOBOL, XSLT, TRAC, Tcl, Io, Julia et Red. Cette propriété s'apparente à la réflexion dans les langages informatiques. (fr) 同図像性(どうずぞうせい、英:Homoiconicity)は、一部のプログラミング言語が持つ特性である 。 ある言語のコードをその言語で操作できる場合、その言語は同図像性があるという。 「プログラムコードをデータとして扱う」と呼ばれることもある。 同図像性はデータモデルを表現するための言語とプログラム言語が深く関連しているか、同一であることを意味する。 同図像性はメタプログラミングを容易にする。 同図像性を持つ代表的なプログラミング言語はLispである。Lispの構造は階層化されたリストの形式をとるS式によって与えられる。その結果、プログラムは実行中にある関数にアクセスでき、プログラムによってその場でその関数を変更できる。 (ja) Homoikoniczność (łac. homo - ten sam, icon - przedstawienie) - to cecha języków programowania, w których reprezentacja programu jest jednocześnie podstawową strukturą danych wykorzystywaną w języku. (pl) 在计算机编程中,同像性(homoiconicity來自希臘語單詞,homo-意為相同,icon含義表像),是某些编程语言的特殊屬性,它意味着一个程序的结构与其句法是相似的,因此易于通过阅读程序来推测程序的内在涵义。如果一门编程语言具备了同像性,说明该语言的文本表示(通常指源代码),與其抽象語法樹(AST)具有相同的結構(即AST和語法是同形的)。该特性允許使用相同的表示語法,將語言中的所有代碼當成数据,來存取以及轉換,提供了“代码即数据”的理论前提。 (zh) «Гомоіконність» (англ. Homoiconicity) — властивість мови програмування, у яких нема розрізнення між інструкціями програми і даними. Завдяки цьому код програми описується, як структура даних, яка однозначно відповідає її синтаксичному дереву. Це дозволяє мові легко описувати метапрограми, які можуть динамічно міняти свої інструкції. Наприклад, у Common Lisp та Scheme і код, і дані, описуються у вигляді так званих «списків». Машинні команди в архітектурі фон Неймана теж є гомоіконними, бо розглядають інструкції й дані узагальнено, як послідовність байтів. (uk) Homoikonizität (d. h. Selbst-Abbildbarkeit oder Selbst-Repräsentierbarkeit) ist die Eigenschaft von Programmiersprachen, dass Programme gleichzeitig Datenstrukturen derselben Sprache sind. In solchen Sprachen ist es einfach, Programme zu schreiben, die Programmcode derselben Sprache erzeugen. Dasselbe gilt für XSLT. Sowohl Programme als auch Daten der Sprache sind valides XML. Ebenfalls homoikonisch ist der Maschinencode von von-Neumann-Rechnern. Hier bestehen Daten und Programme gleichermaßen aus Binärwörtern in der Wortbreite der CPU. (de) In computer programming, homoiconicity (from the Greek words homo- meaning "the same" and icon meaning "representation") is a property of some programming languages. A language is homoiconic if a program written in it can be manipulated as data using the language, and thus the program's internal representation can be inferred just by reading the program itself. This property is often summarized by saying that the language treats "code as data". (en) Гомоикони́чность (гомоиконность, англ. homoiconicity, англ. homoiconic, от греч. ὁμός — равный, одинаковый + «икони́чность» — отношение подобия между знаком и объектом, на который данный знак указывает (см. семиотика) — в свою очередь, от ср.-греч. εἰκόνα — «о́браз», «изображение») — свойство некоторых языков программирования, в которых структура программы похожа на его синтаксис, и поэтому внутреннее представление программы можно определить, прочитав текстовую разметку. Если язык гомоиконичен, это означает, что текст программы имеет такую же структуру, как её абстрактное синтаксическое дерево (то есть AST и синтаксис являются изоморфными). Это позволяет всему коду на языке быть доступным и обработанным в качестве данных, используя одно и то же представление. (ru)
rdfs:label Homoikonicita (cs) Homoikonizität (de) Homoiconicidad (es) Homoiconicité (fr) Homoiconicity (en) 同図像性 (ja) Homoikoniczność (pl) Гомоиконичность (ru) 同像性 (zh) Гомоіконність (uk)
owl:sameAs freebase:Homoiconicity yago-res:Homoiconicity wikidata:Homoiconicity dbpedia-cs:Homoiconicity dbpedia-de:Homoiconicity dbpedia-es:Homoiconicity dbpedia-fa:Homoiconicity dbpedia-fr:Homoiconicity dbpedia-hr:Homoiconicity dbpedia-ja:Homoiconicity dbpedia-pl:Homoiconicity dbpedia-ru:Homoiconicity dbpedia-sr:Homoiconicity dbpedia-uk:Homoiconicity dbpedia-zh:Homoiconicity https://global.dbpedia.org/id/54hKP
prov:wasDerivedFrom wikipedia-en:Homoiconicity?oldid=1109757100&ns=0
foaf:isPrimaryTopicOf wikipedia-en:Homoiconicity
is dbo:wikiPageRedirects of dbr:Homoiconic dbr:List_of_homoiconic_programming_languages
is dbo:wikiPageWikiLink of dbr:Scheme_(programming_language) dbr:Homoiconic dbr:Interpreter_(computing) dbr:Clojure dbr:Concatenative_programming_language dbr:Lisp_(programming_language) dbr:Computer_engineering_compendium dbr:C_Sharp_(programming_language) dbr:Code_as_data dbr:Language-oriented_programming dbr:Curl_(programming_language) dbr:Nim_(programming_language) dbr:List_of_Lisp-family_programming_languages dbr:Reification_(computer_science) dbr:Haystack_(MIT_project) dbr:Io_(programming_language) dbr:LFE_(programming_language) dbr:Cognitive_dimensions_of_notations dbr:Douglas_McIlroy dbr:Source_Code_in_Database dbr:Metaprogramming dbr:Rebol dbr:Red_(programming_language) dbr:Self-modifying_code dbr:Meta-circular_evaluator dbr:Extensible_programming dbr:Structure_editor dbr:Outline_of_computer_programming dbr:List_of_homoiconic_programming_languages
is foaf:primaryTopic of wikipedia-en:Homoiconicity