<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://wiki.mathnt.net/index.php?action=history&amp;feed=atom&amp;title=%EB%A9%94%ED%83%80%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D</id>
	<title>메타프로그래밍 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mathnt.net/index.php?action=history&amp;feed=atom&amp;title=%EB%A9%94%ED%83%80%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D"/>
	<link rel="alternate" type="text/html" href="https://wiki.mathnt.net/index.php?title=%EB%A9%94%ED%83%80%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&amp;action=history"/>
	<updated>2026-04-05T04:35:40Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://wiki.mathnt.net/index.php?title=%EB%A9%94%ED%83%80%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&amp;diff=51209&amp;oldid=prev</id>
		<title>2021년 2월 17일 (수) 08:02에 Pythagoras0님의 편집</title>
		<link rel="alternate" type="text/html" href="https://wiki.mathnt.net/index.php?title=%EB%A9%94%ED%83%80%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&amp;diff=51209&amp;oldid=prev"/>
		<updated>2021-02-17T08:02:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021년 2월 17일 (수) 08:02 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l100&quot; &gt;100번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;100번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 메타데이터 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==메타데이터==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===위키데이터===&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===위키데이터===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* ID :  [https://www.wikidata.org/wiki/Q661075 Q661075]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* ID :  [https://www.wikidata.org/wiki/Q661075 Q661075]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===Spacy 패턴 목록===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [{&amp;#039;LEMMA&amp;#039;: &amp;#039;metaprogramming&amp;#039;}]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Pythagoras0</name></author>
	</entry>
	<entry>
		<id>https://wiki.mathnt.net/index.php?title=%EB%A9%94%ED%83%80%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&amp;diff=47006&amp;oldid=prev</id>
		<title>Pythagoras0: /* 메타데이터 */ 새 문단</title>
		<link rel="alternate" type="text/html" href="https://wiki.mathnt.net/index.php?title=%EB%A9%94%ED%83%80%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&amp;diff=47006&amp;oldid=prev"/>
		<updated>2020-12-26T12:14:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;메타데이터: &lt;/span&gt; 새 문단&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2020년 12월 26일 (토) 12:14 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l99&quot; &gt;99번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;99번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===소스===&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===소스===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== 메타데이터 ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===위키데이터===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* ID :  [https://www.wikidata.org/wiki/Q661075 Q661075]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Pythagoras0</name></author>
	</entry>
	<entry>
		<id>https://wiki.mathnt.net/index.php?title=%EB%A9%94%ED%83%80%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&amp;diff=46320&amp;oldid=prev</id>
		<title>Pythagoras0: /* 노트 */ 새 문단</title>
		<link rel="alternate" type="text/html" href="https://wiki.mathnt.net/index.php?title=%EB%A9%94%ED%83%80%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&amp;diff=46320&amp;oldid=prev"/>
		<updated>2020-12-21T14:25:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;노트: &lt;/span&gt; 새 문단&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 노트 ==&lt;br /&gt;
&lt;br /&gt;
===위키데이터===&lt;br /&gt;
* ID :  [https://www.wikidata.org/wiki/Q661075 Q661075]&lt;br /&gt;
===말뭉치===&lt;br /&gt;
# Metaprogramming is writing programs that operate on other programs.&amp;lt;ref name=&amp;quot;ref_9a87d5dc&amp;quot;&amp;gt;[https://cs.lmu.edu/~ray/notes/metaprogramming/ metaprogramming]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Ruby just may win for the most metaprogramming-friendly and metaprogramming-rich language of them all.&amp;lt;ref name=&amp;quot;ref_9a87d5dc&amp;quot; /&amp;gt;&lt;br /&gt;
# You might think that Java, because it is so static and so verbose, couldn’t have too many metaprogramming features.&amp;lt;ref name=&amp;quot;ref_9a87d5dc&amp;quot; /&amp;gt;&lt;br /&gt;
# Go doesn’t really have the same kind of metaprogramming facilities you see in other dyanmic languages.&amp;lt;ref name=&amp;quot;ref_9a87d5dc&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming in JavaScript is one such concept that many of us may not be familiar with.&amp;lt;ref name=&amp;quot;ref_bf4fc8a9&amp;quot;&amp;gt;[https://www.freecodecamp.org/news/what-is-metaprogramming-in-javascript-in-english-please/ What is Metaprogramming in JavaScript? In English, please.]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# With ES6 (ECMAScript 2015), we have support for the Reflect and Proxy objects that allow us to do Metaprogramming with ease.&amp;lt;ref name=&amp;quot;ref_bf4fc8a9&amp;quot; /&amp;gt;&lt;br /&gt;
# Just to be clear, Metaprogramming wasn&amp;#039;t introduced in ES6.&amp;lt;ref name=&amp;quot;ref_bf4fc8a9&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data.&amp;lt;ref name=&amp;quot;ref_cc4c6380&amp;quot;&amp;gt;[https://en.wikipedia.org/wiki/Metaprogramming Metaprogramming]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# 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.&amp;lt;ref name=&amp;quot;ref_cc4c6380&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming was popular in the 1970s and 1980s using list processing languages such as LISP.&amp;lt;ref name=&amp;quot;ref_cc4c6380&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming enables developers to write programs and develop code that falls under the generic programming paradigm.&amp;lt;ref name=&amp;quot;ref_cc4c6380&amp;quot; /&amp;gt;&lt;br /&gt;
# The art of metaprogramming, Part 1 Stay tuned for additional content in this series.&amp;lt;ref name=&amp;quot;ref_4687ca23&amp;quot;&amp;gt;[https://www.ibm.com/developerworks/library/l-metaprog1/index.html Introduction to metaprogramming]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Code-generating programs are sometimes called metaprograms; writing such programs is called metaprogramming.&amp;lt;ref name=&amp;quot;ref_4687ca23&amp;quot; /&amp;gt;&lt;br /&gt;
# First let&amp;#039;s look at metaprogramming that involves textual macro languages.&amp;lt;ref name=&amp;quot;ref_4687ca23&amp;quot; /&amp;gt;&lt;br /&gt;
# We then looked at several metaprogramming systems and examples of their use.&amp;lt;ref name=&amp;quot;ref_4687ca23&amp;quot; /&amp;gt;&lt;br /&gt;
# In languages like C#, reflection is a form of metaprogramming since the program can examine information about itself.&amp;lt;ref name=&amp;quot;ref_ef7b79e6&amp;quot;&amp;gt;[https://stackoverflow.com/questions/514644/what-exactly-is-metaprogramming What exactly is metaprogramming?]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Finally, another common form of metaprogramming is when the program can change itself in non-trivial fashions.&amp;lt;ref name=&amp;quot;ref_ef7b79e6&amp;quot; /&amp;gt;&lt;br /&gt;
# Before we begin talking about metaprogramming, let me put a small disclaimer.&amp;lt;ref name=&amp;quot;ref_2bf2d827&amp;quot;&amp;gt;[https://medium.com/jspoint/a-brief-introduction-to-metaprogramming-in-javascript-88d13ed407b5 A brief introduction to Metaprogramming in JavaScript]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Metaprogramming can mean different things to different people and in the context of different programming languages.&amp;lt;ref name=&amp;quot;ref_2bf2d827&amp;quot; /&amp;gt;&lt;br /&gt;
# The word “program” gives the wrong impression in the context of metaprogramming and I will tell you why.&amp;lt;ref name=&amp;quot;ref_2bf2d827&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming concepts fall into two different categories.&amp;lt;ref name=&amp;quot;ref_2bf2d827&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming is the process of writing computer programs that treat programs as data, enabling them to analyze or transform existing programs or generate new ones.&amp;lt;ref name=&amp;quot;ref_3c2dfbbf&amp;quot;&amp;gt;[https://dl.acm.org/doi/fullHtml/10.1145/3354584 A Survey of Metaprogramming Languages]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# In this article, we introduce a taxonomy of metaprogramming languages and present a survey of metaprogramming languages and systems based on the taxonomy.&amp;lt;ref name=&amp;quot;ref_3c2dfbbf&amp;quot; /&amp;gt;&lt;br /&gt;
# The use of templates as a metaprogramming technique requires two distinct operations: a template must be defined, and a defined template must be instantiated.&amp;lt;ref name=&amp;quot;ref_09f389b2&amp;quot;&amp;gt;[https://en.wikipedia.org/wiki/Template_metaprogramming Template metaprogramming]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# that is, no variable can change value once it has been initialized, therefore template metaprogramming can be seen as a form of functional programming.&amp;lt;ref name=&amp;quot;ref_09f389b2&amp;quot; /&amp;gt;&lt;br /&gt;
# Though the syntax of template metaprogramming is usually very different from the programming language it is used with, it has practical uses.&amp;lt;ref name=&amp;quot;ref_09f389b2&amp;quot; /&amp;gt;&lt;br /&gt;
# As another, more significant, example of compile-time loop unrolling, template metaprogramming can be used to create length-n vector classes (where n is known at compile time).&amp;lt;ref name=&amp;quot;ref_09f389b2&amp;quot; /&amp;gt;&lt;br /&gt;
# You often hear that metaprogramming is something that only Ruby ninjas use, and that it simply isn’t for common mortals.&amp;lt;ref name=&amp;quot;ref_7f3bf615&amp;quot;&amp;gt;[https://www.toptal.com/ruby/ruby-metaprogramming-cooler-than-it-sounds Ruby Metaprogramming Is Even Cooler Than It Sounds]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Metaprogramming is a technique by which you can write code that writes code by itself dynamically at runtime.&amp;lt;ref name=&amp;quot;ref_7f3bf615&amp;quot; /&amp;gt;&lt;br /&gt;
# Let’s start with one and understand Ruby metaprogramming step-by-step.&amp;lt;ref name=&amp;quot;ref_7f3bf615&amp;quot; /&amp;gt;&lt;br /&gt;
# If we define an instance method in Object class (yes, we can reopen any class anytime, that’s yet another beauty of metaprogramming), we will have a self referring to the Object object inside it.&amp;lt;ref name=&amp;quot;ref_7f3bf615&amp;quot; /&amp;gt;&lt;br /&gt;
# What do we mean by “metaprogramming”?&amp;lt;ref name=&amp;quot;ref_aabb3ded&amp;quot;&amp;gt;[https://missing.csail.mit.edu/2020/metaprogramming/ Metaprogramming]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# this, this article has little more to say about template-metaprogramming.&amp;lt;ref name=&amp;quot;ref_78eaf77f&amp;quot;&amp;gt;[https://accu.org/journals/overload/13/66/guest_267/ Metaprogramming is Your Friend]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Of course, when we invoke a compiler we are not metaprogramming, we are simply using a metaprogram, but it is important to be aware of what&amp;#039;s going on.&amp;lt;ref name=&amp;quot;ref_78eaf77f&amp;quot; /&amp;gt;&lt;br /&gt;
# I guess this too is metaprogramming in a rather back-to-front form.&amp;lt;ref name=&amp;quot;ref_78eaf77f&amp;quot; /&amp;gt;&lt;br /&gt;
# Template metaprogramming experts use every preprocessor trick in the book.&amp;lt;ref name=&amp;quot;ref_78eaf77f&amp;quot; /&amp;gt;&lt;br /&gt;
# Name and briefly demonstrate any support your language has for metaprogramming.&amp;lt;ref name=&amp;quot;ref_82fb3414&amp;quot;&amp;gt;[https://rosettacode.org/wiki/Metaprogramming Metaprogramming]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Metaprogramming in C# can be achieved using the Text Template Transformation Toolkit.&amp;lt;ref name=&amp;quot;ref_82fb3414&amp;quot; /&amp;gt;&lt;br /&gt;
# Common Lisp is based on decades of metaprogramming, so programmers don&amp;#039;t have to roll their own to benefit from it.&amp;lt;ref name=&amp;quot;ref_82fb3414&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming, as understood for this task, is done with parse transformations in Erlang.&amp;lt;ref name=&amp;quot;ref_82fb3414&amp;quot; /&amp;gt;&lt;br /&gt;
# Solutions proposed in literature either restrict the metaprogramming capabilities or require application or library developers to apply performance improving techniques.&amp;lt;ref name=&amp;quot;ref_47a5e923&amp;quot;&amp;gt;[https://stefan-marr.de/papers/pldi-marr-et-al-zero-overhead-metaprogramming/ Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and without Compromises]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# This section motivates the usefulness of metaobject protocols and assesses the cost of related runtime metaprogramming techniques on modern VMs.&amp;lt;ref name=&amp;quot;ref_47a5e923&amp;quot; /&amp;gt;&lt;br /&gt;
# For instance, idiomatic Ruby embraces metaprogramming so that reflective method invocation and #method_missing are used in common libraries.&amp;lt;ref name=&amp;quot;ref_47a5e923&amp;quot; /&amp;gt;&lt;br /&gt;
# Workarounds such as psd_native and patterns to avoid metaprogramming foster the intuition that runtime metaprogramming is slow.&amp;lt;ref name=&amp;quot;ref_47a5e923&amp;quot; /&amp;gt;&lt;br /&gt;
# The metaprogramming services are provided as a library, so neither the Java language nor its virtual machine are modified.&amp;lt;ref name=&amp;quot;ref_24a1b598&amp;quot;&amp;gt;[https://www.sciencedirect.com/science/article/pii/S0164121219300792 Efficient runtime metaprogramming services for Java]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# We evaluate our system, called JMPLib, and compare it with the existing metaprogramming systems for the Java platform and other highly optimized dynamic languages.&amp;lt;ref name=&amp;quot;ref_24a1b598&amp;quot; /&amp;gt;&lt;br /&gt;
# Moreover, our system introduces no performance penalty when metaprogramming is not used, and consumes fewer memory resources than the rest of implementations for the Java platform.&amp;lt;ref name=&amp;quot;ref_24a1b598&amp;quot; /&amp;gt;&lt;br /&gt;
# In this paper, we deal with metaprogramming concepts required for easy definition of such mappings.&amp;lt;ref name=&amp;quot;ref_ef68ffa2&amp;quot;&amp;gt;[https://link.springer.com/chapter/10.1007/978-3-540-30464-7_49 Metaprogramming for Relational Databases]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# In Groovy, it&amp;#039;s possible to perform metaprogramming at both runtime and compile-time.&amp;lt;ref name=&amp;quot;ref_e7274d6b&amp;quot;&amp;gt;[https://www.baeldung.com/groovy-metaprogramming Metaprogramming in Groovy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Runtime metaprogramming enables us to alter the existing properties and methods of a class.&amp;lt;ref name=&amp;quot;ref_e7274d6b&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming in .NET is designed to help readers understand the basic concepts, advantages and potential pitfalls of metaprogramming.&amp;lt;ref name=&amp;quot;ref_3fcfa5cb&amp;quot;&amp;gt;[https://www.manning.com/books/metaprogramming-in-dot-net Metaprogramming in .NET]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# When you write programs that create or modify other programs, you are metaprogramming.&amp;lt;ref name=&amp;quot;ref_3fcfa5cb&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming in .NET is a practical introduction to the use of metaprogramming to improve the performance and maintainability of your code.&amp;lt;ref name=&amp;quot;ref_3fcfa5cb&amp;quot; /&amp;gt;&lt;br /&gt;
# no prior experience with metaprogramming is required.&amp;lt;ref name=&amp;quot;ref_3fcfa5cb&amp;quot; /&amp;gt;&lt;br /&gt;
# Consisting of eight chapters, the book starts with two chapters discussing basic techniques of metaprogramming and compile-time computing.&amp;lt;ref name=&amp;quot;ref_dc22c9ec&amp;quot;&amp;gt;[https://www.routledge.com/C-Template-Metaprogramming-in-Practice-A-Deep-Learning-Framework/Wei/p/book/9780367609566 C++ Template Metaprogramming in Practice A Deep Learning Framework]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# The rest of the book’s chapters focus on the practical application of metaprogramming in a deep learning framework.&amp;lt;ref name=&amp;quot;ref_dc22c9ec&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming can construct flexible and efficient code.&amp;lt;ref name=&amp;quot;ref_dc22c9ec&amp;quot; /&amp;gt;&lt;br /&gt;
# For C++ developers who are familiar with object-oriented programming, the main difficulty in learning and mastering C++ metaprogramming is establishing the thinking mode of functional programming.&amp;lt;ref name=&amp;quot;ref_dc22c9ec&amp;quot; /&amp;gt;&lt;br /&gt;
# Just like many other ruby developers, I wanted to learn metaprogramming to make the leap from Ruby novice to Ruby pro.&amp;lt;ref name=&amp;quot;ref_c0d654ab&amp;quot;&amp;gt;[https://www.udemy.com/course/ruby-metaprogramming/ Ruby Metaprogramming - Complete Course]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# This video course will teach you ruby metaprogramming by introducing small, simple and less known ruby insights in each video.&amp;lt;ref name=&amp;quot;ref_c0d654ab&amp;quot; /&amp;gt;&lt;br /&gt;
# But, once you are introduced to them, metaprogramming starts to make sense.&amp;lt;ref name=&amp;quot;ref_c0d654ab&amp;quot; /&amp;gt;&lt;br /&gt;
# In the second section of the course, we will cover all the SDK methods that are involved in metaprogramming.&amp;lt;ref name=&amp;quot;ref_c0d654ab&amp;quot; /&amp;gt;&lt;br /&gt;
# It provides a conceptual foundation and an extensive set of powerful and coherent tools that make doing explict metaprogramming in C++ as easy and enjoyable as possible within the current language.&amp;lt;ref name=&amp;quot;ref_96bd1600&amp;quot;&amp;gt;[https://www.boost.org/doc/libs/?view=category_metaprogramming Boost Library Documentation - Template Metaprogramming]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# With metaprogramming, you can produce elegant, clean, and beautiful programs.&amp;lt;ref name=&amp;quot;ref_1657614c&amp;quot;&amp;gt;[https://pragprog.com/titles/ppmetr2/metaprogramming-ruby-2/ Metaprogramming Ruby 2]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# most advanced feature: a collection of techniques and tricks known as metaprogramming.&amp;lt;ref name=&amp;quot;ref_1657614c&amp;quot; /&amp;gt;&lt;br /&gt;
# In this book, you’ll learn metaprogramming as an essential component of Ruby and discover the deep, non-obvious details of the language.&amp;lt;ref name=&amp;quot;ref_1657614c&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming Ruby, Second Edition makes mastering the language enjoyable.&amp;lt;ref name=&amp;quot;ref_1657614c&amp;quot; /&amp;gt;&lt;br /&gt;
# The following pages introduce the redesign of metaprogramming in Scala.&amp;lt;ref name=&amp;quot;ref_ce038cc2&amp;quot;&amp;gt;[http://dotty.epfl.ch/docs/reference/metaprogramming/toc.html Overview]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Or at least, there is no performance drop for using metaprogramming; the performance hit comes from it being much more difficult to efficiently compile the language at all.&amp;lt;ref name=&amp;quot;ref_16ccef05&amp;quot;&amp;gt;[https://wiki.tcl-lang.org/page/Meta+Programming Meta Programming]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Metaprogramming can often involve more than one level of quoting and interpretation.&amp;lt;ref name=&amp;quot;ref_16ccef05&amp;quot; /&amp;gt;&lt;br /&gt;
# Design contributed to an explosion of C++ libraries exploiting template-based metaprogramming by cataloging some of the basic techniques that are still in use today.&amp;lt;ref name=&amp;quot;ref_894e78e8&amp;quot;&amp;gt;[https://www.infoworld.com/article/3257727/introduction-to-metaprogramming-in-c-plus-plus.html?page=3 Introduction to metaprogramming in C++]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Additional important advances have been made by Louis Dionne in making metaprogramming syntactically more accessible, particularly through his Boost.&amp;lt;ref name=&amp;quot;ref_894e78e8&amp;quot; /&amp;gt;&lt;br /&gt;
# Dionne, along with Andrew Sutton, Herb Sutter, David Vandevoorde, and others are now spearheading efforts in the standardization committee to give metaprogramming first-class support in the language.&amp;lt;ref name=&amp;quot;ref_894e78e8&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming is the act of writing code that operates on code rather than on data.&amp;lt;ref name=&amp;quot;ref_d9e45231&amp;quot;&amp;gt;[https://www.rubymonk.com/learning/books/2-metaprogramming-ruby/chapters/32-introduction-to-metaprogramming/lessons/75-being-meta Metaprogramming Ruby]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# Metaprogramming is supported across many languages using many different techniques; you’ve probably used some of them already.&amp;lt;ref name=&amp;quot;ref_d9e45231&amp;quot; /&amp;gt;&lt;br /&gt;
# Learning when metaprogramming is the right tool for the job will be of considerable value to you in creating powerful yet maintainable codebases.&amp;lt;ref name=&amp;quot;ref_d9e45231&amp;quot; /&amp;gt;&lt;br /&gt;
# Among several ways we can do Metaprogramming in JavaScript, usage of Proxy object is one of the important one.&amp;lt;ref name=&amp;quot;ref_7249ade9&amp;quot;&amp;gt;[https://dev.to/atapas/metaprogramming-an-introduction-to-javascript-es6-proxy-4pfh Metaprogramming: An Introduction to JavaScript(ES6) Proxy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &amp;#039;Proxy&amp;#039; is not the only concept for JavaScript based Metaprogramming, there are are others like, Reflect.&amp;lt;ref name=&amp;quot;ref_7249ade9&amp;quot; /&amp;gt;&lt;br /&gt;
# Many people think that metaprogramming in Python unnecessarily complicates the code, but if you use it correctly, you can quickly and elegantly implement complex design patterns.&amp;lt;ref name=&amp;quot;ref_31d7a0de&amp;quot;&amp;gt;[https://www.smartspate.com/the-metaprogramming-in-production-on-python-part-1/ The Metaprogramming In Production On Python Part 1]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# In this article, I’ll tell you why you shouldn’t be afraid to use metaprogramming in your projects and show you what tasks it is best for.&amp;lt;ref name=&amp;quot;ref_31d7a0de&amp;quot; /&amp;gt;&lt;br /&gt;
# For first, let’s recall the basics of metaprogramming in Python.&amp;lt;ref name=&amp;quot;ref_31d7a0de&amp;quot; /&amp;gt;&lt;br /&gt;
# This description, of course, does not cover all the nuances of the use of metaclasses, but it is enough to start applying metaprogramming to implement some architectural patterns.&amp;lt;ref name=&amp;quot;ref_31d7a0de&amp;quot; /&amp;gt;&lt;br /&gt;
# Metaprogramming is powerful, and was central to Viaweb (20-25% of the code, according to Graham).&amp;lt;ref name=&amp;quot;ref_a41636aa&amp;quot;&amp;gt;[https://www.ianbicking.org/the-challenge-of-metaprogramming.html The Challenge Of Metaprogramming]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# So I think it&amp;#039;s really important that we approach metaprogramming with caution.&amp;lt;ref name=&amp;quot;ref_a41636aa&amp;quot; /&amp;gt;&lt;br /&gt;
# This course surveys principled approaches to metaprogramming; writing programs that manipulate programs.&amp;lt;ref name=&amp;quot;ref_fa7668f2&amp;quot;&amp;gt;[https://www.cl.cam.ac.uk/teaching/1819/L305/ Department of Computer Science and Technology – Course pages 2018–19: Metaprogramming]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# If your metaprogramming needs are rather simple, perhaps the easiest way to generate code at run time is through a templating engine.&amp;lt;ref name=&amp;quot;ref_7431c8f6&amp;quot;&amp;gt;[https://documen.tician.de/pycuda/metaprog.html PyCUDA 2020.1 documentation]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# You can also find an example of matrix multiplication optimization using template metaprogramming with Cheetah in demo_meta_matrixmul_cheetah.py and demo_meta_matrixmul_cheetah.template.cu .&amp;lt;ref name=&amp;quot;ref_7431c8f6&amp;quot; /&amp;gt;&lt;br /&gt;
# Today, I’m writing a followup for my KotlinConf talk on Kotlin, TornadoFX, and metaprogramming.&amp;lt;ref name=&amp;quot;ref_ed59315d&amp;quot;&amp;gt;[https://towardsdatascience.com/kotlin-the-next-frontier-in-modern-meta-programming-8c0ac2babfaa Kotlin: The Next Frontier in Modern (Meta)Programming]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# In the talk, I draw generalized definitions of crosscutting and explore common forms of metaprogramming.&amp;lt;ref name=&amp;quot;ref_ed59315d&amp;quot; /&amp;gt;&lt;br /&gt;
# Wizards are error prone to user input, making it the lowest form of metaprogramming.&amp;lt;ref name=&amp;quot;ref_ed59315d&amp;quot; /&amp;gt;&lt;br /&gt;
# True metaprogramming does not respect encapsulation.&amp;lt;ref name=&amp;quot;ref_ed59315d&amp;quot; /&amp;gt;&lt;br /&gt;
# Check out SO for community discussions on template metaprogramming.&amp;lt;ref name=&amp;quot;ref_1e1a5210&amp;quot;&amp;gt;[https://levelup.gitconnected.com/template-metaprogramming-a-c-walkthrough-a7c6db0b4148 Template Metaprogramming: A C++ walkthrough]&amp;lt;/ref&amp;gt;&lt;br /&gt;
# but if you have ever worked with decorators or metaclasses, your were doing metaprogramming there.&amp;lt;ref name=&amp;quot;ref_c57992ba&amp;quot;&amp;gt;[https://www.geeksforgeeks.org/metaprogramming-metaclasses-python/ Metaprogramming with Metaclasses in Python]&amp;lt;/ref&amp;gt;&lt;br /&gt;
===소스===&lt;br /&gt;
 &amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pythagoras0</name></author>
	</entry>
</feed>