<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://ko.techpedia.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LunaStev</id>
	<title>TechPedia - 사용자 기여 [ko]</title>
	<link rel="self" type="application/atom+xml" href="https://ko.techpedia.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LunaStev"/>
	<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/wiki/%ED%8A%B9%EC%88%98:%EA%B8%B0%EC%97%AC/LunaStev"/>
	<updated>2026-05-07T10:54:00Z</updated>
	<subtitle>사용자 기여</subtitle>
	<generator>MediaWiki 1.42.7</generator>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Zen_C&amp;diff=234</id>
		<title>Zen C</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Zen_C&amp;diff=234"/>
		<updated>2026-02-03T08:15:06Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 새 문서: {{소프트웨어 언어 정보  | 이름      = Zen C  | 개발자    = &amp;#039;&amp;#039;&amp;#039;Zuhaitz&amp;#039;&amp;#039;&amp;#039;  | 출시일    = &amp;#039;&amp;#039;&amp;#039;2026년 1월 26일&amp;#039;&amp;#039;&amp;#039;  | 최신 버전 = &amp;#039;&amp;#039;&amp;#039;0.4.0&amp;#039;&amp;#039;&amp;#039;  | 확장자    = &amp;#039;&amp;#039;.zc&amp;#039;&amp;#039;  | 라이선스  = &amp;#039;&amp;#039;&amp;#039;MIT&amp;#039;&amp;#039;&amp;#039;  | 저장소    = https://github.com/z-libs/Zen-C  | 웹사이트  = https://www.zenc-lang.org/ }}  &amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  == 개요 ==  Zen C는 Zuhaitz가 개발한 현대적인 문법을 제공하면서도 최종적으로 사람이 읽을 수 있는 GNU...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{소프트웨어 언어 정보&lt;br /&gt;
 | 이름      = Zen C&lt;br /&gt;
 | 개발자    = &#039;&#039;&#039;Zuhaitz&#039;&#039;&#039;&lt;br /&gt;
 | 출시일    = &#039;&#039;&#039;2026년 1월 26일&#039;&#039;&#039;&lt;br /&gt;
 | 최신 버전 = &#039;&#039;&#039;0.4.0&#039;&#039;&#039;&lt;br /&gt;
 | 확장자    = &#039;&#039;.zc&#039;&#039;&lt;br /&gt;
 | 라이선스  = &#039;&#039;&#039;MIT&#039;&#039;&#039;&lt;br /&gt;
 | 저장소    = https://github.com/z-libs/Zen-C&lt;br /&gt;
 | 웹사이트  = https://www.zenc-lang.org/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&lt;br /&gt;
Zen C는 Zuhaitz가 개발한 현대적인 문법을 제공하면서도 최종적으로 사람이 읽을 수 있는 GNU C/C11 코드로 컴파일되는 프로그래밍 언어다.&lt;br /&gt;
&lt;br /&gt;
== 주요 특징 ==&lt;br /&gt;
&lt;br /&gt;
* 고수준 기능: 타입 추론과 패턴 매칭, 제네릭, 트레이트, &amp;lt;code&amp;gt;async/await&amp;lt;/code&amp;gt;을 지원한다.&lt;br /&gt;
* C 호환성: 100% C ABI 호환성을 유지하며 C, C++, CUDA, Objective-C와 원활하게 상호작용합니다.&lt;br /&gt;
* 이식성: APE(Actually Portable Executable) 빌드를 지원하여 하나의 바이너리로 리눅스, macOS, 윈도우 등 다양한 OS에서 실행 가능합니다.&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4&amp;diff=233</id>
		<title>프로그래밍 언어</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4&amp;diff=233"/>
		<updated>2026-02-03T08:10:19Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* Z */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{언어&lt;br /&gt;
 | 한국어=https://ko.techpedia.wiki/wiki/프로그래밍_언어&lt;br /&gt;
 | 영어=https://en.techpedia.wiki/wiki/Programming_languages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;프로그래밍 언어&#039;&#039;&#039;(Programming Language)는 컴퓨터에게 명령을 전달하고 문제를 해결하기 위해 사람이 설계한 &#039;&#039;&#039;형식적 언어(formal language)&#039;&#039;&#039;이다.  &lt;br /&gt;
이 언어는 인간의 논리적 사고를 기계가 이해할 수 있는 구조로 변환하기 위해 고안되었으며,  &lt;br /&gt;
&#039;&#039;&#039;문법(syntax)&#039;&#039;&#039;, &#039;&#039;&#039;의미(semantics)&#039;&#039;&#039;, &#039;&#039;&#039;실행 모델(execution model)&#039;&#039;&#039;이라는 세 가지 축을 기반으로 구성된다.  &lt;br /&gt;
&lt;br /&gt;
프로그래밍 언어는 컴퓨터 과학의 근간을 이루는 도구로서,  &lt;br /&gt;
인간의 사고를 기계적 연산으로 전환하는 가장 직접적인 매개체이다.  &lt;br /&gt;
언어의 설계와 발전은 하드웨어의 진화, 소프트웨어 공학의 확립, 그리고 인공지능·데이터 과학의 확장과 맞물려 지속적으로 변화해왔다.  &lt;br /&gt;
&lt;br /&gt;
각 언어는 특정한 목표와 철학을 바탕으로 만들어지며,  &lt;br /&gt;
이는 곧 해당 언어가 어떤 문제를 해결하기 위해 설계되었는지를 반영한다.  &lt;br /&gt;
예를 들어, &#039;&#039;&#039;[[C (프로그래밍 언어)]]&#039;&#039;&#039;는 하드웨어 제어를 위한 저수준 접근성을,  &lt;br /&gt;
&#039;&#039;&#039;[[Python]]&#039;&#039;&#039;은 생산성과 가독성을,  &lt;br /&gt;
&#039;&#039;&#039;[[Rust]]&#039;&#039;&#039;는 메모리 안전성과 성능의 균형을 중시한다.  &lt;br /&gt;
&lt;br /&gt;
프로그래밍 언어의 주요 역할은 다음과 같다:&lt;br /&gt;
* &#039;&#039;&#039;알고리즘과 논리의 표현:&#039;&#039;&#039; 문제 해결 과정을 구조적으로 기술  &lt;br /&gt;
* &#039;&#039;&#039;데이터와 제어 흐름의 정의:&#039;&#039;&#039; 프로그램의 상태와 동작 순서를 규정  &lt;br /&gt;
* &#039;&#039;&#039;하드웨어 및 소프트웨어와의 상호작용:&#039;&#039;&#039; 시스템 자원 접근 및 외부 세계와의 통신  &lt;br /&gt;
&lt;br /&gt;
현대의 프로그래밍 언어는 학문적 실험을 넘어 산업 전반에 걸쳐 사용되며,  &lt;br /&gt;
교육, 연구, 공학, 예술, 과학 시각화, 창작 등 광범위한 분야에서 핵심적인 역할을 수행한다.  &lt;br /&gt;
이는 단순한 도구를 넘어, &#039;&#039;&#039;인류의 지식 체계와 기술 발전을 이끄는 언어적 기반&#039;&#039;&#039;으로 평가된다.  &lt;br /&gt;
&lt;br /&gt;
== 프로그래밍 언어 목록 ==&lt;br /&gt;
아래는 TechPedia에서 다루는 프로그래밍 언어의 목록입니다.  &lt;br /&gt;
이 목록은 &#039;&#039;&#039;이름순(숫자 → 알파벳 → 기타)&#039;&#039;&#039; 으로 정리됩니다.  &lt;br /&gt;
새로운 언어 문서를 만들면 여기에 추가하세요.&lt;br /&gt;
&lt;br /&gt;
=== 0–9 ===&lt;br /&gt;
* [[1C:Enterprise]]&lt;br /&gt;
* [[4th Dimension]]&lt;br /&gt;
&lt;br /&gt;
=== A ===&lt;br /&gt;
* [[Ada]]&lt;br /&gt;
* [[ALGOL]]&lt;br /&gt;
* [[APL]]&lt;br /&gt;
* [[Assembly]]&lt;br /&gt;
&lt;br /&gt;
=== B ===&lt;br /&gt;
* [[B]]&lt;br /&gt;
* [[BASIC]]&lt;br /&gt;
* [[Brainfuck]]&lt;br /&gt;
&lt;br /&gt;
=== C ===&lt;br /&gt;
* [[C (프로그래밍 언어)]]&lt;br /&gt;
* [[C/AL]]&lt;br /&gt;
* [[C Shell]]&lt;br /&gt;
* [[C--]]&lt;br /&gt;
* [[C++]]&lt;br /&gt;
* [[C*]]&lt;br /&gt;
* [[C＃]]&lt;br /&gt;
* [[Caché ObjectScript]]&lt;br /&gt;
* [[Caml]]&lt;br /&gt;
* [[Carbon]]&lt;br /&gt;
* [[Cayenne]]&lt;br /&gt;
* [[Cecil]]&lt;br /&gt;
* [[CESIL]]&lt;br /&gt;
* [[Céu]]&lt;br /&gt;
* [[Ceylon]]&lt;br /&gt;
* [[CFEngine]]&lt;br /&gt;
* [[CFML]]&lt;br /&gt;
* [[Cg]]&lt;br /&gt;
* [[Ch]]&lt;br /&gt;
* [[Chapel]]&lt;br /&gt;
* [[Charm]]&lt;br /&gt;
* [[CHILL]]&lt;br /&gt;
* [[CHIP-8]]&lt;br /&gt;
* [[ChucK]]&lt;br /&gt;
* [[Cilk]]&lt;br /&gt;
* [[Claire]]&lt;br /&gt;
* [[Clean]]&lt;br /&gt;
* [[Clipper]]&lt;br /&gt;
* [[CLIPS]]&lt;br /&gt;
* [[CLIST]]&lt;br /&gt;
* [[Clojure]]&lt;br /&gt;
* [[CLU]]&lt;br /&gt;
* [[CMS-2]]&lt;br /&gt;
* [[COBOL]]&lt;br /&gt;
* [[CobolScript]]&lt;br /&gt;
* [[Cobra]]&lt;br /&gt;
* [[CoffeeScript]]&lt;br /&gt;
* [[ColdFusion]]&lt;br /&gt;
* [[COMAL]]&lt;br /&gt;
* [[COMIT]]&lt;br /&gt;
* [[Common Intermediate]]&lt;br /&gt;
* [[Common Lisp]]&lt;br /&gt;
* [[COMPASS]]&lt;br /&gt;
* [[Component Pascal]]&lt;br /&gt;
* [[COMTRAN]]&lt;br /&gt;
* [[Concurrent Pascal]]&lt;br /&gt;
* [[Constraint Handling Rules]]&lt;br /&gt;
* [[Control Language]]&lt;br /&gt;
* [[Coq]]&lt;br /&gt;
* [[CORAL]]&lt;br /&gt;
* [[CorVision]]&lt;br /&gt;
* [[COWSEL]]&lt;br /&gt;
* [[CPL]]&lt;br /&gt;
* [[Cryptol]]&lt;br /&gt;
* [[Crystal]]&lt;br /&gt;
* [[Csound]]&lt;br /&gt;
* [[Cuneiform]]&lt;br /&gt;
* [[Curl]]&lt;br /&gt;
* [[Curry]]&lt;br /&gt;
* [[Cybil]]&lt;br /&gt;
* [[Cyclone]]&lt;br /&gt;
* [[Cypher Query Language]]&lt;br /&gt;
* [[Cython]]&lt;br /&gt;
&lt;br /&gt;
=== D ===&lt;br /&gt;
* [[D]]&lt;br /&gt;
* [[Dart]]&lt;br /&gt;
&lt;br /&gt;
=== E ===&lt;br /&gt;
* [[Eiffel]]&lt;br /&gt;
* [[Elixir]]&lt;br /&gt;
* [[Erlang]]&lt;br /&gt;
&lt;br /&gt;
=== F ===&lt;br /&gt;
* [[F＃]]&lt;br /&gt;
* [[Fortran]]&lt;br /&gt;
&lt;br /&gt;
=== G ===&lt;br /&gt;
* [[Go]]&lt;br /&gt;
* [[Groovy]]&lt;br /&gt;
&lt;br /&gt;
=== H ===&lt;br /&gt;
* [[Haskell]]&lt;br /&gt;
&lt;br /&gt;
=== J ===&lt;br /&gt;
* [[Java]]&lt;br /&gt;
* [[JavaScript]]&lt;br /&gt;
* [[Julia]]&lt;br /&gt;
&lt;br /&gt;
=== K ===&lt;br /&gt;
* [[Kotlin]]&lt;br /&gt;
&lt;br /&gt;
=== L ===&lt;br /&gt;
* [[Lisp]]&lt;br /&gt;
* [[Lua]]&lt;br /&gt;
&lt;br /&gt;
=== M ===&lt;br /&gt;
* [[MATLAB]]&lt;br /&gt;
* [[Modula-2]]&lt;br /&gt;
&lt;br /&gt;
=== N ===&lt;br /&gt;
* [[Nim]]&lt;br /&gt;
&lt;br /&gt;
=== O ===&lt;br /&gt;
* [[Objective-C]]&lt;br /&gt;
* [[OCaml]]&lt;br /&gt;
&lt;br /&gt;
=== P ===&lt;br /&gt;
* [[Pascal]]&lt;br /&gt;
* [[Perl]]&lt;br /&gt;
* [[PHP]]&lt;br /&gt;
* [[Prolog]]&lt;br /&gt;
* [[Python]]&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
* [[R]]&lt;br /&gt;
* [[Ruby]]&lt;br /&gt;
* [[Rust]]&lt;br /&gt;
&lt;br /&gt;
=== S ===&lt;br /&gt;
* [[Scala]]&lt;br /&gt;
* [[Scheme]]&lt;br /&gt;
* [[Smalltalk]]&lt;br /&gt;
* [[Swift]]&lt;br /&gt;
&lt;br /&gt;
=== T ===&lt;br /&gt;
* [[Tcl]]&lt;br /&gt;
* [[TypeScript]]&lt;br /&gt;
&lt;br /&gt;
=== V ===&lt;br /&gt;
* [[V]]&lt;br /&gt;
* [[Verilog]]&lt;br /&gt;
* [[VHDL]]&lt;br /&gt;
* [[Visual Basic]]&lt;br /&gt;
&lt;br /&gt;
=== W ===&lt;br /&gt;
* [[Wave]]&lt;br /&gt;
* [[Whitespace]]&lt;br /&gt;
&lt;br /&gt;
=== Z ===&lt;br /&gt;
* [[Zen C]]&lt;br /&gt;
* [[Zeta]]&lt;br /&gt;
* [[Zig]]&lt;br /&gt;
&lt;br /&gt;
=== 기타 ===&lt;br /&gt;
* [[Malbolge]]&lt;br /&gt;
* [[INTERCAL]]&lt;br /&gt;
* [[에소테릭 프로그래밍 언어]]&lt;br /&gt;
* [[마크업 언어]]&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[컴퓨터 과학 기초]]&lt;br /&gt;
* [[컴파일러와 도구]]&lt;br /&gt;
* [[운영체제]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;이 문서는 프로그래밍 언어의 개념을 설명하는 동시에, TechPedia에서 제공하는 언어 목록의 허브 역할을 합니다.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=232</id>
		<title>Wave</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=232"/>
		<updated>2025-12-03T02:54:24Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{소프트웨어 언어 정보&lt;br /&gt;
 | 이름      = Wave&lt;br /&gt;
 | 로고      = [[File:Wave_logo.png|120px]]&lt;br /&gt;
 | 개발자    = LunaStev&lt;br /&gt;
 | 출시일    = 2025년 1월 14일&lt;br /&gt;
 | 최신 버전 = v0.1.5-pre-beta&lt;br /&gt;
 | 확장자    = &#039;&#039;&#039;.wave&#039;&#039;&#039;&lt;br /&gt;
 | 라이선스  = MPL-2.0&lt;br /&gt;
 | 저장소    = [https://github.com/wavefnd/Wave GitHub]&lt;br /&gt;
 | 웹사이트  = https://wave-lang.dev/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wave&#039;&#039;&#039;는 시스템 소프트웨어 엔지니어 &#039;&#039;&#039;LunaStev&#039;&#039;&#039;가 개발한 범용 프로그래밍 언어이다.  &lt;br /&gt;
Wave는 저수준 언어의 성능과 고수준 언어의 추상화를 동시에 추구하며, &#039;&#039;“Reimagining Low-Level Programming”&#039;&#039;(저수준 프로그래밍의 재정의)을 철학으로 한다.  &lt;br /&gt;
Rust와 C 계열의 언어 디자인 철학을 계승하면서도, 새로운 문법 구조와 통합 생태계를 통해 다양한 영역(시스템, 네트워크, 웹, AI 등)에서 단일 언어로 개발이 가능하도록 설계되었다.&lt;br /&gt;
&lt;br /&gt;
Wave는 컴파일 언어이며, 기본적으로 LLVM 백엔드를 기반으로 하지만, 장기적으로는 독자적인 툴체인인 &#039;&#039;&#039;Whale&#039;&#039;&#039;을 중심으로 완전한 독립 생태계를 구축할 계획이다. &amp;lt;ref&amp;gt;https://www.wave-lang.dev/docs/ecosystem/whale&amp;lt;/ref&amp;gt;&lt;br /&gt;
또한 패키지 매니저 &#039;&#039;&#039;Vex&#039;&#039;&#039;, 직렬화 포맷 &#039;&#039;&#039;WSON&#039;&#039;&#039;, 표준 라이브러리 집합 등 언어 자체의 통합 환경을 제공한다.  &lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
* &#039;&#039;&#039;2024년 5월&#039;&#039;&#039;: Wave 개발 착수  &lt;br /&gt;
* &#039;&#039;&#039;2024년 12월&#039;&#039;&#039;: LLVM 기반 초기 컴파일러 프로토타입 완성  &lt;br /&gt;
* &#039;&#039;&#039;2025년 1월 14일&#039;&#039;&#039;: Wave 공식 릴리스(버전 0.0.1-pre-alpha)&lt;br /&gt;
* &#039;&#039;&#039;2025년 8월 1일&#039;&#039;&#039;: v0.1.4-pre-beta 출시&lt;br /&gt;
&lt;br /&gt;
== 설계 철학 ==&lt;br /&gt;
Wave의 핵심 철학은 “&#039;&#039;&#039;명시적, 예측 가능, 통합적&#039;&#039;&#039;”이다.  &lt;br /&gt;
이는 단순히 문법적 간결함이 아닌, 시스템 수준까지 일관된 동작을 추구하는 디자인으로 이어진다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;명시적 타입 지정&#039;&#039;&#039; — 모든 변수는 타입을 반드시 선언해야 하며, 타입 추론은 지원하지 않는다.  &lt;br /&gt;
* &#039;&#039;&#039;FFI 최소화&#039;&#039;&#039; — Wave는 외부 언어에 의존하지 않고, 공식적으로 자체 표준 라이브러리로 완결된 생태계를 구축한다.  &lt;br /&gt;
* &#039;&#039;&#039;낮은 복잡도&#039;&#039;&#039; — Rust와 유사한 안전성을 유지하면서, 불필요한 추상화나 복잡한 매크로 시스템을 제거한다.  &lt;br /&gt;
* &#039;&#039;&#039;C 스타일 문법&#039;&#039;&#039; — C 언어의 친숙한 구조를 유지하되, 현대적 오류 처리와 체인 API를 제공한다.  &lt;br /&gt;
* &#039;&#039;&#039;성능 중심&#039;&#039;&#039; — 가비지 컬렉션을 도입하지 않으며, 필요 시 직접 메모리 제어 가능.  &lt;br /&gt;
&lt;br /&gt;
== 언어 구조 ==&lt;br /&gt;
=== 기본 문법 ===&lt;br /&gt;
Wave의 기본 문법은 C/Rust 계열 구조를 기반으로 하며, 함수 중심의 실행 구조를 가진다.  &lt;br /&gt;
모든 프로그램은 반드시 &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; 함수를 포함해야 하며, Wave는 해당 함수를 자동으로 탐색하여 실행한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var name: str = &amp;quot;Wave&amp;quot;;&lt;br /&gt;
    let version: f32 = 0.1;&lt;br /&gt;
    println(&amp;quot;Language: {}, Version: {}&amp;quot;, name, version);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 변수 선언 ===&lt;br /&gt;
* &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt;: 가변 변수 선언  &lt;br /&gt;
* &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;: 불변 변수 선언  &lt;br /&gt;
* 타입은 반드시 명시해야 하며, 다음과 같은 예를 가질 수 있다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
var count: i32 = 10;&lt;br /&gt;
let message: str = &amp;quot;Hello Wave&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 제어문 ===&lt;br /&gt;
Wave는 &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; 등의 제어문을 지원한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var i: i32 = 0;&lt;br /&gt;
    while (i &amp;lt; 5) {&lt;br /&gt;
        if (i == 3) {&lt;br /&gt;
            println(&amp;quot;Reached 3, breaking.&amp;quot;);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
        println(&amp;quot;i = {}&amp;quot;, i);&lt;br /&gt;
        i = i + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 함수 ===&lt;br /&gt;
Wave는 강타입 기반의 함수 선언을 지원하며, 반환 타입은 반드시 명시해야 한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun add(a: i32, b: i32) -&amp;gt; i32 {&lt;br /&gt;
    return a + b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fun main() {&lt;br /&gt;
    let result: i32 = add(5, 3);&lt;br /&gt;
    println(&amp;quot;Result: {}&amp;quot;, result);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 표준 라이브러리 ==&lt;br /&gt;
Wave는 표준 라이브러리와 핵심 모듈을 내장하고 있으며, 각 모듈은 특정 영역을 담당한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 라이브러리 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;sys&#039;&#039;&#039; || 시스템 호출, 프로세스, 메모리 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;file&#039;&#039;&#039; || 파일 입출력, 경로, 권한 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;network&#039;&#039;&#039; || TCP, UDP, HTTP 통신&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;http&#039;&#039;&#039; || HTTP 요청/응답, 인증, 쿠키 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;hardware&#039;&#039;&#039; || 하드웨어 제어, 장치 인터페이스&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;iosys&#039;&#039;&#039; || 콘솔 입출력, 터미널 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;wson&#039;&#039;&#039; || Wave의 직렬화 포맷 (WSON) 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;quantum&#039;&#039;&#039; || 양자 연산 및 시뮬레이션용 인터페이스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Whale 툴체인 ==&lt;br /&gt;
&#039;&#039;&#039;Whale&#039;&#039;&#039;은 Wave의 공식 컴파일러 툴체인으로, LLVM을 완전히 대체하기 위해 설계되었다.  &lt;br /&gt;
모듈형 구조를 기반으로 하며, 아키텍처별 백엔드를 독립적으로 관리할 수 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;모듈형 설계&#039;&#039;&#039; — 아키텍처(x86, ARM 등)별 모듈을 폴더 단위로 분리  &lt;br /&gt;
* &#039;&#039;&#039;WSON 기반 구성 파일&#039;&#039;&#039; — 모든 설정은 &amp;lt;code&amp;gt;.ws&amp;lt;/code&amp;gt; 형식으로 관리  &lt;br /&gt;
* &#039;&#039;&#039;WAIL (WAIL Assembly Integration Layer)&#039;&#039;&#039; — Whale 전용 IR (Intermediate Representation) 포맷  &lt;br /&gt;
&lt;br /&gt;
== Vex 패키지 매니저 ==&lt;br /&gt;
&#039;&#039;&#039;Vex&#039;&#039;&#039;는 Wave 전용 패키지 매니저로, 빌드 및 배포 시스템을 통합한다.  &lt;br /&gt;
명령어 구조는 단순하며, OS별 빌드를 지원한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vex build --linux&lt;br /&gt;
vex build --windows&lt;br /&gt;
vex build --macos&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WSON ==&lt;br /&gt;
&#039;&#039;&#039;WSON&#039;&#039;&#039;(Wave Serialized Object Notation)은 Wave의 공식 데이터 직렬화 포맷이다.&lt;br /&gt;
JSON, YAML, TOML보다 빠르고 간결한 문법을 지향하며 `.ws` 확장자를 사용한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  name = &amp;quot;Wave&amp;quot;,&lt;br /&gt;
  version = 0.1.4,&lt;br /&gt;
  author = &amp;quot;LunaStev&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 활용 ==&lt;br /&gt;
Wave는 범용 언어로서 다양한 분야에 적용될 수 있다:&lt;br /&gt;
* 시스템 프로그래밍 (운영체제, 드라이버, 커널)&lt;br /&gt;
* 웹 백엔드 서버 및 API&lt;br /&gt;
* AI 및 데이터 분석 프레임워크&lt;br /&gt;
* 블록체인 노드 및 스마트 컨트랙트&lt;br /&gt;
* 게임 엔진 및 그래픽 모듈&lt;br /&gt;
* 양자 컴퓨팅 및 과학 시뮬레이션&lt;br /&gt;
&lt;br /&gt;
== 영향과 비교 ==&lt;br /&gt;
Wave는 [[C (프로그래밍 언어)]], [[Rust]], [[Python]], [[Go]]의 영향을 받았으며, 다음과 같은 철학적 비교가 가능하다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 언어 !! 철학적 방향 !! 메모리 모델 !! 안전성&lt;br /&gt;
|-&lt;br /&gt;
| C || 저수준, 수동 제어 || 포인터 기반 || 낮음&lt;br /&gt;
|-&lt;br /&gt;
| Rust || 안전한 시스템 프로그래밍 || 소유권 모델 || 매우 높음&lt;br /&gt;
|-&lt;br /&gt;
| Wave || 단일 언어 통합 생태계 || 명시적 타입 제어 || 높음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[프로그래밍 언어]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[C (프로그래밍 언어)]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[운영체제]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* [https://github.com/wavefnd/Wave Wave GitHub 저장소]  &lt;br /&gt;
* [https://wave-lang.dev/ Wave 공식 사이트]  &lt;br /&gt;
* [https://github.com/wavefnd/Vex Vex 저장소]  &lt;br /&gt;
* [https://github.com/wavefnd/Whale Whale 저장소]  &lt;br /&gt;
* [https://github.com/LunaStev/wson-rust WSON 저장소]&lt;br /&gt;
&lt;br /&gt;
== 각주 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:프로그래밍 언어]]&lt;br /&gt;
[[Category:시스템 프로그래밍]]&lt;br /&gt;
[[Category:2020년대 소프트웨어]]&lt;br /&gt;
[[Category:오픈 소스 소프트웨어]]&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=231</id>
		<title>Wave</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=231"/>
		<updated>2025-12-03T02:50:41Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{소프트웨어 언어 정보&lt;br /&gt;
 | 이름      = Wave&lt;br /&gt;
 | 로고      = [[File:Wave_logo.png|120px]]&lt;br /&gt;
 | 개발자    = LunaStev&lt;br /&gt;
 | 출시일    = 2025년 1월 14일&lt;br /&gt;
 | 최신 버전 = v0.1.5-pre-beta&lt;br /&gt;
 | 확장자    = &#039;&#039;&#039;.wave&#039;&#039;&#039;&lt;br /&gt;
 | 라이선스  = MPL-2.0&lt;br /&gt;
 | 저장소    = [https://github.com/wavefnd/Wave GitHub]&lt;br /&gt;
 | 웹사이트  = https://wave-lang.dev/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Wave&#039;&#039;&#039;는 시스템 소프트웨어 엔지니어 &#039;&#039;&#039;LunaStev&#039;&#039;&#039;가 개발한 범용 프로그래밍 언어이다.  &lt;br /&gt;
Wave는 저수준 언어의 성능과 고수준 언어의 추상화를 동시에 추구하며, &#039;&#039;“Reimagining Low-Level Programming”&#039;&#039;(저수준 프로그래밍의 재정의)을 철학으로 한다.  &lt;br /&gt;
Rust와 C 계열의 언어 디자인 철학을 계승하면서도, 새로운 문법 구조와 통합 생태계를 통해 다양한 영역(시스템, 네트워크, 웹, AI 등)에서 단일 언어로 개발이 가능하도록 설계되었다.&lt;br /&gt;
&lt;br /&gt;
Wave는 컴파일 언어이며, 기본적으로 LLVM 백엔드를 기반으로 하지만, 장기적으로는 독자적인 툴체인인 &#039;&#039;&#039;Whale&#039;&#039;&#039;을 중심으로 완전한 독립 생태계를 구축할 계획이다. &amp;lt;ref&amp;gt;https://www.wave-lang.dev/docs/ecosystem/whale&amp;lt;/ref&amp;gt;&lt;br /&gt;
또한 패키지 매니저 &#039;&#039;&#039;Vex&#039;&#039;&#039;, 직렬화 포맷 &#039;&#039;&#039;WSON&#039;&#039;&#039;, 표준 라이브러리 집합 등 언어 자체의 통합 환경을 제공한다.  &lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
* &#039;&#039;&#039;2024년 5월&#039;&#039;&#039;: Wave 개발 착수  &lt;br /&gt;
* &#039;&#039;&#039;2024년 12월&#039;&#039;&#039;: LLVM 기반 초기 컴파일러 프로토타입 완성  &lt;br /&gt;
* &#039;&#039;&#039;2025년 1월 14일&#039;&#039;&#039;: Wave 공식 릴리스(버전 0.0.1-pre-alpha)&lt;br /&gt;
* &#039;&#039;&#039;2025년 8월 1일&#039;&#039;&#039;: v0.1.4-pre-beta 출시&lt;br /&gt;
&lt;br /&gt;
== 설계 철학 ==&lt;br /&gt;
Wave의 핵심 철학은 “&#039;&#039;&#039;명시적, 예측 가능, 통합적&#039;&#039;&#039;”이다.  &lt;br /&gt;
이는 단순히 문법적 간결함이 아닌, 시스템 수준까지 일관된 동작을 추구하는 디자인으로 이어진다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;명시적 타입 지정&#039;&#039;&#039; — 모든 변수는 타입을 반드시 선언해야 하며, 타입 추론은 지원하지 않는다.  &lt;br /&gt;
* &#039;&#039;&#039;FFI 최소화&#039;&#039;&#039; — Wave는 외부 언어에 의존하지 않고, 공식적으로 자체 표준 라이브러리로 완결된 생태계를 구축한다.  &lt;br /&gt;
* &#039;&#039;&#039;낮은 복잡도&#039;&#039;&#039; — Rust와 유사한 안전성을 유지하면서, 불필요한 추상화나 복잡한 매크로 시스템을 제거한다.  &lt;br /&gt;
* &#039;&#039;&#039;C 스타일 문법&#039;&#039;&#039; — C 언어의 친숙한 구조를 유지하되, 현대적 오류 처리와 체인 API를 제공한다.  &lt;br /&gt;
* &#039;&#039;&#039;성능 중심&#039;&#039;&#039; — 가비지 컬렉션을 도입하지 않으며, 필요 시 직접 메모리 제어 가능.  &lt;br /&gt;
&lt;br /&gt;
== 언어 구조 ==&lt;br /&gt;
=== 기본 문법 ===&lt;br /&gt;
Wave의 기본 문법은 C/Rust 계열 구조를 기반으로 하며, 함수 중심의 실행 구조를 가진다.  &lt;br /&gt;
모든 프로그램은 반드시 &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; 함수를 포함해야 하며, Wave는 해당 함수를 자동으로 탐색하여 실행한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var name: str = &amp;quot;Wave&amp;quot;;&lt;br /&gt;
    let version: f32 = 0.1;&lt;br /&gt;
    println(&amp;quot;Language: {}, Version: {}&amp;quot;, name, version);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 변수 선언 ===&lt;br /&gt;
* &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt;: 가변 변수 선언  &lt;br /&gt;
* &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;: 불변 변수 선언  &lt;br /&gt;
* 타입은 반드시 명시해야 하며, 다음과 같은 예를 가질 수 있다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
var count: i32 = 10;&lt;br /&gt;
let message: str = &amp;quot;Hello Wave&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 제어문 ===&lt;br /&gt;
Wave는 &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; 등의 제어문을 지원한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var i: i32 = 0;&lt;br /&gt;
    while (i &amp;lt; 5) {&lt;br /&gt;
        if (i == 3) {&lt;br /&gt;
            println(&amp;quot;Reached 3, breaking.&amp;quot;);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
        println(&amp;quot;i = {}&amp;quot;, i);&lt;br /&gt;
        i = i + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 함수 ===&lt;br /&gt;
Wave는 강타입 기반의 함수 선언을 지원하며, 반환 타입은 반드시 명시해야 한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun add(a: i32, b: i32) -&amp;gt; i32 {&lt;br /&gt;
    return a + b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fun main() {&lt;br /&gt;
    let result: i32 = add(5, 3);&lt;br /&gt;
    println(&amp;quot;Result: {}&amp;quot;, result);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 표준 라이브러리 ==&lt;br /&gt;
Wave는 표준 라이브러리와 핵심 모듈을 내장하고 있으며, 각 모듈은 특정 영역을 담당한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 라이브러리 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;sys&#039;&#039;&#039; || 시스템 호출, 프로세스, 메모리 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;file&#039;&#039;&#039; || 파일 입출력, 경로, 권한 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;network&#039;&#039;&#039; || TCP, UDP, HTTP 통신&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;http&#039;&#039;&#039; || HTTP 요청/응답, 인증, 쿠키 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;hardware&#039;&#039;&#039; || 하드웨어 제어, 장치 인터페이스&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;iosys&#039;&#039;&#039; || 콘솔 입출력, 터미널 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;wson&#039;&#039;&#039; || Wave의 직렬화 포맷 (WSON) 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;quantum&#039;&#039;&#039; || 양자 연산 및 시뮬레이션용 인터페이스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Whale 툴체인 ==&lt;br /&gt;
&#039;&#039;&#039;Whale&#039;&#039;&#039;은 Wave의 공식 컴파일러 툴체인으로, LLVM을 완전히 대체하기 위해 설계되었다.  &lt;br /&gt;
모듈형 구조를 기반으로 하며, 아키텍처별 백엔드를 독립적으로 관리할 수 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;모듈형 설계&#039;&#039;&#039; — 아키텍처(x86, ARM 등)별 모듈을 폴더 단위로 분리  &lt;br /&gt;
* &#039;&#039;&#039;WSON 기반 구성 파일&#039;&#039;&#039; — 모든 설정은 &amp;lt;code&amp;gt;.ws&amp;lt;/code&amp;gt; 형식으로 관리  &lt;br /&gt;
* &#039;&#039;&#039;WAIL (WAIL Assembly Integration Layer)&#039;&#039;&#039; — Whale 전용 IR (Intermediate Representation) 포맷  &lt;br /&gt;
&lt;br /&gt;
== Vex 패키지 매니저 ==&lt;br /&gt;
&#039;&#039;&#039;Vex&#039;&#039;&#039;는 Wave 전용 패키지 매니저로, 빌드 및 배포 시스템을 통합한다.  &lt;br /&gt;
명령어 구조는 단순하며, OS별 빌드를 지원한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vex build --linux&lt;br /&gt;
vex build --windows&lt;br /&gt;
vex build --macos&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WSON ==&lt;br /&gt;
&#039;&#039;&#039;WSON&#039;&#039;&#039;(Wave Serialized Object Notation)은 Wave의 공식 데이터 직렬화 포맷이다.&lt;br /&gt;
JSON, YAML, TOML보다 빠르고 간결한 문법을 지향하며 `.ws` 확장자를 사용한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  name = &amp;quot;Wave&amp;quot;,&lt;br /&gt;
  version = 0.1.4,&lt;br /&gt;
  author = &amp;quot;LunaStev&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 활용 ==&lt;br /&gt;
Wave는 범용 언어로서 다양한 분야에 적용될 수 있다:&lt;br /&gt;
* 시스템 프로그래밍 (운영체제, 드라이버, 커널)&lt;br /&gt;
* 웹 백엔드 서버 및 API&lt;br /&gt;
* AI 및 데이터 분석 프레임워크&lt;br /&gt;
* 블록체인 노드 및 스마트 컨트랙트&lt;br /&gt;
* 게임 엔진 및 그래픽 모듈&lt;br /&gt;
* 양자 컴퓨팅 및 과학 시뮬레이션&lt;br /&gt;
&lt;br /&gt;
== 영향과 비교 ==&lt;br /&gt;
Wave는 [[C (프로그래밍 언어)]], [[Rust]], [[Python]], [[Go]]의 영향을 받았으며, 다음과 같은 철학적 비교가 가능하다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 언어 !! 철학적 방향 !! 메모리 모델 !! 안전성&lt;br /&gt;
|-&lt;br /&gt;
| C || 저수준, 수동 제어 || 포인터 기반 || 낮음&lt;br /&gt;
|-&lt;br /&gt;
| Rust || 안전한 시스템 프로그래밍 || 소유권 모델 || 매우 높음&lt;br /&gt;
|-&lt;br /&gt;
| Wave || 단일 언어 통합 생태계 || 명시적 타입 제어 || 높음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[프로그래밍 언어]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[C (프로그래밍 언어)]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[운영체제]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* [https://github.com/wavefnd/Wave Wave GitHub 저장소]  &lt;br /&gt;
* [https://wave-lang.dev/ Wave 공식 사이트]  &lt;br /&gt;
* [https://github.com/wavefnd/Vex Vex 저장소]  &lt;br /&gt;
* [https://github.com/wavefnd/Whale Whale 저장소]  &lt;br /&gt;
* [https://github.com/LunaStev/wson-rust WSON 저장소]&lt;br /&gt;
&lt;br /&gt;
== 각주 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:프로그래밍 언어]]&lt;br /&gt;
[[Category:시스템 프로그래밍]]&lt;br /&gt;
[[Category:2020년대 소프트웨어]]&lt;br /&gt;
[[Category:오픈 소스 소프트웨어]]&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=230</id>
		<title>Wave</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=230"/>
		<updated>2025-12-03T02:49:42Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{소프트웨어 언어 정보&lt;br /&gt;
 | 이름      = Wave&lt;br /&gt;
 | 로고      = [[File:Wave_logo.png|120px]]&lt;br /&gt;
 | 개발자    = LunaStev&lt;br /&gt;
 | 출시일    = 2025년 1월 14일&lt;br /&gt;
 | 최신 버전 = v0.1.5-pre-beta&lt;br /&gt;
 | 확장자    = &#039;&#039;&#039;.wave&#039;&#039;&#039;&lt;br /&gt;
 | 라이선스  = LSD License&lt;br /&gt;
 | 저장소    = [https://github.com/wavefnd/Wave GitHub]&lt;br /&gt;
 | 웹사이트  = https://wave-lang.dev/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Wave&#039;&#039;&#039;는 시스템 소프트웨어 엔지니어 &#039;&#039;&#039;LunaStev&#039;&#039;&#039;가 개발한 범용 프로그래밍 언어이다.  &lt;br /&gt;
Wave는 저수준 언어의 성능과 고수준 언어의 추상화를 동시에 추구하며, &#039;&#039;“Reimagining Low-Level Programming”&#039;&#039;(저수준 프로그래밍의 재정의)을 철학으로 한다.  &lt;br /&gt;
Rust와 C 계열의 언어 디자인 철학을 계승하면서도, 새로운 문법 구조와 통합 생태계를 통해 다양한 영역(시스템, 네트워크, 웹, AI 등)에서 단일 언어로 개발이 가능하도록 설계되었다.&lt;br /&gt;
&lt;br /&gt;
Wave는 컴파일 언어이며, 기본적으로 LLVM 백엔드를 기반으로 하지만, 장기적으로는 독자적인 툴체인인 &#039;&#039;&#039;Whale&#039;&#039;&#039;을 중심으로 완전한 독립 생태계를 구축할 계획이다. &amp;lt;ref&amp;gt;https://www.wave-lang.dev/docs/ecosystem/whale&amp;lt;/ref&amp;gt;&lt;br /&gt;
또한 패키지 매니저 &#039;&#039;&#039;Vex&#039;&#039;&#039;, 직렬화 포맷 &#039;&#039;&#039;WSON&#039;&#039;&#039;, 표준 라이브러리 집합 등 언어 자체의 통합 환경을 제공한다.  &lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
* &#039;&#039;&#039;2024년 5월&#039;&#039;&#039;: Wave 개발 착수  &lt;br /&gt;
* &#039;&#039;&#039;2024년 12월&#039;&#039;&#039;: LLVM 기반 초기 컴파일러 프로토타입 완성  &lt;br /&gt;
* &#039;&#039;&#039;2025년 1월 14일&#039;&#039;&#039;: Wave 공식 릴리스(버전 0.0.1-pre-alpha)&lt;br /&gt;
* &#039;&#039;&#039;2025년 8월 1일&#039;&#039;&#039;: v0.1.4-pre-beta 출시&lt;br /&gt;
&lt;br /&gt;
== 설계 철학 ==&lt;br /&gt;
Wave의 핵심 철학은 “&#039;&#039;&#039;명시적, 예측 가능, 통합적&#039;&#039;&#039;”이다.  &lt;br /&gt;
이는 단순히 문법적 간결함이 아닌, 시스템 수준까지 일관된 동작을 추구하는 디자인으로 이어진다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;명시적 타입 지정&#039;&#039;&#039; — 모든 변수는 타입을 반드시 선언해야 하며, 타입 추론은 지원하지 않는다.  &lt;br /&gt;
* &#039;&#039;&#039;FFI 최소화&#039;&#039;&#039; — Wave는 외부 언어에 의존하지 않고, 공식적으로 자체 표준 라이브러리로 완결된 생태계를 구축한다.  &lt;br /&gt;
* &#039;&#039;&#039;낮은 복잡도&#039;&#039;&#039; — Rust와 유사한 안전성을 유지하면서, 불필요한 추상화나 복잡한 매크로 시스템을 제거한다.  &lt;br /&gt;
* &#039;&#039;&#039;C 스타일 문법&#039;&#039;&#039; — C 언어의 친숙한 구조를 유지하되, 현대적 오류 처리와 체인 API를 제공한다.  &lt;br /&gt;
* &#039;&#039;&#039;성능 중심&#039;&#039;&#039; — 가비지 컬렉션을 도입하지 않으며, 필요 시 직접 메모리 제어 가능.  &lt;br /&gt;
&lt;br /&gt;
== 언어 구조 ==&lt;br /&gt;
=== 기본 문법 ===&lt;br /&gt;
Wave의 기본 문법은 C/Rust 계열 구조를 기반으로 하며, 함수 중심의 실행 구조를 가진다.  &lt;br /&gt;
모든 프로그램은 반드시 &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; 함수를 포함해야 하며, Wave는 해당 함수를 자동으로 탐색하여 실행한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var name: str = &amp;quot;Wave&amp;quot;;&lt;br /&gt;
    let version: f32 = 0.1;&lt;br /&gt;
    println(&amp;quot;Language: {}, Version: {}&amp;quot;, name, version);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 변수 선언 ===&lt;br /&gt;
* &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt;: 가변 변수 선언  &lt;br /&gt;
* &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;: 불변 변수 선언  &lt;br /&gt;
* 타입은 반드시 명시해야 하며, 다음과 같은 예를 가질 수 있다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
var count: i32 = 10;&lt;br /&gt;
let message: str = &amp;quot;Hello Wave&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 제어문 ===&lt;br /&gt;
Wave는 &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; 등의 제어문을 지원한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var i: i32 = 0;&lt;br /&gt;
    while (i &amp;lt; 5) {&lt;br /&gt;
        if (i == 3) {&lt;br /&gt;
            println(&amp;quot;Reached 3, breaking.&amp;quot;);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
        println(&amp;quot;i = {}&amp;quot;, i);&lt;br /&gt;
        i = i + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 함수 ===&lt;br /&gt;
Wave는 강타입 기반의 함수 선언을 지원하며, 반환 타입은 반드시 명시해야 한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun add(a: i32, b: i32) -&amp;gt; i32 {&lt;br /&gt;
    return a + b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fun main() {&lt;br /&gt;
    let result: i32 = add(5, 3);&lt;br /&gt;
    println(&amp;quot;Result: {}&amp;quot;, result);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 표준 라이브러리 ==&lt;br /&gt;
Wave는 표준 라이브러리와 핵심 모듈을 내장하고 있으며, 각 모듈은 특정 영역을 담당한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 라이브러리 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;sys&#039;&#039;&#039; || 시스템 호출, 프로세스, 메모리 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;file&#039;&#039;&#039; || 파일 입출력, 경로, 권한 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;network&#039;&#039;&#039; || TCP, UDP, HTTP 통신&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;http&#039;&#039;&#039; || HTTP 요청/응답, 인증, 쿠키 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;hardware&#039;&#039;&#039; || 하드웨어 제어, 장치 인터페이스&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;iosys&#039;&#039;&#039; || 콘솔 입출력, 터미널 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;wson&#039;&#039;&#039; || Wave의 직렬화 포맷 (WSON) 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;quantum&#039;&#039;&#039; || 양자 연산 및 시뮬레이션용 인터페이스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Whale 툴체인 ==&lt;br /&gt;
&#039;&#039;&#039;Whale&#039;&#039;&#039;은 Wave의 공식 컴파일러 툴체인으로, LLVM을 완전히 대체하기 위해 설계되었다.  &lt;br /&gt;
모듈형 구조를 기반으로 하며, 아키텍처별 백엔드를 독립적으로 관리할 수 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;모듈형 설계&#039;&#039;&#039; — 아키텍처(x86, ARM 등)별 모듈을 폴더 단위로 분리  &lt;br /&gt;
* &#039;&#039;&#039;WSON 기반 구성 파일&#039;&#039;&#039; — 모든 설정은 &amp;lt;code&amp;gt;.ws&amp;lt;/code&amp;gt; 형식으로 관리  &lt;br /&gt;
* &#039;&#039;&#039;WAIL (WAIL Assembly Integration Layer)&#039;&#039;&#039; — Whale 전용 IR (Intermediate Representation) 포맷  &lt;br /&gt;
&lt;br /&gt;
== Vex 패키지 매니저 ==&lt;br /&gt;
&#039;&#039;&#039;Vex&#039;&#039;&#039;는 Wave 전용 패키지 매니저로, 빌드 및 배포 시스템을 통합한다.  &lt;br /&gt;
명령어 구조는 단순하며, OS별 빌드를 지원한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vex build --linux&lt;br /&gt;
vex build --windows&lt;br /&gt;
vex build --macos&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WSON ==&lt;br /&gt;
&#039;&#039;&#039;WSON&#039;&#039;&#039;(Wave Serialized Object Notation)은 Wave의 공식 데이터 직렬화 포맷이다.&lt;br /&gt;
JSON, YAML, TOML보다 빠르고 간결한 문법을 지향하며 `.ws` 확장자를 사용한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  name = &amp;quot;Wave&amp;quot;,&lt;br /&gt;
  version = 0.1.4,&lt;br /&gt;
  author = &amp;quot;LunaStev&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 활용 ==&lt;br /&gt;
Wave는 범용 언어로서 다양한 분야에 적용될 수 있다:&lt;br /&gt;
* 시스템 프로그래밍 (운영체제, 드라이버, 커널)&lt;br /&gt;
* 웹 백엔드 서버 및 API&lt;br /&gt;
* AI 및 데이터 분석 프레임워크&lt;br /&gt;
* 블록체인 노드 및 스마트 컨트랙트&lt;br /&gt;
* 게임 엔진 및 그래픽 모듈&lt;br /&gt;
* 양자 컴퓨팅 및 과학 시뮬레이션&lt;br /&gt;
&lt;br /&gt;
== 영향과 비교 ==&lt;br /&gt;
Wave는 [[C (프로그래밍 언어)]], [[Rust]], [[Python]], [[Go]]의 영향을 받았으며, 다음과 같은 철학적 비교가 가능하다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 언어 !! 철학적 방향 !! 메모리 모델 !! 안전성&lt;br /&gt;
|-&lt;br /&gt;
| C || 저수준, 수동 제어 || 포인터 기반 || 낮음&lt;br /&gt;
|-&lt;br /&gt;
| Rust || 안전한 시스템 프로그래밍 || 소유권 모델 || 매우 높음&lt;br /&gt;
|-&lt;br /&gt;
| Wave || 단일 언어 통합 생태계 || 명시적 타입 제어 || 높음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[프로그래밍 언어]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[C (프로그래밍 언어)]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[운영체제]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* [https://github.com/wavefnd/Wave Wave GitHub 저장소]  &lt;br /&gt;
* [https://wave-lang.dev/ Wave 공식 사이트]  &lt;br /&gt;
* [https://github.com/wavefnd/Vex Vex 저장소]  &lt;br /&gt;
* [https://github.com/wavefnd/Whale Whale 저장소]  &lt;br /&gt;
* [https://github.com/LunaStev/wson-rust WSON 저장소]&lt;br /&gt;
&lt;br /&gt;
== 각주 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:프로그래밍 언어]]&lt;br /&gt;
[[Category:시스템 프로그래밍]]&lt;br /&gt;
[[Category:2020년대 소프트웨어]]&lt;br /&gt;
[[Category:오픈 소스 소프트웨어]]&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=OS/2025&amp;diff=229</id>
		<title>OS/2025</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=OS/2025&amp;diff=229"/>
		<updated>2025-11-29T11:58:01Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
[[파일:OS-2025-interface.png|thumb| OS/2025 인터페이스]]&lt;br /&gt;
&lt;br /&gt;
Kdy가 만든 개인 및 실험용 운영체제다.&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=OS/2025&amp;diff=228</id>
		<title>OS/2025</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=OS/2025&amp;diff=228"/>
		<updated>2025-11-29T06:59:26Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
[[파일:OS-2025-interface.png|thumb| OS/2025 인터페이스]]&lt;br /&gt;
&lt;br /&gt;
Kdy가 만든 개인 및 실험용 OS&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=OS/2025&amp;diff=227</id>
		<title>OS/2025</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=OS/2025&amp;diff=227"/>
		<updated>2025-11-29T06:57:37Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[파일:OS-2025-interface.png]]&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&lt;br /&gt;
Kdy가 만든 개인 및 실험용 OS&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%ED%8C%8C%EC%9D%BC:OS-2025-interface.png&amp;diff=226</id>
		<title>파일:OS-2025-interface.png</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%ED%8C%8C%EC%9D%BC:OS-2025-interface.png&amp;diff=226"/>
		<updated>2025-11-29T06:57:12Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=OS/2025&amp;diff=225</id>
		<title>OS/2025</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=OS/2025&amp;diff=225"/>
		<updated>2025-11-29T06:56:43Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 새 문서: 파일:OS/2025-interface.png  == 개요 ==  Kdy가 만든 개인 및 실험용 OS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[파일:OS/2025-interface.png]]&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&lt;br /&gt;
Kdy가 만든 개인 및 실험용 OS&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Assembly&amp;diff=224</id>
		<title>Assembly</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Assembly&amp;diff=224"/>
		<updated>2025-11-26T06:29:17Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 어셈블러 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Assembly&#039;&#039;&#039;(어셈블리어, 기계어 수준 언어)는  &lt;br /&gt;
CPU가 직접 이해할 수 있는 [[기계어]]와 일대일 대응되는 &#039;&#039;&#039;저수준 언어&#039;&#039;&#039;이다.  &lt;br /&gt;
고급 언어([[C]], [[Rust]], [[Wave]] 등)가 [[컴파일러]]를 통해  &lt;br /&gt;
기계어로 변환되는 반면, 어셈블리어는 프로그래머가 직접 하드웨어를 제어한다.&lt;br /&gt;
&lt;br /&gt;
Assembly는 CPU 명령어 집합([[ISA]])에 직접 대응하는 언어이며,  &lt;br /&gt;
각 프로세서마다 문법과 명령어가 다르다 ([[x86]], [[ARM]], [[RISC-V]] 등).  &lt;br /&gt;
명령어는 일반적으로 &#039;&#039;&#039;명령(Mnemonic)&#039;&#039;&#039; 과 &#039;&#039;&#039;피연산자(Operand)&#039;&#039;&#039; 로 구성된다.&lt;br /&gt;
&lt;br /&gt;
예시:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
mov eax, 1&lt;br /&gt;
add eax, 2&lt;br /&gt;
int 0x80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
위 코드는 x86 Linux 환경에서 &amp;lt;code&amp;gt;eax&amp;lt;/code&amp;gt; 레지스터에 1과 2를 더한 뒤  &lt;br /&gt;
시스템 호출(interrupt)을 발생시킨다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 연도 !! 사건&lt;br /&gt;
|-&lt;br /&gt;
| 1940년대 || 초기 기계어 사용, 어셈블리 개념 등장  &lt;br /&gt;
|-&lt;br /&gt;
| 1950년대 || IBM 701, UNIVAC용 어셈블러 개발  &lt;br /&gt;
|-&lt;br /&gt;
| 1970년대 || [[Intel 8080]], [[Z80]], [[MOS 6502]] 등 8비트 CPU용 어셈블리 확산  &lt;br /&gt;
|-&lt;br /&gt;
| 1980년대 || [[x86]] 기반 PC와 함께 [[MS-DOS]] 어셈블리 개발 표준화  &lt;br /&gt;
|-&lt;br /&gt;
| 1990년대 || [[RISC]] 아키텍처 등장, [[ARM]] 확장  &lt;br /&gt;
|-&lt;br /&gt;
| 2000년대 || [[JIT]], [[LLVM IR]] 등 중간언어 개념 확립  &lt;br /&gt;
|-&lt;br /&gt;
| 2020년대 || [[Wave]], [[Whale]], [[WAIL Assembly Integration Layer|WAIL]] 등 현대 IR·ASM 융합 언어 등장  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 구조 ==&lt;br /&gt;
어셈블리 코드는 일반적으로 다음과 같은 세 부분으로 구성된다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 섹션 || 상수, 변수, 문자열 저장 || &amp;lt;code&amp;gt;.data&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bss&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 코드 섹션 || 실행 가능한 명령어 집합 || &amp;lt;code&amp;gt;.text&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 엔트리 포인트 || 프로그램 시작 지점 || &amp;lt;code&amp;gt;_start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 기본 문법 ==&lt;br /&gt;
어셈블리 명령어는 &#039;&#039;&#039;연산자(Mnemonic)&#039;&#039;&#039; 와 &#039;&#039;&#039;피연산자(Operand)&#039;&#039;&#039; 로 구성된다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
mov eax, 10    ; 10을 eax 레지스터에 저장&lt;br /&gt;
add eax, 5     ; eax = eax + 5&lt;br /&gt;
sub eax, 3     ; eax = eax - 3&lt;br /&gt;
jmp label      ; label로 점프&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
주요 연산 범주는 다음과 같다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 분류 !! 예시 명령어 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 이동 || MOV, PUSH, POP || 메모리 ↔ 레지스터 간 데이터 이동  &lt;br /&gt;
|-&lt;br /&gt;
| 산술 연산 || ADD, SUB, MUL, DIV || 기본 연산 수행  &lt;br /&gt;
|-&lt;br /&gt;
| 논리 연산 || AND, OR, XOR, NOT || 비트 단위 논리 연산  &lt;br /&gt;
|-&lt;br /&gt;
| 제어 흐름 || JMP, JE, JNE, CALL, RET || 조건 분기 및 서브루틴 호출  &lt;br /&gt;
|-&lt;br /&gt;
| 시스템 호출 || INT, SYSCALL, SYSENTER || OS와의 인터페이스  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 어셈블리 언어별 예시 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 아키텍처 !! 명령어 예시 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| x86 || &amp;lt;code&amp;gt;mov eax, 1&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;int 0x80&amp;lt;/code&amp;gt; || 고전적인 인텔 구조, PC 중심  &lt;br /&gt;
|-&lt;br /&gt;
| x86-64 || &amp;lt;code&amp;gt;mov rax, 60&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; || 64비트 Linux 커널 호출 방식  &lt;br /&gt;
|-&lt;br /&gt;
| ARM || &amp;lt;code&amp;gt;MOV R0, #1&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;BL printf&amp;lt;/code&amp;gt; || 임베디드 및 모바일 환경  &lt;br /&gt;
|-&lt;br /&gt;
| RISC-V || &amp;lt;code&amp;gt;addi x1, x0, 5&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;ecall&amp;lt;/code&amp;gt; || 오픈소스 ISA, 차세대 구조  &lt;br /&gt;
|-&lt;br /&gt;
| MIPS || &amp;lt;code&amp;gt;add $t0, $t1, $t2&amp;lt;/code&amp;gt; || 단순한 명령 구조의 교육용 ISA  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 어셈블러 ==&lt;br /&gt;
어셈블리 코드를 기계어로 변환하는 프로그램을 &#039;&#039;&#039;어셈블러(Assembler)&#039;&#039;&#039; 라 한다.  &lt;br /&gt;
&lt;br /&gt;
대표 어셈블러 목록:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 어셈블러 !! 지원 아키텍처 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[NASM]] || x86 / x86-64 || 오픈소스, Linux/Windows 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[MASM]] || x86 / x64 || Microsoft 공식 어셈블러  &lt;br /&gt;
|-&lt;br /&gt;
| [[FASM]] || x86 / x64 || 완전 독립형, 빠른 빌드 속도  &lt;br /&gt;
|-&lt;br /&gt;
| [[GAS]] (GNU Assembler) || 다중 ISA || GNU Toolchain 기본 구성  &lt;br /&gt;
|-&lt;br /&gt;
| [[YASM]] || x86 / x64 || NASM 호환, LLVM 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[LLVM Assembler]] || 다중 ISA || [[LLVM IR]] → 기계어 변환  &lt;br /&gt;
|-&lt;br /&gt;
| [[Whale Assembler]] || Whale Toolchain || [[Wave]] 전용 IR 통합 어셈블러  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 고급 언어와의 관계 ==&lt;br /&gt;
* [[C (프로그래밍 언어)]] 언어는 어셈블리와 일대일 대응되는 구조를 가지며, 대부분의 시스템 언어([[Rust]], [[Wave]])는 내부적으로 어셈블리 생성 단계를 거친다.  &lt;br /&gt;
* 컴파일러는 [[AST]] → [[IR]] → [[Assembly]] → [[Machine Code]] 순으로 변환한다.  &lt;br /&gt;
* [[Inline Assembly]]를 통해 C, Rust 등에서도 직접 명령어를 삽입할 수 있다.&lt;br /&gt;
&lt;br /&gt;
예시 (C 코드 내 인라인 어셈블리):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int sum(int a, int b) {&lt;br /&gt;
    int result;&lt;br /&gt;
    __asm__ (&amp;quot;addl %%ebx, %%eax;&amp;quot;&lt;br /&gt;
             : &amp;quot;=a&amp;quot; (result)&lt;br /&gt;
             : &amp;quot;a&amp;quot; (a), &amp;quot;b&amp;quot; (b));&lt;br /&gt;
    return result;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 현대적 활용 ==&lt;br /&gt;
* [[부트로더]] – 시스템 초기화 코드 (ex: [[GRUB]], [[UEFI]])  &lt;br /&gt;
* [[운영체제 커널]] – CPU 제어, 인터럽트 처리  &lt;br /&gt;
* [[임베디드 시스템]] – 제한된 자원 환경에서 직접 제어  &lt;br /&gt;
* [[보안]] / [[리버스 엔지니어링]] – 바이너리 분석 및 취약점 탐지  &lt;br /&gt;
* [[컴파일러 개발]] – 백엔드 코드 생성 테스트  &lt;br /&gt;
* [[에뮬레이터]] – ISA 시뮬레이션  &lt;br /&gt;
&lt;br /&gt;
== 현대 트렌드 ==&lt;br /&gt;
* [[LLVM IR]] – 중간 표현의 표준화로 직접 어셈블리 작성 감소  &lt;br /&gt;
* [[RISC-V]] – 오픈 ISA로 인한 학습용 어셈블리 확산  &lt;br /&gt;
* [[WAIL Assembly Integration Layer]] – 현대식 모듈형 어셈블리 구조  &lt;br /&gt;
* [[Rust]] / [[Wave]] – 안전한 저수준 제어 언어 부상  &lt;br /&gt;
* [[컴파일러 자동 최적화]] – 인간보다 효율적인 어셈블리 생성  &lt;br /&gt;
&lt;br /&gt;
== 관련 개념 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 개념 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[기계어]] || CPU가 실제로 실행하는 이진 명령어  &lt;br /&gt;
|-&lt;br /&gt;
| [[ISA (명령어 집합 아키텍처)]] || CPU 명령 체계 정의 ([[x86]], [[ARM]], [[RISC-V]])  &lt;br /&gt;
|-&lt;br /&gt;
| [[레지스터]] || CPU 내부의 초고속 저장소  &lt;br /&gt;
|-&lt;br /&gt;
| [[스택]] / [[힙]] || 메모리 구조 제어 방식  &lt;br /&gt;
|-&lt;br /&gt;
| [[링크 스크립트]] || 코드/데이터 메모리 배치 정의  &lt;br /&gt;
|-&lt;br /&gt;
| [[IR (Intermediate Representation)]] || 어셈블리 전 단계의 중간 표현  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[기계어]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[WAIL]]  &lt;br /&gt;
* [[Whale]]  &lt;br /&gt;
* [[NASM]]  &lt;br /&gt;
* [[MASM]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[Wave]]  &lt;br /&gt;
* [[C]]  &lt;br /&gt;
* [[부트로더]]  &lt;br /&gt;
* [[운영체제 개발]]  &lt;br /&gt;
* [[임베디드 시스템]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Randall Hyde, &#039;&#039;The Art of Assembly Language&#039;&#039; (No Starch Press, 2021)  &lt;br /&gt;
* Paul Carter, &#039;&#039;PC Assembly Language&#039;&#039;  &lt;br /&gt;
* Intel Developer Manual, Volume 2: Instruction Set Reference  &lt;br /&gt;
* ARM Architecture Reference Manual v8  &lt;br /&gt;
* RISC-V ISA Specification (v2.2)  &lt;br /&gt;
* GNU Assembler (GAS) Documentation  &lt;br /&gt;
* LLVM Language Reference Manual&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=223</id>
		<title>컴파일러와 도구</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=223"/>
		<updated>2025-11-26T06:24:25Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러와 도구&#039;&#039;&#039;(Compilers and Tools)는  &lt;br /&gt;
프로그래밍 언어로 작성된 소스 코드를 해석, 변환, 최적화, 실행하기 위한  &lt;br /&gt;
&#039;&#039;&#039;소프트웨어 개발 인프라의 핵심 구성 요소&#039;&#039;&#039;이다.  &lt;br /&gt;
&lt;br /&gt;
이들은 단순히 코드를 “기계가 이해할 수 있는 형태로 변환하는 시스템”을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;개발 생산성 향상&#039;&#039;&#039;, &#039;&#039;&#039;코드 품질 보장&#039;&#039;&#039;, &#039;&#039;&#039;성능 최적화&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 간 이식성 확보&#039;&#039;&#039;를 담당한다.  &lt;br /&gt;
&lt;br /&gt;
컴파일러, 인터프리터, 어셈블러, 링커, 디버거, 빌드 시스템, IDE, 패키지 관리자 등은  &lt;br /&gt;
모두 언어의 생명주기 — &#039;&#039;&#039;작성 → 분석 → 변환 → 실행 → 유지보수&#039;&#039;&#039; — 를 구성하는 필수적인 도구군(toolchain)을 이룬다.  &lt;br /&gt;
&lt;br /&gt;
=== 컴파일러 ===&lt;br /&gt;
&#039;&#039;&#039;컴파일러(Compiler)&#039;&#039;&#039;는 고급 언어(high-level language)로 작성된 소스 코드를  &lt;br /&gt;
기계어(machine code) 또는 중간 표현(intermediate representation)으로 변환하는 프로그램이다.  &lt;br /&gt;
이 과정은 일반적으로 다음 단계를 거친다:&lt;br /&gt;
# &#039;&#039;&#039;어휘 분석(Lexical Analysis)&#039;&#039;&#039; — 토큰 단위로 소스 코드를 분해  &lt;br /&gt;
# &#039;&#039;&#039;구문 분석(Syntax Analysis)&#039;&#039;&#039; — 언어의 문법에 따라 트리 구조(AST)를 생성  &lt;br /&gt;
# &#039;&#039;&#039;의미 분석(Semantic Analysis)&#039;&#039;&#039; — 타입, 스코프, 참조 관계를 검증  &lt;br /&gt;
# &#039;&#039;&#039;중간 코드 생성(IR Generation)&#039;&#039;&#039; — 하드웨어 독립적인 내부 표현 생성  &lt;br /&gt;
# &#039;&#039;&#039;최적화(Optimization)&#039;&#039;&#039; — 실행 효율을 높이기 위한 변환 수행  &lt;br /&gt;
# &#039;&#039;&#039;코드 생성(Code Generation)&#039;&#039;&#039; — 타깃 플랫폼의 기계어로 변환  &lt;br /&gt;
&lt;br /&gt;
일부 현대 컴파일러는 이 과정을 여러 모듈로 분리하여,  &lt;br /&gt;
프런트엔드(frontend), 미들엔드(midend), 백엔드(backend) 구조로 구성한다.  &lt;br /&gt;
예: [[LLVM]], [[GCC]], [[Whale (툴체인)]] 등.&lt;br /&gt;
&lt;br /&gt;
=== 기타 개발 도구 ===&lt;br /&gt;
컴파일러 외에도 다음과 같은 다양한 개발 도구가 소프트웨어 품질과 효율성을 높인다:&lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템(Build System):&#039;&#039;&#039; 소스 코드의 컴파일, 링크, 테스트, 배포를 자동화 (예: [[CMake]], [[Ninja]], [[x.py]])  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 실행 중인 프로그램의 동작을 추적하고 오류를 분석 (예: [[GDB]], [[LLDB]])  &lt;br /&gt;
* &#039;&#039;&#039;린터(Linter):&#039;&#039;&#039; 코드 스타일 및 잠재적 버그를 정적 분석으로 탐지 (예: [[Clippy]], [[ESLint]])  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리자(Package Manager):&#039;&#039;&#039; 의존성 관리 및 모듈 배포를 지원 (예: [[Cargo]], [[Vex]], [[npm]])  &lt;br /&gt;
* &#039;&#039;&#039;IDE(통합 개발 환경):&#039;&#039;&#039; 코드 작성, 빌드, 디버깅, 테스트를 통합 제공 (예: [[Visual Studio Code]], [[RustRover]])  &lt;br /&gt;
&lt;br /&gt;
=== 역할과 중요성 ===&lt;br /&gt;
컴파일러와 개발 도구는 프로그래밍 언어 생태계의 기반을 이루며,  &lt;br /&gt;
언어 설계 철학과 밀접하게 연관되어 있다.  &lt;br /&gt;
효율적인 도구 체계는 언어의 확장성, 성능, 보안성, 유지보수성을 직접적으로 좌우한다.  &lt;br /&gt;
&lt;br /&gt;
현대의 개발 환경에서는 단일 컴파일러가 아닌  &lt;br /&gt;
&#039;&#039;&#039;모듈화된 툴체인(toolchain)&#039;&#039;&#039;이 표준으로 자리 잡고 있으며,  &lt;br /&gt;
이러한 구조는 다양한 아키텍처와 플랫폼에서의 고성능 빌드와 이식성을 가능하게 한다.  &lt;br /&gt;
&lt;br /&gt;
== 컴파일러의 구조 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러&#039;&#039;&#039;는 소스 코드를 기계어로 변환하기 위해 일련의 분석과 변환 단계를 거치며,  &lt;br /&gt;
일반적으로 &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;, &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;, &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;의 세 부분으로 구성된다.  &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;는 주로 언어의 문법과 의미를 해석하는 역할을 담당한다. 소스 코드를 분석하여 구조화된 내부 표현(AST)을 생성하고, 타입 검사와 같은 의미적 검증을 수행한다.  &lt;br /&gt;
* &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;는 이 내부 표현을 기반으로 프로그램의 효율을 향상시키는 최적화 단계이다. 불필요한 연산을 제거하고, 실행 속도와 메모리 사용량을 개선한다.  &lt;br /&gt;
* &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;는 최종적으로 타깃 플랫폼에 맞는 기계어 코드나 바이트코드를 생성하며, 여러 오브젝트 파일을 결합(Linking)하여 실행 가능한 프로그램을 만든다.  &lt;br /&gt;
&lt;br /&gt;
아래는 각 단계의 세부 구성이다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 단계 !! 설명 !! 관련 기술&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;어휘 분석 (Lexical Analysis)&#039;&#039;&#039; || 소스 코드를 문자 단위로 읽어 의미 있는 최소 단위(토큰)로 분해한다. || [[Flex]], [[Lex]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;구문 분석 (Syntax Analysis)&#039;&#039;&#039; || 언어의 문법 규칙에 따라 토큰을 구조적으로 해석하고, 추상 구문 트리(AST)를 생성한다. || [[Bison]], [[Yacc]], [[LALR]], [[PEG]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;의미 분석 (Semantic Analysis)&#039;&#039;&#039; || 변수, 함수, 타입의 유효성을 검사하고, 스코프 및 참조 관계를 검증한다. || [[LLVM Clang]], [[GCC Front-end]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;중간 코드 생성 (IR Generation)&#039;&#039;&#039; || 하드웨어에 독립적인 중간 표현(IR, Intermediate Representation)을 생성한다. || [[LLVM IR]], [[GIMPLE]], [[MIR]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;최적화 (Optimization)&#039;&#039;&#039; || 중간 표현 단계에서 프로그램의 성능을 향상시키기 위한 변환을 수행한다. 불필요한 연산 제거(Dead Code Elimination), 상수 접기(Constant Folding), 제어 흐름 단순화(Control Flow Simplification) 등이 포함된다. || SSA, Constant Folding, Dead Code Elimination&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;코드 생성 (Code Generation)&#039;&#039;&#039; || 최적화된 중간 표현을 실제 타깃 플랫폼의 명령어 집합(ISA)에 맞는 기계어 코드 또는 바이트코드로 변환한다. || [[x86_64]], [[ARM]], [[JVM]], [[WebAssembly]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;링킹 (Linking)&#039;&#039;&#039; || 여러 오브젝트 파일과 라이브러리를 결합하여 실행 가능한 단일 바이너리를 생성한다. || [[ld]], [[lld]], [[gold linker]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
현대의 컴파일러는 이러한 단계를 모듈화하여 독립적으로 개선하거나 교체할 수 있으며,  &lt;br /&gt;
대표적인 예로 [[LLVM]]은 프런트엔드, 미들엔드, 백엔드가 명확히 분리된 구조를 가진다.  &lt;br /&gt;
이러한 구조적 분리는 언어 확장, 타깃 아키텍처 추가, 최적화 연구 등 다양한 분야에서 유연성을 제공한다.&lt;br /&gt;
&lt;br /&gt;
== 주요 컴파일러 ==&lt;br /&gt;
아래 표는 대표적인 &#039;&#039;&#039;정적 컴파일러(Static Compiler)&#039;&#039;&#039; 또는 &#039;&#039;&#039;JIT 컴파일러&#039;&#039;&#039;를 정리한 것이다.  &lt;br /&gt;
인터프리터 기반 언어 구현체는 제외되었으며, 각 항목은 언어의 공식 또는 주요 오픈소스 컴파일러를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 컴파일러 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[C (프로그래밍 언어)]] || [[GCC]], [[Clang]], [[TinyCC]] || 전통적인 시스템 언어 컴파일러, 다양한 아키텍처 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[GCC]], [[Clang]], [[MSVC]] || 객체지향 + 저수준 접근성, [[LLVM]] 기반 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[Fortran]] || [[GFortran]], [[Flang]] || 과학·수치 계산 특화, [[LLVM]] 기반 현대화 진행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ada]] || [[GNAT]] || 고신뢰·임베디드 시스템용, [[SPARK]]와 결합 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[Pascal]] || [[Free Pascal]], [[Turbo Pascal]] || 교육용 및 레거시 시스템 유지에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DMD]], [[LDC]], [[GDC]] || C++ 대체 지향, 네이티브·LLVM 백엔드 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[rustc]] || 안전성과 병행성 중심, [[LLVM]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[gc]], [[Gollvm]] || 빠른 빌드와 간결한 런타임 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swiftc]] || [[LLVM]] 기반, [[Objective-C]]와 상호 운용  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] || [[Roslyn]], [[Mono AOT]] || .NET 플랫폼용 컴파일러, API 기반 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[javac]], [[Eclipse Compiler for Java]] || 바이트코드 생성, [[JVM]] 위에서 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Kotlin]] || [[Kotlinc]] || JVM·Native·JS 등 다중 타깃 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[GHC]] || 함수형 언어 전용 고급 최적화, [[LLVM]] 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[OCaml]] || [[OCamlopt]] || 정적 타입 기반 함수형 언어, 네이티브 코드 컴파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[Zig]] || [[Zig Compiler]] || [[LLVM]] 사용, 크로스 컴파일과 성능 중심 설계  &lt;br /&gt;
|-&lt;br /&gt;
| [[Nim]] || [[Nim Compiler]] || [[C]], [[C++]], [[ObjC]] 코드로 트랜스파일, 네이티브 바이너리 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[V (프로그래밍 언어)]] || [[V Compiler]] || 단일 바이너리, 빠른 컴파일 속도  &lt;br /&gt;
|-&lt;br /&gt;
| [[Carbon (프로그래밍 언어)]] || [[Carbon Compiler]] || [[C++]] 후속 실험 언어, [[LLVM]] 인프라 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Whale (툴체인)]] || 차세대 저수준 언어용 [[LLVM]] 대체 툴체인, 고도로 모듈화된 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 인터프리터 ==&lt;br /&gt;
&#039;&#039;&#039;인터프리터(Interpreter)&#039;&#039;&#039;는 프로그램의 소스 코드를 &#039;&#039;&#039;즉시 해석하여 실행&#039;&#039;&#039;하는 소프트웨어이다.  &lt;br /&gt;
컴파일 단계를 거쳐 기계어로 변환하는 대신, 런타임 시점에 명령을 해석하고 수행한다.  &lt;br /&gt;
&lt;br /&gt;
이 방식은 프로그램의 수정·실행 주기가 빠르고, 대화형 환경(Interactive Environment)에 적합하다.  &lt;br /&gt;
주로 [[스크립트 언어]]나 [[동적 타이핑 언어]]에서 사용되며,  &lt;br /&gt;
최근에는 [[JIT (Just-In-Time) 컴파일]]을 결합한 하이브리드 구조가 일반적이다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 대표 인터프리터 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[CPython]], [[PyPy]] || 대표적인 스크립트 언어, JIT 지원 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ruby]] || [[MRI]], [[JRuby]], [[TruffleRuby]] || 순수 객체지향 구조, JVM 기반 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[JavaScript]] || [[V8]], [[SpiderMonkey]], [[JavaScriptCore]] || 브라우저 및 서버 런타임, 고성능 JIT 내장  &lt;br /&gt;
|-&lt;br /&gt;
| [[Lua]] || [[LuaJIT]], [[PUC-Rio Lua]] || 임베디드 시스템 친화적, C API 통합 용이  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Zend Engine]], [[HHVM]] || 서버 사이드 웹 스크립팅, JIT 기반 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perl]] || [[Perl Interpreter]] || 문자열 처리와 정규식에 강력한 기능 제공  &lt;br /&gt;
|-&lt;br /&gt;
| [[R (프로그래밍 언어)]] || [[GNU R]], [[Renjin]] || 통계 계산 및 데이터 분석용 언어  &lt;br /&gt;
|-&lt;br /&gt;
| [[Scheme]] || [[Racket]], [[Guile]], [[Chez Scheme]] || Lisp 계열, 함수형 메타프로그래밍 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Tcl]] || [[Tcl Interpreter]] || 간결한 문법과 확장성, 임베디드 제어용으로 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bash]] || [[GNU Bash]], [[Zsh]] || 셸 환경용 스크립트 해석기, 운영체제 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Elixir]] || [[BEAM VM]] || [[Erlang]] 기반 가상머신, 동시성 처리에 최적화  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 빌드 시스템 ==&lt;br /&gt;
&#039;&#039;&#039;빌드 시스템(Build System)&#039;&#039;&#039;은 여러 소스 파일을 자동으로 컴파일·링크하여 실행 가능한 프로그램이나 라이브러리를 생성하는 &#039;&#039;&#039;소프트웨어 자동화 도구&#039;&#039;&#039;이다.  &lt;br /&gt;
프로젝트가 커질수록 수작업으로 빌드를 관리하기 어려워지기 때문에,  &lt;br /&gt;
빌드 시스템은 &#039;&#039;&#039;의존성 관리&#039;&#039;&#039;, &#039;&#039;&#039;병렬 처리&#039;&#039;&#039;, &#039;&#039;&#039;테스트 실행&#039;&#039;&#039;, &#039;&#039;&#039;패키징&#039;&#039;&#039; 등 다양한 과정을 자동화한다.  &lt;br /&gt;
&lt;br /&gt;
일부 빌드 시스템은 단순한 명령 스크립트를 넘어,  &lt;br /&gt;
독자적인 DSL(Domain Specific Language) 또는 메타 빌드 구조를 제공한다.  &lt;br /&gt;
대표적인 예로 [[CMake]], [[Gradle]], [[Bazel]] 등이 있으며,  &lt;br /&gt;
현대 언어들은 각 언어에 특화된 자체 빌드 도구([[Cargo]], [[x.py]], [[Vex]] 등)를 제공하기도 한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 이름 !! 언어/환경 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Make]] || [[C]], [[C++]] || 전통적인 빌드 자동화 도구, 의존성 기반 명령 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[CMake]] || 다중 언어 || 메타 빌드 시스템, [[Ninja]]·[[Make]] 백엔드 지원, 크로스 플랫폼  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ninja]] || 다중 언어 || 고속·병렬 빌드에 최적화된 경량 빌드 실행기  &lt;br /&gt;
|-&lt;br /&gt;
| [[Meson]] || [[C]], [[C++]], [[Rust]] 등 || Python 유사 DSL, [[Ninja]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[SCons]] || [[Python]] || 완전한 파이썬 스크립팅 기반 빌드 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Premake]] || [[Lua]] || [[Lua]] 기반 설정, IDE 프로젝트 파일 자동 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[QMake]] || [[C++]] ([[Qt]]) || Qt 프레임워크 전용 프로젝트 구성 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Gradle]] || [[Java]], [[Kotlin]] || Groovy/Kotlin DSL 기반, JVM 생태계 표준 빌드 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bazel]] || 다중 언어 || [[Google]]의 대규모 모노레포 빌드용, 캐싱·병렬화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[x.py]] || [[Rust]], [[Wave]] || 통합식 컴파일 파이프라인, 컴파일러 및 툴체인 자체 빌드에 사용  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 디버깅 및 분석 도구 ==&lt;br /&gt;
&#039;&#039;&#039;디버깅 및 분석 도구(Debugging and Analysis Tools)&#039;&#039;&#039;는  &lt;br /&gt;
프로그램의 실행 과정, 메모리 사용, 성능 병목, 시스템 호출 등을 관찰·분석하여  &lt;br /&gt;
오류를 진단하고 최적화를 지원하는 개발 보조 도구이다.  &lt;br /&gt;
&lt;br /&gt;
이러한 도구들은 일반적으로 다음과 같은 목적에 따라 구분된다:&lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 코드의 실행 흐름 제어 및 변수 상태 추적  &lt;br /&gt;
* &#039;&#039;&#039;메모리 분석기(Memory Analyzer):&#039;&#039;&#039; 메모리 누수, 접근 위반 등 런타임 오류 탐지  &lt;br /&gt;
* &#039;&#039;&#039;성능 프로파일러(Profiler):&#039;&#039;&#039; CPU·메모리 사용률, 함수 호출 시간 등 측정  &lt;br /&gt;
* &#039;&#039;&#039;시스템 추적기(System Tracer):&#039;&#039;&#039; 커널 및 시스템 호출 수준에서 동작 모니터링  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 도구 !! 기능 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[GDB]] || 디버거 || GNU 프로젝트의 대표 디버거, 프로세스 실행 중단·단계별 추적·변수 조사 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[LLDB]] || 디버거 || [[LLVM]] 인프라 기반, [[Clang]]과 통합된 현대적 디버거  &lt;br /&gt;
|-&lt;br /&gt;
| [[Valgrind]] || 메모리 분석 || 메모리 누수, 잘못된 접근, 캐시 동작 등을 분석  &lt;br /&gt;
|-&lt;br /&gt;
| [[AddressSanitizer]] || 런타임 검증 || [[Clang]] 및 [[GCC]] 통합 런타임 검증기, 메모리 오류 탐지  &lt;br /&gt;
|-&lt;br /&gt;
| [[ThreadSanitizer]] || 동시성 검증 || 데이터 레이스 및 스레드 동기화 문제 감지  &lt;br /&gt;
|-&lt;br /&gt;
| [[gprof]] || 성능 분석 || 함수 호출 빈도·시간 측정 기반의 전통적 프로파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[perf]] || 성능 측정 || [[Linux]] 커널 레벨의 고성능 성능 분석 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perfetto]] || 트레이싱 || [[Android]] 및 [[Chrome]]용 성능 추적 프레임워크  &lt;br /&gt;
|-&lt;br /&gt;
| [[strace]] || 시스템 호출 추적 || [[Linux]] 환경에서 시스템 콜 및 시그널 동작 로깅  &lt;br /&gt;
|-&lt;br /&gt;
| [[DTrace]] || 동적 트레이싱 || [[Solaris]], [[macOS]], [[BSD]] 계열의 실시간 커널·유저 레벨 분석  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 패키지 관리자 ==&lt;br /&gt;
&#039;&#039;&#039;패키지 관리자(Package Manager)&#039;&#039;&#039;는  &lt;br /&gt;
라이브러리 설치, 업데이트, 삭제, 버전 관리, 의존성 해결을 자동화하는 시스템이다.  &lt;br /&gt;
개발자는 개별 라이브러리를 직접 다운로드할 필요 없이  &lt;br /&gt;
패키지 관리자를 통해 중앙 저장소(Repository)에서 필요한 모듈을 손쉽게 가져올 수 있다.  &lt;br /&gt;
&lt;br /&gt;
현대의 패키지 관리자는 단순한 설치 도구를 넘어  &lt;br /&gt;
&#039;&#039;&#039;빌드 시스템과의 통합&#039;&#039;&#039;, &#039;&#039;&#039;테스트 자동화&#039;&#039;&#039;, &#039;&#039;&#039;출시 버전 관리&#039;&#039;&#039;, &#039;&#039;&#039;보안 검증&#039;&#039;&#039;까지 포괄하며,  &lt;br /&gt;
언어별로 고유한 생태계를 형성하고 있다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 도구 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[vcpkg]], [[Conan]] || 바이너리·소스 기반 혼합 지원, 크로스 플랫폼 배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[Cargo]] || 통합 빌드·배포·테스트 시스템, [[Crates.io]] 레지스트리 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[pip]], [[Poetry]] || [[PyPI]] 연동, 가상 환경과 의존성 잠금 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Node.js]] / [[JavaScript]] || [[npm]], [[pnpm]], [[yarn]] || JS 생태계 표준 도구, 빠른 캐싱과 병렬 설치  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[Maven]], [[Gradle]] || XML/DSL 기반 의존성 정의, 중앙 저장소 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] / [[.NET]] || [[NuGet]] || .NET 플랫폼 전용 패키지 배포 및 버전 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[Go Modules]] || 소스 코드 기반 버전 모듈 관리, Git과 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swift Package Manager]] || [[Xcode]]와 통합된 공식 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DUB]] || [[DMD]] 및 [[LDC]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[Cabal]], [[Stack]] || Hackage 저장소 기반 빌드·배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Composer]] || PHP 생태계의 표준 의존성 관리 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Vex]] || [[WSON]] 기반 빌드·패키징·다중 플랫폼 배포 지원  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 통합 개발 환경 (IDE) ==&lt;br /&gt;
&#039;&#039;&#039;통합 개발 환경(Integrated Development Environment, IDE)&#039;&#039;&#039;는  &lt;br /&gt;
코드 작성, 빌드, 디버깅, 테스트, 배포 등의 개발 과정을 하나의 프로그램 내에서 수행할 수 있도록 통합한 소프트웨어이다.  &lt;br /&gt;
&lt;br /&gt;
IDE는 단순한 텍스트 에디터와 달리  &lt;br /&gt;
다음과 같은 구성 요소를 통합 제공한다:&lt;br /&gt;
* &#039;&#039;&#039;코드 편집기(Editor):&#039;&#039;&#039; 구문 강조, 자동 완성, 코드 탐색 기능 제공  &lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템 통합(Build Integration):&#039;&#039;&#039; 컴파일, 링크, 테스트 자동화  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 런타임 실행 제어, 변수 추적, 스택 분석  &lt;br /&gt;
* &#039;&#039;&#039;버전 관리(VCS Integration):&#039;&#039;&#039; [[Git]] 등과 연동한 협업 기능  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리 연동(Package Manager Integration):&#039;&#039;&#039; 의존성 설치 및 관리 지원  &lt;br /&gt;
&lt;br /&gt;
현대의 IDE는 플러그인 확장 구조를 채택하여,  &lt;br /&gt;
다양한 언어와 프레임워크를 통합적으로 지원한다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! IDE !! 주요 언어 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio]] || [[C (프로그래밍 언어)]], [[C++]], [[C＃]] || 마이크로소프트의 대표 IDE, 윈도우 통합 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio Code|VS Code]] || 다중 언어 || 오픈소스, 경량·확장성 중심, 풍부한 확장 마켓  &lt;br /&gt;
|-&lt;br /&gt;
| [[RustRover]] || [[Rust]] || [[JetBrains]] 기반 Rust 전용 IDE, [[Cargo]] 완전 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[IntelliJ IDEA]] || [[Java]], [[Kotlin]] || JVM 언어 중심, 강력한 코드 분석 및 리팩토링  &lt;br /&gt;
|-&lt;br /&gt;
| [[PyCharm]] || [[Python]] || 코드 자동 완성, 디버깅, 테스트 프레임워크 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[CLion]] || [[C (프로그래밍 언어)]], [[C++]], [[Rust]] || [[JetBrains]]의 네이티브 언어 IDE, [[CMake]] 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Xcode]] || [[Swift]], [[Objective-C]] || [[macOS]] 및 [[iOS]] 공식 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Eclipse]] || [[Java]], [[C++]], [[Python]] 등 || 오픈소스, 플러그인 기반 확장 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[NetBeans]] || [[Java]], [[PHP]], [[HTML]] || [[Apache]] 재단 관리, 교육 및 웹 개발 친화적  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rider]] || [[C＃]], [[.NET]] || [[JetBrains]]의 크로스 플랫폼 .NET IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Android Studio]] || [[Kotlin]], [[Java]] || [[Android]] 공식 IDE, [[Gradle]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Qt Creator]] || [[C++]], [[QML]] || [[Qt]] 프레임워크용 공식 IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Code::Blocks]] || [[C (프로그래밍 언어)]], [[C++]] || 오픈소스 경량 IDE, 플러그인 기반 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 중간 표현 (IR) ==&lt;br /&gt;
&#039;&#039;&#039;중간 표현(Intermediate Representation, IR)&#039;&#039;&#039;은  &lt;br /&gt;
컴파일러 내부에서 소스 코드의 의미를 추상화하여 표현한 중간 형태의 코드 구조이다.  &lt;br /&gt;
이는 프론트엔드(Front-end)에서 생성되어, 미들엔드(Middle-end) 최적화를 거친 뒤  &lt;br /&gt;
백엔드(Back-end)에서 기계어로 변환되는 핵심 매개체 역할을 한다.  &lt;br /&gt;
&lt;br /&gt;
IR은 언어의 문법적 복잡성을 제거하고,  &lt;br /&gt;
하드웨어나 플랫폼에 독립적인 형태로 프로그램의 의미를 유지한다.  &lt;br /&gt;
이로써 최적화, 코드 분석, 플랫폼 간 이식성을 효율적으로 구현할 수 있다.  &lt;br /&gt;
&lt;br /&gt;
대표적인 IR은 대부분 &#039;&#039;&#039;SSA(Static Single Assignment)&#039;&#039;&#039; 형식을 채택하며,  &lt;br /&gt;
각 변수는 단 한 번만 할당되어 데이터 흐름 분석이 단순화된다.  &lt;br /&gt;
또한 일부 IR은 가상 머신 실행용(예: JVM Bytecode, WebAssembly)으로 활용되어,  &lt;br /&gt;
컴파일과 실행의 경계를 유연하게 확장한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 명칭 !! 사용 컴파일러 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[LLVM IR]] || [[Clang]], [[Rustc]], [[Swiftc]] || 범용 SSA 기반 IR, [[LLVM]] 미들엔드의 핵심 구성  &lt;br /&gt;
|-&lt;br /&gt;
| [[GIMPLE]] || [[GCC]] || 3단계 중간 표현(고수준–단순화–저수준) 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[MIR]] || [[Rustc]] || [[LLVM]] 이전 단계의 내부 표현, 제어 흐름 기반 분석에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[WAIL Assembly Integration Layer|WAIL]] || [[Whale]] || [[Wave]] 전용 백엔드 IR, “WAIL Assembly Integration Layer”  &lt;br /&gt;
|-&lt;br /&gt;
| [[MLIR]] || [[LLVM Project]] || 멀티 레벨 중간 표현, 다양한 도메인(머신러닝·GPU)에 대응  &lt;br /&gt;
|-&lt;br /&gt;
| [[SIL (Swift Intermediate Language)]] || [[Swiftc]] || [[Swift]] 전용 중간 언어, [[ARC]] 기반 최적화  &lt;br /&gt;
|-&lt;br /&gt;
| [[FIR (Fortran IR)]] || [[Flang]] || [[Fortran]]용 [[LLVM]] 통합 IR, 과학 계산용 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[GHC Core]] || [[GHC]] || [[Haskell]] 전용 함수형 중간 표현, 람다 기반 변환 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[JVM Bytecode]] || [[javac]], [[kotlinc]], [[scalac]] || [[JVM]] 위에서 실행되는 스택 기반 중간 코드  &lt;br /&gt;
|-&lt;br /&gt;
| [[WebAssembly]] || [[Emscripten]], [[V8]], [[Wasmtime]] || 브라우저 및 경량 VM용 범용 중간 표현  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 컴파일러 최적화 기법 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러 최적화(Compiler Optimization)&#039;&#039;&#039;는  &lt;br /&gt;
생성된 코드의 성능을 향상시키거나 메모리 사용량을 줄이기 위해  &lt;br /&gt;
중간 표현(IR) 또는 기계어 단계에서 수행되는 변환 과정이다.  &lt;br /&gt;
&lt;br /&gt;
최적화는 주로 &#039;&#039;&#039;미들엔드(Middle-end)&#039;&#039;&#039; 단계에서 이루어지며,  &lt;br /&gt;
프로그램의 의미(semantic)를 변경하지 않으면서 실행 효율을 높인다.  &lt;br /&gt;
일부 최적화는 타깃 아키텍처에 맞추어 &#039;&#039;&#039;백엔드(Back-end)&#039;&#039;&#039; 단계에서 추가로 수행된다.&lt;br /&gt;
&lt;br /&gt;
대표적인 최적화 기법은 다음과 같다:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Constant Folding (상수 접기)&#039;&#039;&#039; –  &lt;br /&gt;
  컴파일 시점에 상수 표현식을 미리 계산하여 실행 시 연산을 줄인다.  &lt;br /&gt;
  예: `3 * 4` → `12`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dead Code Elimination (죽은 코드 제거)&#039;&#039;&#039; –  &lt;br /&gt;
  실행 결과에 영향을 주지 않는 명령어, 변수, 분기 등을 삭제하여 코드 크기를 축소한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Loop Unrolling (루프 전개)&#039;&#039;&#039; –  &lt;br /&gt;
  반복문 내부의 연산을 여러 번 펼쳐 배치함으로써 루프 제어 오버헤드를 줄인다.  &lt;br /&gt;
  예: `for(i=0;i&amp;lt;4;i++) sum+=a[i];` → 직접 4회 연산 나열&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Inlining (인라이닝)&#039;&#039;&#039; –  &lt;br /&gt;
  짧고 자주 호출되는 함수를 호출 대신 본문으로 삽입하여 함수 호출 오버헤드를 제거한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Register Allocation (레지스터 할당)&#039;&#039;&#039; –  &lt;br /&gt;
  변수나 임시 값을 CPU 레지스터에 효율적으로 배치하여 메모리 접근을 최소화한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instruction Scheduling (명령어 스케줄링)&#039;&#039;&#039; –  &lt;br /&gt;
  명령어 실행 순서를 재배치하여 파이프라인 병목을 줄이고 병렬 실행 효율을 높인다.&lt;br /&gt;
&lt;br /&gt;
이 외에도 다음과 같은 고급 최적화가 존재한다:&lt;br /&gt;
* &#039;&#039;&#039;Common Subexpression Elimination&#039;&#039;&#039; – 동일한 계산을 한 번만 수행  &lt;br /&gt;
* &#039;&#039;&#039;Loop-Invariant Code Motion&#039;&#039;&#039; – 루프 내 불변식을 루프 밖으로 이동  &lt;br /&gt;
* &#039;&#039;&#039;Tail Call Optimization&#039;&#039;&#039; – 재귀 호출을 반복 구조로 변환  &lt;br /&gt;
* &#039;&#039;&#039;Interprocedural Optimization&#039;&#039;&#039; – 함수 간 데이터 흐름 기반 최적화  &lt;br /&gt;
* &#039;&#039;&#039;Vectorization&#039;&#039;&#039; – [[SIMD]] 명령어를 이용해 데이터 병렬 처리  &lt;br /&gt;
&lt;br /&gt;
최적화 수준은 일반적으로 컴파일러 옵션으로 제어되며,  &lt;br /&gt;
예를 들어 [[GCC]]와 [[Clang]]에서는 `-O1`, `-O2`, `-O3`, `-Ofast`, `-Os` 등의 단계를 제공한다.  &lt;br /&gt;
이러한 단계는 코드 크기, 실행 속도, 빌드 시간 사이의 균형을 조절하기 위한 설정이다.&lt;br /&gt;
&lt;br /&gt;
== 현대 컴파일러 트렌드 ==&lt;br /&gt;
현대의 컴파일러는 단순히 코드를 기계어로 변환하는 역할을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;실행 효율&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 다양성&#039;&#039;&#039;, &#039;&#039;&#039;개발 환경 통합&#039;&#039;&#039;, &#039;&#039;&#039;언어 생태계 확장성&#039;&#039;&#039;을 동시에 달성하는 방향으로 발전하고 있다.  &lt;br /&gt;
아래는 현재 컴파일러 기술의 주요 트렌드이다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[just-in-time|JIT (Just-In-Time) 컴파일]]&#039;&#039;&#039; – 실행 시점에 코드의 일부를 기계어로 변환하여 성능과 유연성을 동시에 확보하는 기법. 런타임 중 프로파일링 데이터를 수집해 최적화하며, 대표적으로 [[V8]], [[JVM]], [[.NET CLR]], [[LuaJIT]] 등이 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[ahead-of-time|AOT (Ahead-Of-Time) 컴파일]]&#039;&#039;&#039; – 프로그램 실행 전에 모든 코드를 완전히 컴파일하는 방식으로, 실행 속도와 배포 효율이 높다. [[Rust]], [[Swift]], [[C++]], [[Wave]] 같은 정적 언어들이 주로 채택한다. [[GraalVM]]의 AOT 모드와 같이 JIT 기반 언어에서도 AOT를 병행하는 사례가 늘고 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[멀티 타깃 빌드]]&#039;&#039;&#039; – 하나의 소스 코드로 여러 하드웨어 아키텍처(x86, ARM, RISC-V, WebAssembly 등)에 대응하는 기능. [[LLVM]], [[Whale]], [[GCC]]는 모듈식 백엔드 구조를 통해 이를 지원하며, [[Vex]] 같은 패키지 매니저는 빌드 타깃을 직접 지정할 수 있게 통합된다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[컴파일러 툴체인|자체 툴체인]]&#039;&#039;&#039; – 언어 전용으로 설계된 빌드 및 패키징 시스템을 통합 제공하는 구조. [[Cargo]]([[Rust]]), [[Vex]]([[Wave]]), [[Swift Package Manager]], [[Go Modules]] 등이 이에 속한다. 이는 빌드 자동화, 테스트, 배포를 언어 레벨에서 일원화하여 개발 생태계를 견고하게 만든다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[언어 서버 프로토콜]] (LSP)&#039;&#039;&#039; – [[IDE]]와 컴파일러 간의 실시간 연동을 표준화한 프로토콜. 코드 분석, 자동 완성, 오류 감지 등을 컴파일러가 직접 제공하며, [[VS Code]], [[RustRover]], [[IntelliJ IDEA]] 등 대부분의 IDE가 지원한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[IR 수준 최적화]]&#039;&#039;&#039; – [[LLVM Pass]], [[WAIL Pass]], [[MLIR]]과 같은 중간 표현 레벨에서 수행되는 고급 최적화 기법. 백엔드 독립적으로 적용되어 다양한 플랫폼에서 동일한 최적화 효과를 얻을 수 있다. 이는 현대 컴파일러의 핵심 경쟁력으로 자리 잡고 있다.&lt;br /&gt;
&lt;br /&gt;
현대 컴파일러들은 이러한 기술을 결합하여, &#039;&#039;&#039;다중 아키텍처 대응·지능형 최적화·개발 도구 통합&#039;&#039;&#039;이라는 세 가지 축을 중심으로 진화하고 있다. 이러한 경향은 [[LLVM]], [[Whale]], [[GraalVM]], [[V8]] 등의 오픈소스 프로젝트를 통해 빠르게 확산되고 있다.&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[링커]]  &lt;br /&gt;
* [[어셈블러]]  &lt;br /&gt;
* [[빌드 시스템]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[GCC]]  &lt;br /&gt;
* [[Whale (툴체인)]]  &lt;br /&gt;
* [[Vex]]  &lt;br /&gt;
* [[IDE]]  &lt;br /&gt;
* [[디버거]]&lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Alfred V. Aho, Monica Lam, Ravi Sethi, Jeffrey Ullman, &#039;&#039;Compilers: Principles, Techniques, and Tools&#039;&#039; (Dragon Book)  &lt;br /&gt;
* Chris Lattner, “LLVM: A Compilation Framework for Lifelong Program Analysis &amp;amp; Transformation” (2002)  &lt;br /&gt;
* John Levine, &#039;&#039;Linkers and Loaders&#039;&#039; (2000)  &lt;br /&gt;
* Rustc Dev Guide – [https://rustc-dev-guide.rust-lang.org/]  &lt;br /&gt;
* LLVM Documentation – [https://llvm.org/docs/]  &lt;br /&gt;
* GCC Internals Manual – GNU Project  &lt;br /&gt;
* JetBrains IDE Documentation – 2024 Edition&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Whale_(%ED%88%B4%EC%B2%B4%EC%9D%B8)&amp;diff=222</id>
		<title>Whale (툴체인)</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Whale_(%ED%88%B4%EC%B2%B4%EC%9D%B8)&amp;diff=222"/>
		<updated>2025-11-24T04:42:28Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 새 문서: &amp;#039;&amp;#039;&amp;#039;Whale&amp;#039;&amp;#039;&amp;#039;은 Wave 프로그래밍 언어의 공식 컴파일러 툴체인이다.  == 구조 == Whale의 내부 구조는 다음과 같이 구성된다:  {| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot; ! 계층 !! 구성 요소 !! 설명 |- | 전처리기 || Whale Preprocessor || Wave 코드 파싱 및 AST 생성   |- | IR 계층 || WAIL IR || 추상 중간 표현 (Wave → IR)   |- | 어셈블러 || Whale Assembler || 아키텍처별 어셈블리 생성...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Whale&#039;&#039;&#039;은 [[Wave]] 프로그래밍 언어의 공식 컴파일러 툴체인이다.&lt;br /&gt;
&lt;br /&gt;
== 구조 ==&lt;br /&gt;
Whale의 내부 구조는 다음과 같이 구성된다:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 계층 !! 구성 요소 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 전처리기 || Whale Preprocessor || Wave 코드 파싱 및 AST 생성  &lt;br /&gt;
|-&lt;br /&gt;
| IR 계층 || [[WAIL IR]] || 추상 중간 표현 (Wave → IR)  &lt;br /&gt;
|-&lt;br /&gt;
| 어셈블러 || [[Whale Assembler]] || 아키텍처별 어셈블리 생성기  &lt;br /&gt;
|-&lt;br /&gt;
| 오프젝트 파일 생성|| [[Whale Object]] || 어셈블리 → 객체 코드 변환  &lt;br /&gt;
|-&lt;br /&gt;
| 링크 계층 || [[Whale Linker]] || 실행 파일 및 바이너리 빌드  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Whale Abstract Intermediate Language ==&lt;br /&gt;
&#039;&#039;&#039;WAIL (Whale Abstract Intermediate Language)&#039;&#039;&#039;은  &lt;br /&gt;
Whale 내부에서 사용되는 중간 표현(IR)이다. 아직은 설계 단계에 있다.&lt;br /&gt;
&lt;br /&gt;
== Whale Assembler ==&lt;br /&gt;
&#039;&#039;&#039;Whale Assembler&#039;&#039;&#039;은 어셈블러로,  &lt;br /&gt;
[[x86_64]]뿐 아니라 [[ARM64]], [[RISC-V]], [[WAIP-128]] 같은  &lt;br /&gt;
Wave 생태계 전용 아키텍처를 지원할 예정이다.&lt;br /&gt;
&lt;br /&gt;
== Whale Object ==&lt;br /&gt;
[[Whale Object]]는 오브젝트 파일을 생성한다.  &lt;br /&gt;
이는 [[ELF]], [[PE]], [[Mach-O]] 등 다양한 실행 포맷을 지원할 수 있도록 설계된다.&lt;br /&gt;
&lt;br /&gt;
== 명령어 ==&lt;br /&gt;
기본 명령 구조는 다음과 같다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
whale asm main.asm -o main.bin&lt;br /&gt;
whale obj main.wl -o main.o&lt;br /&gt;
whale link main.o -o main.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[Wave]]  &lt;br /&gt;
* [[WAIL IR]]  &lt;br /&gt;
* [[Whale Assembler]]  &lt;br /&gt;
* [[Whale Object]]  &lt;br /&gt;
* [[Vex]]  &lt;br /&gt;
* [[WaveOS]]&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=221</id>
		<title>컴파일러와 도구</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=221"/>
		<updated>2025-11-24T04:34:58Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 같이 보기 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러와 도구&#039;&#039;&#039;(Compilers and Tools)는  &lt;br /&gt;
프로그래밍 언어로 작성된 소스 코드를 해석, 변환, 최적화, 실행하기 위한  &lt;br /&gt;
&#039;&#039;&#039;소프트웨어 개발 인프라의 핵심 구성 요소&#039;&#039;&#039;이다.  &lt;br /&gt;
&lt;br /&gt;
이들은 단순히 코드를 “기계가 이해할 수 있는 형태로 변환하는 시스템”을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;개발 생산성 향상&#039;&#039;&#039;, &#039;&#039;&#039;코드 품질 보장&#039;&#039;&#039;, &#039;&#039;&#039;성능 최적화&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 간 이식성 확보&#039;&#039;&#039;를 담당한다.  &lt;br /&gt;
&lt;br /&gt;
컴파일러, 인터프리터, 어셈블러, 링커, 디버거, 빌드 시스템, IDE, 패키지 관리자 등은  &lt;br /&gt;
모두 언어의 생명주기 — &#039;&#039;&#039;작성 → 분석 → 변환 → 실행 → 유지보수&#039;&#039;&#039; — 를 구성하는 필수적인 도구군(toolchain)을 이룬다.  &lt;br /&gt;
&lt;br /&gt;
=== 컴파일러 ===&lt;br /&gt;
&#039;&#039;&#039;컴파일러(Compiler)&#039;&#039;&#039;는 고급 언어(high-level language)로 작성된 소스 코드를  &lt;br /&gt;
기계어(machine code) 또는 중간 표현(intermediate representation)으로 변환하는 프로그램이다.  &lt;br /&gt;
이 과정은 일반적으로 다음 단계를 거친다:&lt;br /&gt;
# &#039;&#039;&#039;어휘 분석(Lexical Analysis)&#039;&#039;&#039; — 토큰 단위로 소스 코드를 분해  &lt;br /&gt;
# &#039;&#039;&#039;구문 분석(Syntax Analysis)&#039;&#039;&#039; — 언어의 문법에 따라 트리 구조(AST)를 생성  &lt;br /&gt;
# &#039;&#039;&#039;의미 분석(Semantic Analysis)&#039;&#039;&#039; — 타입, 스코프, 참조 관계를 검증  &lt;br /&gt;
# &#039;&#039;&#039;중간 코드 생성(IR Generation)&#039;&#039;&#039; — 하드웨어 독립적인 내부 표현 생성  &lt;br /&gt;
# &#039;&#039;&#039;최적화(Optimization)&#039;&#039;&#039; — 실행 효율을 높이기 위한 변환 수행  &lt;br /&gt;
# &#039;&#039;&#039;코드 생성(Code Generation)&#039;&#039;&#039; — 타깃 플랫폼의 기계어로 변환  &lt;br /&gt;
&lt;br /&gt;
일부 현대 컴파일러는 이 과정을 여러 모듈로 분리하여,  &lt;br /&gt;
프런트엔드(frontend), 미들엔드(midend), 백엔드(backend) 구조로 구성한다.  &lt;br /&gt;
예: [[LLVM]], [[GCC]], [[Whale (컴파일러 툴체인)]] 등.&lt;br /&gt;
&lt;br /&gt;
=== 기타 개발 도구 ===&lt;br /&gt;
컴파일러 외에도 다음과 같은 다양한 개발 도구가 소프트웨어 품질과 효율성을 높인다:&lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템(Build System):&#039;&#039;&#039; 소스 코드의 컴파일, 링크, 테스트, 배포를 자동화 (예: [[CMake]], [[Ninja]], [[x.py]])  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 실행 중인 프로그램의 동작을 추적하고 오류를 분석 (예: [[GDB]], [[LLDB]])  &lt;br /&gt;
* &#039;&#039;&#039;린터(Linter):&#039;&#039;&#039; 코드 스타일 및 잠재적 버그를 정적 분석으로 탐지 (예: [[Clippy]], [[ESLint]])  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리자(Package Manager):&#039;&#039;&#039; 의존성 관리 및 모듈 배포를 지원 (예: [[Cargo]], [[Vex]], [[npm]])  &lt;br /&gt;
* &#039;&#039;&#039;IDE(통합 개발 환경):&#039;&#039;&#039; 코드 작성, 빌드, 디버깅, 테스트를 통합 제공 (예: [[Visual Studio Code]], [[RustRover]])  &lt;br /&gt;
&lt;br /&gt;
=== 역할과 중요성 ===&lt;br /&gt;
컴파일러와 개발 도구는 프로그래밍 언어 생태계의 기반을 이루며,  &lt;br /&gt;
언어 설계 철학과 밀접하게 연관되어 있다.  &lt;br /&gt;
효율적인 도구 체계는 언어의 확장성, 성능, 보안성, 유지보수성을 직접적으로 좌우한다.  &lt;br /&gt;
&lt;br /&gt;
현대의 개발 환경에서는 단일 컴파일러가 아닌  &lt;br /&gt;
&#039;&#039;&#039;모듈화된 툴체인(toolchain)&#039;&#039;&#039;이 표준으로 자리 잡고 있으며,  &lt;br /&gt;
이러한 구조는 다양한 아키텍처와 플랫폼에서의 고성능 빌드와 이식성을 가능하게 한다.  &lt;br /&gt;
&lt;br /&gt;
== 컴파일러의 구조 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러&#039;&#039;&#039;는 소스 코드를 기계어로 변환하기 위해 일련의 분석과 변환 단계를 거치며,  &lt;br /&gt;
일반적으로 &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;, &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;, &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;의 세 부분으로 구성된다.  &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;는 주로 언어의 문법과 의미를 해석하는 역할을 담당한다. 소스 코드를 분석하여 구조화된 내부 표현(AST)을 생성하고, 타입 검사와 같은 의미적 검증을 수행한다.  &lt;br /&gt;
* &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;는 이 내부 표현을 기반으로 프로그램의 효율을 향상시키는 최적화 단계이다. 불필요한 연산을 제거하고, 실행 속도와 메모리 사용량을 개선한다.  &lt;br /&gt;
* &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;는 최종적으로 타깃 플랫폼에 맞는 기계어 코드나 바이트코드를 생성하며, 여러 오브젝트 파일을 결합(Linking)하여 실행 가능한 프로그램을 만든다.  &lt;br /&gt;
&lt;br /&gt;
아래는 각 단계의 세부 구성이다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 단계 !! 설명 !! 관련 기술&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;어휘 분석 (Lexical Analysis)&#039;&#039;&#039; || 소스 코드를 문자 단위로 읽어 의미 있는 최소 단위(토큰)로 분해한다. || [[Flex]], [[Lex]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;구문 분석 (Syntax Analysis)&#039;&#039;&#039; || 언어의 문법 규칙에 따라 토큰을 구조적으로 해석하고, 추상 구문 트리(AST)를 생성한다. || [[Bison]], [[Yacc]], [[LALR]], [[PEG]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;의미 분석 (Semantic Analysis)&#039;&#039;&#039; || 변수, 함수, 타입의 유효성을 검사하고, 스코프 및 참조 관계를 검증한다. || [[LLVM Clang]], [[GCC Front-end]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;중간 코드 생성 (IR Generation)&#039;&#039;&#039; || 하드웨어에 독립적인 중간 표현(IR, Intermediate Representation)을 생성한다. || [[LLVM IR]], [[GIMPLE]], [[MIR]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;최적화 (Optimization)&#039;&#039;&#039; || 중간 표현 단계에서 프로그램의 성능을 향상시키기 위한 변환을 수행한다. 불필요한 연산 제거(Dead Code Elimination), 상수 접기(Constant Folding), 제어 흐름 단순화(Control Flow Simplification) 등이 포함된다. || SSA, Constant Folding, Dead Code Elimination&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;코드 생성 (Code Generation)&#039;&#039;&#039; || 최적화된 중간 표현을 실제 타깃 플랫폼의 명령어 집합(ISA)에 맞는 기계어 코드 또는 바이트코드로 변환한다. || [[x86_64]], [[ARM]], [[JVM]], [[WebAssembly]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;링킹 (Linking)&#039;&#039;&#039; || 여러 오브젝트 파일과 라이브러리를 결합하여 실행 가능한 단일 바이너리를 생성한다. || [[ld]], [[lld]], [[gold linker]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
현대의 컴파일러는 이러한 단계를 모듈화하여 독립적으로 개선하거나 교체할 수 있으며,  &lt;br /&gt;
대표적인 예로 [[LLVM]]은 프런트엔드, 미들엔드, 백엔드가 명확히 분리된 구조를 가진다.  &lt;br /&gt;
이러한 구조적 분리는 언어 확장, 타깃 아키텍처 추가, 최적화 연구 등 다양한 분야에서 유연성을 제공한다.&lt;br /&gt;
&lt;br /&gt;
== 주요 컴파일러 ==&lt;br /&gt;
아래 표는 대표적인 &#039;&#039;&#039;정적 컴파일러(Static Compiler)&#039;&#039;&#039; 또는 &#039;&#039;&#039;JIT 컴파일러&#039;&#039;&#039;를 정리한 것이다.  &lt;br /&gt;
인터프리터 기반 언어 구현체는 제외되었으며, 각 항목은 언어의 공식 또는 주요 오픈소스 컴파일러를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 컴파일러 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[C (프로그래밍 언어)]] || [[GCC]], [[Clang]], [[TinyCC]] || 전통적인 시스템 언어 컴파일러, 다양한 아키텍처 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[GCC]], [[Clang]], [[MSVC]] || 객체지향 + 저수준 접근성, [[LLVM]] 기반 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[Fortran]] || [[GFortran]], [[Flang]] || 과학·수치 계산 특화, [[LLVM]] 기반 현대화 진행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ada]] || [[GNAT]] || 고신뢰·임베디드 시스템용, [[SPARK]]와 결합 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[Pascal]] || [[Free Pascal]], [[Turbo Pascal]] || 교육용 및 레거시 시스템 유지에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DMD]], [[LDC]], [[GDC]] || C++ 대체 지향, 네이티브·LLVM 백엔드 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[rustc]] || 안전성과 병행성 중심, [[LLVM]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[gc]], [[Gollvm]] || 빠른 빌드와 간결한 런타임 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swiftc]] || [[LLVM]] 기반, [[Objective-C]]와 상호 운용  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] || [[Roslyn]], [[Mono AOT]] || .NET 플랫폼용 컴파일러, API 기반 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[javac]], [[Eclipse Compiler for Java]] || 바이트코드 생성, [[JVM]] 위에서 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Kotlin]] || [[Kotlinc]] || JVM·Native·JS 등 다중 타깃 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[GHC]] || 함수형 언어 전용 고급 최적화, [[LLVM]] 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[OCaml]] || [[OCamlopt]] || 정적 타입 기반 함수형 언어, 네이티브 코드 컴파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[Zig]] || [[Zig Compiler]] || [[LLVM]] 사용, 크로스 컴파일과 성능 중심 설계  &lt;br /&gt;
|-&lt;br /&gt;
| [[Nim]] || [[Nim Compiler]] || [[C]], [[C++]], [[ObjC]] 코드로 트랜스파일, 네이티브 바이너리 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[V (프로그래밍 언어)]] || [[V Compiler]] || 단일 바이너리, 빠른 컴파일 속도  &lt;br /&gt;
|-&lt;br /&gt;
| [[Carbon (프로그래밍 언어)]] || [[Carbon Compiler]] || [[C++]] 후속 실험 언어, [[LLVM]] 인프라 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Whale]] || 차세대 저수준 언어용 [[LLVM]] 대체 툴체인, 고도로 모듈화된 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 인터프리터 ==&lt;br /&gt;
&#039;&#039;&#039;인터프리터(Interpreter)&#039;&#039;&#039;는 프로그램의 소스 코드를 &#039;&#039;&#039;즉시 해석하여 실행&#039;&#039;&#039;하는 소프트웨어이다.  &lt;br /&gt;
컴파일 단계를 거쳐 기계어로 변환하는 대신, 런타임 시점에 명령을 해석하고 수행한다.  &lt;br /&gt;
&lt;br /&gt;
이 방식은 프로그램의 수정·실행 주기가 빠르고, 대화형 환경(Interactive Environment)에 적합하다.  &lt;br /&gt;
주로 [[스크립트 언어]]나 [[동적 타이핑 언어]]에서 사용되며,  &lt;br /&gt;
최근에는 [[JIT (Just-In-Time) 컴파일]]을 결합한 하이브리드 구조가 일반적이다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 대표 인터프리터 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[CPython]], [[PyPy]] || 대표적인 스크립트 언어, JIT 지원 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ruby]] || [[MRI]], [[JRuby]], [[TruffleRuby]] || 순수 객체지향 구조, JVM 기반 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[JavaScript]] || [[V8]], [[SpiderMonkey]], [[JavaScriptCore]] || 브라우저 및 서버 런타임, 고성능 JIT 내장  &lt;br /&gt;
|-&lt;br /&gt;
| [[Lua]] || [[LuaJIT]], [[PUC-Rio Lua]] || 임베디드 시스템 친화적, C API 통합 용이  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Zend Engine]], [[HHVM]] || 서버 사이드 웹 스크립팅, JIT 기반 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perl]] || [[Perl Interpreter]] || 문자열 처리와 정규식에 강력한 기능 제공  &lt;br /&gt;
|-&lt;br /&gt;
| [[R (프로그래밍 언어)]] || [[GNU R]], [[Renjin]] || 통계 계산 및 데이터 분석용 언어  &lt;br /&gt;
|-&lt;br /&gt;
| [[Scheme]] || [[Racket]], [[Guile]], [[Chez Scheme]] || Lisp 계열, 함수형 메타프로그래밍 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Tcl]] || [[Tcl Interpreter]] || 간결한 문법과 확장성, 임베디드 제어용으로 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bash]] || [[GNU Bash]], [[Zsh]] || 셸 환경용 스크립트 해석기, 운영체제 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Elixir]] || [[BEAM VM]] || [[Erlang]] 기반 가상머신, 동시성 처리에 최적화  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 빌드 시스템 ==&lt;br /&gt;
&#039;&#039;&#039;빌드 시스템(Build System)&#039;&#039;&#039;은 여러 소스 파일을 자동으로 컴파일·링크하여 실행 가능한 프로그램이나 라이브러리를 생성하는 &#039;&#039;&#039;소프트웨어 자동화 도구&#039;&#039;&#039;이다.  &lt;br /&gt;
프로젝트가 커질수록 수작업으로 빌드를 관리하기 어려워지기 때문에,  &lt;br /&gt;
빌드 시스템은 &#039;&#039;&#039;의존성 관리&#039;&#039;&#039;, &#039;&#039;&#039;병렬 처리&#039;&#039;&#039;, &#039;&#039;&#039;테스트 실행&#039;&#039;&#039;, &#039;&#039;&#039;패키징&#039;&#039;&#039; 등 다양한 과정을 자동화한다.  &lt;br /&gt;
&lt;br /&gt;
일부 빌드 시스템은 단순한 명령 스크립트를 넘어,  &lt;br /&gt;
독자적인 DSL(Domain Specific Language) 또는 메타 빌드 구조를 제공한다.  &lt;br /&gt;
대표적인 예로 [[CMake]], [[Gradle]], [[Bazel]] 등이 있으며,  &lt;br /&gt;
현대 언어들은 각 언어에 특화된 자체 빌드 도구([[Cargo]], [[x.py]], [[Vex]] 등)를 제공하기도 한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 이름 !! 언어/환경 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Make]] || [[C]], [[C++]] || 전통적인 빌드 자동화 도구, 의존성 기반 명령 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[CMake]] || 다중 언어 || 메타 빌드 시스템, [[Ninja]]·[[Make]] 백엔드 지원, 크로스 플랫폼  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ninja]] || 다중 언어 || 고속·병렬 빌드에 최적화된 경량 빌드 실행기  &lt;br /&gt;
|-&lt;br /&gt;
| [[Meson]] || [[C]], [[C++]], [[Rust]] 등 || Python 유사 DSL, [[Ninja]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[SCons]] || [[Python]] || 완전한 파이썬 스크립팅 기반 빌드 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Premake]] || [[Lua]] || [[Lua]] 기반 설정, IDE 프로젝트 파일 자동 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[QMake]] || [[C++]] ([[Qt]]) || Qt 프레임워크 전용 프로젝트 구성 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Gradle]] || [[Java]], [[Kotlin]] || Groovy/Kotlin DSL 기반, JVM 생태계 표준 빌드 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bazel]] || 다중 언어 || [[Google]]의 대규모 모노레포 빌드용, 캐싱·병렬화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[x.py]] || [[Rust]], [[Wave]] || 통합식 컴파일 파이프라인, 컴파일러 및 툴체인 자체 빌드에 사용  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 디버깅 및 분석 도구 ==&lt;br /&gt;
&#039;&#039;&#039;디버깅 및 분석 도구(Debugging and Analysis Tools)&#039;&#039;&#039;는  &lt;br /&gt;
프로그램의 실행 과정, 메모리 사용, 성능 병목, 시스템 호출 등을 관찰·분석하여  &lt;br /&gt;
오류를 진단하고 최적화를 지원하는 개발 보조 도구이다.  &lt;br /&gt;
&lt;br /&gt;
이러한 도구들은 일반적으로 다음과 같은 목적에 따라 구분된다:&lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 코드의 실행 흐름 제어 및 변수 상태 추적  &lt;br /&gt;
* &#039;&#039;&#039;메모리 분석기(Memory Analyzer):&#039;&#039;&#039; 메모리 누수, 접근 위반 등 런타임 오류 탐지  &lt;br /&gt;
* &#039;&#039;&#039;성능 프로파일러(Profiler):&#039;&#039;&#039; CPU·메모리 사용률, 함수 호출 시간 등 측정  &lt;br /&gt;
* &#039;&#039;&#039;시스템 추적기(System Tracer):&#039;&#039;&#039; 커널 및 시스템 호출 수준에서 동작 모니터링  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 도구 !! 기능 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[GDB]] || 디버거 || GNU 프로젝트의 대표 디버거, 프로세스 실행 중단·단계별 추적·변수 조사 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[LLDB]] || 디버거 || [[LLVM]] 인프라 기반, [[Clang]]과 통합된 현대적 디버거  &lt;br /&gt;
|-&lt;br /&gt;
| [[Valgrind]] || 메모리 분석 || 메모리 누수, 잘못된 접근, 캐시 동작 등을 분석  &lt;br /&gt;
|-&lt;br /&gt;
| [[AddressSanitizer]] || 런타임 검증 || [[Clang]] 및 [[GCC]] 통합 런타임 검증기, 메모리 오류 탐지  &lt;br /&gt;
|-&lt;br /&gt;
| [[ThreadSanitizer]] || 동시성 검증 || 데이터 레이스 및 스레드 동기화 문제 감지  &lt;br /&gt;
|-&lt;br /&gt;
| [[gprof]] || 성능 분석 || 함수 호출 빈도·시간 측정 기반의 전통적 프로파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[perf]] || 성능 측정 || [[Linux]] 커널 레벨의 고성능 성능 분석 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perfetto]] || 트레이싱 || [[Android]] 및 [[Chrome]]용 성능 추적 프레임워크  &lt;br /&gt;
|-&lt;br /&gt;
| [[strace]] || 시스템 호출 추적 || [[Linux]] 환경에서 시스템 콜 및 시그널 동작 로깅  &lt;br /&gt;
|-&lt;br /&gt;
| [[DTrace]] || 동적 트레이싱 || [[Solaris]], [[macOS]], [[BSD]] 계열의 실시간 커널·유저 레벨 분석  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 패키지 관리자 ==&lt;br /&gt;
&#039;&#039;&#039;패키지 관리자(Package Manager)&#039;&#039;&#039;는  &lt;br /&gt;
라이브러리 설치, 업데이트, 삭제, 버전 관리, 의존성 해결을 자동화하는 시스템이다.  &lt;br /&gt;
개발자는 개별 라이브러리를 직접 다운로드할 필요 없이  &lt;br /&gt;
패키지 관리자를 통해 중앙 저장소(Repository)에서 필요한 모듈을 손쉽게 가져올 수 있다.  &lt;br /&gt;
&lt;br /&gt;
현대의 패키지 관리자는 단순한 설치 도구를 넘어  &lt;br /&gt;
&#039;&#039;&#039;빌드 시스템과의 통합&#039;&#039;&#039;, &#039;&#039;&#039;테스트 자동화&#039;&#039;&#039;, &#039;&#039;&#039;출시 버전 관리&#039;&#039;&#039;, &#039;&#039;&#039;보안 검증&#039;&#039;&#039;까지 포괄하며,  &lt;br /&gt;
언어별로 고유한 생태계를 형성하고 있다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 도구 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[vcpkg]], [[Conan]] || 바이너리·소스 기반 혼합 지원, 크로스 플랫폼 배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[Cargo]] || 통합 빌드·배포·테스트 시스템, [[Crates.io]] 레지스트리 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[pip]], [[Poetry]] || [[PyPI]] 연동, 가상 환경과 의존성 잠금 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Node.js]] / [[JavaScript]] || [[npm]], [[pnpm]], [[yarn]] || JS 생태계 표준 도구, 빠른 캐싱과 병렬 설치  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[Maven]], [[Gradle]] || XML/DSL 기반 의존성 정의, 중앙 저장소 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] / [[.NET]] || [[NuGet]] || .NET 플랫폼 전용 패키지 배포 및 버전 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[Go Modules]] || 소스 코드 기반 버전 모듈 관리, Git과 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swift Package Manager]] || [[Xcode]]와 통합된 공식 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DUB]] || [[DMD]] 및 [[LDC]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[Cabal]], [[Stack]] || Hackage 저장소 기반 빌드·배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Composer]] || PHP 생태계의 표준 의존성 관리 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Vex]] || [[WSON]] 기반 빌드·패키징·다중 플랫폼 배포 지원  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 통합 개발 환경 (IDE) ==&lt;br /&gt;
&#039;&#039;&#039;통합 개발 환경(Integrated Development Environment, IDE)&#039;&#039;&#039;는  &lt;br /&gt;
코드 작성, 빌드, 디버깅, 테스트, 배포 등의 개발 과정을 하나의 프로그램 내에서 수행할 수 있도록 통합한 소프트웨어이다.  &lt;br /&gt;
&lt;br /&gt;
IDE는 단순한 텍스트 에디터와 달리  &lt;br /&gt;
다음과 같은 구성 요소를 통합 제공한다:&lt;br /&gt;
* &#039;&#039;&#039;코드 편집기(Editor):&#039;&#039;&#039; 구문 강조, 자동 완성, 코드 탐색 기능 제공  &lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템 통합(Build Integration):&#039;&#039;&#039; 컴파일, 링크, 테스트 자동화  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 런타임 실행 제어, 변수 추적, 스택 분석  &lt;br /&gt;
* &#039;&#039;&#039;버전 관리(VCS Integration):&#039;&#039;&#039; [[Git]] 등과 연동한 협업 기능  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리 연동(Package Manager Integration):&#039;&#039;&#039; 의존성 설치 및 관리 지원  &lt;br /&gt;
&lt;br /&gt;
현대의 IDE는 플러그인 확장 구조를 채택하여,  &lt;br /&gt;
다양한 언어와 프레임워크를 통합적으로 지원한다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! IDE !! 주요 언어 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio]] || [[C (프로그래밍 언어)]], [[C++]], [[C＃]] || 마이크로소프트의 대표 IDE, 윈도우 통합 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio Code|VS Code]] || 다중 언어 || 오픈소스, 경량·확장성 중심, 풍부한 확장 마켓  &lt;br /&gt;
|-&lt;br /&gt;
| [[RustRover]] || [[Rust]] || [[JetBrains]] 기반 Rust 전용 IDE, [[Cargo]] 완전 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[IntelliJ IDEA]] || [[Java]], [[Kotlin]] || JVM 언어 중심, 강력한 코드 분석 및 리팩토링  &lt;br /&gt;
|-&lt;br /&gt;
| [[PyCharm]] || [[Python]] || 코드 자동 완성, 디버깅, 테스트 프레임워크 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[CLion]] || [[C (프로그래밍 언어)]], [[C++]], [[Rust]] || [[JetBrains]]의 네이티브 언어 IDE, [[CMake]] 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Xcode]] || [[Swift]], [[Objective-C]] || [[macOS]] 및 [[iOS]] 공식 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Eclipse]] || [[Java]], [[C++]], [[Python]] 등 || 오픈소스, 플러그인 기반 확장 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[NetBeans]] || [[Java]], [[PHP]], [[HTML]] || [[Apache]] 재단 관리, 교육 및 웹 개발 친화적  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rider]] || [[C＃]], [[.NET]] || [[JetBrains]]의 크로스 플랫폼 .NET IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Android Studio]] || [[Kotlin]], [[Java]] || [[Android]] 공식 IDE, [[Gradle]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Qt Creator]] || [[C++]], [[QML]] || [[Qt]] 프레임워크용 공식 IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Code::Blocks]] || [[C (프로그래밍 언어)]], [[C++]] || 오픈소스 경량 IDE, 플러그인 기반 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 중간 표현 (IR) ==&lt;br /&gt;
&#039;&#039;&#039;중간 표현(Intermediate Representation, IR)&#039;&#039;&#039;은  &lt;br /&gt;
컴파일러 내부에서 소스 코드의 의미를 추상화하여 표현한 중간 형태의 코드 구조이다.  &lt;br /&gt;
이는 프론트엔드(Front-end)에서 생성되어, 미들엔드(Middle-end) 최적화를 거친 뒤  &lt;br /&gt;
백엔드(Back-end)에서 기계어로 변환되는 핵심 매개체 역할을 한다.  &lt;br /&gt;
&lt;br /&gt;
IR은 언어의 문법적 복잡성을 제거하고,  &lt;br /&gt;
하드웨어나 플랫폼에 독립적인 형태로 프로그램의 의미를 유지한다.  &lt;br /&gt;
이로써 최적화, 코드 분석, 플랫폼 간 이식성을 효율적으로 구현할 수 있다.  &lt;br /&gt;
&lt;br /&gt;
대표적인 IR은 대부분 &#039;&#039;&#039;SSA(Static Single Assignment)&#039;&#039;&#039; 형식을 채택하며,  &lt;br /&gt;
각 변수는 단 한 번만 할당되어 데이터 흐름 분석이 단순화된다.  &lt;br /&gt;
또한 일부 IR은 가상 머신 실행용(예: JVM Bytecode, WebAssembly)으로 활용되어,  &lt;br /&gt;
컴파일과 실행의 경계를 유연하게 확장한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 명칭 !! 사용 컴파일러 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[LLVM IR]] || [[Clang]], [[Rustc]], [[Swiftc]] || 범용 SSA 기반 IR, [[LLVM]] 미들엔드의 핵심 구성  &lt;br /&gt;
|-&lt;br /&gt;
| [[GIMPLE]] || [[GCC]] || 3단계 중간 표현(고수준–단순화–저수준) 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[MIR]] || [[Rustc]] || [[LLVM]] 이전 단계의 내부 표현, 제어 흐름 기반 분석에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[WAIL Assembly Integration Layer|WAIL]] || [[Whale]] || [[Wave]] 전용 백엔드 IR, “WAIL Assembly Integration Layer”  &lt;br /&gt;
|-&lt;br /&gt;
| [[MLIR]] || [[LLVM Project]] || 멀티 레벨 중간 표현, 다양한 도메인(머신러닝·GPU)에 대응  &lt;br /&gt;
|-&lt;br /&gt;
| [[SIL (Swift Intermediate Language)]] || [[Swiftc]] || [[Swift]] 전용 중간 언어, [[ARC]] 기반 최적화  &lt;br /&gt;
|-&lt;br /&gt;
| [[FIR (Fortran IR)]] || [[Flang]] || [[Fortran]]용 [[LLVM]] 통합 IR, 과학 계산용 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[GHC Core]] || [[GHC]] || [[Haskell]] 전용 함수형 중간 표현, 람다 기반 변환 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[JVM Bytecode]] || [[javac]], [[kotlinc]], [[scalac]] || [[JVM]] 위에서 실행되는 스택 기반 중간 코드  &lt;br /&gt;
|-&lt;br /&gt;
| [[WebAssembly]] || [[Emscripten]], [[V8]], [[Wasmtime]] || 브라우저 및 경량 VM용 범용 중간 표현  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 컴파일러 최적화 기법 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러 최적화(Compiler Optimization)&#039;&#039;&#039;는  &lt;br /&gt;
생성된 코드의 성능을 향상시키거나 메모리 사용량을 줄이기 위해  &lt;br /&gt;
중간 표현(IR) 또는 기계어 단계에서 수행되는 변환 과정이다.  &lt;br /&gt;
&lt;br /&gt;
최적화는 주로 &#039;&#039;&#039;미들엔드(Middle-end)&#039;&#039;&#039; 단계에서 이루어지며,  &lt;br /&gt;
프로그램의 의미(semantic)를 변경하지 않으면서 실행 효율을 높인다.  &lt;br /&gt;
일부 최적화는 타깃 아키텍처에 맞추어 &#039;&#039;&#039;백엔드(Back-end)&#039;&#039;&#039; 단계에서 추가로 수행된다.&lt;br /&gt;
&lt;br /&gt;
대표적인 최적화 기법은 다음과 같다:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Constant Folding (상수 접기)&#039;&#039;&#039; –  &lt;br /&gt;
  컴파일 시점에 상수 표현식을 미리 계산하여 실행 시 연산을 줄인다.  &lt;br /&gt;
  예: `3 * 4` → `12`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dead Code Elimination (죽은 코드 제거)&#039;&#039;&#039; –  &lt;br /&gt;
  실행 결과에 영향을 주지 않는 명령어, 변수, 분기 등을 삭제하여 코드 크기를 축소한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Loop Unrolling (루프 전개)&#039;&#039;&#039; –  &lt;br /&gt;
  반복문 내부의 연산을 여러 번 펼쳐 배치함으로써 루프 제어 오버헤드를 줄인다.  &lt;br /&gt;
  예: `for(i=0;i&amp;lt;4;i++) sum+=a[i];` → 직접 4회 연산 나열&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Inlining (인라이닝)&#039;&#039;&#039; –  &lt;br /&gt;
  짧고 자주 호출되는 함수를 호출 대신 본문으로 삽입하여 함수 호출 오버헤드를 제거한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Register Allocation (레지스터 할당)&#039;&#039;&#039; –  &lt;br /&gt;
  변수나 임시 값을 CPU 레지스터에 효율적으로 배치하여 메모리 접근을 최소화한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instruction Scheduling (명령어 스케줄링)&#039;&#039;&#039; –  &lt;br /&gt;
  명령어 실행 순서를 재배치하여 파이프라인 병목을 줄이고 병렬 실행 효율을 높인다.&lt;br /&gt;
&lt;br /&gt;
이 외에도 다음과 같은 고급 최적화가 존재한다:&lt;br /&gt;
* &#039;&#039;&#039;Common Subexpression Elimination&#039;&#039;&#039; – 동일한 계산을 한 번만 수행  &lt;br /&gt;
* &#039;&#039;&#039;Loop-Invariant Code Motion&#039;&#039;&#039; – 루프 내 불변식을 루프 밖으로 이동  &lt;br /&gt;
* &#039;&#039;&#039;Tail Call Optimization&#039;&#039;&#039; – 재귀 호출을 반복 구조로 변환  &lt;br /&gt;
* &#039;&#039;&#039;Interprocedural Optimization&#039;&#039;&#039; – 함수 간 데이터 흐름 기반 최적화  &lt;br /&gt;
* &#039;&#039;&#039;Vectorization&#039;&#039;&#039; – [[SIMD]] 명령어를 이용해 데이터 병렬 처리  &lt;br /&gt;
&lt;br /&gt;
최적화 수준은 일반적으로 컴파일러 옵션으로 제어되며,  &lt;br /&gt;
예를 들어 [[GCC]]와 [[Clang]]에서는 `-O1`, `-O2`, `-O3`, `-Ofast`, `-Os` 등의 단계를 제공한다.  &lt;br /&gt;
이러한 단계는 코드 크기, 실행 속도, 빌드 시간 사이의 균형을 조절하기 위한 설정이다.&lt;br /&gt;
&lt;br /&gt;
== 현대 컴파일러 트렌드 ==&lt;br /&gt;
현대의 컴파일러는 단순히 코드를 기계어로 변환하는 역할을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;실행 효율&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 다양성&#039;&#039;&#039;, &#039;&#039;&#039;개발 환경 통합&#039;&#039;&#039;, &#039;&#039;&#039;언어 생태계 확장성&#039;&#039;&#039;을 동시에 달성하는 방향으로 발전하고 있다.  &lt;br /&gt;
아래는 현재 컴파일러 기술의 주요 트렌드이다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[just-in-time|JIT (Just-In-Time) 컴파일]]&#039;&#039;&#039; – 실행 시점에 코드의 일부를 기계어로 변환하여 성능과 유연성을 동시에 확보하는 기법. 런타임 중 프로파일링 데이터를 수집해 최적화하며, 대표적으로 [[V8]], [[JVM]], [[.NET CLR]], [[LuaJIT]] 등이 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[ahead-of-time|AOT (Ahead-Of-Time) 컴파일]]&#039;&#039;&#039; – 프로그램 실행 전에 모든 코드를 완전히 컴파일하는 방식으로, 실행 속도와 배포 효율이 높다. [[Rust]], [[Swift]], [[C++]], [[Wave]] 같은 정적 언어들이 주로 채택한다. [[GraalVM]]의 AOT 모드와 같이 JIT 기반 언어에서도 AOT를 병행하는 사례가 늘고 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[멀티 타깃 빌드]]&#039;&#039;&#039; – 하나의 소스 코드로 여러 하드웨어 아키텍처(x86, ARM, RISC-V, WebAssembly 등)에 대응하는 기능. [[LLVM]], [[Whale]], [[GCC]]는 모듈식 백엔드 구조를 통해 이를 지원하며, [[Vex]] 같은 패키지 매니저는 빌드 타깃을 직접 지정할 수 있게 통합된다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[컴파일러 툴체인|자체 툴체인]]&#039;&#039;&#039; – 언어 전용으로 설계된 빌드 및 패키징 시스템을 통합 제공하는 구조. [[Cargo]]([[Rust]]), [[Vex]]([[Wave]]), [[Swift Package Manager]], [[Go Modules]] 등이 이에 속한다. 이는 빌드 자동화, 테스트, 배포를 언어 레벨에서 일원화하여 개발 생태계를 견고하게 만든다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[언어 서버 프로토콜]] (LSP)&#039;&#039;&#039; – [[IDE]]와 컴파일러 간의 실시간 연동을 표준화한 프로토콜. 코드 분석, 자동 완성, 오류 감지 등을 컴파일러가 직접 제공하며, [[VS Code]], [[RustRover]], [[IntelliJ IDEA]] 등 대부분의 IDE가 지원한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[IR 수준 최적화]]&#039;&#039;&#039; – [[LLVM Pass]], [[WAIL Pass]], [[MLIR]]과 같은 중간 표현 레벨에서 수행되는 고급 최적화 기법. 백엔드 독립적으로 적용되어 다양한 플랫폼에서 동일한 최적화 효과를 얻을 수 있다. 이는 현대 컴파일러의 핵심 경쟁력으로 자리 잡고 있다.&lt;br /&gt;
&lt;br /&gt;
현대 컴파일러들은 이러한 기술을 결합하여, &#039;&#039;&#039;다중 아키텍처 대응·지능형 최적화·개발 도구 통합&#039;&#039;&#039;이라는 세 가지 축을 중심으로 진화하고 있다. 이러한 경향은 [[LLVM]], [[Whale]], [[GraalVM]], [[V8]] 등의 오픈소스 프로젝트를 통해 빠르게 확산되고 있다.&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[링커]]  &lt;br /&gt;
* [[어셈블러]]  &lt;br /&gt;
* [[빌드 시스템]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[GCC]]  &lt;br /&gt;
* [[Whale (툴체인)]]  &lt;br /&gt;
* [[Vex]]  &lt;br /&gt;
* [[IDE]]  &lt;br /&gt;
* [[디버거]]&lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Alfred V. Aho, Monica Lam, Ravi Sethi, Jeffrey Ullman, &#039;&#039;Compilers: Principles, Techniques, and Tools&#039;&#039; (Dragon Book)  &lt;br /&gt;
* Chris Lattner, “LLVM: A Compilation Framework for Lifelong Program Analysis &amp;amp; Transformation” (2002)  &lt;br /&gt;
* John Levine, &#039;&#039;Linkers and Loaders&#039;&#039; (2000)  &lt;br /&gt;
* Rustc Dev Guide – [https://rustc-dev-guide.rust-lang.org/]  &lt;br /&gt;
* LLVM Documentation – [https://llvm.org/docs/]  &lt;br /&gt;
* GCC Internals Manual – GNU Project  &lt;br /&gt;
* JetBrains IDE Documentation – 2024 Edition&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=220</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=220"/>
		<updated>2025-11-24T03:59:28Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 주제별 탐색 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TechPedia에 오신 것을 환영합니다 =&lt;br /&gt;
&#039;&#039;컴퓨터 과학과 기술을 위한 열린 백과사전 — 전 세계 개발자와 학습자를 위한 지식의 집&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; margin:15px 0; font-size:110%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;지식을 쌓고, 세상을 연결하고, 기술을 공유하세요.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 다른 언어로 보기 ==&lt;br /&gt;
* [https://en.techpedia.wiki English Wiki →]&lt;br /&gt;
* [https://ko.techpedia.wiki 한국어 위키 (현재 페이지)]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== TechPedia 소개 ==&lt;br /&gt;
&#039;&#039;&#039;TechPedia&#039;&#039;&#039;는 컴퓨터 과학과 기술 전반을 다루는 자유 협업 위키입니다.  &lt;br /&gt;
정확하고 신뢰할 수 있으며 최신 기술 흐름을 반영하는 지식 아카이브를 만드는 것이 목표입니다.&lt;br /&gt;
&lt;br /&gt;
이곳에서는 다음과 같은 주제를 다룹니다.&lt;br /&gt;
&lt;br /&gt;
* 프로그래밍 언어 – C, C++, Rust, Wave 등  &lt;br /&gt;
* 컴퓨터 과학 기초 – 알고리즘, 자료구조, 계산 복잡도  &lt;br /&gt;
* 시스템 – 운영체제, 컴파일러, 저수준 프로그래밍  &lt;br /&gt;
* 네트워크 – 프로토콜, 분산 시스템, 인터넷 구조  &lt;br /&gt;
* 응용 컴퓨팅 – 인공지능, 양자 컴퓨팅, 블록체인, Web3 등  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 주제별 탐색 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center; background-color:#f9f9f9; border:1px solid #ccc;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top;&amp;quot; |&lt;br /&gt;
* [[프로그래밍 언어]]&lt;br /&gt;
* [[운영체제]]&lt;br /&gt;
* [[컴파일러와 도구]]&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top;&amp;quot; |&lt;br /&gt;
* [[컴퓨터 과학 기초]]&lt;br /&gt;
* [[네트워크]]&lt;br /&gt;
* [[월드 와이드 웹]]&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top;&amp;quot; |&lt;br /&gt;
* [[응용 컴퓨팅]]&lt;br /&gt;
* [[보안과 암호학]]&lt;br /&gt;
* [[하드웨어와 임베디드]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 기여 방법 ==&lt;br /&gt;
* 계정을 만들어 자유롭게 문서를 작성하거나 편집할 수 있습니다.  &lt;br /&gt;
* [[TechPedia:편집 지침]] 문서를 참고하여 중립적이고 객관적인 어조를 유지하세요.  &lt;br /&gt;
* 출처는 학술 논문, 표준 문서, 공식 레퍼런스를 우선으로 사용하세요.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; background:#eaf3ff; border:1px solid #a0c6ff; padding:10px; border-radius:6px; margin:10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;지금 바로 참여하기 → [[특수:계정만들기|계정 만들기]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 오늘의 추천 문서 ==&lt;br /&gt;
{{#switch: {{#expr: {{CURRENTDAY}} mod 3}}&lt;br /&gt;
 | 0 = [[Linux]]&lt;br /&gt;
 | 1 = [[Windows NT]]&lt;br /&gt;
 | 2 = [[FreeBSD]]&lt;br /&gt;
 | 3 = [[Wave]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 커뮤니티 ==&lt;br /&gt;
* [[TechPedia:토론]] – 아이디어나 제안을 자유롭게 이야기하세요.  &lt;br /&gt;
* [[TechPedia:프로젝트 허브]] – 새로운 공동 프로젝트를 시작하세요.  &lt;br /&gt;
* [[TechPedia:공지사항]] – 기술 업데이트와 운영 관련 소식을 확인하세요.  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; font-size:90%; color:#666;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;© 2025 TechPedia Wiki — 자유로운 기술 지식을 향한 열린 협업&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EC%9B%94%EB%93%9C_%EC%99%80%EC%9D%BC%EB%93%9C_%EC%9B%B9&amp;diff=219</id>
		<title>월드 와일드 웹</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EC%9B%94%EB%93%9C_%EC%99%80%EC%9D%BC%EB%93%9C_%EC%9B%B9&amp;diff=219"/>
		<updated>2025-11-24T03:59:08Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: LunaStev님이 월드 와일드 웹 문서를 월드 와이드 웹 문서로 이동했습니다: 철자가 잘못된 제목&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#넘겨주기 [[월드 와이드 웹]]&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EC%9B%94%EB%93%9C_%EC%99%80%EC%9D%B4%EB%93%9C_%EC%9B%B9&amp;diff=218</id>
		<title>월드 와이드 웹</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EC%9B%94%EB%93%9C_%EC%99%80%EC%9D%B4%EB%93%9C_%EC%9B%B9&amp;diff=218"/>
		<updated>2025-11-24T03:59:08Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: LunaStev님이 월드 와일드 웹 문서를 월드 와이드 웹 문서로 이동했습니다: 철자가 잘못된 제목&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;월드 와이드 웹&#039;&#039;&#039;(World Wide Web, 약칭 &#039;&#039;&#039;WWW&#039;&#039;&#039; 또는 단순히 &#039;&#039;&#039;웹(Web)&#039;&#039;&#039;)은  &lt;br /&gt;
[[인터넷]] 상에서 문서, 이미지, 영상, 오디오 등 다양한 정보를  &lt;br /&gt;
&#039;&#039;&#039;하이퍼텍스트(Hypertext)&#039;&#039;&#039; 형태로 연결하고 접근할 수 있도록 하는 &#039;&#039;&#039;정보 시스템&#039;&#039;&#039;이다.  &lt;br /&gt;
&lt;br /&gt;
1989년 [[팀 버너스리]](Tim Berners-Lee)가 [[CERN]](유럽 입자 물리 연구소)에서 제안하였으며,  &lt;br /&gt;
그는 웹의 기본 구성 요소인 &#039;&#039;&#039;HTTP&#039;&#039;&#039;, &#039;&#039;&#039;HTML&#039;&#039;&#039;, &#039;&#039;&#039;URL&#039;&#039;&#039;을 함께 설계하였다.  &lt;br /&gt;
1991년 8월, 최초의 웹사이트가 CERN 내부 네트워크에서 공개되면서  &lt;br /&gt;
월드 와이드 웹은 오늘날의 인터넷 문명으로 이어지는 정보 혁명의 출발점이 되었다.  &lt;br /&gt;
&lt;br /&gt;
웹은 본질적으로 &#039;&#039;&#039;인터넷 위에서 동작하는 응용 계층 서비스&#039;&#039;&#039;이다.  &lt;br /&gt;
인터넷은 전 세계의 네트워크를 연결하는 통신 인프라이며,  &lt;br /&gt;
웹은 그 위에서 정보를 교환하고 표현하기 위한 프로토콜 체계이다.  &lt;br /&gt;
즉, 웹은 인터넷을 기반으로 작동하지만 인터넷 전체를 의미하지는 않는다.  &lt;br /&gt;
&lt;br /&gt;
웹의 핵심은 &#039;&#039;&#039;하이퍼텍스트 시스템&#039;&#039;&#039;이다.  &lt;br /&gt;
문서 내부의 하이퍼링크(Hyperlink)를 통해  &lt;br /&gt;
다른 문서나 자원으로 비선형적(Non-linear)으로 이동할 수 있으며,  &lt;br /&gt;
이 구조는 정보 간의 연관성을 시각적으로 표현하고,  &lt;br /&gt;
지식의 상호 연결(Interconnected Knowledge)을 가능하게 한다.  &lt;br /&gt;
&lt;br /&gt;
웹은 다음과 같은 주요 기술 요소로 구성된다:&lt;br /&gt;
* &#039;&#039;&#039;[[HTML]]&#039;&#039;&#039; – 문서 구조와 콘텐츠를 기술하는 마크업 언어  &lt;br /&gt;
* &#039;&#039;&#039;[[HTTP]]&#039;&#039;&#039; – 클라이언트(웹 브라우저)와 서버 간의 통신 프로토콜  &lt;br /&gt;
* &#039;&#039;&#039;[[URL]]&#039;&#039;&#039; – 자원의 위치를 식별하기 위한 통합 자원 지시자(주소 체계)  &lt;br /&gt;
&lt;br /&gt;
이 세 가지 기술이 결합되어,  &lt;br /&gt;
사용자는 [[웹 브라우저]]를 통해 원격 서버의 문서를 열람하고,  &lt;br /&gt;
링크를 따라 자유롭게 탐색할 수 있게 되었다.  &lt;br /&gt;
&lt;br /&gt;
오늘날 월드 와이드 웹은 단순한 문서 열람을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;웹 애플리케이션&#039;&#039;&#039;, &#039;&#039;&#039;클라우드 서비스&#039;&#039;&#039;, &#039;&#039;&#039;소셜 네트워크&#039;&#039;&#039;, &#039;&#039;&#039;스트리밍 플랫폼&#039;&#039;&#039; 등  &lt;br /&gt;
수많은 인터넷 서비스의 기술적 기반으로 발전하였다.  &lt;br /&gt;
이는 인류의 지식 교류, 경제 활동, 문화 생산 전반에 걸쳐  &lt;br /&gt;
가장 중요한 정보 인프라 중 하나로 평가된다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
월드 와이드 웹의 역사는 정보 공유와 접근 방식을 혁신한 기술적 전환의 연속이다.  &lt;br /&gt;
1989년 CERN에서 시작된 웹은 초기에는 연구소 간 문서 공유 시스템에 불과했으나,  &lt;br /&gt;
1990년대 중반 이후 대중화되면서 현대 인터넷 사회의 핵심 인프라로 자리 잡았다.  &lt;br /&gt;
&lt;br /&gt;
=== 주요 연혁 ===&lt;br /&gt;
* &#039;&#039;&#039;1989년&#039;&#039;&#039; – [[팀 버너스리]]가 “&#039;&#039;Information Management: A Proposal&#039;&#039;” 문서를 통해 하이퍼텍스트를 기반으로 한 전 세계적 정보 공유 시스템(웹)의 개념을 제안.  &lt;br /&gt;
* &#039;&#039;&#039;1990년&#039;&#039;&#039; – [[NeXT]] 컴퓨터에서 최초의 웹 서버와 브라우저인 “&#039;&#039;WorldWideWeb&#039;&#039;” 개발. HTML, HTTP, URL의 기본 구조가 확립됨.  &lt;br /&gt;
* &#039;&#039;&#039;1991년&#039;&#039;&#039; – CERN 내부 네트워크에서 월드 와이드 웹이 시범적으로 공개되었으며, 이후 외부 연구 기관으로 확산되기 시작함.  &lt;br /&gt;
* &#039;&#039;&#039;1993년&#039;&#039;&#039; – [[Mosaic]] 웹 브라우저 등장으로 일반 대중에게 웹이 보급되기 시작. GUI 기반 인터페이스로 인해 웹 사용이 폭발적으로 증가함.  &lt;br /&gt;
* &#039;&#039;&#039;1994년&#039;&#039;&#039; – [[W3C]](World Wide Web Consortium) 설립. 웹 표준(HTML, HTTP, CSS 등)의 국제적 관리와 호환성 확보를 목표로 함.  &lt;br /&gt;
* &#039;&#039;&#039;1995년&#039;&#039;&#039; – [[JavaScript]], [[CSS]], [[HTML 2.0]] 등 핵심 기술 등장. 정적 웹에서 동적·상호작용형 웹으로의 전환이 시작됨.  &lt;br /&gt;
* &#039;&#039;&#039;2000년대&#039;&#039;&#039; – [[Web 2.0]] 시대 도래. 블로그, SNS, 위키, 사용자 생성 콘텐츠(UGC)의 등장으로 웹이 참여형 플랫폼으로 진화.  &lt;br /&gt;
* &#039;&#039;&#039;2010년대 이후&#039;&#039;&#039; – [[HTML5]], [[PWA]], [[WebAssembly]] 등의 기술로 웹 애플리케이션이 데스크톱 수준의 성능을 갖추게 됨. 모바일 웹과 클라우드 서비스 중심의 생태계로 확장됨.&lt;br /&gt;
&lt;br /&gt;
오늘날 웹은 단순한 문서 네트워크를 넘어,  &lt;br /&gt;
애플리케이션 실행 환경·미디어 플랫폼·분산 서비스 인프라로 진화하였다.  &lt;br /&gt;
이 과정에서 [[HTTP/2]], [[HTTP/3]], [[TLS]] 등 네트워크 계층의 기술 발전과 함께  &lt;br /&gt;
웹은 현대 인터넷의 가장 강력한 응용 계층으로 자리 잡게 되었다.&lt;br /&gt;
&lt;br /&gt;
== 핵심 구성 요소 ==&lt;br /&gt;
월드 와이드 웹은 세 가지 기본 기술로 구성된다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구성 요소 !! 약어 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 하이퍼텍스트 마크업 언어 || [[HTML]] || 웹 페이지의 구조와 내용 정의&lt;br /&gt;
|-&lt;br /&gt;
| 하이퍼텍스트 전송 프로토콜 || [[HTTP]] || 클라이언트–서버 간 문서 송수신 규약&lt;br /&gt;
|-&lt;br /&gt;
| 통합 자원 식별자 || [[URL]] || 웹 자원의 위치를 지정하는 주소 체계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 작동 원리 ==&lt;br /&gt;
웹은 클라이언트–서버 모델로 동작한다.  &lt;br /&gt;
사용자가 웹 브라우저(클라이언트)를 통해 URL을 입력하면  &lt;br /&gt;
해당 주소의 서버로 [[HTTP 요청]]을 보내고,  &lt;br /&gt;
서버는 HTML 문서로 된 응답을 전송한다.  &lt;br /&gt;
브라우저는 이를 렌더링하여 사용자에게 시각적으로 보여준다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[사용자] → [브라우저] → [HTTP 요청] → [웹 서버]&lt;br /&gt;
&lt;br /&gt;
[웹 서버] → [HTTP 응답] → [HTML 렌더링] → [화면 표시]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 주요 구성 기술 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 계층 !! 기술 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 표현 계층 || [[HTML]], [[CSS]], [[SVG]], [[Web Fonts]] || 콘텐츠 구조 및 시각 표현  &lt;br /&gt;
|-&lt;br /&gt;
| 동작 계층 || [[JavaScript]], [[DOM]], [[Web APIs]] || 동적 콘텐츠 처리  &lt;br /&gt;
|-&lt;br /&gt;
| 통신 계층 || [[HTTP]], [[HTTPS]], [[WebSocket]], [[QUIC]] || 데이터 송수신  &lt;br /&gt;
|-&lt;br /&gt;
| 데이터 계층 || [[JSON]], [[XML]], [[WASM]] || 구조화된 데이터 및 실행 모듈  &lt;br /&gt;
|-&lt;br /&gt;
| 보안 계층 || [[TLS]], [[Same-Origin Policy]], [[CSP]] || 통신 암호화 및 정책 보호  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 웹의 세대 발전 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 세대 !! 명칭 !! 시기 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| 1세대 || Web 1.0 || 1990s || 정적 HTML 중심, 정보 열람 위주  &lt;br /&gt;
|-&lt;br /&gt;
| 2세대 || Web 2.0 || 2000s || 사용자 참여, [[AJAX]], SNS, 위키  &lt;br /&gt;
|-&lt;br /&gt;
| 3세대 || Web 3.0 || 2010s || [[시맨틱 웹]], [[AI]], [[블록체인]], 분산 구조  &lt;br /&gt;
|-&lt;br /&gt;
| 4세대 (현대) || WebAssembly 시대 || 2020s || 브라우저 기반 애플리케이션 실행, 클라우드 통합&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 웹 표준화 기관 ==&lt;br /&gt;
* &#039;&#039;&#039;[[W3C]] (World Wide Web Consortium)&#039;&#039;&#039; – 웹 표준 제정 및 관리  &lt;br /&gt;
* &#039;&#039;&#039;[[WHATWG]] (Web Hypertext Application Technology Working Group)&#039;&#039;&#039; – HTML Living Standard 개발  &lt;br /&gt;
* &#039;&#039;&#039;[[IETF]]&#039;&#039;&#039; – [[HTTP]], [[TLS]] 등 인터넷 프로토콜 표준화  &lt;br /&gt;
&lt;br /&gt;
== 주요 브라우저 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 이름 !! 개발사 !! 렌더링 엔진 !! 출시 연도&lt;br /&gt;
|-&lt;br /&gt;
|[[WorldWideWeb]]&lt;br /&gt;
|Tim Berners-Lee for CERN&lt;br /&gt;
|NeXTSTEP Text Manager&lt;br /&gt;
|1990&lt;br /&gt;
|-&lt;br /&gt;
| [[Mosaic]] || NCSA || Mosaic Engine || 1993  &lt;br /&gt;
|-&lt;br /&gt;
| [[Netscape Navigator]] || Netscape || Pre-Gecko || 1994  &lt;br /&gt;
|-&lt;br /&gt;
|[[Opera]]&lt;br /&gt;
|Opera&lt;br /&gt;
|Blink, V8&lt;br /&gt;
|1995&lt;br /&gt;
|-&lt;br /&gt;
| [[Internet Explorer]] || Microsoft || Trident || 1995  &lt;br /&gt;
|-&lt;br /&gt;
| [[Mozilla Firefox]] || Mozilla Foundation || Gecko || 2004  &lt;br /&gt;
|-&lt;br /&gt;
| [[Google Chrome]] || Google || Blink || 2008  &lt;br /&gt;
|-&lt;br /&gt;
| [[Safari]] || Apple || WebKit || 2003  &lt;br /&gt;
|-&lt;br /&gt;
| [[Microsoft Edge]] || Microsoft || Blink || 2020  &lt;br /&gt;
|-&lt;br /&gt;
|[[Arc]]&lt;br /&gt;
|The Browser Company&lt;br /&gt;
|Blink, V8&lt;br /&gt;
|2023&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 철학 ==&lt;br /&gt;
[[팀 버너스리]]는 웹을 “&#039;&#039;&#039;열린 지식의 공유 플랫폼&#039;&#039;&#039;”으로 설계했다.  &lt;br /&gt;
웹은 다음의 세 가지 원칙을 기반으로 발전했다:&lt;br /&gt;
* &#039;&#039;&#039;보편성 (Universality):&#039;&#039;&#039; 누구나 접근 가능한 개방형 시스템  &lt;br /&gt;
* &#039;&#039;&#039;비중앙화 (Decentralization):&#039;&#039;&#039; 통제되지 않는 연결 구조  &lt;br /&gt;
* &#039;&#039;&#039;상호운용성 (Interoperability):&#039;&#039;&#039; 다양한 플랫폼 간 호환성 보장  &lt;br /&gt;
&lt;br /&gt;
== 웹과 인터넷의 차이 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 월드 와이드 웹 (WWW) !! 인터넷&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 정보 접근 시스템 || 컴퓨터 네트워크 인프라  &lt;br /&gt;
|-&lt;br /&gt;
| 핵심 기술 || HTML, HTTP, URL || TCP/IP, DNS, Routing  &lt;br /&gt;
|-&lt;br /&gt;
| 사용 방식 || 웹 브라우저 || 모든 응용 (이메일, FTP 등)  &lt;br /&gt;
|-&lt;br /&gt;
| 창시자 || 팀 버너스리 || 여러 기관의 공동 개발  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 영향 ==&lt;br /&gt;
* 전 세계 정보 공유의 표준 플랫폼 확립  &lt;br /&gt;
* [[검색 엔진]], [[전자상거래]], [[클라우드 컴퓨팅]]의 토대 형성  &lt;br /&gt;
* [[웹 애플리케이션]], [[소셜 미디어]], [[온라인 교육]] 등 다양한 산업 창출  &lt;br /&gt;
* [[HTML5]], [[CSS3]], [[WebAssembly]] 등 오픈 표준 중심 생태계 확립  &lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[팀 버너스리]]  &lt;br /&gt;
* [[CERN]]  &lt;br /&gt;
* [[HTTP]]  &lt;br /&gt;
* [[HTML]]  &lt;br /&gt;
* [[W3C]]  &lt;br /&gt;
* [[웹 브라우저]]  &lt;br /&gt;
* [[인터넷]]  &lt;br /&gt;
* [[시맨틱 웹]]  &lt;br /&gt;
* [[WebAssembly]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Tim Berners-Lee, “Information Management: A Proposal”, CERN, 1989  &lt;br /&gt;
* “Weaving the Web”, Tim Berners-Lee, HarperCollins, 1999  &lt;br /&gt;
* W3C Official Site – [https://www.w3.org/ w3.org]  &lt;br /&gt;
* Internet Society, “A Brief History of the Web”, 2022  &lt;br /&gt;
* “The Birth of the Web”, CERN Historical Archives, 2019&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Unreal_Engine_1&amp;diff=217</id>
		<title>Unreal Engine 1</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Unreal_Engine_1&amp;diff=217"/>
		<updated>2025-11-18T01:00:01Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 평가 및 유산 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Unreal Engine 1&#039;&#039;&#039;은 [[Epic Games]]가 개발한 최초의 [[Unreal Engine]]이다.  &lt;br /&gt;
1998년 출시된 1인칭 슈팅 게임 《[[Unreal]]》을 위해 제작되었으며,  &lt;br /&gt;
이후 여러 작품에서 사용되었다.  &lt;br /&gt;
Unreal Engine 1은 당시로서는 혁신적인 3D 렌더링 기술과  &lt;br /&gt;
확장 가능한 모듈 구조를 도입해, 현대 게임 엔진의 기틀을 마련했다.&lt;br /&gt;
&lt;br /&gt;
Unreal Engine 1은 [[Tim Sweeney]]가 주도한 엔진으로,  &lt;br /&gt;
Windows PC에서 실시간 3D 렌더링과 편집을 지원하는 최초의 상용 게임 엔진 중 하나였다.  &lt;br /&gt;
당시 경쟁 엔진인 [[id Tech 2]]와 달리, 엔진 구조를 완전히 모듈화하고  &lt;br /&gt;
[[UnrealEd]]라는 내장 레벨 에디터를 포함한 것이 특징이었다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 연도 !! 사건 / 버전 !! 주요 내용&lt;br /&gt;
|-&lt;br /&gt;
| 1995 || 프로토타입 개발 시작 || Tim Sweeney, C 언어 기반 3D 엔진 개발 착수  &lt;br /&gt;
|-&lt;br /&gt;
| 1996 || 엔진 프리뷰 공개 || 초기 Unreal Tech 데모로 업계 주목  &lt;br /&gt;
|-&lt;br /&gt;
| 1998 || Unreal Engine 1 정식 출시 || 《Unreal》과 함께 공개  &lt;br /&gt;
|-&lt;br /&gt;
| 1999 || [[Unreal Tournament]] 출시 || 네트워크 멀티플레이 최적화  &lt;br /&gt;
|-&lt;br /&gt;
| 2000 || [[Deus Ex]], [[Rune]] 출시 || 상용 라이선스 모델 본격화  &lt;br /&gt;
|-&lt;br /&gt;
| 2002 || [[Unreal Engine 2]] 개발 시작 || 차세대 엔진으로 기술 이전  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 기술적 특징 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 프로그래밍 언어 || [[C++]], [[UnrealScript]], [[Assembly]]&lt;br /&gt;
|-&lt;br /&gt;
| 렌더링 엔진 || 고정 파이프라인 기반 [[DirectX 7]] / [[OpenGL]] 지원  &lt;br /&gt;
|-&lt;br /&gt;
| 조명 시스템 || 동적 조명(Dynamic Light) 및 색상 라이트맵 지원  &lt;br /&gt;
|-&lt;br /&gt;
| 편집기 || [[UnrealEd]] (실시간 레벨 편집기)  &lt;br /&gt;
|-&lt;br /&gt;
| 스크립트 언어 || [[UnrealScript]] – 클래스 기반 게임 로직 구현  &lt;br /&gt;
|-&lt;br /&gt;
| 네트워킹 || [[UDP]] 기반 클라이언트-서버 구조  &lt;br /&gt;
|-&lt;br /&gt;
| 물리 처리 || 단순 충돌 감지 및 BSP 구조 기반 충돌 맵  &lt;br /&gt;
|-&lt;br /&gt;
| 오디오 || [[Galaxy Sound System]], [[DirectSound]] 기반  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UnrealScript ==&lt;br /&gt;
&#039;&#039;&#039;UnrealScript&#039;&#039;&#039;는 [[Unreal Engine 1]]에 도입된  &lt;br /&gt;
객체 지향 스크립트 언어로, 게임 로직을 손쉽게 작성할 수 있도록 설계되었다.  &lt;br /&gt;
이는 [[C++]] 엔진과 상호작용하며, 블루프린트의 원형이라 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;unrealscript&amp;quot;&amp;gt;&lt;br /&gt;
class MyActor extends Actor;&lt;br /&gt;
&lt;br /&gt;
function BeginPlay() {&lt;br /&gt;
    Log(&amp;quot;Hello, TechPedia!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UnrealEd ==&lt;br /&gt;
Unreal Engine 1에는 실시간 레벨 편집기인 [[UnrealEd]]가 기본 포함되어 있었다.  &lt;br /&gt;
이는 당시 경쟁 엔진들과의 큰 차별점이었으며,  &lt;br /&gt;
디자이너가 직접 게임 맵을 제작하고 즉시 테스트할 수 있도록 했다.&lt;br /&gt;
&lt;br /&gt;
특징:&lt;br /&gt;
* 실시간 3D 미리보기 지원  &lt;br /&gt;
* [[BSP Tree]] 기반 레벨 구조  &lt;br /&gt;
* 라이트맵 미리보기  &lt;br /&gt;
* 오브젝트 배치 및 트리거 시스템  &lt;br /&gt;
&lt;br /&gt;
== 그래픽 및 렌더링 ==&lt;br /&gt;
* [[Direct3D]] 및 [[OpenGL]] 양쪽 지원  &lt;br /&gt;
* [[BSP]](Binary Space Partitioning) 구조를 통한 실시간 공간 분할  &lt;br /&gt;
* [[Z-Buffer]] 기반 렌더링 파이프라인  &lt;br /&gt;
* 다이나믹 라이트, 미러 반사, 투명도 효과  &lt;br /&gt;
* 최대 해상도 1600×1200까지 지원 (시대 대비 매우 높음)&lt;br /&gt;
&lt;br /&gt;
== 게임 제작 및 라이선스 ==&lt;br /&gt;
Unreal Engine 1은 Epic Games 외부 개발사에도 라이선스로 제공되었다.  &lt;br /&gt;
대표적으로 [[Ion Storm]]의 《[[Deus Ex]]》,  &lt;br /&gt;
[[Human Head Studios]]의 《[[Rune]]》이 해당 엔진을 사용했다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 게임 !! 개발사 !! 출시 연도&lt;br /&gt;
|-&lt;br /&gt;
| [[Unreal]] || Epic Games || 1998  &lt;br /&gt;
|-&lt;br /&gt;
| [[Unreal Tournament]] || Epic Games / Digital Extremes || 1999  &lt;br /&gt;
|-&lt;br /&gt;
| [[Deus Ex]] || Ion Storm || 2000  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rune]] || Human Head Studios || 2000  &lt;br /&gt;
|-&lt;br /&gt;
| [[Clive Barker&#039;s Undying]] || EA Los Angeles || 2001  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 구조 ==&lt;br /&gt;
Unreal Engine 1은 모듈형 구조로 설계되었다:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 계층 !! 구성 요소 !! 역할&lt;br /&gt;
|-&lt;br /&gt;
| 렌더링 계층 || Engine.dll || 그래픽 렌더링 및 BSP 처리  &lt;br /&gt;
|-&lt;br /&gt;
| 게임 로직 계층 || UnrealScript || 액터, 이벤트, 오브젝트 제어  &lt;br /&gt;
|-&lt;br /&gt;
| 에디터 계층 || UnrealEd || 맵 편집 및 라이트맵 관리  &lt;br /&gt;
|-&lt;br /&gt;
| 오디오 계층 || Galaxy.dll || 사운드 재생 및 3D 위치 오디오  &lt;br /&gt;
|-&lt;br /&gt;
| 네트워크 계층 || IpDrv.dll || 클라이언트/서버 통신 관리  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 평가 및 유산 ==&lt;br /&gt;
Unreal Engine 1은  &lt;br /&gt;
당시로서는 드문 &#039;&#039;&#039;범용 게임 엔진&#039;&#039;&#039; 개념을 상업적으로 성공시킨 첫 사례였다.  &lt;br /&gt;
엔진 구조, 스크립트 시스템, 내장 에디터는  &lt;br /&gt;
이후 모든 언리얼 시리즈와 현대 게임 엔진의 표준으로 자리 잡았다.&lt;br /&gt;
&lt;br /&gt;
주요 평가:&lt;br /&gt;
* 혁신적인 실시간 편집 기능  &lt;br /&gt;
* 시각적 품질이 동시대 [[Quake II]]보다 우수하다는 평가  &lt;br /&gt;
* [[UnrealScript]]를 통한 높은 확장성  &lt;br /&gt;
* [[Direct3D]] 지원으로 Windows 플랫폼에 최적화&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine 2로의 발전 ==&lt;br /&gt;
2002년 이후 [[Unreal Engine 2]]가 개발되면서  &lt;br /&gt;
렌더링 파이프라인이 [[Shader Model 2.0]]으로 확장되었고,  &lt;br /&gt;
UnrealScript 시스템도 고도화되었다.  &lt;br /&gt;
UE1의 [[BSP]] 기반 설계는 이후 [[Static Mesh]] 구조로 대체되었다.&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[Unreal Engine]]  &lt;br /&gt;
* [[Unreal Engine 2]]  &lt;br /&gt;
* [[Tim Sweeney]]  &lt;br /&gt;
* [[Epic Games]]  &lt;br /&gt;
* [[Unreal]]  &lt;br /&gt;
* [[Unreal Tournament]]  &lt;br /&gt;
* [[Deus Ex]]  &lt;br /&gt;
* [[Rune]]  &lt;br /&gt;
* [[UnrealScript]]  &lt;br /&gt;
* [[UnrealEd]]  &lt;br /&gt;
* [[BSP]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Epic Games, “Unreal Engine History”  &lt;br /&gt;
* Tim Sweeney, “The Making of Unreal” (GDC 1999)  &lt;br /&gt;
* Ion Storm, “Deus Ex Developer Notes” (2000)  &lt;br /&gt;
* Human Head Studios, “Rune Postmortem”  &lt;br /&gt;
* Digital Extremes, “Unreal Tournament Retrospective”&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Unreal_Engine_1&amp;diff=216</id>
		<title>Unreal Engine 1</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Unreal_Engine_1&amp;diff=216"/>
		<updated>2025-11-18T00:36:00Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 새 문서: == 개요 == &amp;#039;&amp;#039;&amp;#039;Unreal Engine 1&amp;#039;&amp;#039;&amp;#039;은 Epic Games가 개발한 최초의 Unreal Engine이다.   1998년 출시된 1인칭 슈팅 게임 《Unreal》을 위해 제작되었으며,   이후 여러 작품에서 사용되었다.   Unreal Engine 1은 당시로서는 혁신적인 3D 렌더링 기술과   확장 가능한 모듈 구조를 도입해, 현대 게임 엔진의 기틀을 마련했다.  Unreal Engine 1은 Tim Sweeney가 주도한 엔진으로,   Windows PC에...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Unreal Engine 1&#039;&#039;&#039;은 [[Epic Games]]가 개발한 최초의 [[Unreal Engine]]이다.  &lt;br /&gt;
1998년 출시된 1인칭 슈팅 게임 《[[Unreal]]》을 위해 제작되었으며,  &lt;br /&gt;
이후 여러 작품에서 사용되었다.  &lt;br /&gt;
Unreal Engine 1은 당시로서는 혁신적인 3D 렌더링 기술과  &lt;br /&gt;
확장 가능한 모듈 구조를 도입해, 현대 게임 엔진의 기틀을 마련했다.&lt;br /&gt;
&lt;br /&gt;
Unreal Engine 1은 [[Tim Sweeney]]가 주도한 엔진으로,  &lt;br /&gt;
Windows PC에서 실시간 3D 렌더링과 편집을 지원하는 최초의 상용 게임 엔진 중 하나였다.  &lt;br /&gt;
당시 경쟁 엔진인 [[id Tech 2]]와 달리, 엔진 구조를 완전히 모듈화하고  &lt;br /&gt;
[[UnrealEd]]라는 내장 레벨 에디터를 포함한 것이 특징이었다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 연도 !! 사건 / 버전 !! 주요 내용&lt;br /&gt;
|-&lt;br /&gt;
| 1995 || 프로토타입 개발 시작 || Tim Sweeney, C 언어 기반 3D 엔진 개발 착수  &lt;br /&gt;
|-&lt;br /&gt;
| 1996 || 엔진 프리뷰 공개 || 초기 Unreal Tech 데모로 업계 주목  &lt;br /&gt;
|-&lt;br /&gt;
| 1998 || Unreal Engine 1 정식 출시 || 《Unreal》과 함께 공개  &lt;br /&gt;
|-&lt;br /&gt;
| 1999 || [[Unreal Tournament]] 출시 || 네트워크 멀티플레이 최적화  &lt;br /&gt;
|-&lt;br /&gt;
| 2000 || [[Deus Ex]], [[Rune]] 출시 || 상용 라이선스 모델 본격화  &lt;br /&gt;
|-&lt;br /&gt;
| 2002 || [[Unreal Engine 2]] 개발 시작 || 차세대 엔진으로 기술 이전  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 기술적 특징 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 프로그래밍 언어 || [[C++]], [[UnrealScript]], [[Assembly]]&lt;br /&gt;
|-&lt;br /&gt;
| 렌더링 엔진 || 고정 파이프라인 기반 [[DirectX 7]] / [[OpenGL]] 지원  &lt;br /&gt;
|-&lt;br /&gt;
| 조명 시스템 || 동적 조명(Dynamic Light) 및 색상 라이트맵 지원  &lt;br /&gt;
|-&lt;br /&gt;
| 편집기 || [[UnrealEd]] (실시간 레벨 편집기)  &lt;br /&gt;
|-&lt;br /&gt;
| 스크립트 언어 || [[UnrealScript]] – 클래스 기반 게임 로직 구현  &lt;br /&gt;
|-&lt;br /&gt;
| 네트워킹 || [[UDP]] 기반 클라이언트-서버 구조  &lt;br /&gt;
|-&lt;br /&gt;
| 물리 처리 || 단순 충돌 감지 및 BSP 구조 기반 충돌 맵  &lt;br /&gt;
|-&lt;br /&gt;
| 오디오 || [[Galaxy Sound System]], [[DirectSound]] 기반  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UnrealScript ==&lt;br /&gt;
&#039;&#039;&#039;UnrealScript&#039;&#039;&#039;는 [[Unreal Engine 1]]에 도입된  &lt;br /&gt;
객체 지향 스크립트 언어로, 게임 로직을 손쉽게 작성할 수 있도록 설계되었다.  &lt;br /&gt;
이는 [[C++]] 엔진과 상호작용하며, 블루프린트의 원형이라 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;unrealscript&amp;quot;&amp;gt;&lt;br /&gt;
class MyActor extends Actor;&lt;br /&gt;
&lt;br /&gt;
function BeginPlay() {&lt;br /&gt;
    Log(&amp;quot;Hello, TechPedia!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UnrealEd ==&lt;br /&gt;
Unreal Engine 1에는 실시간 레벨 편집기인 [[UnrealEd]]가 기본 포함되어 있었다.  &lt;br /&gt;
이는 당시 경쟁 엔진들과의 큰 차별점이었으며,  &lt;br /&gt;
디자이너가 직접 게임 맵을 제작하고 즉시 테스트할 수 있도록 했다.&lt;br /&gt;
&lt;br /&gt;
특징:&lt;br /&gt;
* 실시간 3D 미리보기 지원  &lt;br /&gt;
* [[BSP Tree]] 기반 레벨 구조  &lt;br /&gt;
* 라이트맵 미리보기  &lt;br /&gt;
* 오브젝트 배치 및 트리거 시스템  &lt;br /&gt;
&lt;br /&gt;
== 그래픽 및 렌더링 ==&lt;br /&gt;
* [[Direct3D]] 및 [[OpenGL]] 양쪽 지원  &lt;br /&gt;
* [[BSP]](Binary Space Partitioning) 구조를 통한 실시간 공간 분할  &lt;br /&gt;
* [[Z-Buffer]] 기반 렌더링 파이프라인  &lt;br /&gt;
* 다이나믹 라이트, 미러 반사, 투명도 효과  &lt;br /&gt;
* 최대 해상도 1600×1200까지 지원 (시대 대비 매우 높음)&lt;br /&gt;
&lt;br /&gt;
== 게임 제작 및 라이선스 ==&lt;br /&gt;
Unreal Engine 1은 Epic Games 외부 개발사에도 라이선스로 제공되었다.  &lt;br /&gt;
대표적으로 [[Ion Storm]]의 《[[Deus Ex]]》,  &lt;br /&gt;
[[Human Head Studios]]의 《[[Rune]]》이 해당 엔진을 사용했다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 게임 !! 개발사 !! 출시 연도&lt;br /&gt;
|-&lt;br /&gt;
| [[Unreal]] || Epic Games || 1998  &lt;br /&gt;
|-&lt;br /&gt;
| [[Unreal Tournament]] || Epic Games / Digital Extremes || 1999  &lt;br /&gt;
|-&lt;br /&gt;
| [[Deus Ex]] || Ion Storm || 2000  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rune]] || Human Head Studios || 2000  &lt;br /&gt;
|-&lt;br /&gt;
| [[Clive Barker&#039;s Undying]] || EA Los Angeles || 2001  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 구조 ==&lt;br /&gt;
Unreal Engine 1은 모듈형 구조로 설계되었다:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 계층 !! 구성 요소 !! 역할&lt;br /&gt;
|-&lt;br /&gt;
| 렌더링 계층 || Engine.dll || 그래픽 렌더링 및 BSP 처리  &lt;br /&gt;
|-&lt;br /&gt;
| 게임 로직 계층 || UnrealScript || 액터, 이벤트, 오브젝트 제어  &lt;br /&gt;
|-&lt;br /&gt;
| 에디터 계층 || UnrealEd || 맵 편집 및 라이트맵 관리  &lt;br /&gt;
|-&lt;br /&gt;
| 오디오 계층 || Galaxy.dll || 사운드 재생 및 3D 위치 오디오  &lt;br /&gt;
|-&lt;br /&gt;
| 네트워크 계층 || IpDrv.dll || 클라이언트/서버 통신 관리  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 평가 및 유산 ==&lt;br /&gt;
Unreal Engine 1은  &lt;br /&gt;
당시로서는 드문 **범용 게임 엔진** 개념을 상업적으로 성공시킨 첫 사례였다.  &lt;br /&gt;
엔진 구조, 스크립트 시스템, 내장 에디터는  &lt;br /&gt;
이후 모든 언리얼 시리즈와 현대 게임 엔진의 표준으로 자리 잡았다.&lt;br /&gt;
&lt;br /&gt;
주요 평가:&lt;br /&gt;
* 혁신적인 실시간 편집 기능  &lt;br /&gt;
* 시각적 품질이 동시대 [[Quake II]]보다 우수하다는 평가  &lt;br /&gt;
* [[UnrealScript]]를 통한 높은 확장성  &lt;br /&gt;
* [[Direct3D]] 지원으로 Windows 플랫폼에 최적화  &lt;br /&gt;
&lt;br /&gt;
== Unreal Engine 2로의 발전 ==&lt;br /&gt;
2002년 이후 [[Unreal Engine 2]]가 개발되면서  &lt;br /&gt;
렌더링 파이프라인이 [[Shader Model 2.0]]으로 확장되었고,  &lt;br /&gt;
UnrealScript 시스템도 고도화되었다.  &lt;br /&gt;
UE1의 [[BSP]] 기반 설계는 이후 [[Static Mesh]] 구조로 대체되었다.&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[Unreal Engine]]  &lt;br /&gt;
* [[Unreal Engine 2]]  &lt;br /&gt;
* [[Tim Sweeney]]  &lt;br /&gt;
* [[Epic Games]]  &lt;br /&gt;
* [[Unreal]]  &lt;br /&gt;
* [[Unreal Tournament]]  &lt;br /&gt;
* [[Deus Ex]]  &lt;br /&gt;
* [[Rune]]  &lt;br /&gt;
* [[UnrealScript]]  &lt;br /&gt;
* [[UnrealEd]]  &lt;br /&gt;
* [[BSP]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Epic Games, “Unreal Engine History”  &lt;br /&gt;
* Tim Sweeney, “The Making of Unreal” (GDC 1999)  &lt;br /&gt;
* Ion Storm, “Deus Ex Developer Notes” (2000)  &lt;br /&gt;
* Human Head Studios, “Rune Postmortem”  &lt;br /&gt;
* Digital Extremes, “Unreal Tournament Retrospective”&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Unreal_Engine&amp;diff=215</id>
		<title>Unreal Engine</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Unreal_Engine&amp;diff=215"/>
		<updated>2025-11-18T00:29:31Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 새 문서: == 개요 == &amp;#039;&amp;#039;&amp;#039;Unreal Engine&amp;#039;&amp;#039;&amp;#039;은 Epic Games가 개발한 고성능 게임 엔진이다.   처음에는 1998년 출시된 1인칭 슈팅 게임 《Unreal》을 위해 제작되었으며,   이후 범용 게임 개발 플랫폼으로 발전하여   현재는 영화, 메타버스, 시각 효과 (VFX), 건축 시각화 등 다양한 산업에서 사용된다.  Unreal Engine은 C++ 언어로 작성되었으며,   Unreal Engine 5에서는 시각적으로 프...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Unreal Engine&#039;&#039;&#039;은 [[Epic Games]]가 개발한 고성능 게임 엔진이다.  &lt;br /&gt;
처음에는 1998년 출시된 1인칭 슈팅 게임 《[[Unreal]]》을 위해 제작되었으며,  &lt;br /&gt;
이후 범용 게임 개발 플랫폼으로 발전하여  &lt;br /&gt;
현재는 영화, 메타버스, [[시각 효과 (VFX)]], [[건축 시각화]] 등 다양한 산업에서 사용된다.&lt;br /&gt;
&lt;br /&gt;
Unreal Engine은 [[C++]] 언어로 작성되었으며,  &lt;br /&gt;
[[Unreal Engine 5]]에서는 시각적으로 프로그래밍 가능한 [[Blueprint]] 시스템을 포함하고 있다.  &lt;br /&gt;
[[DirectX]], [[Vulkan]], [[Metal]], [[OpenGL]] 등의 그래픽 API를 지원하며,  &lt;br /&gt;
[[Windows]], [[Linux]], [[macOS]], [[Android]], [[iOS]], [[PlayStation]], [[Xbox]] 등  &lt;br /&gt;
거의 모든 플랫폼에서 동작한다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 버전 !! 출시 연도 !! 주요 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Unreal Engine 1]] || 1998 || 《Unreal》, 《Deus Ex》, 《Rune》 등에서 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Unreal Engine 2]] || 2002 || [[DirectX 8]] 지원, [[Unreal Tournament 2003]]  &lt;br /&gt;
|-&lt;br /&gt;
| [[Unreal Engine 3]] || 2006 || [[HDR]], [[Normal Mapping]], [[Gears of War]] 시리즈  &lt;br /&gt;
|-&lt;br /&gt;
| [[Unreal Engine 4]] || 2014 || 완전한 [[C++]] 공개, [[Blueprint]] 도입, 무료화(5% 로열티)  &lt;br /&gt;
|-&lt;br /&gt;
| [[Unreal Engine 5]] || 2022 || [[Nanite]], [[Lumen]], [[Chaos Physics]], [[Metasounds]], [[World Partition]]  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 주요 특징 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 렌더링 엔진 || 실시간 고품질 [[PBR]] 렌더링, [[Ray Tracing]] 지원  &lt;br /&gt;
|-&lt;br /&gt;
| 그래픽 기술 || [[Nanite]], [[Lumen]], [[Virtual Shadow Maps]]  &lt;br /&gt;
|-&lt;br /&gt;
| 물리 엔진 || [[Chaos Physics]], [[Niagara]] 입자 시스템  &lt;br /&gt;
|-&lt;br /&gt;
| 스크립팅 || [[C++]] 기반 + [[Blueprint]] 시각적 프로그래밍  &lt;br /&gt;
|-&lt;br /&gt;
| 에디터 || [[Unreal Editor]] – 실시간 레벨 편집 및 시뮬레이션  &lt;br /&gt;
|-&lt;br /&gt;
| 사운드 엔진 || [[Metasounds]] (Unreal 5 도입)  &lt;br /&gt;
|-&lt;br /&gt;
| 네트워킹 || [[Replication]], [[Dedicated Server]], [[Subobject Replication]] 지원  &lt;br /&gt;
|-&lt;br /&gt;
| 개발 환경 || [[Visual Studio]], [[Rider]], [[RustRover]] 등 IDE 통합  &lt;br /&gt;
|-&lt;br /&gt;
| 플랫폼 지원 || Windows, macOS, Linux, iOS, Android, PS5, Xbox Series X/S  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 핵심 기술 ==&lt;br /&gt;
* &#039;&#039;&#039;[[Nanite]]&#039;&#039;&#039; – 실시간 가상화 지오메트리 렌더링 기술  &lt;br /&gt;
* &#039;&#039;&#039;[[Lumen]]&#039;&#039;&#039; – 완전 동적 글로벌 일루미네이션 (GI) 시스템  &lt;br /&gt;
* &#039;&#039;&#039;[[Chaos Physics]]&#039;&#039;&#039; – 새 물리 엔진 (Rigid Body, Vehicle, Cloth 지원)  &lt;br /&gt;
* &#039;&#039;&#039;[[Niagara]]&#039;&#039;&#039; – 고급 입자 시뮬레이션 시스템  &lt;br /&gt;
* &#039;&#039;&#039;[[Metasounds]]&#039;&#039;&#039; – 오디오용 노드 기반 처리 그래프  &lt;br /&gt;
* &#039;&#039;&#039;[[World Partition]]&#039;&#039;&#039; – 자동 월드 스트리밍 및 분할 로딩 시스템  &lt;br /&gt;
* &#039;&#039;&#039;[[Control Rig]]&#039;&#039;&#039; – 애니메이션 리깅 자동화  &lt;br /&gt;
* &#039;&#039;&#039;[[Virtual Shadow Maps]]&#039;&#039;&#039; – 고해상도 동적 그림자 렌더링  &lt;br /&gt;
&lt;br /&gt;
== Blueprint 시스템 ==&lt;br /&gt;
[[Blueprint]]는 Unreal의 시각적 스크립팅 언어로,  &lt;br /&gt;
코드를 작성하지 않고도 게임 로직을 구성할 수 있게 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// Blueprint 예시와 동일한 C++ 예시&lt;br /&gt;
void AMyActor::BeginPlay() {&lt;br /&gt;
    Super::BeginPlay();&lt;br /&gt;
    UE_LOG(LogTemp, Warning, TEXT(&amp;quot;Hello, TechPedia!&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Blueprint는 [[C++]] 코드와 완벽히 상호작용하며,  &lt;br /&gt;
[[UCLASS]], [[UPROPERTY]], [[UFUNCTION]] 매크로로 노드화가 가능하다.&lt;br /&gt;
&lt;br /&gt;
== 렌더링 기술 ==&lt;br /&gt;
Unreal Engine은 완전한 [[PBR]](Physically Based Rendering)을 지원한다.  &lt;br /&gt;
렌더링 파이프라인은 다음 단계로 구성된다.&lt;br /&gt;
&lt;br /&gt;
1. [[Nanite]] 지오메트리 처리  &lt;br /&gt;
&lt;br /&gt;
2. [[Lumen]] GI 및 반사 계산  &lt;br /&gt;
&lt;br /&gt;
3. [[Virtual Shadow Maps]]로 그림자 렌더링  &lt;br /&gt;
&lt;br /&gt;
4. [[Temporal Super Resolution (TSR)]]을 통한 업스케일링  &lt;br /&gt;
&lt;br /&gt;
== 물리 및 시뮬레이션 ==&lt;br /&gt;
* [[Chaos Physics]] – 충돌, 파괴, 유체, 차량 시뮬레이션  &lt;br /&gt;
* [[Niagara]] – GPU 기반 파티클 시스템  &lt;br /&gt;
* [[Control Rig]] – 캐릭터 리깅 및 절차적 애니메이션  &lt;br /&gt;
* [[Mass Entity System]] – ECS(Entity Component System) 기반 대규모 AI 시뮬레이션  &lt;br /&gt;
&lt;br /&gt;
== Unreal Engine 5의 혁신 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 기술 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[Nanite]] || 수십억 폴리곤을 실시간으로 렌더링  &lt;br /&gt;
|-&lt;br /&gt;
| [[Lumen]] || 실시간 글로벌 일루미네이션 및 반사  &lt;br /&gt;
|-&lt;br /&gt;
| [[World Partition]] || 오픈월드 스트리밍 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[MetaHuman]] || 현실적인 디지털 휴먼 제작 툴  &lt;br /&gt;
|-&lt;br /&gt;
| [[Chaos Physics]] || 새로운 물리 및 파괴 시스템  &lt;br /&gt;
|-&lt;br /&gt;
| [[Metasounds]] || 절차적 오디오 생성 시스템  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 개발 언어 ==&lt;br /&gt;
* [[C++]] – 엔진 및 고성능 시스템 구현  &lt;br /&gt;
* [[Blueprint]] – 시각적 게임 로직  &lt;br /&gt;
* [[Python]] – 에디터 자동화 및 파이프라인 스크립트  &lt;br /&gt;
* [[Rust]] / [[Wave]] – [[FFI]] 또는 플러그인 형태로 실험적 지원  &lt;br /&gt;
&lt;br /&gt;
== 사용 예시 ==&lt;br /&gt;
* AAA 게임: 《[[Fortnite]]》, 《[[Final Fantasy VII Remake]]》, 《[[The Matrix Awakens]]》  &lt;br /&gt;
* 영화 및 VFX: 《[[The Mandalorian]]》, [[Virtual Production]] 환경  &lt;br /&gt;
* 시뮬레이션: [[자동차 산업]], [[항공 시뮬레이터]], [[메타버스]] 프로젝트  &lt;br /&gt;
* 교육/건축: [[Twinmotion]], [[Unreal Engine for Architecture]]  &lt;br /&gt;
&lt;br /&gt;
== Unreal Editor ==&lt;br /&gt;
[[Unreal Editor]]는 실시간 미리보기, 머티리얼 에디터,  &lt;br /&gt;
블루프린트 그래프, 애니메이션 에디터, [[Sequencer]](타임라인) 등  &lt;br /&gt;
완전한 개발 환경을 제공한다.&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine과 Unity 비교 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! Unreal Engine !! Unity&lt;br /&gt;
|-&lt;br /&gt;
| 언어 || [[C++]], [[Blueprint]] || [[C#]]  &lt;br /&gt;
|-&lt;br /&gt;
| 렌더링 품질 || 매우 높음 (Nanite, Lumen) || 중간~높음 (URP/HDRP)  &lt;br /&gt;
|-&lt;br /&gt;
| 오픈월드 지원 || 완전 지원 ([[World Partition]]) || 제한적  &lt;br /&gt;
|-&lt;br /&gt;
| 로열티 모델 || 무료 + 상업 매출 5% || 유료 플랜 (Pro, Enterprise)  &lt;br /&gt;
|-&lt;br /&gt;
| 에디터 || 강력, 대형 프로젝트 적합 || 경량, 초보자 친화적  &lt;br /&gt;
|-&lt;br /&gt;
| 커뮤니티 || 대규모 프로 스튜디오 중심 || 인디 개발자 중심  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 플랫폼 및 배포 ==&lt;br /&gt;
* &#039;&#039;&#039;지원 플랫폼:&#039;&#039;&#039; Windows, macOS, Linux, Android, iOS, PS4/5, Xbox, Switch  &lt;br /&gt;
* &#039;&#039;&#039;에디터 플랫폼:&#039;&#039;&#039; Windows / macOS / Linux  &lt;br /&gt;
* &#039;&#039;&#039;배포:&#039;&#039;&#039; [[Epic Games Launcher]] / [[GitHub]] (소스 코드 공개)  &lt;br /&gt;
* &#039;&#039;&#039;라이선스:&#039;&#039;&#039; 무료 (매출 100만 달러 이상 시 5% 로열티)  &lt;br /&gt;
&lt;br /&gt;
== 현대 트렌드 ==&lt;br /&gt;
* [[Unreal Engine 5]]의 산업 전반 확장  &lt;br /&gt;
* [[Nanite]], [[Lumen]] → 실시간 영화 제작 도구로 활용  &lt;br /&gt;
* [[MetaHuman]]으로 [[디지털 휴먼]] 제작 가속화  &lt;br /&gt;
* [[Unreal Editor for Fortnite (UEFN)]]의 크리에이터 생태계  &lt;br /&gt;
* [[Verse Language]] – Unreal 전용 스크립트 언어 개발 중  &lt;br /&gt;
* [[XR]], [[메타버스]] 분야에서 [[Unity]]와 경쟁 심화  &lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[Epic Games]]  &lt;br /&gt;
* [[Unity]]  &lt;br /&gt;
* [[Blueprint]]  &lt;br /&gt;
* [[C++]]  &lt;br /&gt;
* [[Nanite]]  &lt;br /&gt;
* [[Lumen]]  &lt;br /&gt;
* [[Chaos Physics]]  &lt;br /&gt;
* [[Niagara]]  &lt;br /&gt;
* [[Metasounds]]  &lt;br /&gt;
* [[MetaHuman]]  &lt;br /&gt;
* [[World Partition]]  &lt;br /&gt;
* [[Fortnite]]  &lt;br /&gt;
* [[Unreal Editor]]  &lt;br /&gt;
* [[Verse Language]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Epic Games, “Unreal Engine 5 Documentation” (2024)  &lt;br /&gt;
* Tim Sweeney, “The Future of Real-Time 3D” – GDC 2022  &lt;br /&gt;
* Epic Games GitHub Repository – UnrealEngine  &lt;br /&gt;
* Unreal Engine Source Code (GPL Exception License)  &lt;br /&gt;
* NVIDIA RTX + Unreal Lumen Whitepaper (2023)  &lt;br /&gt;
* Unreal Fest 2024 – UE5 Technical Overview&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Node.js&amp;diff=214</id>
		<title>Node.js</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Node.js&amp;diff=214"/>
		<updated>2025-11-18T00:17:38Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 새 문서: == 개요 == &amp;#039;&amp;#039;&amp;#039;Node.js&amp;#039;&amp;#039;&amp;#039;는 Ryan Dahl이 2009년에 개발한   JavaScript 기반의 오픈소스 서버 사이드 런타임 환경이다.   Chrome V8 자바스크립트 엔진을 기반으로 동작하며,   비동기(Asynchronous) 이벤트 기반 모델을 채택해   대규모 네트워크 애플리케이션에 최적화되어 있다.  Node.js는 기존에 웹 브라우저에서만 실행되던 JavaScript를   서버 환경에서도 사용할 수 있도록...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Node.js&#039;&#039;&#039;는 [[Ryan Dahl]]이 2009년에 개발한  &lt;br /&gt;
[[JavaScript]] 기반의 오픈소스 서버 사이드 런타임 환경이다.  &lt;br /&gt;
[[Chrome V8]] 자바스크립트 엔진을 기반으로 동작하며,  &lt;br /&gt;
비동기(Asynchronous) 이벤트 기반 모델을 채택해  &lt;br /&gt;
대규모 네트워크 애플리케이션에 최적화되어 있다.&lt;br /&gt;
&lt;br /&gt;
Node.js는 기존에 웹 브라우저에서만 실행되던 [[JavaScript]]를  &lt;br /&gt;
서버 환경에서도 사용할 수 있도록 만든 런타임이다.  &lt;br /&gt;
싱글 스레드 구조이지만 [[이벤트 루프]]와 [[비동기 I/O]]를 활용해  &lt;br /&gt;
수천 개의 연결을 동시에 처리할 수 있다.&lt;br /&gt;
&lt;br /&gt;
== 주요 특징 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔진 || [[Chrome V8 JavaScript Engine]] 기반  &lt;br /&gt;
|-&lt;br /&gt;
| 언어 || [[JavaScript]], [[TypeScript]]  &lt;br /&gt;
|-&lt;br /&gt;
| 구조 || 싱글 스레드 + 이벤트 루프 모델  &lt;br /&gt;
|-&lt;br /&gt;
| 비동기 처리 || [[libuv]]를 통한 Non-blocking I/O  &lt;br /&gt;
|-&lt;br /&gt;
| 패키지 관리자 || [[npm]] (Node Package Manager)  &lt;br /&gt;
|-&lt;br /&gt;
| 플랫폼 지원 || [[Windows]], [[Linux]], [[macOS]]  &lt;br /&gt;
|-&lt;br /&gt;
| 확장성 || [[C++]], [[Rust]], [[WASM]] 네이티브 모듈 연동 가능  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 연도 !! 버전/사건 !! 주요 내용&lt;br /&gt;
|-&lt;br /&gt;
| 2009 || 첫 공개 || Ryan Dahl, V8 기반 비동기 런타임 발표  &lt;br /&gt;
|-&lt;br /&gt;
| 2011 || npm 통합 || Node.js 패키지 관리 생태계 등장  &lt;br /&gt;
|-&lt;br /&gt;
| 2014 || io.js 분기 || 커뮤니티 포크(io.js) 등장  &lt;br /&gt;
|-&lt;br /&gt;
| 2015 || Node.js 재통합 (v4.0) || io.js 병합, LTS 체계 확립  &lt;br /&gt;
|-&lt;br /&gt;
| 2018 || Node.js 10 LTS || [[async/await]], [[HTTP/2]] 지원  &lt;br /&gt;
|-&lt;br /&gt;
| 2020 || Node.js 14+ || [[ES Modules]], [[Diagnostics Channel]] 도입  &lt;br /&gt;
|-&lt;br /&gt;
| 2023 || Node.js 20 || [[WebAssembly]], [[fetch API]] 기본 지원  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 동작 구조 ==&lt;br /&gt;
Node.js의 내부 구조는 다음과 같다:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 계층 !! 구성 요소 !! 역할&lt;br /&gt;
|-&lt;br /&gt;
| 언어 계층 || [[JavaScript]] || 애플리케이션 코드 실행  &lt;br /&gt;
|-&lt;br /&gt;
| 엔진 계층 || [[V8 Engine]] || 자바스크립트 → 기계어 변환  &lt;br /&gt;
|-&lt;br /&gt;
| 런타임 계층 || [[libuv]], [[c-ares]] || 비동기 I/O, 이벤트 루프 처리  &lt;br /&gt;
|-&lt;br /&gt;
| 바인딩 계층 || [[C++ Addon]], [[N-API]] || 네이티브 모듈과 상호작용  &lt;br /&gt;
|-&lt;br /&gt;
| 시스템 계층 || [[OS Kernel]] || 파일, 네트워크, 프로세스 관리  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 이벤트 루프 (Event Loop) ==&lt;br /&gt;
Node.js의 핵심 구조는 &#039;&#039;&#039;이벤트 루프(Event Loop)&#039;&#039;&#039; 이다.  &lt;br /&gt;
이는 싱글 스레드 환경에서도 다중 요청을 동시에 처리할 수 있게 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
console.log(&#039;Start&#039;);&lt;br /&gt;
&lt;br /&gt;
setTimeout(() =&amp;gt; {&lt;br /&gt;
  console.log(&#039;Async Task&#039;);&lt;br /&gt;
}, 1000);&lt;br /&gt;
&lt;br /&gt;
console.log(&#039;End&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== npm (Node Package Manager) ==&lt;br /&gt;
&#039;&#039;&#039;npm&#039;&#039;&#039;은 Node.js의 공식 패키지 관리 도구로,  &lt;br /&gt;
전 세계에서 가장 큰 오픈소스 모듈 저장소를 제공한다.  &lt;br /&gt;
&lt;br /&gt;
기본 명령어:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
npm init        # 프로젝트 초기화&lt;br /&gt;
npm install express   # 모듈 설치&lt;br /&gt;
npm run start   # 스크립트 실행&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
또한 [[Yarn]], [[pnpm]] 등의 대체 패키지 관리자도 존재한다.&lt;br /&gt;
&lt;br /&gt;
== 주요 모듈 ==&lt;br /&gt;
Node.js는 표준 모듈 세트를 포함하고 있으며,  &lt;br /&gt;
외부 패키지와 함께 풍부한 개발 생태계를 구성한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 범주 !! 모듈 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 파일 시스템 || [[fs]] || 파일 읽기/쓰기  &lt;br /&gt;
|-&lt;br /&gt;
| 네트워킹 || [[http]], [[net]], [[dns]] || 서버 및 TCP 통신  &lt;br /&gt;
|-&lt;br /&gt;
| 운영체제 || [[os]] || 시스템 정보 조회  &lt;br /&gt;
|-&lt;br /&gt;
| 이벤트 || [[events]] || 이벤트 생성 및 구독  &lt;br /&gt;
|-&lt;br /&gt;
| 스트림 || [[stream]] || 데이터 스트리밍 처리  &lt;br /&gt;
|-&lt;br /&gt;
| 암호화 || [[crypto]] || 해시, 암호화 연산  &lt;br /&gt;
|-&lt;br /&gt;
| 프로세스 || [[child_process]] || 외부 명령 실행  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 예제 코드 ==&lt;br /&gt;
간단한 웹 서버 예시:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
const http = require(&#039;http&#039;);&lt;br /&gt;
&lt;br /&gt;
http.createServer((req, res) =&amp;gt; {&lt;br /&gt;
  res.writeHead(200, {&#039;Content-Type&#039;: &#039;text/plain&#039;});&lt;br /&gt;
  res.end(&#039;Hello, TechPedia!\n&#039;);&lt;br /&gt;
}).listen(8080);&lt;br /&gt;
&lt;br /&gt;
console.log(&#039;Server running on http://localhost:8080&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 성능 특징 ==&lt;br /&gt;
* [[V8 JIT]]을 통한 빠른 실행 속도  &lt;br /&gt;
* [[libuv]] 기반 비동기 이벤트 루프  &lt;br /&gt;
* 낮은 리소스 점유로 고동시성(High Concurrency) 지원  &lt;br /&gt;
* [[Cluster]] 모듈로 멀티코어 활용 가능  &lt;br /&gt;
* [[Worker Threads]]로 병렬 처리 확장  &lt;br /&gt;
&lt;br /&gt;
== Node.js와 Deno, Bun 비교 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! Node.js !! Deno !! Bun&lt;br /&gt;
|-&lt;br /&gt;
| 개발자 || Ryan Dahl (2009) || Ryan Dahl (2018) || Jarred Sumner (2022)  &lt;br /&gt;
|-&lt;br /&gt;
| 엔진 || V8 || V8 || JavaScriptCore  &lt;br /&gt;
|-&lt;br /&gt;
| 언어 || JavaScript, TypeScript || TypeScript 기본 지원 || JS/TS/JSX  &lt;br /&gt;
|-&lt;br /&gt;
| 패키지 시스템 || npm || URL Import || npm 호환 + 자체 빌트인  &lt;br /&gt;
|-&lt;br /&gt;
| 보안 모델 || 제한적 || 샌드박스 기반 || 네이티브 모듈 통합  &lt;br /&gt;
|-&lt;br /&gt;
| 속도 || 빠름 || 빠름 || 매우 빠름 (Zig 기반 런타임)  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 활용 분야 ==&lt;br /&gt;
* [[웹 서버]] 및 [[API 서버]]  &lt;br /&gt;
* [[실시간 통신]] (WebSocket, Socket.IO)  &lt;br /&gt;
* [[CLI 도구]], [[빌드 시스템]]  &lt;br /&gt;
* [[IoT 디바이스]] 백엔드  &lt;br /&gt;
* [[Electron]] 기반 데스크톱 앱  &lt;br /&gt;
* [[Serverless Computing]] ([[AWS Lambda]], [[Vercel]])  &lt;br /&gt;
&lt;br /&gt;
== Node.js와 TypeScript ==&lt;br /&gt;
Node.js는 [[TypeScript]]와 결합해 대규모 애플리케이션 개발에 자주 사용된다.  &lt;br /&gt;
TS를 Node.js에서 실행하기 위해 [[ts-node]] 또는 [[Bun]], [[Deno]] 같은 런타임이 함께 쓰인다.&lt;br /&gt;
&lt;br /&gt;
== 현대 트렌드 ==&lt;br /&gt;
* [[ES Modules]](ESM) 완전 지원  &lt;br /&gt;
* [[fetch API]] 및 [[Web Streams]] 내장  &lt;br /&gt;
* [[WebAssembly]] 실행 지원  &lt;br /&gt;
* [[Rust]] 기반 네이티브 모듈 확장 증가  &lt;br /&gt;
* [[Bun]], [[Deno]]와의 런타임 경쟁  &lt;br /&gt;
* [[Edge Computing]] 및 [[Serverless]] 확장  &lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[JavaScript]]  &lt;br /&gt;
* [[TypeScript]]  &lt;br /&gt;
* [[V8 Engine]]  &lt;br /&gt;
* [[libuv]]  &lt;br /&gt;
* [[npm]]  &lt;br /&gt;
* [[Deno]]  &lt;br /&gt;
* [[Bun]]  &lt;br /&gt;
* [[Electron]]  &lt;br /&gt;
* [[Express]]  &lt;br /&gt;
* [[Next.js]]  &lt;br /&gt;
* [[Serverless Computing]]  &lt;br /&gt;
* [[Vercel]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Node.js Documentation – [https://nodejs.org/en/docs/ Official Site]  &lt;br /&gt;
* Ryan Dahl, “Introduction to Node.js”, JSConf (2009)  &lt;br /&gt;
* libuv Project Documentation  &lt;br /&gt;
* npm Registry Reference  &lt;br /&gt;
* Google V8 Engine Docs  &lt;br /&gt;
* Deno vs Node.js Comparison, 2024 TechRadar Report&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=SteamOS&amp;diff=213</id>
		<title>SteamOS</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=SteamOS&amp;diff=213"/>
		<updated>2025-11-14T12:29:36Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 새 문서: == 개요 == &amp;#039;&amp;#039;&amp;#039;SteamOS&amp;#039;&amp;#039;&amp;#039;는 Valve Corporation이 개발한 &amp;#039;&amp;#039;&amp;#039;리눅스 기반 게임 전용 운영체제&amp;#039;&amp;#039;&amp;#039;이다.   원래는 Debian 기반으로 시작했으나,   현재(3.x 버전 이후)는 Arch Linux 기반으로 재구성되었다.    SteamOS는 Valve의 휴대용 게임기 Steam Deck의 기본 운영체제로 사용되며,   Steam 플랫폼과 밀접하게 통합되어 있다.  SteamOS는 PC 게이밍을 Linux 환경에서도 쾌적하게 즐...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;SteamOS&#039;&#039;&#039;는 [[Valve Corporation]]이 개발한 &#039;&#039;&#039;리눅스 기반 게임 전용 운영체제&#039;&#039;&#039;이다.  &lt;br /&gt;
원래는 [[Debian]] 기반으로 시작했으나,  &lt;br /&gt;
현재(3.x 버전 이후)는 [[Arch Linux]] 기반으로 재구성되었다.  &lt;br /&gt;
&lt;br /&gt;
SteamOS는 Valve의 휴대용 게임기 [[Steam Deck]]의 기본 운영체제로 사용되며,  &lt;br /&gt;
[[Steam]] 플랫폼과 밀접하게 통합되어 있다.&lt;br /&gt;
&lt;br /&gt;
SteamOS는 PC 게이밍을 [[Linux]] 환경에서도 쾌적하게 즐길 수 있도록 설계된 OS이다.  &lt;br /&gt;
Steam 클라이언트와 [[Proton]](Wine 기반 호환 계층)을 통해  &lt;br /&gt;
[[Windows]] 전용 게임도 실행할 수 있으며,  &lt;br /&gt;
[[Vulkan]] 및 [[Mesa 3D]] 기술을 적극 활용한다.&lt;br /&gt;
&lt;br /&gt;
SteamOS는 표준 리눅스 데스크톱 환경([[KDE Plasma]])을 기반으로 하며,  &lt;br /&gt;
사용자는 일반 리눅스처럼 패키지를 설치하거나 터미널을 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 연도 !! 버전 !! 기반 !! 주요 특징&lt;br /&gt;
|-&lt;br /&gt;
| 2013 || SteamOS 1.0 &amp;quot;Alchemist&amp;quot; || [[Debian 7]] || 초기 공개 버전, [[Steam Machine]]용  &lt;br /&gt;
|-&lt;br /&gt;
| 2015 || SteamOS 2.0 &amp;quot;Brewmaster&amp;quot; || [[Debian 8]] || 안정화 및 게임 최적화 향상  &lt;br /&gt;
|-&lt;br /&gt;
| 2021 || SteamOS 3.0 || [[Arch Linux]] || [[Steam Deck]] 전용, 롤링 업데이트 모델  &lt;br /&gt;
|-&lt;br /&gt;
| 2023 || SteamOS 3.5 || [[Arch Linux]] || [[Wayland]], [[Vulkan]] 개선, 하드웨어 드라이버 최적화  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 특징 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 기반 커널 || [[Linux Kernel]] (Valve 커스텀 패치 포함)  &lt;br /&gt;
|-&lt;br /&gt;
| 기본 데스크톱 환경 || [[KDE Plasma]]  &lt;br /&gt;
|-&lt;br /&gt;
| 패키지 관리자 || [[pacman]] ([[Arch Linux]] 기반)  &lt;br /&gt;
|-&lt;br /&gt;
| 주요 기술 || [[Proton]], [[Wine]], [[Vulkan]], [[DXVK]], [[Gamescope]]  &lt;br /&gt;
|-&lt;br /&gt;
| 그래픽 API || [[Vulkan]], [[OpenGL]]  &lt;br /&gt;
|-&lt;br /&gt;
| 게임 런처 || [[Steam Big Picture]], [[Steam Deck UI]]  &lt;br /&gt;
|-&lt;br /&gt;
| 호환성 계층 || [[Proton]] (Windows 게임 실행)  &lt;br /&gt;
|-&lt;br /&gt;
| 업데이트 방식 || 롤링 릴리스 (연속 업데이트)  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 핵심 기술 ==&lt;br /&gt;
* &#039;&#039;&#039;[[Proton]]&#039;&#039;&#039; – Windows용 게임을 Linux에서 실행하는 호환 계층  &lt;br /&gt;
* &#039;&#039;&#039;[[Wine]]&#039;&#039;&#039; – Windows API를 Linux에서 재구현  &lt;br /&gt;
* &#039;&#039;&#039;[[DXVK]]&#039;&#039;&#039; – DirectX 9/10/11 → Vulkan 변환 레이어  &lt;br /&gt;
* &#039;&#039;&#039;[[Gamescope]]&#039;&#039;&#039; – Valve의 게임 전용 Wayland compositor  &lt;br /&gt;
* &#039;&#039;&#039;[[Vulkan]]&#039;&#039;&#039; – 차세대 그래픽 API, 높은 효율성 제공  &lt;br /&gt;
* &#039;&#039;&#039;[[PipeWire]]&#039;&#039;&#039; / [[ALSA]] / [[PulseAudio]] – 오디오 시스템  &lt;br /&gt;
* &#039;&#039;&#039;[[Mesa 3D]]&#039;&#039;&#039; – 오픈소스 GPU 드라이버 스택  &lt;br /&gt;
&lt;br /&gt;
== Steam Deck과의 관계 ==&lt;br /&gt;
SteamOS 3.x는 Valve의 휴대용 PC 게임기 [[Steam Deck]] 전용으로 최적화되어 있다.  &lt;br /&gt;
Deck의 하드웨어([[AMD APU]], [[RDNA 2 GPU]], [[LPDDR5]])와 긴밀히 연동되며,  &lt;br /&gt;
다음과 같은 특성을 가진다.&lt;br /&gt;
&lt;br /&gt;
* 자동 입력 매핑 (컨트롤러 감지)  &lt;br /&gt;
* 절전 및 빠른 재개(Suspend/Resume)  &lt;br /&gt;
* [[Gamescope]] 기반 1280x800 해상도 렌더링  &lt;br /&gt;
* 전력 관리 및 팬 속도 제어 통합  &lt;br /&gt;
* [[Steam Input]]을 통한 키/컨트롤러 통합  &lt;br /&gt;
&lt;br /&gt;
== SteamOS와 일반 리눅스의 차이 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! SteamOS !! 일반 Linux&lt;br /&gt;
|-&lt;br /&gt;
| 기반 || [[Arch Linux]] (Valve 커스텀) || 배포판별 다양  &lt;br /&gt;
|-&lt;br /&gt;
| 목적 || 게임 전용 || 범용 목적  &lt;br /&gt;
|-&lt;br /&gt;
| 기본 환경 || [[Steam Deck UI]] / KDE Plasma || GNOME, KDE, XFCE 등 다양  &lt;br /&gt;
|-&lt;br /&gt;
| 업데이트 방식 || 롤링 업데이트, 자동 적용 || 수동 또는 반자동  &lt;br /&gt;
|-&lt;br /&gt;
| 그래픽 최적화 || [[Vulkan]], [[Gamescope]], [[Proton]] || 표준 Mesa/OpenGL  &lt;br /&gt;
|-&lt;br /&gt;
| 기본 앱 || Steam, Konsole, System Settings || 배포판별 기본 세트  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 하드웨어 지원 ==&lt;br /&gt;
* CPU: [[AMD]] (Zen 2 이상), [[Intel]] (10세대 이상)  &lt;br /&gt;
* GPU: [[AMD Radeon]], [[Intel Arc]], [[NVIDIA (Beta Vulkan Driver)]]  &lt;br /&gt;
* 오디오: [[ALSA]] / [[PipeWire]]  &lt;br /&gt;
* 입력 장치: [[Steam Controller]], [[DualSense]], [[Xbox Controller]] 등 완전 지원  &lt;br /&gt;
&lt;br /&gt;
== 개발 환경 ==&lt;br /&gt;
SteamOS는 리눅스 표준 개발 도구를 그대로 사용할 수 있다.&lt;br /&gt;
* [[GCC]], [[Clang]], [[CMake]], [[Rust]], [[Python]] 등 기본 포함  &lt;br /&gt;
* [[Flatpak]] 및 [[AppImage]] 지원  &lt;br /&gt;
* [[Proton SDK]]와 [[Steamworks API]] 제공 (게임 통합 기능)  &lt;br /&gt;
&lt;br /&gt;
== SteamOS와 Proton ==&lt;br /&gt;
[[Proton]]은 SteamOS의 핵심 요소로,  &lt;br /&gt;
[[Wine]] 기반 구조에 [[DXVK]], [[vkd3d]], [[FAudio]] 등을 결합하여  &lt;br /&gt;
대부분의 [[Windows]] 게임을 Linux에서 실행 가능하게 한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Steam Launch Options 예시&lt;br /&gt;
PROTON_USE_WINED3D=1 %command%&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 오픈소스와 커뮤니티 ==&lt;br /&gt;
SteamOS의 많은 구성 요소는 오픈소스로 공개되어 있으며,  &lt;br /&gt;
Valve는 이를 [[GitHub]]에서 관리한다.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ValveSoftware/ ValveSoftware (GitHub)]  &lt;br /&gt;
* 주요 오픈소스 프로젝트: [[Proton]], [[DXVK]], [[Gamescope]], [[Mesa]]  &lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[Valve Corporation]]  &lt;br /&gt;
* [[Steam Deck]]  &lt;br /&gt;
* [[Proton]]  &lt;br /&gt;
* [[Wine]]  &lt;br /&gt;
* [[Linux]]  &lt;br /&gt;
* [[Arch Linux]]  &lt;br /&gt;
* [[KDE Plasma]]  &lt;br /&gt;
* [[Vulkan]]  &lt;br /&gt;
* [[DXVK]]  &lt;br /&gt;
* [[Gamescope]]  &lt;br /&gt;
* [[OpenGL]]  &lt;br /&gt;
* [[Zink]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Valve Software, “SteamOS 3 Developer Notes” (2023)  &lt;br /&gt;
* Steam Deck Developer Documentation – [https://partner.steamgames.com/ Steamworks Partner Portal]  &lt;br /&gt;
* DXVK GitHub Repository – Valve Corporation  &lt;br /&gt;
* ArchWiki: SteamOS and Steam Deck  &lt;br /&gt;
* Mesa 3D Graphics Library Documentation&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Solaris&amp;diff=212</id>
		<title>Solaris</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Solaris&amp;diff=212"/>
		<updated>2025-11-14T11:52:16Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 새 문서: == 개요 == &amp;#039;&amp;#039;&amp;#039;Solaris&amp;#039;&amp;#039;&amp;#039;는 Sun Microsystems에서 개발한 유닉스 계열 운영체제로,   UNIX System V Release 4(SVR4)를 기반으로 한 상용 OS이다.   2010년 Oracle이 Sun을 인수하면서 현재는 &amp;#039;&amp;#039;&amp;#039;Oracle Solaris&amp;#039;&amp;#039;&amp;#039;라는 이름으로 유지되고 있다.  Solaris는 1990년대~2000년대 초까지   기업용 서버와 워크스테이션 분야에서 높은 안정성과 성능으로 유명했다.   특히 대규모 네트워크 서버,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Solaris&#039;&#039;&#039;는 [[Sun Microsystems]]에서 개발한 [[유닉스 계열 운영체제]]로,  &lt;br /&gt;
[[UNIX System V Release 4]](SVR4)를 기반으로 한 상용 OS이다.  &lt;br /&gt;
2010년 [[Oracle]]이 Sun을 인수하면서 현재는 &#039;&#039;&#039;Oracle Solaris&#039;&#039;&#039;라는 이름으로 유지되고 있다.&lt;br /&gt;
&lt;br /&gt;
Solaris는 1990년대~2000년대 초까지  &lt;br /&gt;
기업용 서버와 워크스테이션 분야에서 높은 안정성과 성능으로 유명했다.  &lt;br /&gt;
특히 대규모 네트워크 서버, 데이터베이스, 클러스터 환경에서 널리 사용되었다.&lt;br /&gt;
&lt;br /&gt;
Solaris는 [[SPARC]] 아키텍처와 [[x86]] 아키텍처를 모두 지원하며,  &lt;br /&gt;
[[ZFS]] 파일시스템과 [[DTrace]], [[Solaris Zones]] 같은 혁신 기술을 포함한다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 연도 !! 버전 !! 주요 내용&lt;br /&gt;
|-&lt;br /&gt;
| 1992 || Solaris 2.0 || SVR4 기반 최초 버전, SPARC 전용  &lt;br /&gt;
|-&lt;br /&gt;
| 1994 || Solaris 2.4 || [[x86]] 지원 추가  &lt;br /&gt;
|-&lt;br /&gt;
| 1999 || Solaris 7 || 64비트 SPARC CPU 지원, 대규모 서버 환경 강화  &lt;br /&gt;
|-&lt;br /&gt;
| 2002 || Solaris 9 || [[ZFS]] 파일시스템, [[LDAP]] 통합  &lt;br /&gt;
|-&lt;br /&gt;
| 2005 || Solaris 10 || [[DTrace]], [[Zones]](가상화), [[Service Management Facility]] 도입  &lt;br /&gt;
|-&lt;br /&gt;
| 2011 || Solaris 11 || [[Oracle]] 개발 전환, [[ZFS]] 및 네트워킹 개선  &lt;br /&gt;
|-&lt;br /&gt;
| 2020 || Solaris 11.4 SRU 35 || 유지보수 및 안정화 업데이트  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 특징 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 커널 기반 || [[UNIX System V]] Release 4  &lt;br /&gt;
|-&lt;br /&gt;
| 지원 아키텍처 || [[SPARC]], [[x86-64]]  &lt;br /&gt;
|-&lt;br /&gt;
| 파일 시스템 || [[ZFS]] (기본), UFS, NFS  &lt;br /&gt;
|-&lt;br /&gt;
| 가상화 기술 || [[Solaris Zones]], [[LDOMs]], [[Containers]]  &lt;br /&gt;
|-&lt;br /&gt;
| 시스템 관리 || [[SMF (Service Management Facility)]], [[RBAC]], [[DTrace]]  &lt;br /&gt;
|-&lt;br /&gt;
| 보안 || RBAC, Trusted Extensions, 최소 권한 모델  &lt;br /&gt;
|-&lt;br /&gt;
| 네트워킹 || IPMP, Crossbow, IPsec, IPv6 완전 지원  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 주요 기술 ==&lt;br /&gt;
* &#039;&#039;&#039;[[ZFS]]&#039;&#039;&#039; – 고급 파일시스템, 스냅샷 및 자동 복구 기능 지원  &lt;br /&gt;
* &#039;&#039;&#039;[[DTrace]]&#039;&#039;&#039; – 실시간 커널/사용자 영역 트레이싱 도구  &lt;br /&gt;
* &#039;&#039;&#039;[[Solaris Zones]]&#039;&#039;&#039; – 경량 가상화 컨테이너 기술  &lt;br /&gt;
* &#039;&#039;&#039;[[SMF]]&#039;&#039;&#039; – 시스템 서비스 상태 관리 프레임워크  &lt;br /&gt;
* &#039;&#039;&#039;[[RBAC]]&#039;&#039;&#039; – 역할 기반 접근 제어 (Role-Based Access Control)  &lt;br /&gt;
* &#039;&#039;&#039;[[Crossbow]]&#039;&#039;&#039; – 가상 네트워크 인터페이스 관리  &lt;br /&gt;
* &#039;&#039;&#039;[[IPMP]]&#039;&#039;&#039; – 네트워크 인터페이스 다중 경로 지원  &lt;br /&gt;
&lt;br /&gt;
== Solaris 아키텍처 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 계층 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 하드웨어 계층 || SPARC / x86 CPU 기반 시스템  &lt;br /&gt;
|-&lt;br /&gt;
| 커널 계층 || UNIX SVR4 기반, 멀티스레드 커널 구조  &lt;br /&gt;
|-&lt;br /&gt;
| 시스템 계층 || 장치 드라이버, 가상 메모리, IPC, 파일시스템  &lt;br /&gt;
|-&lt;br /&gt;
| 서비스 계층 || SMF, DTrace, Zones 등 시스템 도구  &lt;br /&gt;
|-&lt;br /&gt;
| 사용자 계층 || [[GNOME]] 기반 데스크톱, [[bash]], [[ksh]], [[pkg]] 패키지 관리  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ZFS ==&lt;br /&gt;
Solaris의 대표 기술 중 하나로,  &lt;br /&gt;
파일시스템과 볼륨 매니저를 통합한 구조를 가지고 있다.&lt;br /&gt;
&lt;br /&gt;
특징:&lt;br /&gt;
* 데이터 무결성 보장 (Checksum 기반)  &lt;br /&gt;
* 실시간 스냅샷 및 복구  &lt;br /&gt;
* 논리 볼륨 관리(LVM) 불필요  &lt;br /&gt;
* 풀(Pool) 단위 관리  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# ZFS 풀 생성 예시&lt;br /&gt;
zpool create datapool /dev/dsk/c1t0d0&lt;br /&gt;
zfs create datapool/home&lt;br /&gt;
zfs snapshot datapool/home@backup1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DTrace ==&lt;br /&gt;
Solaris 10에서 도입된 동적 추적 시스템으로,  &lt;br /&gt;
커널 및 사용자 프로세스의 동작을 실시간으로 분석할 수 있다.&lt;br /&gt;
&lt;br /&gt;
예시:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dtrace -n &#039;syscall:::entry { @num[probefunc] = count(); }&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Solaris Zones ==&lt;br /&gt;
Solaris의 경량 가상화 기술로,  &lt;br /&gt;
하나의 OS 인스턴스 내에서 여러 격리된 환경을 실행할 수 있다.  &lt;br /&gt;
이는 오늘날 [[Docker]]와 [[LXC]]의 개념적 전신으로 평가된다.&lt;br /&gt;
&lt;br /&gt;
== Oracle Solaris ==&lt;br /&gt;
Oracle 인수 이후, Solaris는 클라우드 및 서버 중심 OS로 재편되었다.  &lt;br /&gt;
Oracle Database 및 Oracle Cloud Infrastructure에 최적화되어 있으며,  &lt;br /&gt;
보안 패치와 유지보수는 Oracle Support 계약을 통해 제공된다.&lt;br /&gt;
&lt;br /&gt;
== 파생 및 오픈소스 프로젝트 ==&lt;br /&gt;
* [[OpenSolaris]] – 2005년 공개된 Solaris 오픈소스 버전  &lt;br /&gt;
* [[Illumos]] – OpenSolaris 커널을 기반으로 한 커뮤니티 포크  &lt;br /&gt;
* [[OpenIndiana]], [[SmartOS]], [[OmniOS]] – Illumos 기반 배포판  &lt;br /&gt;
&lt;br /&gt;
== Solaris와 Linux 비교 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! Solaris !! Linux&lt;br /&gt;
|-&lt;br /&gt;
| 커널 구조 || SVR4 기반 모놀리식 커널 || 모놀리식 (Linux Kernel)  &lt;br /&gt;
|-&lt;br /&gt;
| 주요 파일시스템 || ZFS || ext4, Btrfs, XFS 등  &lt;br /&gt;
|-&lt;br /&gt;
| 기본 쉘 || ksh, bash || bash, zsh  &lt;br /&gt;
|-&lt;br /&gt;
| 가상화 || Zones, LDOMs || KVM, Docker, LXC  &lt;br /&gt;
|-&lt;br /&gt;
| 라이선스 || 상용 (Oracle) || 오픈소스 (GPLv2)  &lt;br /&gt;
|-&lt;br /&gt;
| 주요 용도 || 엔터프라이즈 서버, 스토리지 || 범용 서버 및 데스크톱  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 현대적 활용 ==&lt;br /&gt;
* 대규모 [[Oracle Database]] 서버  &lt;br /&gt;
* [[SPARC]] 및 x86 기반 데이터센터  &lt;br /&gt;
* [[ZFS]] 기반 스토리지 서버  &lt;br /&gt;
* [[DTrace]] 및 [[Zones]]를 이용한 성능 분석 및 컨테이너 환경  &lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[UNIX]]  &lt;br /&gt;
* [[OpenSolaris]]  &lt;br /&gt;
* [[Illumos]]  &lt;br /&gt;
* [[ZFS]]  &lt;br /&gt;
* [[DTrace]]  &lt;br /&gt;
* [[Solaris Zones]]  &lt;br /&gt;
* [[Oracle]]  &lt;br /&gt;
* [[SPARC]]  &lt;br /&gt;
* [[System V]]  &lt;br /&gt;
* [[Linux]]  &lt;br /&gt;
* [[BSD]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Solaris Internals – Jim Mauro &amp;amp; Richard McDougall (Prentice Hall, 2006)  &lt;br /&gt;
* Oracle Solaris 11 Administration Guide (2023)  &lt;br /&gt;
* Sun Microsystems: “Introducing DTrace” Whitepaper (2005)  &lt;br /&gt;
* “ZFS: The Last Word in File Systems”, Sun Microsystems Tech Paper (2004)  &lt;br /&gt;
* Illumos Project Documentation&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=CPU&amp;diff=211</id>
		<title>CPU</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=CPU&amp;diff=211"/>
		<updated>2025-11-14T06:06:39Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 새 문서: == 개요 == &amp;#039;&amp;#039;&amp;#039;CPU&amp;#039;&amp;#039;&amp;#039;(Central Processing Unit, 중앙 처리 장치)는   컴퓨터 시스템의 핵심 연산 장치로, 프로그램의 명령어를 해석하고 실행하는 역할을 한다.   CPU는 흔히 “컴퓨터의 두뇌”라 불리며, 모든 논리 연산과 제어를 담당한다.  CPU는 입력된 명령을 순차적으로 처리하여   연산 결과를 메모리에 저장하거나 주변 장치로 전달한다.   현대의 CPU는 수십억 개의 트랜지...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;CPU&#039;&#039;&#039;(Central Processing Unit, 중앙 처리 장치)는  &lt;br /&gt;
컴퓨터 시스템의 핵심 연산 장치로, 프로그램의 명령어를 해석하고 실행하는 역할을 한다.  &lt;br /&gt;
CPU는 흔히 “컴퓨터의 두뇌”라 불리며, 모든 논리 연산과 제어를 담당한다.&lt;br /&gt;
&lt;br /&gt;
CPU는 입력된 명령을 순차적으로 처리하여  &lt;br /&gt;
연산 결과를 메모리에 저장하거나 주변 장치로 전달한다.  &lt;br /&gt;
현대의 CPU는 수십억 개의 트랜지스터로 구성되어 있으며,  &lt;br /&gt;
[[파이프라인]], [[캐시 메모리]], [[분기 예측]], [[멀티코어]] 등의 기술로 성능을 극대화한다.&lt;br /&gt;
&lt;br /&gt;
== 기본 구조 ==&lt;br /&gt;
CPU는 일반적으로 다음의 구성 요소로 이루어진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구성 요소 !! 역할&lt;br /&gt;
|-&lt;br /&gt;
| [[ALU]] (Arithmetic Logic Unit) || 산술 및 논리 연산 수행  &lt;br /&gt;
|-&lt;br /&gt;
| [[CU]] (Control Unit) || 명령어 해석 및 제어 신호 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[레지스터]] || 연산 임시 저장소 (초고속 메모리)  &lt;br /&gt;
|-&lt;br /&gt;
| [[캐시 메모리]] || 자주 사용하는 데이터 저장 (L1~L3 캐시)  &lt;br /&gt;
|-&lt;br /&gt;
| [[버스 (Bus)]] || CPU ↔ 메모리/입출력 장치 간 데이터 전달 통로  &lt;br /&gt;
|-&lt;br /&gt;
| [[클록]] || 연산 속도 제어 (Hz 단위, 1초당 주기 수)  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 명령어 처리 과정 ==&lt;br /&gt;
CPU는 프로그램의 명령을 다음 순서로 처리한다.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Fetch (인출)&#039;&#039;&#039; – 메모리에서 명령어를 읽음  &lt;br /&gt;
# &#039;&#039;&#039;Decode (해석)&#039;&#039;&#039; – 명령어를 분석하여 제어 신호 생성  &lt;br /&gt;
# &#039;&#039;&#039;Execute (실행)&#039;&#039;&#039; – ALU에서 연산 수행  &lt;br /&gt;
# &#039;&#039;&#039;Write-back (기록)&#039;&#039;&#039; – 결과를 레지스터나 메모리에 저장  &lt;br /&gt;
&lt;br /&gt;
이 과정을 반복하는 루프를 &#039;&#039;&#039;명령어 사이클(Instruction Cycle)&#039;&#039;&#039; 이라 한다.&lt;br /&gt;
&lt;br /&gt;
== 종류 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 범용 CPU || 일반 컴퓨터용, 복합 연산 처리 || [[Intel Core]], [[AMD Ryzen]], [[Apple M3]]  &lt;br /&gt;
|-&lt;br /&gt;
| 서버 CPU || 고성능·다중코어 중심 || [[Xeon]], [[EPYC]], [[Ampere Altra]]  &lt;br /&gt;
|-&lt;br /&gt;
| 모바일 CPU || 저전력 설계 중심 || [[Snapdragon]], [[Apple A17]], [[Exynos]]  &lt;br /&gt;
|-&lt;br /&gt;
| 임베디드 CPU || 전용 제어용 || [[ARM Cortex-M]], [[RISC-V]] MCU  &lt;br /&gt;
|-&lt;br /&gt;
| 슈퍼컴퓨터용 CPU || 병렬 연산 중심 || [[Fugaku A64FX]], [[POWER10]], [[SPARC64]]  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 명령어 집합 아키텍처 (ISA) ==&lt;br /&gt;
CPU는 ISA에 따라 지원 명령어와 동작 방식이 다르다.  &lt;br /&gt;
ISA는 하드웨어의 “언어”이며, [[어셈블리]]와 직접 대응한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! ISA !! 구조 !! 특징 !! 주요 제조사&lt;br /&gt;
|-&lt;br /&gt;
| [[x86]] / [[x86-64]] || CISC || 복잡 명령어 집합, 호환성 중시 || Intel, AMD  &lt;br /&gt;
|-&lt;br /&gt;
| [[ARM]] || RISC || 저전력·고효율, 모바일 중심 || ARM, Apple, Qualcomm  &lt;br /&gt;
|-&lt;br /&gt;
| [[RISC-V]] || RISC (오픈 ISA) || 오픈소스, 모듈형 확장 가능 || SiFive, StarFive  &lt;br /&gt;
|-&lt;br /&gt;
| [[MIPS]] || RISC || 교육·임베디드용 || Imagination Technologies  &lt;br /&gt;
|-&lt;br /&gt;
| [[POWER]] || RISC || 대형 서버용, IBM 주도 || IBM  &lt;br /&gt;
|-&lt;br /&gt;
| [[SPARC]] || RISC || 과거 Sun Microsystems 계열 || Oracle  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 마이크로아키텍처 ==&lt;br /&gt;
ISA가 “명령 집합의 논리적 정의”라면,  &lt;br /&gt;
&#039;&#039;&#039;마이크로아키텍처(Microarchitecture)&#039;&#039;&#039; 는 그 명령을 실제로 수행하는 구현 방식이다.&lt;br /&gt;
&lt;br /&gt;
예시:&lt;br /&gt;
* [[Intel Skylake]], [[Zen 4]], [[Apple M3]], [[ARM Cortex-A78]]  &lt;br /&gt;
이들은 모두 서로 다른 마이크로아키텍처지만,  &lt;br /&gt;
x86이나 ARM ISA를 실행한다는 점에서는 동일하다.&lt;br /&gt;
&lt;br /&gt;
== 현대 CPU 기술 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 기술 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[파이프라인]] || 명령어를 여러 단계로 나눠 병렬 처리  &lt;br /&gt;
|-&lt;br /&gt;
| [[슈퍼스칼라]] || 여러 명령어를 동시에 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[분기 예측]] || 프로그램 흐름을 예측하여 성능 향상  &lt;br /&gt;
|-&lt;br /&gt;
| [[Out-of-Order Execution]] || 명령어 순서를 동적으로 조정  &lt;br /&gt;
|-&lt;br /&gt;
| [[멀티코어]] || 여러 연산 코어를 병렬로 동작시킴  &lt;br /&gt;
|-&lt;br /&gt;
| [[Simultaneous Multithreading (SMT)]] || 스레드 단위 병렬 처리 ([[Hyper-Threading]])  &lt;br /&gt;
|-&lt;br /&gt;
| [[캐시 계층 구조]] || L1~L3 캐시로 접근 속도 향상  &lt;br /&gt;
|-&lt;br /&gt;
| [[집적 회로 (IC)]] || 수십억 개의 트랜지스터 집적  &lt;br /&gt;
|-&lt;br /&gt;
| [[SoC (System on Chip)]] || CPU, GPU, 메모리 컨트롤러 통합  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 제조 공정 ==&lt;br /&gt;
CPU 성능과 전력 효율은 &#039;&#039;&#039;반도체 공정 미세화&#039;&#039;&#039;에 크게 의존한다.  &lt;br /&gt;
현대 공정은 나노미터 단위로 측정된다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 제조사 !! 주요 공정 !! 대표 제품&lt;br /&gt;
|-&lt;br /&gt;
| [[TSMC]] || 3nm, 5nm || [[Apple M3]], [[AMD Zen 5]]  &lt;br /&gt;
|-&lt;br /&gt;
| [[Intel]] || Intel 7, Intel 4 || [[Core Ultra]], [[Xeon Emerald Rapids]]  &lt;br /&gt;
|-&lt;br /&gt;
| [[Samsung]] || 4nm, 5nm GAA || [[Exynos 2400]], [[Snapdragon 8 Gen3]]  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CPU와 기타 프로세서 비교 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! CPU !! GPU !! FPGA !! MCU&lt;br /&gt;
|-&lt;br /&gt;
| 목적 || 범용 연산 || 병렬 그래픽 연산 || 하드웨어 논리 구성 || 임베디드 제어  &lt;br /&gt;
|-&lt;br /&gt;
| 병렬성 || 낮음 (수 코어) || 높음 (수천 코어) || 구조적 병렬 || 낮음  &lt;br /&gt;
|-&lt;br /&gt;
| 수정 가능성 || 고정 || 고정 || 프로그래머블 || 고정  &lt;br /&gt;
|-&lt;br /&gt;
| 소비 전력 || 중간 || 높음 || 중간 || 낮음  &lt;br /&gt;
|-&lt;br /&gt;
| 언어 || C / C++ / Assembly || CUDA / OpenCL || Verilog / VHDL || C / Rust  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 주요 제조사 ==&lt;br /&gt;
* [[Intel]] – x86 CPU의 창시자  &lt;br /&gt;
* [[AMD]] – x86 호환 CPU 및 GPU 통합 설계  &lt;br /&gt;
* [[Apple]] – [[ARM]] 기반 M 시리즈  &lt;br /&gt;
* [[Qualcomm]] – 모바일용 [[Snapdragon]] SoC  &lt;br /&gt;
* [[Samsung Electronics]] – Exynos 시리즈  &lt;br /&gt;
* [[IBM]] – [[POWER]] 아키텍처 유지  &lt;br /&gt;
* [[SiFive]] – [[RISC-V]] 설계 선도 기업  &lt;br /&gt;
&lt;br /&gt;
== 현대 트렌드 ==&lt;br /&gt;
* [[RISC-V]]의 급부상 – 오픈소스 아키텍처 확산  &lt;br /&gt;
* [[AI Accelerator]] – [[NPU]], [[TPU]] 등 신경망 연산 전용 칩  &lt;br /&gt;
* [[Chiplet]] 구조 – 여러 다이 조합으로 확장성 향상  &lt;br /&gt;
* [[SoC 통합]] – CPU·GPU·메모리 컨트롤러 일체화  &lt;br /&gt;
* [[3D 패키징]] – TSV 기반 적층형 구조 도입  &lt;br /&gt;
* [[보안 기능]] – [[Secure Enclave]], [[Intel SGX]], [[AMD PSP]]  &lt;br /&gt;
* [[양자 프로세서]]와의 결합 연구 진행 중  &lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[GPU]]  &lt;br /&gt;
* [[ALU]]  &lt;br /&gt;
* [[RISC]]  &lt;br /&gt;
* [[CISC]]  &lt;br /&gt;
* [[ISA]]  &lt;br /&gt;
* [[파이프라인]]  &lt;br /&gt;
* [[캐시 메모리]]  &lt;br /&gt;
* [[RISC-V]]  &lt;br /&gt;
* [[ARM 아키텍처]]  &lt;br /&gt;
* [[x86]]  &lt;br /&gt;
* [[Wave Processor]]  &lt;br /&gt;
* [[SoC]]  &lt;br /&gt;
* [[Whale]]  &lt;br /&gt;
* [[어셈블리]]  &lt;br /&gt;
* [[하드웨어와 임베디드]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* David A. Patterson, John L. Hennessy, &#039;&#039;Computer Organization and Design&#039;&#039; (ARM &amp;amp; RISC-V Editions)  &lt;br /&gt;
* Andrew S. Tanenbaum, &#039;&#039;Structured Computer Organization&#039;&#039;  &lt;br /&gt;
* Intel Architecture Developer Manual Vol.1–3  &lt;br /&gt;
* ARM Architecture Reference Manual (v9)  &lt;br /&gt;
* AMD Zen 5 Architecture Whitepaper (2024)  &lt;br /&gt;
* RISC-V Foundation Specification 2.2  &lt;br /&gt;
* TSMC Process Technology Overview (2023)&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EC%9B%94%EB%93%9C_%EC%99%80%EC%9D%B4%EB%93%9C_%EC%9B%B9&amp;diff=210</id>
		<title>월드 와이드 웹</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EC%9B%94%EB%93%9C_%EC%99%80%EC%9D%B4%EB%93%9C_%EC%9B%B9&amp;diff=210"/>
		<updated>2025-11-14T05:48:31Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 역사 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;월드 와이드 웹&#039;&#039;&#039;(World Wide Web, 약칭 &#039;&#039;&#039;WWW&#039;&#039;&#039; 또는 단순히 &#039;&#039;&#039;웹(Web)&#039;&#039;&#039;)은  &lt;br /&gt;
[[인터넷]] 상에서 문서, 이미지, 영상, 오디오 등 다양한 정보를  &lt;br /&gt;
&#039;&#039;&#039;하이퍼텍스트(Hypertext)&#039;&#039;&#039; 형태로 연결하고 접근할 수 있도록 하는 &#039;&#039;&#039;정보 시스템&#039;&#039;&#039;이다.  &lt;br /&gt;
&lt;br /&gt;
1989년 [[팀 버너스리]](Tim Berners-Lee)가 [[CERN]](유럽 입자 물리 연구소)에서 제안하였으며,  &lt;br /&gt;
그는 웹의 기본 구성 요소인 &#039;&#039;&#039;HTTP&#039;&#039;&#039;, &#039;&#039;&#039;HTML&#039;&#039;&#039;, &#039;&#039;&#039;URL&#039;&#039;&#039;을 함께 설계하였다.  &lt;br /&gt;
1991년 8월, 최초의 웹사이트가 CERN 내부 네트워크에서 공개되면서  &lt;br /&gt;
월드 와이드 웹은 오늘날의 인터넷 문명으로 이어지는 정보 혁명의 출발점이 되었다.  &lt;br /&gt;
&lt;br /&gt;
웹은 본질적으로 &#039;&#039;&#039;인터넷 위에서 동작하는 응용 계층 서비스&#039;&#039;&#039;이다.  &lt;br /&gt;
인터넷은 전 세계의 네트워크를 연결하는 통신 인프라이며,  &lt;br /&gt;
웹은 그 위에서 정보를 교환하고 표현하기 위한 프로토콜 체계이다.  &lt;br /&gt;
즉, 웹은 인터넷을 기반으로 작동하지만 인터넷 전체를 의미하지는 않는다.  &lt;br /&gt;
&lt;br /&gt;
웹의 핵심은 &#039;&#039;&#039;하이퍼텍스트 시스템&#039;&#039;&#039;이다.  &lt;br /&gt;
문서 내부의 하이퍼링크(Hyperlink)를 통해  &lt;br /&gt;
다른 문서나 자원으로 비선형적(Non-linear)으로 이동할 수 있으며,  &lt;br /&gt;
이 구조는 정보 간의 연관성을 시각적으로 표현하고,  &lt;br /&gt;
지식의 상호 연결(Interconnected Knowledge)을 가능하게 한다.  &lt;br /&gt;
&lt;br /&gt;
웹은 다음과 같은 주요 기술 요소로 구성된다:&lt;br /&gt;
* &#039;&#039;&#039;[[HTML]]&#039;&#039;&#039; – 문서 구조와 콘텐츠를 기술하는 마크업 언어  &lt;br /&gt;
* &#039;&#039;&#039;[[HTTP]]&#039;&#039;&#039; – 클라이언트(웹 브라우저)와 서버 간의 통신 프로토콜  &lt;br /&gt;
* &#039;&#039;&#039;[[URL]]&#039;&#039;&#039; – 자원의 위치를 식별하기 위한 통합 자원 지시자(주소 체계)  &lt;br /&gt;
&lt;br /&gt;
이 세 가지 기술이 결합되어,  &lt;br /&gt;
사용자는 [[웹 브라우저]]를 통해 원격 서버의 문서를 열람하고,  &lt;br /&gt;
링크를 따라 자유롭게 탐색할 수 있게 되었다.  &lt;br /&gt;
&lt;br /&gt;
오늘날 월드 와이드 웹은 단순한 문서 열람을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;웹 애플리케이션&#039;&#039;&#039;, &#039;&#039;&#039;클라우드 서비스&#039;&#039;&#039;, &#039;&#039;&#039;소셜 네트워크&#039;&#039;&#039;, &#039;&#039;&#039;스트리밍 플랫폼&#039;&#039;&#039; 등  &lt;br /&gt;
수많은 인터넷 서비스의 기술적 기반으로 발전하였다.  &lt;br /&gt;
이는 인류의 지식 교류, 경제 활동, 문화 생산 전반에 걸쳐  &lt;br /&gt;
가장 중요한 정보 인프라 중 하나로 평가된다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
월드 와이드 웹의 역사는 정보 공유와 접근 방식을 혁신한 기술적 전환의 연속이다.  &lt;br /&gt;
1989년 CERN에서 시작된 웹은 초기에는 연구소 간 문서 공유 시스템에 불과했으나,  &lt;br /&gt;
1990년대 중반 이후 대중화되면서 현대 인터넷 사회의 핵심 인프라로 자리 잡았다.  &lt;br /&gt;
&lt;br /&gt;
=== 주요 연혁 ===&lt;br /&gt;
* &#039;&#039;&#039;1989년&#039;&#039;&#039; – [[팀 버너스리]]가 “&#039;&#039;Information Management: A Proposal&#039;&#039;” 문서를 통해 하이퍼텍스트를 기반으로 한 전 세계적 정보 공유 시스템(웹)의 개념을 제안.  &lt;br /&gt;
* &#039;&#039;&#039;1990년&#039;&#039;&#039; – [[NeXT]] 컴퓨터에서 최초의 웹 서버와 브라우저인 “&#039;&#039;WorldWideWeb&#039;&#039;” 개발. HTML, HTTP, URL의 기본 구조가 확립됨.  &lt;br /&gt;
* &#039;&#039;&#039;1991년&#039;&#039;&#039; – CERN 내부 네트워크에서 월드 와이드 웹이 시범적으로 공개되었으며, 이후 외부 연구 기관으로 확산되기 시작함.  &lt;br /&gt;
* &#039;&#039;&#039;1993년&#039;&#039;&#039; – [[Mosaic]] 웹 브라우저 등장으로 일반 대중에게 웹이 보급되기 시작. GUI 기반 인터페이스로 인해 웹 사용이 폭발적으로 증가함.  &lt;br /&gt;
* &#039;&#039;&#039;1994년&#039;&#039;&#039; – [[W3C]](World Wide Web Consortium) 설립. 웹 표준(HTML, HTTP, CSS 등)의 국제적 관리와 호환성 확보를 목표로 함.  &lt;br /&gt;
* &#039;&#039;&#039;1995년&#039;&#039;&#039; – [[JavaScript]], [[CSS]], [[HTML 2.0]] 등 핵심 기술 등장. 정적 웹에서 동적·상호작용형 웹으로의 전환이 시작됨.  &lt;br /&gt;
* &#039;&#039;&#039;2000년대&#039;&#039;&#039; – [[Web 2.0]] 시대 도래. 블로그, SNS, 위키, 사용자 생성 콘텐츠(UGC)의 등장으로 웹이 참여형 플랫폼으로 진화.  &lt;br /&gt;
* &#039;&#039;&#039;2010년대 이후&#039;&#039;&#039; – [[HTML5]], [[PWA]], [[WebAssembly]] 등의 기술로 웹 애플리케이션이 데스크톱 수준의 성능을 갖추게 됨. 모바일 웹과 클라우드 서비스 중심의 생태계로 확장됨.&lt;br /&gt;
&lt;br /&gt;
오늘날 웹은 단순한 문서 네트워크를 넘어,  &lt;br /&gt;
애플리케이션 실행 환경·미디어 플랫폼·분산 서비스 인프라로 진화하였다.  &lt;br /&gt;
이 과정에서 [[HTTP/2]], [[HTTP/3]], [[TLS]] 등 네트워크 계층의 기술 발전과 함께  &lt;br /&gt;
웹은 현대 인터넷의 가장 강력한 응용 계층으로 자리 잡게 되었다.&lt;br /&gt;
&lt;br /&gt;
== 핵심 구성 요소 ==&lt;br /&gt;
월드 와이드 웹은 세 가지 기본 기술로 구성된다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구성 요소 !! 약어 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 하이퍼텍스트 마크업 언어 || [[HTML]] || 웹 페이지의 구조와 내용 정의&lt;br /&gt;
|-&lt;br /&gt;
| 하이퍼텍스트 전송 프로토콜 || [[HTTP]] || 클라이언트–서버 간 문서 송수신 규약&lt;br /&gt;
|-&lt;br /&gt;
| 통합 자원 식별자 || [[URL]] || 웹 자원의 위치를 지정하는 주소 체계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 작동 원리 ==&lt;br /&gt;
웹은 클라이언트–서버 모델로 동작한다.  &lt;br /&gt;
사용자가 웹 브라우저(클라이언트)를 통해 URL을 입력하면  &lt;br /&gt;
해당 주소의 서버로 [[HTTP 요청]]을 보내고,  &lt;br /&gt;
서버는 HTML 문서로 된 응답을 전송한다.  &lt;br /&gt;
브라우저는 이를 렌더링하여 사용자에게 시각적으로 보여준다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[사용자] → [브라우저] → [HTTP 요청] → [웹 서버]&lt;br /&gt;
&lt;br /&gt;
[웹 서버] → [HTTP 응답] → [HTML 렌더링] → [화면 표시]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 주요 구성 기술 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 계층 !! 기술 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 표현 계층 || [[HTML]], [[CSS]], [[SVG]], [[Web Fonts]] || 콘텐츠 구조 및 시각 표현  &lt;br /&gt;
|-&lt;br /&gt;
| 동작 계층 || [[JavaScript]], [[DOM]], [[Web APIs]] || 동적 콘텐츠 처리  &lt;br /&gt;
|-&lt;br /&gt;
| 통신 계층 || [[HTTP]], [[HTTPS]], [[WebSocket]], [[QUIC]] || 데이터 송수신  &lt;br /&gt;
|-&lt;br /&gt;
| 데이터 계층 || [[JSON]], [[XML]], [[WASM]] || 구조화된 데이터 및 실행 모듈  &lt;br /&gt;
|-&lt;br /&gt;
| 보안 계층 || [[TLS]], [[Same-Origin Policy]], [[CSP]] || 통신 암호화 및 정책 보호  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 웹의 세대 발전 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 세대 !! 명칭 !! 시기 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| 1세대 || Web 1.0 || 1990s || 정적 HTML 중심, 정보 열람 위주  &lt;br /&gt;
|-&lt;br /&gt;
| 2세대 || Web 2.0 || 2000s || 사용자 참여, [[AJAX]], SNS, 위키  &lt;br /&gt;
|-&lt;br /&gt;
| 3세대 || Web 3.0 || 2010s || [[시맨틱 웹]], [[AI]], [[블록체인]], 분산 구조  &lt;br /&gt;
|-&lt;br /&gt;
| 4세대 (현대) || WebAssembly 시대 || 2020s || 브라우저 기반 애플리케이션 실행, 클라우드 통합&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 웹 표준화 기관 ==&lt;br /&gt;
* &#039;&#039;&#039;[[W3C]] (World Wide Web Consortium)&#039;&#039;&#039; – 웹 표준 제정 및 관리  &lt;br /&gt;
* &#039;&#039;&#039;[[WHATWG]] (Web Hypertext Application Technology Working Group)&#039;&#039;&#039; – HTML Living Standard 개발  &lt;br /&gt;
* &#039;&#039;&#039;[[IETF]]&#039;&#039;&#039; – [[HTTP]], [[TLS]] 등 인터넷 프로토콜 표준화  &lt;br /&gt;
&lt;br /&gt;
== 주요 브라우저 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 이름 !! 개발사 !! 렌더링 엔진 !! 출시 연도&lt;br /&gt;
|-&lt;br /&gt;
|[[WorldWideWeb]]&lt;br /&gt;
|Tim Berners-Lee for CERN&lt;br /&gt;
|NeXTSTEP Text Manager&lt;br /&gt;
|1990&lt;br /&gt;
|-&lt;br /&gt;
| [[Mosaic]] || NCSA || Mosaic Engine || 1993  &lt;br /&gt;
|-&lt;br /&gt;
| [[Netscape Navigator]] || Netscape || Pre-Gecko || 1994  &lt;br /&gt;
|-&lt;br /&gt;
|[[Opera]]&lt;br /&gt;
|Opera&lt;br /&gt;
|Blink, V8&lt;br /&gt;
|1995&lt;br /&gt;
|-&lt;br /&gt;
| [[Internet Explorer]] || Microsoft || Trident || 1995  &lt;br /&gt;
|-&lt;br /&gt;
| [[Mozilla Firefox]] || Mozilla Foundation || Gecko || 2004  &lt;br /&gt;
|-&lt;br /&gt;
| [[Google Chrome]] || Google || Blink || 2008  &lt;br /&gt;
|-&lt;br /&gt;
| [[Safari]] || Apple || WebKit || 2003  &lt;br /&gt;
|-&lt;br /&gt;
| [[Microsoft Edge]] || Microsoft || Blink || 2020  &lt;br /&gt;
|-&lt;br /&gt;
|[[Arc]]&lt;br /&gt;
|The Browser Company&lt;br /&gt;
|Blink, V8&lt;br /&gt;
|2023&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 철학 ==&lt;br /&gt;
[[팀 버너스리]]는 웹을 “&#039;&#039;&#039;열린 지식의 공유 플랫폼&#039;&#039;&#039;”으로 설계했다.  &lt;br /&gt;
웹은 다음의 세 가지 원칙을 기반으로 발전했다:&lt;br /&gt;
* &#039;&#039;&#039;보편성 (Universality):&#039;&#039;&#039; 누구나 접근 가능한 개방형 시스템  &lt;br /&gt;
* &#039;&#039;&#039;비중앙화 (Decentralization):&#039;&#039;&#039; 통제되지 않는 연결 구조  &lt;br /&gt;
* &#039;&#039;&#039;상호운용성 (Interoperability):&#039;&#039;&#039; 다양한 플랫폼 간 호환성 보장  &lt;br /&gt;
&lt;br /&gt;
== 웹과 인터넷의 차이 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 월드 와이드 웹 (WWW) !! 인터넷&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 정보 접근 시스템 || 컴퓨터 네트워크 인프라  &lt;br /&gt;
|-&lt;br /&gt;
| 핵심 기술 || HTML, HTTP, URL || TCP/IP, DNS, Routing  &lt;br /&gt;
|-&lt;br /&gt;
| 사용 방식 || 웹 브라우저 || 모든 응용 (이메일, FTP 등)  &lt;br /&gt;
|-&lt;br /&gt;
| 창시자 || 팀 버너스리 || 여러 기관의 공동 개발  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 영향 ==&lt;br /&gt;
* 전 세계 정보 공유의 표준 플랫폼 확립  &lt;br /&gt;
* [[검색 엔진]], [[전자상거래]], [[클라우드 컴퓨팅]]의 토대 형성  &lt;br /&gt;
* [[웹 애플리케이션]], [[소셜 미디어]], [[온라인 교육]] 등 다양한 산업 창출  &lt;br /&gt;
* [[HTML5]], [[CSS3]], [[WebAssembly]] 등 오픈 표준 중심 생태계 확립  &lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[팀 버너스리]]  &lt;br /&gt;
* [[CERN]]  &lt;br /&gt;
* [[HTTP]]  &lt;br /&gt;
* [[HTML]]  &lt;br /&gt;
* [[W3C]]  &lt;br /&gt;
* [[웹 브라우저]]  &lt;br /&gt;
* [[인터넷]]  &lt;br /&gt;
* [[시맨틱 웹]]  &lt;br /&gt;
* [[WebAssembly]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Tim Berners-Lee, “Information Management: A Proposal”, CERN, 1989  &lt;br /&gt;
* “Weaving the Web”, Tim Berners-Lee, HarperCollins, 1999  &lt;br /&gt;
* W3C Official Site – [https://www.w3.org/ w3.org]  &lt;br /&gt;
* Internet Society, “A Brief History of the Web”, 2022  &lt;br /&gt;
* “The Birth of the Web”, CERN Historical Archives, 2019&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Assembly&amp;diff=209</id>
		<title>Assembly</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Assembly&amp;diff=209"/>
		<updated>2025-11-14T05:43:24Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 고급 언어와의 관계 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Assembly&#039;&#039;&#039;(어셈블리어, 기계어 수준 언어)는  &lt;br /&gt;
CPU가 직접 이해할 수 있는 [[기계어]]와 일대일 대응되는 &#039;&#039;&#039;저수준 언어&#039;&#039;&#039;이다.  &lt;br /&gt;
고급 언어([[C]], [[Rust]], [[Wave]] 등)가 [[컴파일러]]를 통해  &lt;br /&gt;
기계어로 변환되는 반면, 어셈블리어는 프로그래머가 직접 하드웨어를 제어한다.&lt;br /&gt;
&lt;br /&gt;
Assembly는 CPU 명령어 집합([[ISA]])에 직접 대응하는 언어이며,  &lt;br /&gt;
각 프로세서마다 문법과 명령어가 다르다 ([[x86]], [[ARM]], [[RISC-V]] 등).  &lt;br /&gt;
명령어는 일반적으로 &#039;&#039;&#039;명령(Mnemonic)&#039;&#039;&#039; 과 &#039;&#039;&#039;피연산자(Operand)&#039;&#039;&#039; 로 구성된다.&lt;br /&gt;
&lt;br /&gt;
예시:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
mov eax, 1&lt;br /&gt;
add eax, 2&lt;br /&gt;
int 0x80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
위 코드는 x86 Linux 환경에서 &amp;lt;code&amp;gt;eax&amp;lt;/code&amp;gt; 레지스터에 1과 2를 더한 뒤  &lt;br /&gt;
시스템 호출(interrupt)을 발생시킨다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 연도 !! 사건&lt;br /&gt;
|-&lt;br /&gt;
| 1940년대 || 초기 기계어 사용, 어셈블리 개념 등장  &lt;br /&gt;
|-&lt;br /&gt;
| 1950년대 || IBM 701, UNIVAC용 어셈블러 개발  &lt;br /&gt;
|-&lt;br /&gt;
| 1970년대 || [[Intel 8080]], [[Z80]], [[MOS 6502]] 등 8비트 CPU용 어셈블리 확산  &lt;br /&gt;
|-&lt;br /&gt;
| 1980년대 || [[x86]] 기반 PC와 함께 [[MS-DOS]] 어셈블리 개발 표준화  &lt;br /&gt;
|-&lt;br /&gt;
| 1990년대 || [[RISC]] 아키텍처 등장, [[ARM]] 확장  &lt;br /&gt;
|-&lt;br /&gt;
| 2000년대 || [[JIT]], [[LLVM IR]] 등 중간언어 개념 확립  &lt;br /&gt;
|-&lt;br /&gt;
| 2020년대 || [[Wave]], [[Whale]], [[WAIL Assembly Integration Layer|WAIL]] 등 현대 IR·ASM 융합 언어 등장  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 구조 ==&lt;br /&gt;
어셈블리 코드는 일반적으로 다음과 같은 세 부분으로 구성된다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 섹션 || 상수, 변수, 문자열 저장 || &amp;lt;code&amp;gt;.data&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bss&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 코드 섹션 || 실행 가능한 명령어 집합 || &amp;lt;code&amp;gt;.text&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 엔트리 포인트 || 프로그램 시작 지점 || &amp;lt;code&amp;gt;_start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 기본 문법 ==&lt;br /&gt;
어셈블리 명령어는 &#039;&#039;&#039;연산자(Mnemonic)&#039;&#039;&#039; 와 &#039;&#039;&#039;피연산자(Operand)&#039;&#039;&#039; 로 구성된다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
mov eax, 10    ; 10을 eax 레지스터에 저장&lt;br /&gt;
add eax, 5     ; eax = eax + 5&lt;br /&gt;
sub eax, 3     ; eax = eax - 3&lt;br /&gt;
jmp label      ; label로 점프&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
주요 연산 범주는 다음과 같다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 분류 !! 예시 명령어 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 이동 || MOV, PUSH, POP || 메모리 ↔ 레지스터 간 데이터 이동  &lt;br /&gt;
|-&lt;br /&gt;
| 산술 연산 || ADD, SUB, MUL, DIV || 기본 연산 수행  &lt;br /&gt;
|-&lt;br /&gt;
| 논리 연산 || AND, OR, XOR, NOT || 비트 단위 논리 연산  &lt;br /&gt;
|-&lt;br /&gt;
| 제어 흐름 || JMP, JE, JNE, CALL, RET || 조건 분기 및 서브루틴 호출  &lt;br /&gt;
|-&lt;br /&gt;
| 시스템 호출 || INT, SYSCALL, SYSENTER || OS와의 인터페이스  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 어셈블리 언어별 예시 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 아키텍처 !! 명령어 예시 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| x86 || &amp;lt;code&amp;gt;mov eax, 1&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;int 0x80&amp;lt;/code&amp;gt; || 고전적인 인텔 구조, PC 중심  &lt;br /&gt;
|-&lt;br /&gt;
| x86-64 || &amp;lt;code&amp;gt;mov rax, 60&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; || 64비트 Linux 커널 호출 방식  &lt;br /&gt;
|-&lt;br /&gt;
| ARM || &amp;lt;code&amp;gt;MOV R0, #1&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;BL printf&amp;lt;/code&amp;gt; || 임베디드 및 모바일 환경  &lt;br /&gt;
|-&lt;br /&gt;
| RISC-V || &amp;lt;code&amp;gt;addi x1, x0, 5&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;ecall&amp;lt;/code&amp;gt; || 오픈소스 ISA, 차세대 구조  &lt;br /&gt;
|-&lt;br /&gt;
| MIPS || &amp;lt;code&amp;gt;add $t0, $t1, $t2&amp;lt;/code&amp;gt; || 단순한 명령 구조의 교육용 ISA  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 어셈블러 ==&lt;br /&gt;
어셈블리 코드를 기계어로 변환하는 프로그램을 &#039;&#039;&#039;어셈블러(Assembler)&#039;&#039;&#039; 라 한다.  &lt;br /&gt;
&lt;br /&gt;
대표 어셈블러 목록:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 어셈블러 !! 지원 아키텍처 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[NASM]] || x86 / x86-64 || 오픈소스, Linux/Windows 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[MASM]] || x86 / x64 || Microsoft 공식 어셈블러  &lt;br /&gt;
|-&lt;br /&gt;
| [[FASM]] || x86 / x64 || 완전 독립형, 빠른 빌드 속도  &lt;br /&gt;
|-&lt;br /&gt;
| [[GAS]] (GNU Assembler) || 다중 ISA || GNU Toolchain 기본 구성  &lt;br /&gt;
|-&lt;br /&gt;
| [[YASM]] || x86 / x64 || NASM 호환, LLVM 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[LLVM Assembler]] || 다중 ISA || [[LLVM IR]] → 기계어 변환  &lt;br /&gt;
|-&lt;br /&gt;
| [[WAIL Assembler]] || Whale Toolchain || [[Wave]] 전용 IR 통합 어셈블러  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 고급 언어와의 관계 ==&lt;br /&gt;
* [[C (프로그래밍 언어)]] 언어는 어셈블리와 일대일 대응되는 구조를 가지며, 대부분의 시스템 언어([[Rust]], [[Wave]])는 내부적으로 어셈블리 생성 단계를 거친다.  &lt;br /&gt;
* 컴파일러는 [[AST]] → [[IR]] → [[Assembly]] → [[Machine Code]] 순으로 변환한다.  &lt;br /&gt;
* [[Inline Assembly]]를 통해 C, Rust 등에서도 직접 명령어를 삽입할 수 있다.&lt;br /&gt;
&lt;br /&gt;
예시 (C 코드 내 인라인 어셈블리):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int sum(int a, int b) {&lt;br /&gt;
    int result;&lt;br /&gt;
    __asm__ (&amp;quot;addl %%ebx, %%eax;&amp;quot;&lt;br /&gt;
             : &amp;quot;=a&amp;quot; (result)&lt;br /&gt;
             : &amp;quot;a&amp;quot; (a), &amp;quot;b&amp;quot; (b));&lt;br /&gt;
    return result;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 현대적 활용 ==&lt;br /&gt;
* [[부트로더]] – 시스템 초기화 코드 (ex: [[GRUB]], [[UEFI]])  &lt;br /&gt;
* [[운영체제 커널]] – CPU 제어, 인터럽트 처리  &lt;br /&gt;
* [[임베디드 시스템]] – 제한된 자원 환경에서 직접 제어  &lt;br /&gt;
* [[보안]] / [[리버스 엔지니어링]] – 바이너리 분석 및 취약점 탐지  &lt;br /&gt;
* [[컴파일러 개발]] – 백엔드 코드 생성 테스트  &lt;br /&gt;
* [[에뮬레이터]] – ISA 시뮬레이션  &lt;br /&gt;
&lt;br /&gt;
== 현대 트렌드 ==&lt;br /&gt;
* [[LLVM IR]] – 중간 표현의 표준화로 직접 어셈블리 작성 감소  &lt;br /&gt;
* [[RISC-V]] – 오픈 ISA로 인한 학습용 어셈블리 확산  &lt;br /&gt;
* [[WAIL Assembly Integration Layer]] – 현대식 모듈형 어셈블리 구조  &lt;br /&gt;
* [[Rust]] / [[Wave]] – 안전한 저수준 제어 언어 부상  &lt;br /&gt;
* [[컴파일러 자동 최적화]] – 인간보다 효율적인 어셈블리 생성  &lt;br /&gt;
&lt;br /&gt;
== 관련 개념 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 개념 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[기계어]] || CPU가 실제로 실행하는 이진 명령어  &lt;br /&gt;
|-&lt;br /&gt;
| [[ISA (명령어 집합 아키텍처)]] || CPU 명령 체계 정의 ([[x86]], [[ARM]], [[RISC-V]])  &lt;br /&gt;
|-&lt;br /&gt;
| [[레지스터]] || CPU 내부의 초고속 저장소  &lt;br /&gt;
|-&lt;br /&gt;
| [[스택]] / [[힙]] || 메모리 구조 제어 방식  &lt;br /&gt;
|-&lt;br /&gt;
| [[링크 스크립트]] || 코드/데이터 메모리 배치 정의  &lt;br /&gt;
|-&lt;br /&gt;
| [[IR (Intermediate Representation)]] || 어셈블리 전 단계의 중간 표현  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[기계어]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[WAIL]]  &lt;br /&gt;
* [[Whale]]  &lt;br /&gt;
* [[NASM]]  &lt;br /&gt;
* [[MASM]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[Wave]]  &lt;br /&gt;
* [[C]]  &lt;br /&gt;
* [[부트로더]]  &lt;br /&gt;
* [[운영체제 개발]]  &lt;br /&gt;
* [[임베디드 시스템]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Randall Hyde, &#039;&#039;The Art of Assembly Language&#039;&#039; (No Starch Press, 2021)  &lt;br /&gt;
* Paul Carter, &#039;&#039;PC Assembly Language&#039;&#039;  &lt;br /&gt;
* Intel Developer Manual, Volume 2: Instruction Set Reference  &lt;br /&gt;
* ARM Architecture Reference Manual v8  &lt;br /&gt;
* RISC-V ISA Specification (v2.2)  &lt;br /&gt;
* GNU Assembler (GAS) Documentation  &lt;br /&gt;
* LLVM Language Reference Manual&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Assembly&amp;diff=208</id>
		<title>Assembly</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Assembly&amp;diff=208"/>
		<updated>2025-11-14T05:35:07Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 역사 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Assembly&#039;&#039;&#039;(어셈블리어, 기계어 수준 언어)는  &lt;br /&gt;
CPU가 직접 이해할 수 있는 [[기계어]]와 일대일 대응되는 &#039;&#039;&#039;저수준 언어&#039;&#039;&#039;이다.  &lt;br /&gt;
고급 언어([[C]], [[Rust]], [[Wave]] 등)가 [[컴파일러]]를 통해  &lt;br /&gt;
기계어로 변환되는 반면, 어셈블리어는 프로그래머가 직접 하드웨어를 제어한다.&lt;br /&gt;
&lt;br /&gt;
Assembly는 CPU 명령어 집합([[ISA]])에 직접 대응하는 언어이며,  &lt;br /&gt;
각 프로세서마다 문법과 명령어가 다르다 ([[x86]], [[ARM]], [[RISC-V]] 등).  &lt;br /&gt;
명령어는 일반적으로 &#039;&#039;&#039;명령(Mnemonic)&#039;&#039;&#039; 과 &#039;&#039;&#039;피연산자(Operand)&#039;&#039;&#039; 로 구성된다.&lt;br /&gt;
&lt;br /&gt;
예시:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
mov eax, 1&lt;br /&gt;
add eax, 2&lt;br /&gt;
int 0x80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
위 코드는 x86 Linux 환경에서 &amp;lt;code&amp;gt;eax&amp;lt;/code&amp;gt; 레지스터에 1과 2를 더한 뒤  &lt;br /&gt;
시스템 호출(interrupt)을 발생시킨다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 연도 !! 사건&lt;br /&gt;
|-&lt;br /&gt;
| 1940년대 || 초기 기계어 사용, 어셈블리 개념 등장  &lt;br /&gt;
|-&lt;br /&gt;
| 1950년대 || IBM 701, UNIVAC용 어셈블러 개발  &lt;br /&gt;
|-&lt;br /&gt;
| 1970년대 || [[Intel 8080]], [[Z80]], [[MOS 6502]] 등 8비트 CPU용 어셈블리 확산  &lt;br /&gt;
|-&lt;br /&gt;
| 1980년대 || [[x86]] 기반 PC와 함께 [[MS-DOS]] 어셈블리 개발 표준화  &lt;br /&gt;
|-&lt;br /&gt;
| 1990년대 || [[RISC]] 아키텍처 등장, [[ARM]] 확장  &lt;br /&gt;
|-&lt;br /&gt;
| 2000년대 || [[JIT]], [[LLVM IR]] 등 중간언어 개념 확립  &lt;br /&gt;
|-&lt;br /&gt;
| 2020년대 || [[Wave]], [[Whale]], [[WAIL Assembly Integration Layer|WAIL]] 등 현대 IR·ASM 융합 언어 등장  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 구조 ==&lt;br /&gt;
어셈블리 코드는 일반적으로 다음과 같은 세 부분으로 구성된다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 섹션 || 상수, 변수, 문자열 저장 || &amp;lt;code&amp;gt;.data&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bss&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 코드 섹션 || 실행 가능한 명령어 집합 || &amp;lt;code&amp;gt;.text&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 엔트리 포인트 || 프로그램 시작 지점 || &amp;lt;code&amp;gt;_start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 기본 문법 ==&lt;br /&gt;
어셈블리 명령어는 &#039;&#039;&#039;연산자(Mnemonic)&#039;&#039;&#039; 와 &#039;&#039;&#039;피연산자(Operand)&#039;&#039;&#039; 로 구성된다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
mov eax, 10    ; 10을 eax 레지스터에 저장&lt;br /&gt;
add eax, 5     ; eax = eax + 5&lt;br /&gt;
sub eax, 3     ; eax = eax - 3&lt;br /&gt;
jmp label      ; label로 점프&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
주요 연산 범주는 다음과 같다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 분류 !! 예시 명령어 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 이동 || MOV, PUSH, POP || 메모리 ↔ 레지스터 간 데이터 이동  &lt;br /&gt;
|-&lt;br /&gt;
| 산술 연산 || ADD, SUB, MUL, DIV || 기본 연산 수행  &lt;br /&gt;
|-&lt;br /&gt;
| 논리 연산 || AND, OR, XOR, NOT || 비트 단위 논리 연산  &lt;br /&gt;
|-&lt;br /&gt;
| 제어 흐름 || JMP, JE, JNE, CALL, RET || 조건 분기 및 서브루틴 호출  &lt;br /&gt;
|-&lt;br /&gt;
| 시스템 호출 || INT, SYSCALL, SYSENTER || OS와의 인터페이스  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 어셈블리 언어별 예시 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 아키텍처 !! 명령어 예시 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| x86 || &amp;lt;code&amp;gt;mov eax, 1&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;int 0x80&amp;lt;/code&amp;gt; || 고전적인 인텔 구조, PC 중심  &lt;br /&gt;
|-&lt;br /&gt;
| x86-64 || &amp;lt;code&amp;gt;mov rax, 60&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; || 64비트 Linux 커널 호출 방식  &lt;br /&gt;
|-&lt;br /&gt;
| ARM || &amp;lt;code&amp;gt;MOV R0, #1&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;BL printf&amp;lt;/code&amp;gt; || 임베디드 및 모바일 환경  &lt;br /&gt;
|-&lt;br /&gt;
| RISC-V || &amp;lt;code&amp;gt;addi x1, x0, 5&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;ecall&amp;lt;/code&amp;gt; || 오픈소스 ISA, 차세대 구조  &lt;br /&gt;
|-&lt;br /&gt;
| MIPS || &amp;lt;code&amp;gt;add $t0, $t1, $t2&amp;lt;/code&amp;gt; || 단순한 명령 구조의 교육용 ISA  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 어셈블러 ==&lt;br /&gt;
어셈블리 코드를 기계어로 변환하는 프로그램을 &#039;&#039;&#039;어셈블러(Assembler)&#039;&#039;&#039; 라 한다.  &lt;br /&gt;
&lt;br /&gt;
대표 어셈블러 목록:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 어셈블러 !! 지원 아키텍처 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[NASM]] || x86 / x86-64 || 오픈소스, Linux/Windows 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[MASM]] || x86 / x64 || Microsoft 공식 어셈블러  &lt;br /&gt;
|-&lt;br /&gt;
| [[FASM]] || x86 / x64 || 완전 독립형, 빠른 빌드 속도  &lt;br /&gt;
|-&lt;br /&gt;
| [[GAS]] (GNU Assembler) || 다중 ISA || GNU Toolchain 기본 구성  &lt;br /&gt;
|-&lt;br /&gt;
| [[YASM]] || x86 / x64 || NASM 호환, LLVM 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[LLVM Assembler]] || 다중 ISA || [[LLVM IR]] → 기계어 변환  &lt;br /&gt;
|-&lt;br /&gt;
| [[WAIL Assembler]] || Whale Toolchain || [[Wave]] 전용 IR 통합 어셈블러  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 고급 언어와의 관계 ==&lt;br /&gt;
* [[C]] 언어는 어셈블리와 일대일 대응되는 구조를 가지며,  &lt;br /&gt;
  대부분의 시스템 언어([[Rust]], [[Wave]])는 내부적으로 어셈블리 생성 단계를 거친다.  &lt;br /&gt;
* 컴파일러는 [[AST]] → [[IR]] → [[Assembly]] → [[Machine Code]] 순으로 변환한다.  &lt;br /&gt;
* [[Inline Assembly]]를 통해 C, Rust 등에서도 직접 명령어를 삽입할 수 있다.&lt;br /&gt;
&lt;br /&gt;
예시 (C 코드 내 인라인 어셈블리):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int sum(int a, int b) {&lt;br /&gt;
    int result;&lt;br /&gt;
    __asm__ (&amp;quot;addl %%ebx, %%eax;&amp;quot;&lt;br /&gt;
             : &amp;quot;=a&amp;quot; (result)&lt;br /&gt;
             : &amp;quot;a&amp;quot; (a), &amp;quot;b&amp;quot; (b));&lt;br /&gt;
    return result;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 현대적 활용 ==&lt;br /&gt;
* [[부트로더]] – 시스템 초기화 코드 (ex: [[GRUB]], [[UEFI]])  &lt;br /&gt;
* [[운영체제 커널]] – CPU 제어, 인터럽트 처리  &lt;br /&gt;
* [[임베디드 시스템]] – 제한된 자원 환경에서 직접 제어  &lt;br /&gt;
* [[보안]] / [[리버스 엔지니어링]] – 바이너리 분석 및 취약점 탐지  &lt;br /&gt;
* [[컴파일러 개발]] – 백엔드 코드 생성 테스트  &lt;br /&gt;
* [[에뮬레이터]] – ISA 시뮬레이션  &lt;br /&gt;
&lt;br /&gt;
== 현대 트렌드 ==&lt;br /&gt;
* [[LLVM IR]] – 중간 표현의 표준화로 직접 어셈블리 작성 감소  &lt;br /&gt;
* [[RISC-V]] – 오픈 ISA로 인한 학습용 어셈블리 확산  &lt;br /&gt;
* [[WAIL Assembly Integration Layer]] – 현대식 모듈형 어셈블리 구조  &lt;br /&gt;
* [[Rust]] / [[Wave]] – 안전한 저수준 제어 언어 부상  &lt;br /&gt;
* [[컴파일러 자동 최적화]] – 인간보다 효율적인 어셈블리 생성  &lt;br /&gt;
&lt;br /&gt;
== 관련 개념 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 개념 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[기계어]] || CPU가 실제로 실행하는 이진 명령어  &lt;br /&gt;
|-&lt;br /&gt;
| [[ISA (명령어 집합 아키텍처)]] || CPU 명령 체계 정의 ([[x86]], [[ARM]], [[RISC-V]])  &lt;br /&gt;
|-&lt;br /&gt;
| [[레지스터]] || CPU 내부의 초고속 저장소  &lt;br /&gt;
|-&lt;br /&gt;
| [[스택]] / [[힙]] || 메모리 구조 제어 방식  &lt;br /&gt;
|-&lt;br /&gt;
| [[링크 스크립트]] || 코드/데이터 메모리 배치 정의  &lt;br /&gt;
|-&lt;br /&gt;
| [[IR (Intermediate Representation)]] || 어셈블리 전 단계의 중간 표현  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[기계어]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[WAIL]]  &lt;br /&gt;
* [[Whale]]  &lt;br /&gt;
* [[NASM]]  &lt;br /&gt;
* [[MASM]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[Wave]]  &lt;br /&gt;
* [[C]]  &lt;br /&gt;
* [[부트로더]]  &lt;br /&gt;
* [[운영체제 개발]]  &lt;br /&gt;
* [[임베디드 시스템]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Randall Hyde, &#039;&#039;The Art of Assembly Language&#039;&#039; (No Starch Press, 2021)  &lt;br /&gt;
* Paul Carter, &#039;&#039;PC Assembly Language&#039;&#039;  &lt;br /&gt;
* Intel Developer Manual, Volume 2: Instruction Set Reference  &lt;br /&gt;
* ARM Architecture Reference Manual v8  &lt;br /&gt;
* RISC-V ISA Specification (v2.2)  &lt;br /&gt;
* GNU Assembler (GAS) Documentation  &lt;br /&gt;
* LLVM Language Reference Manual&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Assembly&amp;diff=207</id>
		<title>Assembly</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Assembly&amp;diff=207"/>
		<updated>2025-11-14T05:34:23Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 새 문서: == 개요 == &amp;#039;&amp;#039;&amp;#039;Assembly&amp;#039;&amp;#039;&amp;#039;(어셈블리어, 기계어 수준 언어)는   CPU가 직접 이해할 수 있는 기계어와 일대일 대응되는 &amp;#039;&amp;#039;&amp;#039;저수준 언어&amp;#039;&amp;#039;&amp;#039;이다.   고급 언어(C, Rust, Wave 등)가 컴파일러를 통해   기계어로 변환되는 반면, 어셈블리어는 프로그래머가 직접 하드웨어를 제어한다.  Assembly는 CPU 명령어 집합(ISA)에 직접 대응하는 언어이며,   각 프로세서마다 문법과...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Assembly&#039;&#039;&#039;(어셈블리어, 기계어 수준 언어)는  &lt;br /&gt;
CPU가 직접 이해할 수 있는 [[기계어]]와 일대일 대응되는 &#039;&#039;&#039;저수준 언어&#039;&#039;&#039;이다.  &lt;br /&gt;
고급 언어([[C]], [[Rust]], [[Wave]] 등)가 [[컴파일러]]를 통해  &lt;br /&gt;
기계어로 변환되는 반면, 어셈블리어는 프로그래머가 직접 하드웨어를 제어한다.&lt;br /&gt;
&lt;br /&gt;
Assembly는 CPU 명령어 집합([[ISA]])에 직접 대응하는 언어이며,  &lt;br /&gt;
각 프로세서마다 문법과 명령어가 다르다 ([[x86]], [[ARM]], [[RISC-V]] 등).  &lt;br /&gt;
명령어는 일반적으로 &#039;&#039;&#039;명령(Mnemonic)&#039;&#039;&#039; 과 &#039;&#039;&#039;피연산자(Operand)&#039;&#039;&#039; 로 구성된다.&lt;br /&gt;
&lt;br /&gt;
예시:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
mov eax, 1&lt;br /&gt;
add eax, 2&lt;br /&gt;
int 0x80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
위 코드는 x86 Linux 환경에서 &amp;lt;code&amp;gt;eax&amp;lt;/code&amp;gt; 레지스터에 1과 2를 더한 뒤  &lt;br /&gt;
시스템 호출(interrupt)을 발생시킨다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 연도 !! 사건&lt;br /&gt;
|-&lt;br /&gt;
| 1940년대 || 초기 기계어 사용, 어셈블리 개념 등장  &lt;br /&gt;
|-&lt;br /&gt;
| 1950년대 || IBM 701, UNIVAC용 어셈블러 개발  &lt;br /&gt;
|-&lt;br /&gt;
| 1970년대 || [[Intel 8080]], [[Z80]], [[MOS 6502]] 등 8비트 CPU용 어셈블리 확산  &lt;br /&gt;
|-&lt;br /&gt;
| 1980년대 || [[x86]] 기반 PC와 함께 [[MS-DOS]] 어셈블리 개발 표준화  &lt;br /&gt;
|-&lt;br /&gt;
| 1990년대 || [[RISC]] 아키텍처 등장, [[ARM]] 확장  &lt;br /&gt;
|-&lt;br /&gt;
| 2000년대 || [[JIT]], [[LLVM IR]] 등 중간언어 개념 확립  &lt;br /&gt;
|-&lt;br /&gt;
| 2020년대 || [[Wave]], [[Whale]], [[WAIL]] 등 현대 IR·ASM 융합 언어 등장  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 구조 ==&lt;br /&gt;
어셈블리 코드는 일반적으로 다음과 같은 세 부분으로 구성된다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 섹션 || 상수, 변수, 문자열 저장 || &amp;lt;code&amp;gt;.data&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.bss&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 코드 섹션 || 실행 가능한 명령어 집합 || &amp;lt;code&amp;gt;.text&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 엔트리 포인트 || 프로그램 시작 지점 || &amp;lt;code&amp;gt;_start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 기본 문법 ==&lt;br /&gt;
어셈블리 명령어는 &#039;&#039;&#039;연산자(Mnemonic)&#039;&#039;&#039; 와 &#039;&#039;&#039;피연산자(Operand)&#039;&#039;&#039; 로 구성된다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
mov eax, 10    ; 10을 eax 레지스터에 저장&lt;br /&gt;
add eax, 5     ; eax = eax + 5&lt;br /&gt;
sub eax, 3     ; eax = eax - 3&lt;br /&gt;
jmp label      ; label로 점프&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
주요 연산 범주는 다음과 같다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 분류 !! 예시 명령어 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 이동 || MOV, PUSH, POP || 메모리 ↔ 레지스터 간 데이터 이동  &lt;br /&gt;
|-&lt;br /&gt;
| 산술 연산 || ADD, SUB, MUL, DIV || 기본 연산 수행  &lt;br /&gt;
|-&lt;br /&gt;
| 논리 연산 || AND, OR, XOR, NOT || 비트 단위 논리 연산  &lt;br /&gt;
|-&lt;br /&gt;
| 제어 흐름 || JMP, JE, JNE, CALL, RET || 조건 분기 및 서브루틴 호출  &lt;br /&gt;
|-&lt;br /&gt;
| 시스템 호출 || INT, SYSCALL, SYSENTER || OS와의 인터페이스  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 어셈블리 언어별 예시 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 아키텍처 !! 명령어 예시 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| x86 || &amp;lt;code&amp;gt;mov eax, 1&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;int 0x80&amp;lt;/code&amp;gt; || 고전적인 인텔 구조, PC 중심  &lt;br /&gt;
|-&lt;br /&gt;
| x86-64 || &amp;lt;code&amp;gt;mov rax, 60&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; || 64비트 Linux 커널 호출 방식  &lt;br /&gt;
|-&lt;br /&gt;
| ARM || &amp;lt;code&amp;gt;MOV R0, #1&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;BL printf&amp;lt;/code&amp;gt; || 임베디드 및 모바일 환경  &lt;br /&gt;
|-&lt;br /&gt;
| RISC-V || &amp;lt;code&amp;gt;addi x1, x0, 5&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;ecall&amp;lt;/code&amp;gt; || 오픈소스 ISA, 차세대 구조  &lt;br /&gt;
|-&lt;br /&gt;
| MIPS || &amp;lt;code&amp;gt;add $t0, $t1, $t2&amp;lt;/code&amp;gt; || 단순한 명령 구조의 교육용 ISA  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 어셈블러 ==&lt;br /&gt;
어셈블리 코드를 기계어로 변환하는 프로그램을 &#039;&#039;&#039;어셈블러(Assembler)&#039;&#039;&#039; 라 한다.  &lt;br /&gt;
&lt;br /&gt;
대표 어셈블러 목록:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 어셈블러 !! 지원 아키텍처 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[NASM]] || x86 / x86-64 || 오픈소스, Linux/Windows 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[MASM]] || x86 / x64 || Microsoft 공식 어셈블러  &lt;br /&gt;
|-&lt;br /&gt;
| [[FASM]] || x86 / x64 || 완전 독립형, 빠른 빌드 속도  &lt;br /&gt;
|-&lt;br /&gt;
| [[GAS]] (GNU Assembler) || 다중 ISA || GNU Toolchain 기본 구성  &lt;br /&gt;
|-&lt;br /&gt;
| [[YASM]] || x86 / x64 || NASM 호환, LLVM 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[LLVM Assembler]] || 다중 ISA || [[LLVM IR]] → 기계어 변환  &lt;br /&gt;
|-&lt;br /&gt;
| [[WAIL Assembler]] || Whale Toolchain || [[Wave]] 전용 IR 통합 어셈블러  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 고급 언어와의 관계 ==&lt;br /&gt;
* [[C]] 언어는 어셈블리와 일대일 대응되는 구조를 가지며,  &lt;br /&gt;
  대부분의 시스템 언어([[Rust]], [[Wave]])는 내부적으로 어셈블리 생성 단계를 거친다.  &lt;br /&gt;
* 컴파일러는 [[AST]] → [[IR]] → [[Assembly]] → [[Machine Code]] 순으로 변환한다.  &lt;br /&gt;
* [[Inline Assembly]]를 통해 C, Rust 등에서도 직접 명령어를 삽입할 수 있다.&lt;br /&gt;
&lt;br /&gt;
예시 (C 코드 내 인라인 어셈블리):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int sum(int a, int b) {&lt;br /&gt;
    int result;&lt;br /&gt;
    __asm__ (&amp;quot;addl %%ebx, %%eax;&amp;quot;&lt;br /&gt;
             : &amp;quot;=a&amp;quot; (result)&lt;br /&gt;
             : &amp;quot;a&amp;quot; (a), &amp;quot;b&amp;quot; (b));&lt;br /&gt;
    return result;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 현대적 활용 ==&lt;br /&gt;
* [[부트로더]] – 시스템 초기화 코드 (ex: [[GRUB]], [[UEFI]])  &lt;br /&gt;
* [[운영체제 커널]] – CPU 제어, 인터럽트 처리  &lt;br /&gt;
* [[임베디드 시스템]] – 제한된 자원 환경에서 직접 제어  &lt;br /&gt;
* [[보안]] / [[리버스 엔지니어링]] – 바이너리 분석 및 취약점 탐지  &lt;br /&gt;
* [[컴파일러 개발]] – 백엔드 코드 생성 테스트  &lt;br /&gt;
* [[에뮬레이터]] – ISA 시뮬레이션  &lt;br /&gt;
&lt;br /&gt;
== 현대 트렌드 ==&lt;br /&gt;
* [[LLVM IR]] – 중간 표현의 표준화로 직접 어셈블리 작성 감소  &lt;br /&gt;
* [[RISC-V]] – 오픈 ISA로 인한 학습용 어셈블리 확산  &lt;br /&gt;
* [[WAIL Assembly Integration Layer]] – 현대식 모듈형 어셈블리 구조  &lt;br /&gt;
* [[Rust]] / [[Wave]] – 안전한 저수준 제어 언어 부상  &lt;br /&gt;
* [[컴파일러 자동 최적화]] – 인간보다 효율적인 어셈블리 생성  &lt;br /&gt;
&lt;br /&gt;
== 관련 개념 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 개념 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[기계어]] || CPU가 실제로 실행하는 이진 명령어  &lt;br /&gt;
|-&lt;br /&gt;
| [[ISA (명령어 집합 아키텍처)]] || CPU 명령 체계 정의 ([[x86]], [[ARM]], [[RISC-V]])  &lt;br /&gt;
|-&lt;br /&gt;
| [[레지스터]] || CPU 내부의 초고속 저장소  &lt;br /&gt;
|-&lt;br /&gt;
| [[스택]] / [[힙]] || 메모리 구조 제어 방식  &lt;br /&gt;
|-&lt;br /&gt;
| [[링크 스크립트]] || 코드/데이터 메모리 배치 정의  &lt;br /&gt;
|-&lt;br /&gt;
| [[IR (Intermediate Representation)]] || 어셈블리 전 단계의 중간 표현  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[기계어]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[WAIL]]  &lt;br /&gt;
* [[Whale]]  &lt;br /&gt;
* [[NASM]]  &lt;br /&gt;
* [[MASM]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[Wave]]  &lt;br /&gt;
* [[C]]  &lt;br /&gt;
* [[부트로더]]  &lt;br /&gt;
* [[운영체제 개발]]  &lt;br /&gt;
* [[임베디드 시스템]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Randall Hyde, &#039;&#039;The Art of Assembly Language&#039;&#039; (No Starch Press, 2021)  &lt;br /&gt;
* Paul Carter, &#039;&#039;PC Assembly Language&#039;&#039;  &lt;br /&gt;
* Intel Developer Manual, Volume 2: Instruction Set Reference  &lt;br /&gt;
* ARM Architecture Reference Manual v8  &lt;br /&gt;
* RISC-V ISA Specification (v2.2)  &lt;br /&gt;
* GNU Assembler (GAS) Documentation  &lt;br /&gt;
* LLVM Language Reference Manual&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=206</id>
		<title>컴파일러와 도구</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=206"/>
		<updated>2025-11-14T05:34:02Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 중간 표현 (IR) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러와 도구&#039;&#039;&#039;(Compilers and Tools)는  &lt;br /&gt;
프로그래밍 언어로 작성된 소스 코드를 해석, 변환, 최적화, 실행하기 위한  &lt;br /&gt;
&#039;&#039;&#039;소프트웨어 개발 인프라의 핵심 구성 요소&#039;&#039;&#039;이다.  &lt;br /&gt;
&lt;br /&gt;
이들은 단순히 코드를 “기계가 이해할 수 있는 형태로 변환하는 시스템”을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;개발 생산성 향상&#039;&#039;&#039;, &#039;&#039;&#039;코드 품질 보장&#039;&#039;&#039;, &#039;&#039;&#039;성능 최적화&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 간 이식성 확보&#039;&#039;&#039;를 담당한다.  &lt;br /&gt;
&lt;br /&gt;
컴파일러, 인터프리터, 어셈블러, 링커, 디버거, 빌드 시스템, IDE, 패키지 관리자 등은  &lt;br /&gt;
모두 언어의 생명주기 — &#039;&#039;&#039;작성 → 분석 → 변환 → 실행 → 유지보수&#039;&#039;&#039; — 를 구성하는 필수적인 도구군(toolchain)을 이룬다.  &lt;br /&gt;
&lt;br /&gt;
=== 컴파일러 ===&lt;br /&gt;
&#039;&#039;&#039;컴파일러(Compiler)&#039;&#039;&#039;는 고급 언어(high-level language)로 작성된 소스 코드를  &lt;br /&gt;
기계어(machine code) 또는 중간 표현(intermediate representation)으로 변환하는 프로그램이다.  &lt;br /&gt;
이 과정은 일반적으로 다음 단계를 거친다:&lt;br /&gt;
# &#039;&#039;&#039;어휘 분석(Lexical Analysis)&#039;&#039;&#039; — 토큰 단위로 소스 코드를 분해  &lt;br /&gt;
# &#039;&#039;&#039;구문 분석(Syntax Analysis)&#039;&#039;&#039; — 언어의 문법에 따라 트리 구조(AST)를 생성  &lt;br /&gt;
# &#039;&#039;&#039;의미 분석(Semantic Analysis)&#039;&#039;&#039; — 타입, 스코프, 참조 관계를 검증  &lt;br /&gt;
# &#039;&#039;&#039;중간 코드 생성(IR Generation)&#039;&#039;&#039; — 하드웨어 독립적인 내부 표현 생성  &lt;br /&gt;
# &#039;&#039;&#039;최적화(Optimization)&#039;&#039;&#039; — 실행 효율을 높이기 위한 변환 수행  &lt;br /&gt;
# &#039;&#039;&#039;코드 생성(Code Generation)&#039;&#039;&#039; — 타깃 플랫폼의 기계어로 변환  &lt;br /&gt;
&lt;br /&gt;
일부 현대 컴파일러는 이 과정을 여러 모듈로 분리하여,  &lt;br /&gt;
프런트엔드(frontend), 미들엔드(midend), 백엔드(backend) 구조로 구성한다.  &lt;br /&gt;
예: [[LLVM]], [[GCC]], [[Whale (컴파일러 툴체인)]] 등.&lt;br /&gt;
&lt;br /&gt;
=== 기타 개발 도구 ===&lt;br /&gt;
컴파일러 외에도 다음과 같은 다양한 개발 도구가 소프트웨어 품질과 효율성을 높인다:&lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템(Build System):&#039;&#039;&#039; 소스 코드의 컴파일, 링크, 테스트, 배포를 자동화 (예: [[CMake]], [[Ninja]], [[x.py]])  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 실행 중인 프로그램의 동작을 추적하고 오류를 분석 (예: [[GDB]], [[LLDB]])  &lt;br /&gt;
* &#039;&#039;&#039;린터(Linter):&#039;&#039;&#039; 코드 스타일 및 잠재적 버그를 정적 분석으로 탐지 (예: [[Clippy]], [[ESLint]])  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리자(Package Manager):&#039;&#039;&#039; 의존성 관리 및 모듈 배포를 지원 (예: [[Cargo]], [[Vex]], [[npm]])  &lt;br /&gt;
* &#039;&#039;&#039;IDE(통합 개발 환경):&#039;&#039;&#039; 코드 작성, 빌드, 디버깅, 테스트를 통합 제공 (예: [[Visual Studio Code]], [[RustRover]])  &lt;br /&gt;
&lt;br /&gt;
=== 역할과 중요성 ===&lt;br /&gt;
컴파일러와 개발 도구는 프로그래밍 언어 생태계의 기반을 이루며,  &lt;br /&gt;
언어 설계 철학과 밀접하게 연관되어 있다.  &lt;br /&gt;
효율적인 도구 체계는 언어의 확장성, 성능, 보안성, 유지보수성을 직접적으로 좌우한다.  &lt;br /&gt;
&lt;br /&gt;
현대의 개발 환경에서는 단일 컴파일러가 아닌  &lt;br /&gt;
&#039;&#039;&#039;모듈화된 툴체인(toolchain)&#039;&#039;&#039;이 표준으로 자리 잡고 있으며,  &lt;br /&gt;
이러한 구조는 다양한 아키텍처와 플랫폼에서의 고성능 빌드와 이식성을 가능하게 한다.  &lt;br /&gt;
&lt;br /&gt;
== 컴파일러의 구조 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러&#039;&#039;&#039;는 소스 코드를 기계어로 변환하기 위해 일련의 분석과 변환 단계를 거치며,  &lt;br /&gt;
일반적으로 &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;, &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;, &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;의 세 부분으로 구성된다.  &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;는 주로 언어의 문법과 의미를 해석하는 역할을 담당한다. 소스 코드를 분석하여 구조화된 내부 표현(AST)을 생성하고, 타입 검사와 같은 의미적 검증을 수행한다.  &lt;br /&gt;
* &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;는 이 내부 표현을 기반으로 프로그램의 효율을 향상시키는 최적화 단계이다. 불필요한 연산을 제거하고, 실행 속도와 메모리 사용량을 개선한다.  &lt;br /&gt;
* &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;는 최종적으로 타깃 플랫폼에 맞는 기계어 코드나 바이트코드를 생성하며, 여러 오브젝트 파일을 결합(Linking)하여 실행 가능한 프로그램을 만든다.  &lt;br /&gt;
&lt;br /&gt;
아래는 각 단계의 세부 구성이다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 단계 !! 설명 !! 관련 기술&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;어휘 분석 (Lexical Analysis)&#039;&#039;&#039; || 소스 코드를 문자 단위로 읽어 의미 있는 최소 단위(토큰)로 분해한다. || [[Flex]], [[Lex]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;구문 분석 (Syntax Analysis)&#039;&#039;&#039; || 언어의 문법 규칙에 따라 토큰을 구조적으로 해석하고, 추상 구문 트리(AST)를 생성한다. || [[Bison]], [[Yacc]], [[LALR]], [[PEG]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;의미 분석 (Semantic Analysis)&#039;&#039;&#039; || 변수, 함수, 타입의 유효성을 검사하고, 스코프 및 참조 관계를 검증한다. || [[LLVM Clang]], [[GCC Front-end]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;중간 코드 생성 (IR Generation)&#039;&#039;&#039; || 하드웨어에 독립적인 중간 표현(IR, Intermediate Representation)을 생성한다. || [[LLVM IR]], [[GIMPLE]], [[MIR]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;최적화 (Optimization)&#039;&#039;&#039; || 중간 표현 단계에서 프로그램의 성능을 향상시키기 위한 변환을 수행한다. 불필요한 연산 제거(Dead Code Elimination), 상수 접기(Constant Folding), 제어 흐름 단순화(Control Flow Simplification) 등이 포함된다. || SSA, Constant Folding, Dead Code Elimination&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;코드 생성 (Code Generation)&#039;&#039;&#039; || 최적화된 중간 표현을 실제 타깃 플랫폼의 명령어 집합(ISA)에 맞는 기계어 코드 또는 바이트코드로 변환한다. || [[x86_64]], [[ARM]], [[JVM]], [[WebAssembly]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;링킹 (Linking)&#039;&#039;&#039; || 여러 오브젝트 파일과 라이브러리를 결합하여 실행 가능한 단일 바이너리를 생성한다. || [[ld]], [[lld]], [[gold linker]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
현대의 컴파일러는 이러한 단계를 모듈화하여 독립적으로 개선하거나 교체할 수 있으며,  &lt;br /&gt;
대표적인 예로 [[LLVM]]은 프런트엔드, 미들엔드, 백엔드가 명확히 분리된 구조를 가진다.  &lt;br /&gt;
이러한 구조적 분리는 언어 확장, 타깃 아키텍처 추가, 최적화 연구 등 다양한 분야에서 유연성을 제공한다.&lt;br /&gt;
&lt;br /&gt;
== 주요 컴파일러 ==&lt;br /&gt;
아래 표는 대표적인 &#039;&#039;&#039;정적 컴파일러(Static Compiler)&#039;&#039;&#039; 또는 &#039;&#039;&#039;JIT 컴파일러&#039;&#039;&#039;를 정리한 것이다.  &lt;br /&gt;
인터프리터 기반 언어 구현체는 제외되었으며, 각 항목은 언어의 공식 또는 주요 오픈소스 컴파일러를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 컴파일러 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[C (프로그래밍 언어)]] || [[GCC]], [[Clang]], [[TinyCC]] || 전통적인 시스템 언어 컴파일러, 다양한 아키텍처 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[GCC]], [[Clang]], [[MSVC]] || 객체지향 + 저수준 접근성, [[LLVM]] 기반 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[Fortran]] || [[GFortran]], [[Flang]] || 과학·수치 계산 특화, [[LLVM]] 기반 현대화 진행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ada]] || [[GNAT]] || 고신뢰·임베디드 시스템용, [[SPARK]]와 결합 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[Pascal]] || [[Free Pascal]], [[Turbo Pascal]] || 교육용 및 레거시 시스템 유지에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DMD]], [[LDC]], [[GDC]] || C++ 대체 지향, 네이티브·LLVM 백엔드 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[rustc]] || 안전성과 병행성 중심, [[LLVM]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[gc]], [[Gollvm]] || 빠른 빌드와 간결한 런타임 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swiftc]] || [[LLVM]] 기반, [[Objective-C]]와 상호 운용  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] || [[Roslyn]], [[Mono AOT]] || .NET 플랫폼용 컴파일러, API 기반 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[javac]], [[Eclipse Compiler for Java]] || 바이트코드 생성, [[JVM]] 위에서 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Kotlin]] || [[Kotlinc]] || JVM·Native·JS 등 다중 타깃 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[GHC]] || 함수형 언어 전용 고급 최적화, [[LLVM]] 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[OCaml]] || [[OCamlopt]] || 정적 타입 기반 함수형 언어, 네이티브 코드 컴파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[Zig]] || [[Zig Compiler]] || [[LLVM]] 사용, 크로스 컴파일과 성능 중심 설계  &lt;br /&gt;
|-&lt;br /&gt;
| [[Nim]] || [[Nim Compiler]] || [[C]], [[C++]], [[ObjC]] 코드로 트랜스파일, 네이티브 바이너리 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[V (프로그래밍 언어)]] || [[V Compiler]] || 단일 바이너리, 빠른 컴파일 속도  &lt;br /&gt;
|-&lt;br /&gt;
| [[Carbon (프로그래밍 언어)]] || [[Carbon Compiler]] || [[C++]] 후속 실험 언어, [[LLVM]] 인프라 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Whale]] || 차세대 저수준 언어용 [[LLVM]] 대체 툴체인, 고도로 모듈화된 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 인터프리터 ==&lt;br /&gt;
&#039;&#039;&#039;인터프리터(Interpreter)&#039;&#039;&#039;는 프로그램의 소스 코드를 &#039;&#039;&#039;즉시 해석하여 실행&#039;&#039;&#039;하는 소프트웨어이다.  &lt;br /&gt;
컴파일 단계를 거쳐 기계어로 변환하는 대신, 런타임 시점에 명령을 해석하고 수행한다.  &lt;br /&gt;
&lt;br /&gt;
이 방식은 프로그램의 수정·실행 주기가 빠르고, 대화형 환경(Interactive Environment)에 적합하다.  &lt;br /&gt;
주로 [[스크립트 언어]]나 [[동적 타이핑 언어]]에서 사용되며,  &lt;br /&gt;
최근에는 [[JIT (Just-In-Time) 컴파일]]을 결합한 하이브리드 구조가 일반적이다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 대표 인터프리터 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[CPython]], [[PyPy]] || 대표적인 스크립트 언어, JIT 지원 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ruby]] || [[MRI]], [[JRuby]], [[TruffleRuby]] || 순수 객체지향 구조, JVM 기반 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[JavaScript]] || [[V8]], [[SpiderMonkey]], [[JavaScriptCore]] || 브라우저 및 서버 런타임, 고성능 JIT 내장  &lt;br /&gt;
|-&lt;br /&gt;
| [[Lua]] || [[LuaJIT]], [[PUC-Rio Lua]] || 임베디드 시스템 친화적, C API 통합 용이  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Zend Engine]], [[HHVM]] || 서버 사이드 웹 스크립팅, JIT 기반 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perl]] || [[Perl Interpreter]] || 문자열 처리와 정규식에 강력한 기능 제공  &lt;br /&gt;
|-&lt;br /&gt;
| [[R (프로그래밍 언어)]] || [[GNU R]], [[Renjin]] || 통계 계산 및 데이터 분석용 언어  &lt;br /&gt;
|-&lt;br /&gt;
| [[Scheme]] || [[Racket]], [[Guile]], [[Chez Scheme]] || Lisp 계열, 함수형 메타프로그래밍 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Tcl]] || [[Tcl Interpreter]] || 간결한 문법과 확장성, 임베디드 제어용으로 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bash]] || [[GNU Bash]], [[Zsh]] || 셸 환경용 스크립트 해석기, 운영체제 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Elixir]] || [[BEAM VM]] || [[Erlang]] 기반 가상머신, 동시성 처리에 최적화  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 빌드 시스템 ==&lt;br /&gt;
&#039;&#039;&#039;빌드 시스템(Build System)&#039;&#039;&#039;은 여러 소스 파일을 자동으로 컴파일·링크하여 실행 가능한 프로그램이나 라이브러리를 생성하는 &#039;&#039;&#039;소프트웨어 자동화 도구&#039;&#039;&#039;이다.  &lt;br /&gt;
프로젝트가 커질수록 수작업으로 빌드를 관리하기 어려워지기 때문에,  &lt;br /&gt;
빌드 시스템은 &#039;&#039;&#039;의존성 관리&#039;&#039;&#039;, &#039;&#039;&#039;병렬 처리&#039;&#039;&#039;, &#039;&#039;&#039;테스트 실행&#039;&#039;&#039;, &#039;&#039;&#039;패키징&#039;&#039;&#039; 등 다양한 과정을 자동화한다.  &lt;br /&gt;
&lt;br /&gt;
일부 빌드 시스템은 단순한 명령 스크립트를 넘어,  &lt;br /&gt;
독자적인 DSL(Domain Specific Language) 또는 메타 빌드 구조를 제공한다.  &lt;br /&gt;
대표적인 예로 [[CMake]], [[Gradle]], [[Bazel]] 등이 있으며,  &lt;br /&gt;
현대 언어들은 각 언어에 특화된 자체 빌드 도구([[Cargo]], [[x.py]], [[Vex]] 등)를 제공하기도 한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 이름 !! 언어/환경 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Make]] || [[C]], [[C++]] || 전통적인 빌드 자동화 도구, 의존성 기반 명령 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[CMake]] || 다중 언어 || 메타 빌드 시스템, [[Ninja]]·[[Make]] 백엔드 지원, 크로스 플랫폼  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ninja]] || 다중 언어 || 고속·병렬 빌드에 최적화된 경량 빌드 실행기  &lt;br /&gt;
|-&lt;br /&gt;
| [[Meson]] || [[C]], [[C++]], [[Rust]] 등 || Python 유사 DSL, [[Ninja]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[SCons]] || [[Python]] || 완전한 파이썬 스크립팅 기반 빌드 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Premake]] || [[Lua]] || [[Lua]] 기반 설정, IDE 프로젝트 파일 자동 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[QMake]] || [[C++]] ([[Qt]]) || Qt 프레임워크 전용 프로젝트 구성 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Gradle]] || [[Java]], [[Kotlin]] || Groovy/Kotlin DSL 기반, JVM 생태계 표준 빌드 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bazel]] || 다중 언어 || [[Google]]의 대규모 모노레포 빌드용, 캐싱·병렬화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[x.py]] || [[Rust]], [[Wave]] || 통합식 컴파일 파이프라인, 컴파일러 및 툴체인 자체 빌드에 사용  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 디버깅 및 분석 도구 ==&lt;br /&gt;
&#039;&#039;&#039;디버깅 및 분석 도구(Debugging and Analysis Tools)&#039;&#039;&#039;는  &lt;br /&gt;
프로그램의 실행 과정, 메모리 사용, 성능 병목, 시스템 호출 등을 관찰·분석하여  &lt;br /&gt;
오류를 진단하고 최적화를 지원하는 개발 보조 도구이다.  &lt;br /&gt;
&lt;br /&gt;
이러한 도구들은 일반적으로 다음과 같은 목적에 따라 구분된다:&lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 코드의 실행 흐름 제어 및 변수 상태 추적  &lt;br /&gt;
* &#039;&#039;&#039;메모리 분석기(Memory Analyzer):&#039;&#039;&#039; 메모리 누수, 접근 위반 등 런타임 오류 탐지  &lt;br /&gt;
* &#039;&#039;&#039;성능 프로파일러(Profiler):&#039;&#039;&#039; CPU·메모리 사용률, 함수 호출 시간 등 측정  &lt;br /&gt;
* &#039;&#039;&#039;시스템 추적기(System Tracer):&#039;&#039;&#039; 커널 및 시스템 호출 수준에서 동작 모니터링  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 도구 !! 기능 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[GDB]] || 디버거 || GNU 프로젝트의 대표 디버거, 프로세스 실행 중단·단계별 추적·변수 조사 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[LLDB]] || 디버거 || [[LLVM]] 인프라 기반, [[Clang]]과 통합된 현대적 디버거  &lt;br /&gt;
|-&lt;br /&gt;
| [[Valgrind]] || 메모리 분석 || 메모리 누수, 잘못된 접근, 캐시 동작 등을 분석  &lt;br /&gt;
|-&lt;br /&gt;
| [[AddressSanitizer]] || 런타임 검증 || [[Clang]] 및 [[GCC]] 통합 런타임 검증기, 메모리 오류 탐지  &lt;br /&gt;
|-&lt;br /&gt;
| [[ThreadSanitizer]] || 동시성 검증 || 데이터 레이스 및 스레드 동기화 문제 감지  &lt;br /&gt;
|-&lt;br /&gt;
| [[gprof]] || 성능 분석 || 함수 호출 빈도·시간 측정 기반의 전통적 프로파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[perf]] || 성능 측정 || [[Linux]] 커널 레벨의 고성능 성능 분석 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perfetto]] || 트레이싱 || [[Android]] 및 [[Chrome]]용 성능 추적 프레임워크  &lt;br /&gt;
|-&lt;br /&gt;
| [[strace]] || 시스템 호출 추적 || [[Linux]] 환경에서 시스템 콜 및 시그널 동작 로깅  &lt;br /&gt;
|-&lt;br /&gt;
| [[DTrace]] || 동적 트레이싱 || [[Solaris]], [[macOS]], [[BSD]] 계열의 실시간 커널·유저 레벨 분석  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 패키지 관리자 ==&lt;br /&gt;
&#039;&#039;&#039;패키지 관리자(Package Manager)&#039;&#039;&#039;는  &lt;br /&gt;
라이브러리 설치, 업데이트, 삭제, 버전 관리, 의존성 해결을 자동화하는 시스템이다.  &lt;br /&gt;
개발자는 개별 라이브러리를 직접 다운로드할 필요 없이  &lt;br /&gt;
패키지 관리자를 통해 중앙 저장소(Repository)에서 필요한 모듈을 손쉽게 가져올 수 있다.  &lt;br /&gt;
&lt;br /&gt;
현대의 패키지 관리자는 단순한 설치 도구를 넘어  &lt;br /&gt;
&#039;&#039;&#039;빌드 시스템과의 통합&#039;&#039;&#039;, &#039;&#039;&#039;테스트 자동화&#039;&#039;&#039;, &#039;&#039;&#039;출시 버전 관리&#039;&#039;&#039;, &#039;&#039;&#039;보안 검증&#039;&#039;&#039;까지 포괄하며,  &lt;br /&gt;
언어별로 고유한 생태계를 형성하고 있다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 도구 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[vcpkg]], [[Conan]] || 바이너리·소스 기반 혼합 지원, 크로스 플랫폼 배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[Cargo]] || 통합 빌드·배포·테스트 시스템, [[Crates.io]] 레지스트리 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[pip]], [[Poetry]] || [[PyPI]] 연동, 가상 환경과 의존성 잠금 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Node.js]] / [[JavaScript]] || [[npm]], [[pnpm]], [[yarn]] || JS 생태계 표준 도구, 빠른 캐싱과 병렬 설치  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[Maven]], [[Gradle]] || XML/DSL 기반 의존성 정의, 중앙 저장소 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] / [[.NET]] || [[NuGet]] || .NET 플랫폼 전용 패키지 배포 및 버전 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[Go Modules]] || 소스 코드 기반 버전 모듈 관리, Git과 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swift Package Manager]] || [[Xcode]]와 통합된 공식 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DUB]] || [[DMD]] 및 [[LDC]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[Cabal]], [[Stack]] || Hackage 저장소 기반 빌드·배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Composer]] || PHP 생태계의 표준 의존성 관리 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Vex]] || [[WSON]] 기반 빌드·패키징·다중 플랫폼 배포 지원  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 통합 개발 환경 (IDE) ==&lt;br /&gt;
&#039;&#039;&#039;통합 개발 환경(Integrated Development Environment, IDE)&#039;&#039;&#039;는  &lt;br /&gt;
코드 작성, 빌드, 디버깅, 테스트, 배포 등의 개발 과정을 하나의 프로그램 내에서 수행할 수 있도록 통합한 소프트웨어이다.  &lt;br /&gt;
&lt;br /&gt;
IDE는 단순한 텍스트 에디터와 달리  &lt;br /&gt;
다음과 같은 구성 요소를 통합 제공한다:&lt;br /&gt;
* &#039;&#039;&#039;코드 편집기(Editor):&#039;&#039;&#039; 구문 강조, 자동 완성, 코드 탐색 기능 제공  &lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템 통합(Build Integration):&#039;&#039;&#039; 컴파일, 링크, 테스트 자동화  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 런타임 실행 제어, 변수 추적, 스택 분석  &lt;br /&gt;
* &#039;&#039;&#039;버전 관리(VCS Integration):&#039;&#039;&#039; [[Git]] 등과 연동한 협업 기능  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리 연동(Package Manager Integration):&#039;&#039;&#039; 의존성 설치 및 관리 지원  &lt;br /&gt;
&lt;br /&gt;
현대의 IDE는 플러그인 확장 구조를 채택하여,  &lt;br /&gt;
다양한 언어와 프레임워크를 통합적으로 지원한다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! IDE !! 주요 언어 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio]] || [[C (프로그래밍 언어)]], [[C++]], [[C＃]] || 마이크로소프트의 대표 IDE, 윈도우 통합 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio Code|VS Code]] || 다중 언어 || 오픈소스, 경량·확장성 중심, 풍부한 확장 마켓  &lt;br /&gt;
|-&lt;br /&gt;
| [[RustRover]] || [[Rust]] || [[JetBrains]] 기반 Rust 전용 IDE, [[Cargo]] 완전 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[IntelliJ IDEA]] || [[Java]], [[Kotlin]] || JVM 언어 중심, 강력한 코드 분석 및 리팩토링  &lt;br /&gt;
|-&lt;br /&gt;
| [[PyCharm]] || [[Python]] || 코드 자동 완성, 디버깅, 테스트 프레임워크 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[CLion]] || [[C (프로그래밍 언어)]], [[C++]], [[Rust]] || [[JetBrains]]의 네이티브 언어 IDE, [[CMake]] 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Xcode]] || [[Swift]], [[Objective-C]] || [[macOS]] 및 [[iOS]] 공식 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Eclipse]] || [[Java]], [[C++]], [[Python]] 등 || 오픈소스, 플러그인 기반 확장 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[NetBeans]] || [[Java]], [[PHP]], [[HTML]] || [[Apache]] 재단 관리, 교육 및 웹 개발 친화적  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rider]] || [[C＃]], [[.NET]] || [[JetBrains]]의 크로스 플랫폼 .NET IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Android Studio]] || [[Kotlin]], [[Java]] || [[Android]] 공식 IDE, [[Gradle]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Qt Creator]] || [[C++]], [[QML]] || [[Qt]] 프레임워크용 공식 IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Code::Blocks]] || [[C (프로그래밍 언어)]], [[C++]] || 오픈소스 경량 IDE, 플러그인 기반 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 중간 표현 (IR) ==&lt;br /&gt;
&#039;&#039;&#039;중간 표현(Intermediate Representation, IR)&#039;&#039;&#039;은  &lt;br /&gt;
컴파일러 내부에서 소스 코드의 의미를 추상화하여 표현한 중간 형태의 코드 구조이다.  &lt;br /&gt;
이는 프론트엔드(Front-end)에서 생성되어, 미들엔드(Middle-end) 최적화를 거친 뒤  &lt;br /&gt;
백엔드(Back-end)에서 기계어로 변환되는 핵심 매개체 역할을 한다.  &lt;br /&gt;
&lt;br /&gt;
IR은 언어의 문법적 복잡성을 제거하고,  &lt;br /&gt;
하드웨어나 플랫폼에 독립적인 형태로 프로그램의 의미를 유지한다.  &lt;br /&gt;
이로써 최적화, 코드 분석, 플랫폼 간 이식성을 효율적으로 구현할 수 있다.  &lt;br /&gt;
&lt;br /&gt;
대표적인 IR은 대부분 &#039;&#039;&#039;SSA(Static Single Assignment)&#039;&#039;&#039; 형식을 채택하며,  &lt;br /&gt;
각 변수는 단 한 번만 할당되어 데이터 흐름 분석이 단순화된다.  &lt;br /&gt;
또한 일부 IR은 가상 머신 실행용(예: JVM Bytecode, WebAssembly)으로 활용되어,  &lt;br /&gt;
컴파일과 실행의 경계를 유연하게 확장한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 명칭 !! 사용 컴파일러 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[LLVM IR]] || [[Clang]], [[Rustc]], [[Swiftc]] || 범용 SSA 기반 IR, [[LLVM]] 미들엔드의 핵심 구성  &lt;br /&gt;
|-&lt;br /&gt;
| [[GIMPLE]] || [[GCC]] || 3단계 중간 표현(고수준–단순화–저수준) 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[MIR]] || [[Rustc]] || [[LLVM]] 이전 단계의 내부 표현, 제어 흐름 기반 분석에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[WAIL Assembly Integration Layer|WAIL]] || [[Whale]] || [[Wave]] 전용 백엔드 IR, “WAIL Assembly Integration Layer”  &lt;br /&gt;
|-&lt;br /&gt;
| [[MLIR]] || [[LLVM Project]] || 멀티 레벨 중간 표현, 다양한 도메인(머신러닝·GPU)에 대응  &lt;br /&gt;
|-&lt;br /&gt;
| [[SIL (Swift Intermediate Language)]] || [[Swiftc]] || [[Swift]] 전용 중간 언어, [[ARC]] 기반 최적화  &lt;br /&gt;
|-&lt;br /&gt;
| [[FIR (Fortran IR)]] || [[Flang]] || [[Fortran]]용 [[LLVM]] 통합 IR, 과학 계산용 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[GHC Core]] || [[GHC]] || [[Haskell]] 전용 함수형 중간 표현, 람다 기반 변환 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[JVM Bytecode]] || [[javac]], [[kotlinc]], [[scalac]] || [[JVM]] 위에서 실행되는 스택 기반 중간 코드  &lt;br /&gt;
|-&lt;br /&gt;
| [[WebAssembly]] || [[Emscripten]], [[V8]], [[Wasmtime]] || 브라우저 및 경량 VM용 범용 중간 표현  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 컴파일러 최적화 기법 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러 최적화(Compiler Optimization)&#039;&#039;&#039;는  &lt;br /&gt;
생성된 코드의 성능을 향상시키거나 메모리 사용량을 줄이기 위해  &lt;br /&gt;
중간 표현(IR) 또는 기계어 단계에서 수행되는 변환 과정이다.  &lt;br /&gt;
&lt;br /&gt;
최적화는 주로 &#039;&#039;&#039;미들엔드(Middle-end)&#039;&#039;&#039; 단계에서 이루어지며,  &lt;br /&gt;
프로그램의 의미(semantic)를 변경하지 않으면서 실행 효율을 높인다.  &lt;br /&gt;
일부 최적화는 타깃 아키텍처에 맞추어 &#039;&#039;&#039;백엔드(Back-end)&#039;&#039;&#039; 단계에서 추가로 수행된다.&lt;br /&gt;
&lt;br /&gt;
대표적인 최적화 기법은 다음과 같다:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Constant Folding (상수 접기)&#039;&#039;&#039; –  &lt;br /&gt;
  컴파일 시점에 상수 표현식을 미리 계산하여 실행 시 연산을 줄인다.  &lt;br /&gt;
  예: `3 * 4` → `12`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dead Code Elimination (죽은 코드 제거)&#039;&#039;&#039; –  &lt;br /&gt;
  실행 결과에 영향을 주지 않는 명령어, 변수, 분기 등을 삭제하여 코드 크기를 축소한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Loop Unrolling (루프 전개)&#039;&#039;&#039; –  &lt;br /&gt;
  반복문 내부의 연산을 여러 번 펼쳐 배치함으로써 루프 제어 오버헤드를 줄인다.  &lt;br /&gt;
  예: `for(i=0;i&amp;lt;4;i++) sum+=a[i];` → 직접 4회 연산 나열&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Inlining (인라이닝)&#039;&#039;&#039; –  &lt;br /&gt;
  짧고 자주 호출되는 함수를 호출 대신 본문으로 삽입하여 함수 호출 오버헤드를 제거한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Register Allocation (레지스터 할당)&#039;&#039;&#039; –  &lt;br /&gt;
  변수나 임시 값을 CPU 레지스터에 효율적으로 배치하여 메모리 접근을 최소화한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instruction Scheduling (명령어 스케줄링)&#039;&#039;&#039; –  &lt;br /&gt;
  명령어 실행 순서를 재배치하여 파이프라인 병목을 줄이고 병렬 실행 효율을 높인다.&lt;br /&gt;
&lt;br /&gt;
이 외에도 다음과 같은 고급 최적화가 존재한다:&lt;br /&gt;
* &#039;&#039;&#039;Common Subexpression Elimination&#039;&#039;&#039; – 동일한 계산을 한 번만 수행  &lt;br /&gt;
* &#039;&#039;&#039;Loop-Invariant Code Motion&#039;&#039;&#039; – 루프 내 불변식을 루프 밖으로 이동  &lt;br /&gt;
* &#039;&#039;&#039;Tail Call Optimization&#039;&#039;&#039; – 재귀 호출을 반복 구조로 변환  &lt;br /&gt;
* &#039;&#039;&#039;Interprocedural Optimization&#039;&#039;&#039; – 함수 간 데이터 흐름 기반 최적화  &lt;br /&gt;
* &#039;&#039;&#039;Vectorization&#039;&#039;&#039; – [[SIMD]] 명령어를 이용해 데이터 병렬 처리  &lt;br /&gt;
&lt;br /&gt;
최적화 수준은 일반적으로 컴파일러 옵션으로 제어되며,  &lt;br /&gt;
예를 들어 [[GCC]]와 [[Clang]]에서는 `-O1`, `-O2`, `-O3`, `-Ofast`, `-Os` 등의 단계를 제공한다.  &lt;br /&gt;
이러한 단계는 코드 크기, 실행 속도, 빌드 시간 사이의 균형을 조절하기 위한 설정이다.&lt;br /&gt;
&lt;br /&gt;
== 현대 컴파일러 트렌드 ==&lt;br /&gt;
현대의 컴파일러는 단순히 코드를 기계어로 변환하는 역할을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;실행 효율&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 다양성&#039;&#039;&#039;, &#039;&#039;&#039;개발 환경 통합&#039;&#039;&#039;, &#039;&#039;&#039;언어 생태계 확장성&#039;&#039;&#039;을 동시에 달성하는 방향으로 발전하고 있다.  &lt;br /&gt;
아래는 현재 컴파일러 기술의 주요 트렌드이다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[just-in-time|JIT (Just-In-Time) 컴파일]]&#039;&#039;&#039; – 실행 시점에 코드의 일부를 기계어로 변환하여 성능과 유연성을 동시에 확보하는 기법. 런타임 중 프로파일링 데이터를 수집해 최적화하며, 대표적으로 [[V8]], [[JVM]], [[.NET CLR]], [[LuaJIT]] 등이 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[ahead-of-time|AOT (Ahead-Of-Time) 컴파일]]&#039;&#039;&#039; – 프로그램 실행 전에 모든 코드를 완전히 컴파일하는 방식으로, 실행 속도와 배포 효율이 높다. [[Rust]], [[Swift]], [[C++]], [[Wave]] 같은 정적 언어들이 주로 채택한다. [[GraalVM]]의 AOT 모드와 같이 JIT 기반 언어에서도 AOT를 병행하는 사례가 늘고 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[멀티 타깃 빌드]]&#039;&#039;&#039; – 하나의 소스 코드로 여러 하드웨어 아키텍처(x86, ARM, RISC-V, WebAssembly 등)에 대응하는 기능. [[LLVM]], [[Whale]], [[GCC]]는 모듈식 백엔드 구조를 통해 이를 지원하며, [[Vex]] 같은 패키지 매니저는 빌드 타깃을 직접 지정할 수 있게 통합된다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[컴파일러 툴체인|자체 툴체인]]&#039;&#039;&#039; – 언어 전용으로 설계된 빌드 및 패키징 시스템을 통합 제공하는 구조. [[Cargo]]([[Rust]]), [[Vex]]([[Wave]]), [[Swift Package Manager]], [[Go Modules]] 등이 이에 속한다. 이는 빌드 자동화, 테스트, 배포를 언어 레벨에서 일원화하여 개발 생태계를 견고하게 만든다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[언어 서버 프로토콜]] (LSP)&#039;&#039;&#039; – [[IDE]]와 컴파일러 간의 실시간 연동을 표준화한 프로토콜. 코드 분석, 자동 완성, 오류 감지 등을 컴파일러가 직접 제공하며, [[VS Code]], [[RustRover]], [[IntelliJ IDEA]] 등 대부분의 IDE가 지원한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[IR 수준 최적화]]&#039;&#039;&#039; – [[LLVM Pass]], [[WAIL Pass]], [[MLIR]]과 같은 중간 표현 레벨에서 수행되는 고급 최적화 기법. 백엔드 독립적으로 적용되어 다양한 플랫폼에서 동일한 최적화 효과를 얻을 수 있다. 이는 현대 컴파일러의 핵심 경쟁력으로 자리 잡고 있다.&lt;br /&gt;
&lt;br /&gt;
현대 컴파일러들은 이러한 기술을 결합하여, &#039;&#039;&#039;다중 아키텍처 대응·지능형 최적화·개발 도구 통합&#039;&#039;&#039;이라는 세 가지 축을 중심으로 진화하고 있다. 이러한 경향은 [[LLVM]], [[Whale]], [[GraalVM]], [[V8]] 등의 오픈소스 프로젝트를 통해 빠르게 확산되고 있다.&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[링커]]  &lt;br /&gt;
* [[어셈블러]]  &lt;br /&gt;
* [[빌드 시스템]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[GCC]]  &lt;br /&gt;
* [[Whale]]  &lt;br /&gt;
* [[Vex]]  &lt;br /&gt;
* [[IDE]]  &lt;br /&gt;
* [[디버거]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Alfred V. Aho, Monica Lam, Ravi Sethi, Jeffrey Ullman, &#039;&#039;Compilers: Principles, Techniques, and Tools&#039;&#039; (Dragon Book)  &lt;br /&gt;
* Chris Lattner, “LLVM: A Compilation Framework for Lifelong Program Analysis &amp;amp; Transformation” (2002)  &lt;br /&gt;
* John Levine, &#039;&#039;Linkers and Loaders&#039;&#039; (2000)  &lt;br /&gt;
* Rustc Dev Guide – [https://rustc-dev-guide.rust-lang.org/]  &lt;br /&gt;
* LLVM Documentation – [https://llvm.org/docs/]  &lt;br /&gt;
* GCC Internals Manual – GNU Project  &lt;br /&gt;
* JetBrains IDE Documentation – 2024 Edition&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Visual_Studio&amp;diff=205</id>
		<title>Visual Studio</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Visual_Studio&amp;diff=205"/>
		<updated>2025-11-14T02:00:16Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 주요 특징 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Visual Studio&#039;&#039;&#039;는 [[Microsoft]]에서 개발한 &#039;&#039;&#039;통합 개발 환경(IDE)&#039;&#039;&#039;이다.  &lt;br /&gt;
[[C (프로그래밍 언어)]], [[C++]], [[C＃]], [[Visual Basic]], [[Python]], [[JavaScript]] 등 다양한 언어를 지원하며,  &lt;br /&gt;
[[.NET]], [[ASP.NET]], [[Azure]], [[Unity]] 등 광범위한 생태계와 통합되어 있다.  &lt;br /&gt;
&lt;br /&gt;
Visual Studio는 주로 [[Windows]]용으로 제공되지만,  &lt;br /&gt;
최근에는 [[macOS]] 버전([[Visual Studio for Mac]])도 존재하며  &lt;br /&gt;
[[Visual Studio Code]]와 함께 [[Microsoft 개발 도구군]]을 형성한다.&lt;br /&gt;
Visual Studio는 코드 작성, 디버깅, 컴파일, 빌드, 배포를  &lt;br /&gt;
한 환경 내에서 처리할 수 있는 통합 개발 플랫폼이다.  &lt;br /&gt;
[[Visual C++]], [[Visual C＃]], [[Visual Basic .NET]] 등의 언어 통합 환경을 제공하며,  &lt;br /&gt;
[[IntelliSense]], [[Live Share]], [[Git]] 통합 등 강력한 개발 편의 기능을 포함한다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 버전 !! 출시일 !! 지원 종료일 !! 주요 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 97]] || 1997년 3월 19일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2003년 6월 30일 || Visual C++ 5.0, VB5 포함, 첫 &amp;quot;Visual Studio&amp;quot; 브랜드&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 6.0]] || 1998년 9월 2일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2005년 9월 30일 || 성숙한 COM 기반 IDE, C++/VB6 안정화&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio .NET (2002)]] || 2002년 2월 13일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2009년 7월 14일 || .NET Framework 1.0, C# 첫 도입, 새로운 관리 코드 모델&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio .NET 2003]] || 2003년 4월 24일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2013년 10월 8일 || .NET Framework 1.1, 성능 개선, 모바일 개발(Compact Framework) 강화&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2005]] || 2005년 11월 7일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2016년 4월 12일 || .NET Framework 2.0, ClickOnce, 개편된 IntelliSense 및 디버거&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2008]] || 2007년 11월 19일  || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2018년 4월 10일 || .NET Framework 3.5, LINQ, WPF/WWF/ASP.NET AJAX 지원&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2010]] || 2010년 4월 12일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2020년 7월 14일 || WPF 기반 새 IDE UI, 병렬 디버깅, .NET 4.0&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2012]] || 2012년 9월 12일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2023년 1월 10일 || Windows 8/WinRT 지원, C++11 일부 지원, Modern UI&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2013]] || 2013년 10월 17일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2024년 4월 9일 || 향상된 Git 통합, Async/Await 지원 강화&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2015]] || 2015년 7월 20일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2025년 10월 14일 || C# 6.0, C++14, Android/iOS 개발 도구(Xamarin) 통합&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2017]] || 2017년 3월 7일 || style=&amp;quot;background-color:#5c4a1f; color:#fff;&amp;quot; | 2027년 4월 13일 || 경량 설치기, .NET Core/SDK 스타일 프로젝트 지원&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2019]] || 2019년 4월 2일 || style=&amp;quot;background-color:#5c4a1f; color:#fff;&amp;quot; | 2029년 4월 10일 || Live Share 공동 작업, AI 기반 IntelliCode 강화&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2022]] || 2021년 11월 8일 || style=&amp;quot;background-color:#5c4a1f; color:#fff;&amp;quot; | 2032년 1월 13일 || 64비트 IDE 전환, C++20, 개선된 Hot Reload&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2026]] || 2025년 11월 11일 || style=&amp;quot;background-color:#1f2e5c; color:#fff;&amp;quot; | TBA || .NET 10과 C# 14 정식 지원, Github Copilot 통합 강화&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 주요 특징 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 다중 언어 지원 || [[C (프로그래밍 언어)]], [[C++]], [[C＃]], [[Visual Basic .NET]], [[F＃]], [[Python]], [[JavaScript]], [[TypeScript]] 등  &lt;br /&gt;
|-&lt;br /&gt;
| 강력한 디버깅 시스템 || [[GDB]] 수준의 브레이크포인트, 변수 감시, 스택 추적  &lt;br /&gt;
|-&lt;br /&gt;
| [[IntelliSense]] || 실시간 코드 완성 및 문맥 기반 제안  &lt;br /&gt;
|-&lt;br /&gt;
| [[Git]] / [[GitHub]] 통합 || 소스 제어 내장, 원격 저장소 연동  &lt;br /&gt;
|-&lt;br /&gt;
| [[Azure]] 통합 || 클라우드 배포, DevOps 파이프라인 연결  &lt;br /&gt;
|-&lt;br /&gt;
| [[Live Share]] || 실시간 협업 및 원격 디버깅 기능  &lt;br /&gt;
|-&lt;br /&gt;
| 확장성 || [[Visual Studio Marketplace]]를 통한 플러그인 설치  &lt;br /&gt;
|-&lt;br /&gt;
| [[Windows SDK]] 통합 || GUI 앱, 드라이버, UWP 개발 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[CMake]] 지원 || [[C++]] 프로젝트의 크로스 플랫폼 빌드 지원  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 지원 언어 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 컴파일러/런타임 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[C]] / [[C++]] || [[MSVC]] || 네이티브 코드, 게임/시스템 개발용  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] || [[Roslyn]] || [[.NET]] 기반 언어, 가장 널리 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[F＃]] || F# Compiler || 함수형 언어, 수학/데이터 분석 친화적  &lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Basic .NET]] || VB.NET Compiler || .NET 기반 절차형 언어  &lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[Python Tools for Visual Studio (PTVS)]] || AI 및 데이터 과학 개발용  &lt;br /&gt;
|-&lt;br /&gt;
| [[TypeScript]] / [[JavaScript]] || Node.js Tools || 웹 및 클라우드 앱 개발용  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 통합 개발 환경 구성 ==&lt;br /&gt;
Visual Studio의 IDE는 다음 요소들로 구성된다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구성 요소 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 솔루션 탐색기 || 프로젝트 및 파일 구조 관리  &lt;br /&gt;
|-&lt;br /&gt;
| 코드 편집기 || [[IntelliSense]] 및 구문 강조 기능 제공  &lt;br /&gt;
|-&lt;br /&gt;
| 출력/오류 창 || 빌드 및 런타임 로그 표시  &lt;br /&gt;
|-&lt;br /&gt;
| 디버거 || 중단점, 변수 추적, 스택 보기 지원  &lt;br /&gt;
|-&lt;br /&gt;
| 확장 관리자 || 플러그인 설치 및 관리  &lt;br /&gt;
|-&lt;br /&gt;
| 터미널 || [[PowerShell]], [[Developer Command Prompt]] 내장  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 개발 도구 및 생태계 ==&lt;br /&gt;
Visual Studio는 단순한 IDE가 아닌,  &lt;br /&gt;
Microsoft의 전체 개발 플랫폼과 긴밀히 연결된 생태계의 일부다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 범주 !! 연동 도구 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 빌드 시스템 || [[MSBuild]], [[CMake]], [[Ninja]] || 프로젝트 빌드 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| 버전 관리 || [[Git]], [[Azure Repos]], [[SVN]] || 소스 코드 버전 관리  &lt;br /&gt;
|-&lt;br /&gt;
| 테스트 도구 || [[MSTest]], [[xUnit]], [[NUnit]] || 단위·통합 테스트 프레임워크  &lt;br /&gt;
|-&lt;br /&gt;
| 패키지 관리 || [[NuGet]], [[vcpkg]] || 라이브러리 의존성 관리  &lt;br /&gt;
|-&lt;br /&gt;
| 클라우드 연동 || [[Azure DevOps]], [[GitHub Actions]] || CI/CD 파이프라인 통합  &lt;br /&gt;
|-&lt;br /&gt;
| 확장 플랫폼 || [[Visual Studio Marketplace]] || 사용자 제작 플러그인 배포  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 지원 플랫폼 ==&lt;br /&gt;
* &#039;&#039;&#039;운영체제:&#039;&#039;&#039; [[Windows 10]], [[Windows 11]]  &lt;br /&gt;
* &#039;&#039;&#039;타겟 플랫폼:&#039;&#039;&#039; [[Windows]], [[Linux]], [[macOS]], [[Android]], [[iOS]], [[WebAssembly]]  &lt;br /&gt;
* &#039;&#039;&#039;클라우드:&#039;&#039;&#039; [[Microsoft Azure]], [[AWS]], [[Google Cloud]] (플러그인 연동)  &lt;br /&gt;
* &#039;&#039;&#039;게임 엔진:&#039;&#039;&#039; [[Unity]], [[Unreal Engine]], [[Godot]] 지원  &lt;br /&gt;
&lt;br /&gt;
== 버전 구성 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 에디션 !! 대상 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| Community || 개인 개발자, 학생 || 무료, 대부분의 기능 포함  &lt;br /&gt;
|-&lt;br /&gt;
| Professional || 중소기업용 || 협업 및 분석 기능 추가  &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise || 대규모 조직 || 고급 테스트, DevOps, 성능 분석 포함  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Visual Studio와 Visual Studio Code의 차이 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! Visual Studio !! Visual Studio Code&lt;br /&gt;
|-&lt;br /&gt;
| 형태 || 완전한 IDE || 경량 코드 에디터  &lt;br /&gt;
|-&lt;br /&gt;
| 대상 || 대규모 프로젝트, [[.NET]], [[C++]] || 웹, 스크립트, 크로스 플랫폼 개발  &lt;br /&gt;
|-&lt;br /&gt;
| 언어 지원 || [[C (프로그래밍 언어)]], [[C++]], [[C＃]], [[F＃]], [[VB|Visual Basic]] 등 || 거의 모든 언어 (플러그인 기반)  &lt;br /&gt;
|-&lt;br /&gt;
| 빌드 시스템 || MSBuild, CMake || 외부 명령어 연동  &lt;br /&gt;
|-&lt;br /&gt;
| 플랫폼 || Windows, macOS || Windows, macOS, Linux  &lt;br /&gt;
|-&lt;br /&gt;
| 확장성 || Marketplace + 통합 도구 || 오픈소스 플러그인 중심  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 현대 트렌드 ==&lt;br /&gt;
* [[64비트 IDE]] – 대규모 프로젝트 처리 효율 향상  &lt;br /&gt;
* [[AI 코드 보조]] – [[IntelliCode]], GitHub Copilot 통합  &lt;br /&gt;
* [[Live Share]] – 원격 협업 개발 환경  &lt;br /&gt;
* [[CMake]] 통합 빌드 – 크로스 플랫폼 C++ 개발 표준화  &lt;br /&gt;
* [[Dev Containers]] – 컨테이너 기반 개발 환경 지원  &lt;br /&gt;
* [[.NET 8]] 및 [[C++23]] 지원  &lt;br /&gt;
* [[Azure Cloud Integration]] – 클라우드 배포 자동화  &lt;br /&gt;
* [[Rust]] 및 [[Wave]] 지원 플러그인 등장  &lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[Visual Studio Code]]  &lt;br /&gt;
* [[MSBuild]]  &lt;br /&gt;
* [[C#]]  &lt;br /&gt;
* [[.NET]]  &lt;br /&gt;
* [[Azure DevOps]]  &lt;br /&gt;
* [[GitHub]]  &lt;br /&gt;
* [[IntelliSense]]  &lt;br /&gt;
* [[C++]]  &lt;br /&gt;
* [[RustRover]]  &lt;br /&gt;
* [[Wave]]  &lt;br /&gt;
* [[Rex]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Microsoft Docs – [https://learn.microsoft.com/en-us/visualstudio/ Visual Studio Documentation]  &lt;br /&gt;
* “Inside Visual Studio 2022 Architecture”, Microsoft Developer Blog, 2022  &lt;br /&gt;
* Raymond Chen, &#039;&#039;The Old New Thing&#039;&#039; (Microsoft Press)  &lt;br /&gt;
* JetBrains vs Visual Studio Comparison Report, 2024  &lt;br /&gt;
* MSDN Library: Visual Studio Development Tools, 2023&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Visual_Studio&amp;diff=204</id>
		<title>Visual Studio</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Visual_Studio&amp;diff=204"/>
		<updated>2025-11-14T01:57:30Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 새 문서: == 개요 == &amp;#039;&amp;#039;&amp;#039;Visual Studio&amp;#039;&amp;#039;&amp;#039;는 Microsoft에서 개발한 &amp;#039;&amp;#039;&amp;#039;통합 개발 환경(IDE)&amp;#039;&amp;#039;&amp;#039;이다.   C (프로그래밍 언어), C++, C＃, Visual Basic, Python, JavaScript 등 다양한 언어를 지원하며,   .NET, ASP.NET, Azure, Unity 등 광범위한 생태계와 통합되어 있다.    Visual Studio는 주로 Windows용으로 제공되지만,   최근에는 macOS 버전(Visual Studio for Mac)도 존재하며   V...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Visual Studio&#039;&#039;&#039;는 [[Microsoft]]에서 개발한 &#039;&#039;&#039;통합 개발 환경(IDE)&#039;&#039;&#039;이다.  &lt;br /&gt;
[[C (프로그래밍 언어)]], [[C++]], [[C＃]], [[Visual Basic]], [[Python]], [[JavaScript]] 등 다양한 언어를 지원하며,  &lt;br /&gt;
[[.NET]], [[ASP.NET]], [[Azure]], [[Unity]] 등 광범위한 생태계와 통합되어 있다.  &lt;br /&gt;
&lt;br /&gt;
Visual Studio는 주로 [[Windows]]용으로 제공되지만,  &lt;br /&gt;
최근에는 [[macOS]] 버전([[Visual Studio for Mac]])도 존재하며  &lt;br /&gt;
[[Visual Studio Code]]와 함께 [[Microsoft 개발 도구군]]을 형성한다.&lt;br /&gt;
Visual Studio는 코드 작성, 디버깅, 컴파일, 빌드, 배포를  &lt;br /&gt;
한 환경 내에서 처리할 수 있는 통합 개발 플랫폼이다.  &lt;br /&gt;
[[Visual C++]], [[Visual C＃]], [[Visual Basic .NET]] 등의 언어 통합 환경을 제공하며,  &lt;br /&gt;
[[IntelliSense]], [[Live Share]], [[Git]] 통합 등 강력한 개발 편의 기능을 포함한다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 버전 !! 출시일 !! 지원 종료일 !! 주요 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 97]] || 1997년 3월 19일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2003년 6월 30일 || Visual C++ 5.0, VB5 포함, 첫 &amp;quot;Visual Studio&amp;quot; 브랜드&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 6.0]] || 1998년 9월 2일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2005년 9월 30일 || 성숙한 COM 기반 IDE, C++/VB6 안정화&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio .NET (2002)]] || 2002년 2월 13일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2009년 7월 14일 || .NET Framework 1.0, C# 첫 도입, 새로운 관리 코드 모델&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio .NET 2003]] || 2003년 4월 24일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2013년 10월 8일 || .NET Framework 1.1, 성능 개선, 모바일 개발(Compact Framework) 강화&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2005]] || 2005년 11월 7일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2016년 4월 12일 || .NET Framework 2.0, ClickOnce, 개편된 IntelliSense 및 디버거&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2008]] || 2007년 11월 19일  || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2018년 4월 10일 || .NET Framework 3.5, LINQ, WPF/WWF/ASP.NET AJAX 지원&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2010]] || 2010년 4월 12일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2020년 7월 14일 || WPF 기반 새 IDE UI, 병렬 디버깅, .NET 4.0&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2012]] || 2012년 9월 12일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2023년 1월 10일 || Windows 8/WinRT 지원, C++11 일부 지원, Modern UI&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2013]] || 2013년 10월 17일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2024년 4월 9일 || 향상된 Git 통합, Async/Await 지원 강화&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2015]] || 2015년 7월 20일 || style=&amp;quot;background-color:#5c1f1f; color:#fff;&amp;quot; | 2025년 10월 14일 || C# 6.0, C++14, Android/iOS 개발 도구(Xamarin) 통합&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2017]] || 2017년 3월 7일 || style=&amp;quot;background-color:#5c4a1f; color:#fff;&amp;quot; | 2027년 4월 13일 || 경량 설치기, .NET Core/SDK 스타일 프로젝트 지원&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2019]] || 2019년 4월 2일 || style=&amp;quot;background-color:#5c4a1f; color:#fff;&amp;quot; | 2029년 4월 10일 || Live Share 공동 작업, AI 기반 IntelliCode 강화&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2022]] || 2021년 11월 8일 || style=&amp;quot;background-color:#5c4a1f; color:#fff;&amp;quot; | 2032년 1월 13일 || 64비트 IDE 전환, C++20, 개선된 Hot Reload&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio 2026]] || 2025년 11월 11일 || style=&amp;quot;background-color:#1f2e5c; color:#fff;&amp;quot; | TBA || .NET 10과 C# 14 정식 지원, Github Copilot 통합 강화&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 주요 특징 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 다중 언어 지원 || [[C]], [[C++]], [[C＃]], [[Visual Basic .NET]], [[F＃]], [[Python]], [[JavaScript]], [[TypeScript]] 등  &lt;br /&gt;
|-&lt;br /&gt;
| 강력한 디버깅 시스템 || [[GDB]] 수준의 브레이크포인트, 변수 감시, 스택 추적  &lt;br /&gt;
|-&lt;br /&gt;
| [[IntelliSense]] || 실시간 코드 완성 및 문맥 기반 제안  &lt;br /&gt;
|-&lt;br /&gt;
| [[Git]] / [[GitHub]] 통합 || 소스 제어 내장, 원격 저장소 연동  &lt;br /&gt;
|-&lt;br /&gt;
| [[Azure]] 통합 || 클라우드 배포, DevOps 파이프라인 연결  &lt;br /&gt;
|-&lt;br /&gt;
| [[Live Share]] || 실시간 협업 및 원격 디버깅 기능  &lt;br /&gt;
|-&lt;br /&gt;
| 확장성 || [[Visual Studio Marketplace]]를 통한 플러그인 설치  &lt;br /&gt;
|-&lt;br /&gt;
| [[Windows SDK]] 통합 || GUI 앱, 드라이버, UWP 개발 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[CMake]] 지원 || [[C++]] 프로젝트의 크로스 플랫폼 빌드 지원  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 지원 언어 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 컴파일러/런타임 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[C]] / [[C++]] || [[MSVC]] || 네이티브 코드, 게임/시스템 개발용  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] || [[Roslyn]] || [[.NET]] 기반 언어, 가장 널리 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[F＃]] || F# Compiler || 함수형 언어, 수학/데이터 분석 친화적  &lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Basic .NET]] || VB.NET Compiler || .NET 기반 절차형 언어  &lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[Python Tools for Visual Studio (PTVS)]] || AI 및 데이터 과학 개발용  &lt;br /&gt;
|-&lt;br /&gt;
| [[TypeScript]] / [[JavaScript]] || Node.js Tools || 웹 및 클라우드 앱 개발용  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 통합 개발 환경 구성 ==&lt;br /&gt;
Visual Studio의 IDE는 다음 요소들로 구성된다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구성 요소 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 솔루션 탐색기 || 프로젝트 및 파일 구조 관리  &lt;br /&gt;
|-&lt;br /&gt;
| 코드 편집기 || [[IntelliSense]] 및 구문 강조 기능 제공  &lt;br /&gt;
|-&lt;br /&gt;
| 출력/오류 창 || 빌드 및 런타임 로그 표시  &lt;br /&gt;
|-&lt;br /&gt;
| 디버거 || 중단점, 변수 추적, 스택 보기 지원  &lt;br /&gt;
|-&lt;br /&gt;
| 확장 관리자 || 플러그인 설치 및 관리  &lt;br /&gt;
|-&lt;br /&gt;
| 터미널 || [[PowerShell]], [[Developer Command Prompt]] 내장  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 개발 도구 및 생태계 ==&lt;br /&gt;
Visual Studio는 단순한 IDE가 아닌,  &lt;br /&gt;
Microsoft의 전체 개발 플랫폼과 긴밀히 연결된 생태계의 일부다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 범주 !! 연동 도구 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 빌드 시스템 || [[MSBuild]], [[CMake]], [[Ninja]] || 프로젝트 빌드 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| 버전 관리 || [[Git]], [[Azure Repos]], [[SVN]] || 소스 코드 버전 관리  &lt;br /&gt;
|-&lt;br /&gt;
| 테스트 도구 || [[MSTest]], [[xUnit]], [[NUnit]] || 단위·통합 테스트 프레임워크  &lt;br /&gt;
|-&lt;br /&gt;
| 패키지 관리 || [[NuGet]], [[vcpkg]] || 라이브러리 의존성 관리  &lt;br /&gt;
|-&lt;br /&gt;
| 클라우드 연동 || [[Azure DevOps]], [[GitHub Actions]] || CI/CD 파이프라인 통합  &lt;br /&gt;
|-&lt;br /&gt;
| 확장 플랫폼 || [[Visual Studio Marketplace]] || 사용자 제작 플러그인 배포  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 지원 플랫폼 ==&lt;br /&gt;
* &#039;&#039;&#039;운영체제:&#039;&#039;&#039; [[Windows 10]], [[Windows 11]]  &lt;br /&gt;
* &#039;&#039;&#039;타겟 플랫폼:&#039;&#039;&#039; [[Windows]], [[Linux]], [[macOS]], [[Android]], [[iOS]], [[WebAssembly]]  &lt;br /&gt;
* &#039;&#039;&#039;클라우드:&#039;&#039;&#039; [[Microsoft Azure]], [[AWS]], [[Google Cloud]] (플러그인 연동)  &lt;br /&gt;
* &#039;&#039;&#039;게임 엔진:&#039;&#039;&#039; [[Unity]], [[Unreal Engine]], [[Godot]] 지원  &lt;br /&gt;
&lt;br /&gt;
== 버전 구성 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 에디션 !! 대상 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| Community || 개인 개발자, 학생 || 무료, 대부분의 기능 포함  &lt;br /&gt;
|-&lt;br /&gt;
| Professional || 중소기업용 || 협업 및 분석 기능 추가  &lt;br /&gt;
|-&lt;br /&gt;
| Enterprise || 대규모 조직 || 고급 테스트, DevOps, 성능 분석 포함  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Visual Studio와 Visual Studio Code의 차이 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! Visual Studio !! Visual Studio Code&lt;br /&gt;
|-&lt;br /&gt;
| 형태 || 완전한 IDE || 경량 코드 에디터  &lt;br /&gt;
|-&lt;br /&gt;
| 대상 || 대규모 프로젝트, [[.NET]], [[C++]] || 웹, 스크립트, 크로스 플랫폼 개발  &lt;br /&gt;
|-&lt;br /&gt;
| 언어 지원 || [[C (프로그래밍 언어)]], [[C++]], [[C＃]], [[F＃]], [[VB|Visual Basic]] 등 || 거의 모든 언어 (플러그인 기반)  &lt;br /&gt;
|-&lt;br /&gt;
| 빌드 시스템 || MSBuild, CMake || 외부 명령어 연동  &lt;br /&gt;
|-&lt;br /&gt;
| 플랫폼 || Windows, macOS || Windows, macOS, Linux  &lt;br /&gt;
|-&lt;br /&gt;
| 확장성 || Marketplace + 통합 도구 || 오픈소스 플러그인 중심  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 현대 트렌드 ==&lt;br /&gt;
* [[64비트 IDE]] – 대규모 프로젝트 처리 효율 향상  &lt;br /&gt;
* [[AI 코드 보조]] – [[IntelliCode]], GitHub Copilot 통합  &lt;br /&gt;
* [[Live Share]] – 원격 협업 개발 환경  &lt;br /&gt;
* [[CMake]] 통합 빌드 – 크로스 플랫폼 C++ 개발 표준화  &lt;br /&gt;
* [[Dev Containers]] – 컨테이너 기반 개발 환경 지원  &lt;br /&gt;
* [[.NET 8]] 및 [[C++23]] 지원  &lt;br /&gt;
* [[Azure Cloud Integration]] – 클라우드 배포 자동화  &lt;br /&gt;
* [[Rust]] 및 [[Wave]] 지원 플러그인 등장  &lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[Visual Studio Code]]  &lt;br /&gt;
* [[MSBuild]]  &lt;br /&gt;
* [[C#]]  &lt;br /&gt;
* [[.NET]]  &lt;br /&gt;
* [[Azure DevOps]]  &lt;br /&gt;
* [[GitHub]]  &lt;br /&gt;
* [[IntelliSense]]  &lt;br /&gt;
* [[C++]]  &lt;br /&gt;
* [[RustRover]]  &lt;br /&gt;
* [[Wave]]  &lt;br /&gt;
* [[Rex]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Microsoft Docs – [https://learn.microsoft.com/en-us/visualstudio/ Visual Studio Documentation]  &lt;br /&gt;
* “Inside Visual Studio 2022 Architecture”, Microsoft Developer Blog, 2022  &lt;br /&gt;
* Raymond Chen, &#039;&#039;The Old New Thing&#039;&#039; (Microsoft Press)  &lt;br /&gt;
* JetBrains vs Visual Studio Comparison Report, 2024  &lt;br /&gt;
* MSDN Library: Visual Studio Development Tools, 2023&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=203</id>
		<title>컴파일러와 도구</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=203"/>
		<updated>2025-11-13T12:51:59Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 현대 컴파일러 트렌드 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러와 도구&#039;&#039;&#039;(Compilers and Tools)는  &lt;br /&gt;
프로그래밍 언어로 작성된 소스 코드를 해석, 변환, 최적화, 실행하기 위한  &lt;br /&gt;
&#039;&#039;&#039;소프트웨어 개발 인프라의 핵심 구성 요소&#039;&#039;&#039;이다.  &lt;br /&gt;
&lt;br /&gt;
이들은 단순히 코드를 “기계가 이해할 수 있는 형태로 변환하는 시스템”을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;개발 생산성 향상&#039;&#039;&#039;, &#039;&#039;&#039;코드 품질 보장&#039;&#039;&#039;, &#039;&#039;&#039;성능 최적화&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 간 이식성 확보&#039;&#039;&#039;를 담당한다.  &lt;br /&gt;
&lt;br /&gt;
컴파일러, 인터프리터, 어셈블러, 링커, 디버거, 빌드 시스템, IDE, 패키지 관리자 등은  &lt;br /&gt;
모두 언어의 생명주기 — &#039;&#039;&#039;작성 → 분석 → 변환 → 실행 → 유지보수&#039;&#039;&#039; — 를 구성하는 필수적인 도구군(toolchain)을 이룬다.  &lt;br /&gt;
&lt;br /&gt;
=== 컴파일러 ===&lt;br /&gt;
&#039;&#039;&#039;컴파일러(Compiler)&#039;&#039;&#039;는 고급 언어(high-level language)로 작성된 소스 코드를  &lt;br /&gt;
기계어(machine code) 또는 중간 표현(intermediate representation)으로 변환하는 프로그램이다.  &lt;br /&gt;
이 과정은 일반적으로 다음 단계를 거친다:&lt;br /&gt;
# &#039;&#039;&#039;어휘 분석(Lexical Analysis)&#039;&#039;&#039; — 토큰 단위로 소스 코드를 분해  &lt;br /&gt;
# &#039;&#039;&#039;구문 분석(Syntax Analysis)&#039;&#039;&#039; — 언어의 문법에 따라 트리 구조(AST)를 생성  &lt;br /&gt;
# &#039;&#039;&#039;의미 분석(Semantic Analysis)&#039;&#039;&#039; — 타입, 스코프, 참조 관계를 검증  &lt;br /&gt;
# &#039;&#039;&#039;중간 코드 생성(IR Generation)&#039;&#039;&#039; — 하드웨어 독립적인 내부 표현 생성  &lt;br /&gt;
# &#039;&#039;&#039;최적화(Optimization)&#039;&#039;&#039; — 실행 효율을 높이기 위한 변환 수행  &lt;br /&gt;
# &#039;&#039;&#039;코드 생성(Code Generation)&#039;&#039;&#039; — 타깃 플랫폼의 기계어로 변환  &lt;br /&gt;
&lt;br /&gt;
일부 현대 컴파일러는 이 과정을 여러 모듈로 분리하여,  &lt;br /&gt;
프런트엔드(frontend), 미들엔드(midend), 백엔드(backend) 구조로 구성한다.  &lt;br /&gt;
예: [[LLVM]], [[GCC]], [[Whale (컴파일러 툴체인)]] 등.&lt;br /&gt;
&lt;br /&gt;
=== 기타 개발 도구 ===&lt;br /&gt;
컴파일러 외에도 다음과 같은 다양한 개발 도구가 소프트웨어 품질과 효율성을 높인다:&lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템(Build System):&#039;&#039;&#039; 소스 코드의 컴파일, 링크, 테스트, 배포를 자동화 (예: [[CMake]], [[Ninja]], [[x.py]])  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 실행 중인 프로그램의 동작을 추적하고 오류를 분석 (예: [[GDB]], [[LLDB]])  &lt;br /&gt;
* &#039;&#039;&#039;린터(Linter):&#039;&#039;&#039; 코드 스타일 및 잠재적 버그를 정적 분석으로 탐지 (예: [[Clippy]], [[ESLint]])  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리자(Package Manager):&#039;&#039;&#039; 의존성 관리 및 모듈 배포를 지원 (예: [[Cargo]], [[Vex]], [[npm]])  &lt;br /&gt;
* &#039;&#039;&#039;IDE(통합 개발 환경):&#039;&#039;&#039; 코드 작성, 빌드, 디버깅, 테스트를 통합 제공 (예: [[Visual Studio Code]], [[RustRover]])  &lt;br /&gt;
&lt;br /&gt;
=== 역할과 중요성 ===&lt;br /&gt;
컴파일러와 개발 도구는 프로그래밍 언어 생태계의 기반을 이루며,  &lt;br /&gt;
언어 설계 철학과 밀접하게 연관되어 있다.  &lt;br /&gt;
효율적인 도구 체계는 언어의 확장성, 성능, 보안성, 유지보수성을 직접적으로 좌우한다.  &lt;br /&gt;
&lt;br /&gt;
현대의 개발 환경에서는 단일 컴파일러가 아닌  &lt;br /&gt;
&#039;&#039;&#039;모듈화된 툴체인(toolchain)&#039;&#039;&#039;이 표준으로 자리 잡고 있으며,  &lt;br /&gt;
이러한 구조는 다양한 아키텍처와 플랫폼에서의 고성능 빌드와 이식성을 가능하게 한다.  &lt;br /&gt;
&lt;br /&gt;
== 컴파일러의 구조 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러&#039;&#039;&#039;는 소스 코드를 기계어로 변환하기 위해 일련의 분석과 변환 단계를 거치며,  &lt;br /&gt;
일반적으로 &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;, &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;, &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;의 세 부분으로 구성된다.  &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;는 주로 언어의 문법과 의미를 해석하는 역할을 담당한다. 소스 코드를 분석하여 구조화된 내부 표현(AST)을 생성하고, 타입 검사와 같은 의미적 검증을 수행한다.  &lt;br /&gt;
* &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;는 이 내부 표현을 기반으로 프로그램의 효율을 향상시키는 최적화 단계이다. 불필요한 연산을 제거하고, 실행 속도와 메모리 사용량을 개선한다.  &lt;br /&gt;
* &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;는 최종적으로 타깃 플랫폼에 맞는 기계어 코드나 바이트코드를 생성하며, 여러 오브젝트 파일을 결합(Linking)하여 실행 가능한 프로그램을 만든다.  &lt;br /&gt;
&lt;br /&gt;
아래는 각 단계의 세부 구성이다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 단계 !! 설명 !! 관련 기술&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;어휘 분석 (Lexical Analysis)&#039;&#039;&#039; || 소스 코드를 문자 단위로 읽어 의미 있는 최소 단위(토큰)로 분해한다. || [[Flex]], [[Lex]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;구문 분석 (Syntax Analysis)&#039;&#039;&#039; || 언어의 문법 규칙에 따라 토큰을 구조적으로 해석하고, 추상 구문 트리(AST)를 생성한다. || [[Bison]], [[Yacc]], [[LALR]], [[PEG]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;의미 분석 (Semantic Analysis)&#039;&#039;&#039; || 변수, 함수, 타입의 유효성을 검사하고, 스코프 및 참조 관계를 검증한다. || [[LLVM Clang]], [[GCC Front-end]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;중간 코드 생성 (IR Generation)&#039;&#039;&#039; || 하드웨어에 독립적인 중간 표현(IR, Intermediate Representation)을 생성한다. || [[LLVM IR]], [[GIMPLE]], [[MIR]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;최적화 (Optimization)&#039;&#039;&#039; || 중간 표현 단계에서 프로그램의 성능을 향상시키기 위한 변환을 수행한다. 불필요한 연산 제거(Dead Code Elimination), 상수 접기(Constant Folding), 제어 흐름 단순화(Control Flow Simplification) 등이 포함된다. || SSA, Constant Folding, Dead Code Elimination&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;코드 생성 (Code Generation)&#039;&#039;&#039; || 최적화된 중간 표현을 실제 타깃 플랫폼의 명령어 집합(ISA)에 맞는 기계어 코드 또는 바이트코드로 변환한다. || [[x86_64]], [[ARM]], [[JVM]], [[WebAssembly]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;링킹 (Linking)&#039;&#039;&#039; || 여러 오브젝트 파일과 라이브러리를 결합하여 실행 가능한 단일 바이너리를 생성한다. || [[ld]], [[lld]], [[gold linker]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
현대의 컴파일러는 이러한 단계를 모듈화하여 독립적으로 개선하거나 교체할 수 있으며,  &lt;br /&gt;
대표적인 예로 [[LLVM]]은 프런트엔드, 미들엔드, 백엔드가 명확히 분리된 구조를 가진다.  &lt;br /&gt;
이러한 구조적 분리는 언어 확장, 타깃 아키텍처 추가, 최적화 연구 등 다양한 분야에서 유연성을 제공한다.&lt;br /&gt;
&lt;br /&gt;
== 주요 컴파일러 ==&lt;br /&gt;
아래 표는 대표적인 &#039;&#039;&#039;정적 컴파일러(Static Compiler)&#039;&#039;&#039; 또는 &#039;&#039;&#039;JIT 컴파일러&#039;&#039;&#039;를 정리한 것이다.  &lt;br /&gt;
인터프리터 기반 언어 구현체는 제외되었으며, 각 항목은 언어의 공식 또는 주요 오픈소스 컴파일러를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 컴파일러 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[C (프로그래밍 언어)]] || [[GCC]], [[Clang]], [[TinyCC]] || 전통적인 시스템 언어 컴파일러, 다양한 아키텍처 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[GCC]], [[Clang]], [[MSVC]] || 객체지향 + 저수준 접근성, [[LLVM]] 기반 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[Fortran]] || [[GFortran]], [[Flang]] || 과학·수치 계산 특화, [[LLVM]] 기반 현대화 진행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ada]] || [[GNAT]] || 고신뢰·임베디드 시스템용, [[SPARK]]와 결합 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[Pascal]] || [[Free Pascal]], [[Turbo Pascal]] || 교육용 및 레거시 시스템 유지에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DMD]], [[LDC]], [[GDC]] || C++ 대체 지향, 네이티브·LLVM 백엔드 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[rustc]] || 안전성과 병행성 중심, [[LLVM]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[gc]], [[Gollvm]] || 빠른 빌드와 간결한 런타임 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swiftc]] || [[LLVM]] 기반, [[Objective-C]]와 상호 운용  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] || [[Roslyn]], [[Mono AOT]] || .NET 플랫폼용 컴파일러, API 기반 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[javac]], [[Eclipse Compiler for Java]] || 바이트코드 생성, [[JVM]] 위에서 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Kotlin]] || [[Kotlinc]] || JVM·Native·JS 등 다중 타깃 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[GHC]] || 함수형 언어 전용 고급 최적화, [[LLVM]] 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[OCaml]] || [[OCamlopt]] || 정적 타입 기반 함수형 언어, 네이티브 코드 컴파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[Zig]] || [[Zig Compiler]] || [[LLVM]] 사용, 크로스 컴파일과 성능 중심 설계  &lt;br /&gt;
|-&lt;br /&gt;
| [[Nim]] || [[Nim Compiler]] || [[C]], [[C++]], [[ObjC]] 코드로 트랜스파일, 네이티브 바이너리 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[V (프로그래밍 언어)]] || [[V Compiler]] || 단일 바이너리, 빠른 컴파일 속도  &lt;br /&gt;
|-&lt;br /&gt;
| [[Carbon (프로그래밍 언어)]] || [[Carbon Compiler]] || [[C++]] 후속 실험 언어, [[LLVM]] 인프라 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Whale]] || 차세대 저수준 언어용 [[LLVM]] 대체 툴체인, 고도로 모듈화된 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 인터프리터 ==&lt;br /&gt;
&#039;&#039;&#039;인터프리터(Interpreter)&#039;&#039;&#039;는 프로그램의 소스 코드를 &#039;&#039;&#039;즉시 해석하여 실행&#039;&#039;&#039;하는 소프트웨어이다.  &lt;br /&gt;
컴파일 단계를 거쳐 기계어로 변환하는 대신, 런타임 시점에 명령을 해석하고 수행한다.  &lt;br /&gt;
&lt;br /&gt;
이 방식은 프로그램의 수정·실행 주기가 빠르고, 대화형 환경(Interactive Environment)에 적합하다.  &lt;br /&gt;
주로 [[스크립트 언어]]나 [[동적 타이핑 언어]]에서 사용되며,  &lt;br /&gt;
최근에는 [[JIT (Just-In-Time) 컴파일]]을 결합한 하이브리드 구조가 일반적이다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 대표 인터프리터 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[CPython]], [[PyPy]] || 대표적인 스크립트 언어, JIT 지원 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ruby]] || [[MRI]], [[JRuby]], [[TruffleRuby]] || 순수 객체지향 구조, JVM 기반 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[JavaScript]] || [[V8]], [[SpiderMonkey]], [[JavaScriptCore]] || 브라우저 및 서버 런타임, 고성능 JIT 내장  &lt;br /&gt;
|-&lt;br /&gt;
| [[Lua]] || [[LuaJIT]], [[PUC-Rio Lua]] || 임베디드 시스템 친화적, C API 통합 용이  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Zend Engine]], [[HHVM]] || 서버 사이드 웹 스크립팅, JIT 기반 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perl]] || [[Perl Interpreter]] || 문자열 처리와 정규식에 강력한 기능 제공  &lt;br /&gt;
|-&lt;br /&gt;
| [[R (프로그래밍 언어)]] || [[GNU R]], [[Renjin]] || 통계 계산 및 데이터 분석용 언어  &lt;br /&gt;
|-&lt;br /&gt;
| [[Scheme]] || [[Racket]], [[Guile]], [[Chez Scheme]] || Lisp 계열, 함수형 메타프로그래밍 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Tcl]] || [[Tcl Interpreter]] || 간결한 문법과 확장성, 임베디드 제어용으로 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bash]] || [[GNU Bash]], [[Zsh]] || 셸 환경용 스크립트 해석기, 운영체제 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Elixir]] || [[BEAM VM]] || [[Erlang]] 기반 가상머신, 동시성 처리에 최적화  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 빌드 시스템 ==&lt;br /&gt;
&#039;&#039;&#039;빌드 시스템(Build System)&#039;&#039;&#039;은 여러 소스 파일을 자동으로 컴파일·링크하여 실행 가능한 프로그램이나 라이브러리를 생성하는 &#039;&#039;&#039;소프트웨어 자동화 도구&#039;&#039;&#039;이다.  &lt;br /&gt;
프로젝트가 커질수록 수작업으로 빌드를 관리하기 어려워지기 때문에,  &lt;br /&gt;
빌드 시스템은 &#039;&#039;&#039;의존성 관리&#039;&#039;&#039;, &#039;&#039;&#039;병렬 처리&#039;&#039;&#039;, &#039;&#039;&#039;테스트 실행&#039;&#039;&#039;, &#039;&#039;&#039;패키징&#039;&#039;&#039; 등 다양한 과정을 자동화한다.  &lt;br /&gt;
&lt;br /&gt;
일부 빌드 시스템은 단순한 명령 스크립트를 넘어,  &lt;br /&gt;
독자적인 DSL(Domain Specific Language) 또는 메타 빌드 구조를 제공한다.  &lt;br /&gt;
대표적인 예로 [[CMake]], [[Gradle]], [[Bazel]] 등이 있으며,  &lt;br /&gt;
현대 언어들은 각 언어에 특화된 자체 빌드 도구([[Cargo]], [[x.py]], [[Vex]] 등)를 제공하기도 한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 이름 !! 언어/환경 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Make]] || [[C]], [[C++]] || 전통적인 빌드 자동화 도구, 의존성 기반 명령 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[CMake]] || 다중 언어 || 메타 빌드 시스템, [[Ninja]]·[[Make]] 백엔드 지원, 크로스 플랫폼  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ninja]] || 다중 언어 || 고속·병렬 빌드에 최적화된 경량 빌드 실행기  &lt;br /&gt;
|-&lt;br /&gt;
| [[Meson]] || [[C]], [[C++]], [[Rust]] 등 || Python 유사 DSL, [[Ninja]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[SCons]] || [[Python]] || 완전한 파이썬 스크립팅 기반 빌드 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Premake]] || [[Lua]] || [[Lua]] 기반 설정, IDE 프로젝트 파일 자동 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[QMake]] || [[C++]] ([[Qt]]) || Qt 프레임워크 전용 프로젝트 구성 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Gradle]] || [[Java]], [[Kotlin]] || Groovy/Kotlin DSL 기반, JVM 생태계 표준 빌드 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bazel]] || 다중 언어 || [[Google]]의 대규모 모노레포 빌드용, 캐싱·병렬화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[x.py]] || [[Rust]], [[Wave]] || 통합식 컴파일 파이프라인, 컴파일러 및 툴체인 자체 빌드에 사용  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 디버깅 및 분석 도구 ==&lt;br /&gt;
&#039;&#039;&#039;디버깅 및 분석 도구(Debugging and Analysis Tools)&#039;&#039;&#039;는  &lt;br /&gt;
프로그램의 실행 과정, 메모리 사용, 성능 병목, 시스템 호출 등을 관찰·분석하여  &lt;br /&gt;
오류를 진단하고 최적화를 지원하는 개발 보조 도구이다.  &lt;br /&gt;
&lt;br /&gt;
이러한 도구들은 일반적으로 다음과 같은 목적에 따라 구분된다:&lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 코드의 실행 흐름 제어 및 변수 상태 추적  &lt;br /&gt;
* &#039;&#039;&#039;메모리 분석기(Memory Analyzer):&#039;&#039;&#039; 메모리 누수, 접근 위반 등 런타임 오류 탐지  &lt;br /&gt;
* &#039;&#039;&#039;성능 프로파일러(Profiler):&#039;&#039;&#039; CPU·메모리 사용률, 함수 호출 시간 등 측정  &lt;br /&gt;
* &#039;&#039;&#039;시스템 추적기(System Tracer):&#039;&#039;&#039; 커널 및 시스템 호출 수준에서 동작 모니터링  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 도구 !! 기능 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[GDB]] || 디버거 || GNU 프로젝트의 대표 디버거, 프로세스 실행 중단·단계별 추적·변수 조사 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[LLDB]] || 디버거 || [[LLVM]] 인프라 기반, [[Clang]]과 통합된 현대적 디버거  &lt;br /&gt;
|-&lt;br /&gt;
| [[Valgrind]] || 메모리 분석 || 메모리 누수, 잘못된 접근, 캐시 동작 등을 분석  &lt;br /&gt;
|-&lt;br /&gt;
| [[AddressSanitizer]] || 런타임 검증 || [[Clang]] 및 [[GCC]] 통합 런타임 검증기, 메모리 오류 탐지  &lt;br /&gt;
|-&lt;br /&gt;
| [[ThreadSanitizer]] || 동시성 검증 || 데이터 레이스 및 스레드 동기화 문제 감지  &lt;br /&gt;
|-&lt;br /&gt;
| [[gprof]] || 성능 분석 || 함수 호출 빈도·시간 측정 기반의 전통적 프로파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[perf]] || 성능 측정 || [[Linux]] 커널 레벨의 고성능 성능 분석 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perfetto]] || 트레이싱 || [[Android]] 및 [[Chrome]]용 성능 추적 프레임워크  &lt;br /&gt;
|-&lt;br /&gt;
| [[strace]] || 시스템 호출 추적 || [[Linux]] 환경에서 시스템 콜 및 시그널 동작 로깅  &lt;br /&gt;
|-&lt;br /&gt;
| [[DTrace]] || 동적 트레이싱 || [[Solaris]], [[macOS]], [[BSD]] 계열의 실시간 커널·유저 레벨 분석  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 패키지 관리자 ==&lt;br /&gt;
&#039;&#039;&#039;패키지 관리자(Package Manager)&#039;&#039;&#039;는  &lt;br /&gt;
라이브러리 설치, 업데이트, 삭제, 버전 관리, 의존성 해결을 자동화하는 시스템이다.  &lt;br /&gt;
개발자는 개별 라이브러리를 직접 다운로드할 필요 없이  &lt;br /&gt;
패키지 관리자를 통해 중앙 저장소(Repository)에서 필요한 모듈을 손쉽게 가져올 수 있다.  &lt;br /&gt;
&lt;br /&gt;
현대의 패키지 관리자는 단순한 설치 도구를 넘어  &lt;br /&gt;
&#039;&#039;&#039;빌드 시스템과의 통합&#039;&#039;&#039;, &#039;&#039;&#039;테스트 자동화&#039;&#039;&#039;, &#039;&#039;&#039;출시 버전 관리&#039;&#039;&#039;, &#039;&#039;&#039;보안 검증&#039;&#039;&#039;까지 포괄하며,  &lt;br /&gt;
언어별로 고유한 생태계를 형성하고 있다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 도구 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[vcpkg]], [[Conan]] || 바이너리·소스 기반 혼합 지원, 크로스 플랫폼 배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[Cargo]] || 통합 빌드·배포·테스트 시스템, [[Crates.io]] 레지스트리 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[pip]], [[Poetry]] || [[PyPI]] 연동, 가상 환경과 의존성 잠금 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Node.js]] / [[JavaScript]] || [[npm]], [[pnpm]], [[yarn]] || JS 생태계 표준 도구, 빠른 캐싱과 병렬 설치  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[Maven]], [[Gradle]] || XML/DSL 기반 의존성 정의, 중앙 저장소 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] / [[.NET]] || [[NuGet]] || .NET 플랫폼 전용 패키지 배포 및 버전 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[Go Modules]] || 소스 코드 기반 버전 모듈 관리, Git과 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swift Package Manager]] || [[Xcode]]와 통합된 공식 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DUB]] || [[DMD]] 및 [[LDC]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[Cabal]], [[Stack]] || Hackage 저장소 기반 빌드·배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Composer]] || PHP 생태계의 표준 의존성 관리 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Vex]] || [[WSON]] 기반 빌드·패키징·다중 플랫폼 배포 지원  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 통합 개발 환경 (IDE) ==&lt;br /&gt;
&#039;&#039;&#039;통합 개발 환경(Integrated Development Environment, IDE)&#039;&#039;&#039;는  &lt;br /&gt;
코드 작성, 빌드, 디버깅, 테스트, 배포 등의 개발 과정을 하나의 프로그램 내에서 수행할 수 있도록 통합한 소프트웨어이다.  &lt;br /&gt;
&lt;br /&gt;
IDE는 단순한 텍스트 에디터와 달리  &lt;br /&gt;
다음과 같은 구성 요소를 통합 제공한다:&lt;br /&gt;
* &#039;&#039;&#039;코드 편집기(Editor):&#039;&#039;&#039; 구문 강조, 자동 완성, 코드 탐색 기능 제공  &lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템 통합(Build Integration):&#039;&#039;&#039; 컴파일, 링크, 테스트 자동화  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 런타임 실행 제어, 변수 추적, 스택 분석  &lt;br /&gt;
* &#039;&#039;&#039;버전 관리(VCS Integration):&#039;&#039;&#039; [[Git]] 등과 연동한 협업 기능  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리 연동(Package Manager Integration):&#039;&#039;&#039; 의존성 설치 및 관리 지원  &lt;br /&gt;
&lt;br /&gt;
현대의 IDE는 플러그인 확장 구조를 채택하여,  &lt;br /&gt;
다양한 언어와 프레임워크를 통합적으로 지원한다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! IDE !! 주요 언어 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio]] || [[C (프로그래밍 언어)]], [[C++]], [[C＃]] || 마이크로소프트의 대표 IDE, 윈도우 통합 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio Code|VS Code]] || 다중 언어 || 오픈소스, 경량·확장성 중심, 풍부한 확장 마켓  &lt;br /&gt;
|-&lt;br /&gt;
| [[RustRover]] || [[Rust]] || [[JetBrains]] 기반 Rust 전용 IDE, [[Cargo]] 완전 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[IntelliJ IDEA]] || [[Java]], [[Kotlin]] || JVM 언어 중심, 강력한 코드 분석 및 리팩토링  &lt;br /&gt;
|-&lt;br /&gt;
| [[PyCharm]] || [[Python]] || 코드 자동 완성, 디버깅, 테스트 프레임워크 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[CLion]] || [[C (프로그래밍 언어)]], [[C++]], [[Rust]] || [[JetBrains]]의 네이티브 언어 IDE, [[CMake]] 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Xcode]] || [[Swift]], [[Objective-C]] || [[macOS]] 및 [[iOS]] 공식 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Eclipse]] || [[Java]], [[C++]], [[Python]] 등 || 오픈소스, 플러그인 기반 확장 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[NetBeans]] || [[Java]], [[PHP]], [[HTML]] || [[Apache]] 재단 관리, 교육 및 웹 개발 친화적  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rider]] || [[C＃]], [[.NET]] || [[JetBrains]]의 크로스 플랫폼 .NET IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Android Studio]] || [[Kotlin]], [[Java]] || [[Android]] 공식 IDE, [[Gradle]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Qt Creator]] || [[C++]], [[QML]] || [[Qt]] 프레임워크용 공식 IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Code::Blocks]] || [[C (프로그래밍 언어)]], [[C++]] || 오픈소스 경량 IDE, 플러그인 기반 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 중간 표현 (IR) ==&lt;br /&gt;
&#039;&#039;&#039;중간 표현(Intermediate Representation, IR)&#039;&#039;&#039;은  &lt;br /&gt;
컴파일러 내부에서 소스 코드의 의미를 추상화하여 표현한 중간 형태의 코드 구조이다.  &lt;br /&gt;
이는 프론트엔드(Front-end)에서 생성되어, 미들엔드(Middle-end) 최적화를 거친 뒤  &lt;br /&gt;
백엔드(Back-end)에서 기계어로 변환되는 핵심 매개체 역할을 한다.  &lt;br /&gt;
&lt;br /&gt;
IR은 언어의 문법적 복잡성을 제거하고,  &lt;br /&gt;
하드웨어나 플랫폼에 독립적인 형태로 프로그램의 의미를 유지한다.  &lt;br /&gt;
이로써 최적화, 코드 분석, 플랫폼 간 이식성을 효율적으로 구현할 수 있다.  &lt;br /&gt;
&lt;br /&gt;
대표적인 IR은 대부분 &#039;&#039;&#039;SSA(Static Single Assignment)&#039;&#039;&#039; 형식을 채택하며,  &lt;br /&gt;
각 변수는 단 한 번만 할당되어 데이터 흐름 분석이 단순화된다.  &lt;br /&gt;
또한 일부 IR은 가상 머신 실행용(예: JVM Bytecode, WebAssembly)으로 활용되어,  &lt;br /&gt;
컴파일과 실행의 경계를 유연하게 확장한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 명칭 !! 사용 컴파일러 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[LLVM IR]] || [[Clang]], [[Rustc]], [[Swiftc]] || 범용 SSA 기반 IR, [[LLVM]] 미들엔드의 핵심 구성  &lt;br /&gt;
|-&lt;br /&gt;
| [[GIMPLE]] || [[GCC]] || 3단계 중간 표현(고수준–단순화–저수준) 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[MIR]] || [[Rustc]] || [[LLVM]] 이전 단계의 내부 표현, 제어 흐름 기반 분석에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[WAIL]] || [[Whale]] || [[Wave]] 전용 백엔드 IR, “WAIL Assembly Integration Layer”  &lt;br /&gt;
|-&lt;br /&gt;
| [[MLIR]] || [[LLVM Project]] || 멀티 레벨 중간 표현, 다양한 도메인(머신러닝·GPU)에 대응  &lt;br /&gt;
|-&lt;br /&gt;
| [[SIL (Swift Intermediate Language)]] || [[Swiftc]] || [[Swift]] 전용 중간 언어, [[ARC]] 기반 최적화  &lt;br /&gt;
|-&lt;br /&gt;
| [[FIR (Fortran IR)]] || [[Flang]] || [[Fortran]]용 [[LLVM]] 통합 IR, 과학 계산용 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[GHC Core]] || [[GHC]] || [[Haskell]] 전용 함수형 중간 표현, 람다 기반 변환 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[JVM Bytecode]] || [[javac]], [[kotlinc]], [[scalac]] || [[JVM]] 위에서 실행되는 스택 기반 중간 코드  &lt;br /&gt;
|-&lt;br /&gt;
| [[WebAssembly]] || [[Emscripten]], [[V8]], [[Wasmtime]] || 브라우저 및 경량 VM용 범용 중간 표현  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 컴파일러 최적화 기법 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러 최적화(Compiler Optimization)&#039;&#039;&#039;는  &lt;br /&gt;
생성된 코드의 성능을 향상시키거나 메모리 사용량을 줄이기 위해  &lt;br /&gt;
중간 표현(IR) 또는 기계어 단계에서 수행되는 변환 과정이다.  &lt;br /&gt;
&lt;br /&gt;
최적화는 주로 &#039;&#039;&#039;미들엔드(Middle-end)&#039;&#039;&#039; 단계에서 이루어지며,  &lt;br /&gt;
프로그램의 의미(semantic)를 변경하지 않으면서 실행 효율을 높인다.  &lt;br /&gt;
일부 최적화는 타깃 아키텍처에 맞추어 &#039;&#039;&#039;백엔드(Back-end)&#039;&#039;&#039; 단계에서 추가로 수행된다.&lt;br /&gt;
&lt;br /&gt;
대표적인 최적화 기법은 다음과 같다:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Constant Folding (상수 접기)&#039;&#039;&#039; –  &lt;br /&gt;
  컴파일 시점에 상수 표현식을 미리 계산하여 실행 시 연산을 줄인다.  &lt;br /&gt;
  예: `3 * 4` → `12`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dead Code Elimination (죽은 코드 제거)&#039;&#039;&#039; –  &lt;br /&gt;
  실행 결과에 영향을 주지 않는 명령어, 변수, 분기 등을 삭제하여 코드 크기를 축소한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Loop Unrolling (루프 전개)&#039;&#039;&#039; –  &lt;br /&gt;
  반복문 내부의 연산을 여러 번 펼쳐 배치함으로써 루프 제어 오버헤드를 줄인다.  &lt;br /&gt;
  예: `for(i=0;i&amp;lt;4;i++) sum+=a[i];` → 직접 4회 연산 나열&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Inlining (인라이닝)&#039;&#039;&#039; –  &lt;br /&gt;
  짧고 자주 호출되는 함수를 호출 대신 본문으로 삽입하여 함수 호출 오버헤드를 제거한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Register Allocation (레지스터 할당)&#039;&#039;&#039; –  &lt;br /&gt;
  변수나 임시 값을 CPU 레지스터에 효율적으로 배치하여 메모리 접근을 최소화한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instruction Scheduling (명령어 스케줄링)&#039;&#039;&#039; –  &lt;br /&gt;
  명령어 실행 순서를 재배치하여 파이프라인 병목을 줄이고 병렬 실행 효율을 높인다.&lt;br /&gt;
&lt;br /&gt;
이 외에도 다음과 같은 고급 최적화가 존재한다:&lt;br /&gt;
* &#039;&#039;&#039;Common Subexpression Elimination&#039;&#039;&#039; – 동일한 계산을 한 번만 수행  &lt;br /&gt;
* &#039;&#039;&#039;Loop-Invariant Code Motion&#039;&#039;&#039; – 루프 내 불변식을 루프 밖으로 이동  &lt;br /&gt;
* &#039;&#039;&#039;Tail Call Optimization&#039;&#039;&#039; – 재귀 호출을 반복 구조로 변환  &lt;br /&gt;
* &#039;&#039;&#039;Interprocedural Optimization&#039;&#039;&#039; – 함수 간 데이터 흐름 기반 최적화  &lt;br /&gt;
* &#039;&#039;&#039;Vectorization&#039;&#039;&#039; – [[SIMD]] 명령어를 이용해 데이터 병렬 처리  &lt;br /&gt;
&lt;br /&gt;
최적화 수준은 일반적으로 컴파일러 옵션으로 제어되며,  &lt;br /&gt;
예를 들어 [[GCC]]와 [[Clang]]에서는 `-O1`, `-O2`, `-O3`, `-Ofast`, `-Os` 등의 단계를 제공한다.  &lt;br /&gt;
이러한 단계는 코드 크기, 실행 속도, 빌드 시간 사이의 균형을 조절하기 위한 설정이다.&lt;br /&gt;
&lt;br /&gt;
== 현대 컴파일러 트렌드 ==&lt;br /&gt;
현대의 컴파일러는 단순히 코드를 기계어로 변환하는 역할을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;실행 효율&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 다양성&#039;&#039;&#039;, &#039;&#039;&#039;개발 환경 통합&#039;&#039;&#039;, &#039;&#039;&#039;언어 생태계 확장성&#039;&#039;&#039;을 동시에 달성하는 방향으로 발전하고 있다.  &lt;br /&gt;
아래는 현재 컴파일러 기술의 주요 트렌드이다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[just-in-time|JIT (Just-In-Time) 컴파일]]&#039;&#039;&#039; – 실행 시점에 코드의 일부를 기계어로 변환하여 성능과 유연성을 동시에 확보하는 기법. 런타임 중 프로파일링 데이터를 수집해 최적화하며, 대표적으로 [[V8]], [[JVM]], [[.NET CLR]], [[LuaJIT]] 등이 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[ahead-of-time|AOT (Ahead-Of-Time) 컴파일]]&#039;&#039;&#039; – 프로그램 실행 전에 모든 코드를 완전히 컴파일하는 방식으로, 실행 속도와 배포 효율이 높다. [[Rust]], [[Swift]], [[C++]], [[Wave]] 같은 정적 언어들이 주로 채택한다. [[GraalVM]]의 AOT 모드와 같이 JIT 기반 언어에서도 AOT를 병행하는 사례가 늘고 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[멀티 타깃 빌드]]&#039;&#039;&#039; – 하나의 소스 코드로 여러 하드웨어 아키텍처(x86, ARM, RISC-V, WebAssembly 등)에 대응하는 기능. [[LLVM]], [[Whale]], [[GCC]]는 모듈식 백엔드 구조를 통해 이를 지원하며, [[Vex]] 같은 패키지 매니저는 빌드 타깃을 직접 지정할 수 있게 통합된다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[컴파일러 툴체인|자체 툴체인]]&#039;&#039;&#039; – 언어 전용으로 설계된 빌드 및 패키징 시스템을 통합 제공하는 구조. [[Cargo]]([[Rust]]), [[Vex]]([[Wave]]), [[Swift Package Manager]], [[Go Modules]] 등이 이에 속한다. 이는 빌드 자동화, 테스트, 배포를 언어 레벨에서 일원화하여 개발 생태계를 견고하게 만든다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[언어 서버 프로토콜]] (LSP)&#039;&#039;&#039; – [[IDE]]와 컴파일러 간의 실시간 연동을 표준화한 프로토콜. 코드 분석, 자동 완성, 오류 감지 등을 컴파일러가 직접 제공하며, [[VS Code]], [[RustRover]], [[IntelliJ IDEA]] 등 대부분의 IDE가 지원한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[IR 수준 최적화]]&#039;&#039;&#039; – [[LLVM Pass]], [[WAIL Pass]], [[MLIR]]과 같은 중간 표현 레벨에서 수행되는 고급 최적화 기법. 백엔드 독립적으로 적용되어 다양한 플랫폼에서 동일한 최적화 효과를 얻을 수 있다. 이는 현대 컴파일러의 핵심 경쟁력으로 자리 잡고 있다.&lt;br /&gt;
&lt;br /&gt;
현대 컴파일러들은 이러한 기술을 결합하여, &#039;&#039;&#039;다중 아키텍처 대응·지능형 최적화·개발 도구 통합&#039;&#039;&#039;이라는 세 가지 축을 중심으로 진화하고 있다. 이러한 경향은 [[LLVM]], [[Whale]], [[GraalVM]], [[V8]] 등의 오픈소스 프로젝트를 통해 빠르게 확산되고 있다.&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[링커]]  &lt;br /&gt;
* [[어셈블러]]  &lt;br /&gt;
* [[빌드 시스템]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[GCC]]  &lt;br /&gt;
* [[Whale]]  &lt;br /&gt;
* [[Vex]]  &lt;br /&gt;
* [[IDE]]  &lt;br /&gt;
* [[디버거]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Alfred V. Aho, Monica Lam, Ravi Sethi, Jeffrey Ullman, &#039;&#039;Compilers: Principles, Techniques, and Tools&#039;&#039; (Dragon Book)  &lt;br /&gt;
* Chris Lattner, “LLVM: A Compilation Framework for Lifelong Program Analysis &amp;amp; Transformation” (2002)  &lt;br /&gt;
* John Levine, &#039;&#039;Linkers and Loaders&#039;&#039; (2000)  &lt;br /&gt;
* Rustc Dev Guide – [https://rustc-dev-guide.rust-lang.org/]  &lt;br /&gt;
* LLVM Documentation – [https://llvm.org/docs/]  &lt;br /&gt;
* GCC Internals Manual – GNU Project  &lt;br /&gt;
* JetBrains IDE Documentation – 2024 Edition&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=202</id>
		<title>컴파일러와 도구</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=202"/>
		<updated>2025-11-13T12:05:39Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 현대 컴파일러 트렌드 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러와 도구&#039;&#039;&#039;(Compilers and Tools)는  &lt;br /&gt;
프로그래밍 언어로 작성된 소스 코드를 해석, 변환, 최적화, 실행하기 위한  &lt;br /&gt;
&#039;&#039;&#039;소프트웨어 개발 인프라의 핵심 구성 요소&#039;&#039;&#039;이다.  &lt;br /&gt;
&lt;br /&gt;
이들은 단순히 코드를 “기계가 이해할 수 있는 형태로 변환하는 시스템”을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;개발 생산성 향상&#039;&#039;&#039;, &#039;&#039;&#039;코드 품질 보장&#039;&#039;&#039;, &#039;&#039;&#039;성능 최적화&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 간 이식성 확보&#039;&#039;&#039;를 담당한다.  &lt;br /&gt;
&lt;br /&gt;
컴파일러, 인터프리터, 어셈블러, 링커, 디버거, 빌드 시스템, IDE, 패키지 관리자 등은  &lt;br /&gt;
모두 언어의 생명주기 — &#039;&#039;&#039;작성 → 분석 → 변환 → 실행 → 유지보수&#039;&#039;&#039; — 를 구성하는 필수적인 도구군(toolchain)을 이룬다.  &lt;br /&gt;
&lt;br /&gt;
=== 컴파일러 ===&lt;br /&gt;
&#039;&#039;&#039;컴파일러(Compiler)&#039;&#039;&#039;는 고급 언어(high-level language)로 작성된 소스 코드를  &lt;br /&gt;
기계어(machine code) 또는 중간 표현(intermediate representation)으로 변환하는 프로그램이다.  &lt;br /&gt;
이 과정은 일반적으로 다음 단계를 거친다:&lt;br /&gt;
# &#039;&#039;&#039;어휘 분석(Lexical Analysis)&#039;&#039;&#039; — 토큰 단위로 소스 코드를 분해  &lt;br /&gt;
# &#039;&#039;&#039;구문 분석(Syntax Analysis)&#039;&#039;&#039; — 언어의 문법에 따라 트리 구조(AST)를 생성  &lt;br /&gt;
# &#039;&#039;&#039;의미 분석(Semantic Analysis)&#039;&#039;&#039; — 타입, 스코프, 참조 관계를 검증  &lt;br /&gt;
# &#039;&#039;&#039;중간 코드 생성(IR Generation)&#039;&#039;&#039; — 하드웨어 독립적인 내부 표현 생성  &lt;br /&gt;
# &#039;&#039;&#039;최적화(Optimization)&#039;&#039;&#039; — 실행 효율을 높이기 위한 변환 수행  &lt;br /&gt;
# &#039;&#039;&#039;코드 생성(Code Generation)&#039;&#039;&#039; — 타깃 플랫폼의 기계어로 변환  &lt;br /&gt;
&lt;br /&gt;
일부 현대 컴파일러는 이 과정을 여러 모듈로 분리하여,  &lt;br /&gt;
프런트엔드(frontend), 미들엔드(midend), 백엔드(backend) 구조로 구성한다.  &lt;br /&gt;
예: [[LLVM]], [[GCC]], [[Whale (컴파일러 툴체인)]] 등.&lt;br /&gt;
&lt;br /&gt;
=== 기타 개발 도구 ===&lt;br /&gt;
컴파일러 외에도 다음과 같은 다양한 개발 도구가 소프트웨어 품질과 효율성을 높인다:&lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템(Build System):&#039;&#039;&#039; 소스 코드의 컴파일, 링크, 테스트, 배포를 자동화 (예: [[CMake]], [[Ninja]], [[x.py]])  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 실행 중인 프로그램의 동작을 추적하고 오류를 분석 (예: [[GDB]], [[LLDB]])  &lt;br /&gt;
* &#039;&#039;&#039;린터(Linter):&#039;&#039;&#039; 코드 스타일 및 잠재적 버그를 정적 분석으로 탐지 (예: [[Clippy]], [[ESLint]])  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리자(Package Manager):&#039;&#039;&#039; 의존성 관리 및 모듈 배포를 지원 (예: [[Cargo]], [[Vex]], [[npm]])  &lt;br /&gt;
* &#039;&#039;&#039;IDE(통합 개발 환경):&#039;&#039;&#039; 코드 작성, 빌드, 디버깅, 테스트를 통합 제공 (예: [[Visual Studio Code]], [[RustRover]])  &lt;br /&gt;
&lt;br /&gt;
=== 역할과 중요성 ===&lt;br /&gt;
컴파일러와 개발 도구는 프로그래밍 언어 생태계의 기반을 이루며,  &lt;br /&gt;
언어 설계 철학과 밀접하게 연관되어 있다.  &lt;br /&gt;
효율적인 도구 체계는 언어의 확장성, 성능, 보안성, 유지보수성을 직접적으로 좌우한다.  &lt;br /&gt;
&lt;br /&gt;
현대의 개발 환경에서는 단일 컴파일러가 아닌  &lt;br /&gt;
&#039;&#039;&#039;모듈화된 툴체인(toolchain)&#039;&#039;&#039;이 표준으로 자리 잡고 있으며,  &lt;br /&gt;
이러한 구조는 다양한 아키텍처와 플랫폼에서의 고성능 빌드와 이식성을 가능하게 한다.  &lt;br /&gt;
&lt;br /&gt;
== 컴파일러의 구조 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러&#039;&#039;&#039;는 소스 코드를 기계어로 변환하기 위해 일련의 분석과 변환 단계를 거치며,  &lt;br /&gt;
일반적으로 &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;, &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;, &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;의 세 부분으로 구성된다.  &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;는 주로 언어의 문법과 의미를 해석하는 역할을 담당한다. 소스 코드를 분석하여 구조화된 내부 표현(AST)을 생성하고, 타입 검사와 같은 의미적 검증을 수행한다.  &lt;br /&gt;
* &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;는 이 내부 표현을 기반으로 프로그램의 효율을 향상시키는 최적화 단계이다. 불필요한 연산을 제거하고, 실행 속도와 메모리 사용량을 개선한다.  &lt;br /&gt;
* &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;는 최종적으로 타깃 플랫폼에 맞는 기계어 코드나 바이트코드를 생성하며, 여러 오브젝트 파일을 결합(Linking)하여 실행 가능한 프로그램을 만든다.  &lt;br /&gt;
&lt;br /&gt;
아래는 각 단계의 세부 구성이다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 단계 !! 설명 !! 관련 기술&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;어휘 분석 (Lexical Analysis)&#039;&#039;&#039; || 소스 코드를 문자 단위로 읽어 의미 있는 최소 단위(토큰)로 분해한다. || [[Flex]], [[Lex]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;구문 분석 (Syntax Analysis)&#039;&#039;&#039; || 언어의 문법 규칙에 따라 토큰을 구조적으로 해석하고, 추상 구문 트리(AST)를 생성한다. || [[Bison]], [[Yacc]], [[LALR]], [[PEG]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;의미 분석 (Semantic Analysis)&#039;&#039;&#039; || 변수, 함수, 타입의 유효성을 검사하고, 스코프 및 참조 관계를 검증한다. || [[LLVM Clang]], [[GCC Front-end]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;중간 코드 생성 (IR Generation)&#039;&#039;&#039; || 하드웨어에 독립적인 중간 표현(IR, Intermediate Representation)을 생성한다. || [[LLVM IR]], [[GIMPLE]], [[MIR]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;최적화 (Optimization)&#039;&#039;&#039; || 중간 표현 단계에서 프로그램의 성능을 향상시키기 위한 변환을 수행한다. 불필요한 연산 제거(Dead Code Elimination), 상수 접기(Constant Folding), 제어 흐름 단순화(Control Flow Simplification) 등이 포함된다. || SSA, Constant Folding, Dead Code Elimination&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;코드 생성 (Code Generation)&#039;&#039;&#039; || 최적화된 중간 표현을 실제 타깃 플랫폼의 명령어 집합(ISA)에 맞는 기계어 코드 또는 바이트코드로 변환한다. || [[x86_64]], [[ARM]], [[JVM]], [[WebAssembly]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;링킹 (Linking)&#039;&#039;&#039; || 여러 오브젝트 파일과 라이브러리를 결합하여 실행 가능한 단일 바이너리를 생성한다. || [[ld]], [[lld]], [[gold linker]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
현대의 컴파일러는 이러한 단계를 모듈화하여 독립적으로 개선하거나 교체할 수 있으며,  &lt;br /&gt;
대표적인 예로 [[LLVM]]은 프런트엔드, 미들엔드, 백엔드가 명확히 분리된 구조를 가진다.  &lt;br /&gt;
이러한 구조적 분리는 언어 확장, 타깃 아키텍처 추가, 최적화 연구 등 다양한 분야에서 유연성을 제공한다.&lt;br /&gt;
&lt;br /&gt;
== 주요 컴파일러 ==&lt;br /&gt;
아래 표는 대표적인 &#039;&#039;&#039;정적 컴파일러(Static Compiler)&#039;&#039;&#039; 또는 &#039;&#039;&#039;JIT 컴파일러&#039;&#039;&#039;를 정리한 것이다.  &lt;br /&gt;
인터프리터 기반 언어 구현체는 제외되었으며, 각 항목은 언어의 공식 또는 주요 오픈소스 컴파일러를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 컴파일러 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[C (프로그래밍 언어)]] || [[GCC]], [[Clang]], [[TinyCC]] || 전통적인 시스템 언어 컴파일러, 다양한 아키텍처 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[GCC]], [[Clang]], [[MSVC]] || 객체지향 + 저수준 접근성, [[LLVM]] 기반 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[Fortran]] || [[GFortran]], [[Flang]] || 과학·수치 계산 특화, [[LLVM]] 기반 현대화 진행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ada]] || [[GNAT]] || 고신뢰·임베디드 시스템용, [[SPARK]]와 결합 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[Pascal]] || [[Free Pascal]], [[Turbo Pascal]] || 교육용 및 레거시 시스템 유지에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DMD]], [[LDC]], [[GDC]] || C++ 대체 지향, 네이티브·LLVM 백엔드 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[rustc]] || 안전성과 병행성 중심, [[LLVM]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[gc]], [[Gollvm]] || 빠른 빌드와 간결한 런타임 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swiftc]] || [[LLVM]] 기반, [[Objective-C]]와 상호 운용  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] || [[Roslyn]], [[Mono AOT]] || .NET 플랫폼용 컴파일러, API 기반 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[javac]], [[Eclipse Compiler for Java]] || 바이트코드 생성, [[JVM]] 위에서 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Kotlin]] || [[Kotlinc]] || JVM·Native·JS 등 다중 타깃 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[GHC]] || 함수형 언어 전용 고급 최적화, [[LLVM]] 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[OCaml]] || [[OCamlopt]] || 정적 타입 기반 함수형 언어, 네이티브 코드 컴파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[Zig]] || [[Zig Compiler]] || [[LLVM]] 사용, 크로스 컴파일과 성능 중심 설계  &lt;br /&gt;
|-&lt;br /&gt;
| [[Nim]] || [[Nim Compiler]] || [[C]], [[C++]], [[ObjC]] 코드로 트랜스파일, 네이티브 바이너리 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[V (프로그래밍 언어)]] || [[V Compiler]] || 단일 바이너리, 빠른 컴파일 속도  &lt;br /&gt;
|-&lt;br /&gt;
| [[Carbon (프로그래밍 언어)]] || [[Carbon Compiler]] || [[C++]] 후속 실험 언어, [[LLVM]] 인프라 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Whale]] || 차세대 저수준 언어용 [[LLVM]] 대체 툴체인, 고도로 모듈화된 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 인터프리터 ==&lt;br /&gt;
&#039;&#039;&#039;인터프리터(Interpreter)&#039;&#039;&#039;는 프로그램의 소스 코드를 &#039;&#039;&#039;즉시 해석하여 실행&#039;&#039;&#039;하는 소프트웨어이다.  &lt;br /&gt;
컴파일 단계를 거쳐 기계어로 변환하는 대신, 런타임 시점에 명령을 해석하고 수행한다.  &lt;br /&gt;
&lt;br /&gt;
이 방식은 프로그램의 수정·실행 주기가 빠르고, 대화형 환경(Interactive Environment)에 적합하다.  &lt;br /&gt;
주로 [[스크립트 언어]]나 [[동적 타이핑 언어]]에서 사용되며,  &lt;br /&gt;
최근에는 [[JIT (Just-In-Time) 컴파일]]을 결합한 하이브리드 구조가 일반적이다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 대표 인터프리터 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[CPython]], [[PyPy]] || 대표적인 스크립트 언어, JIT 지원 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ruby]] || [[MRI]], [[JRuby]], [[TruffleRuby]] || 순수 객체지향 구조, JVM 기반 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[JavaScript]] || [[V8]], [[SpiderMonkey]], [[JavaScriptCore]] || 브라우저 및 서버 런타임, 고성능 JIT 내장  &lt;br /&gt;
|-&lt;br /&gt;
| [[Lua]] || [[LuaJIT]], [[PUC-Rio Lua]] || 임베디드 시스템 친화적, C API 통합 용이  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Zend Engine]], [[HHVM]] || 서버 사이드 웹 스크립팅, JIT 기반 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perl]] || [[Perl Interpreter]] || 문자열 처리와 정규식에 강력한 기능 제공  &lt;br /&gt;
|-&lt;br /&gt;
| [[R (프로그래밍 언어)]] || [[GNU R]], [[Renjin]] || 통계 계산 및 데이터 분석용 언어  &lt;br /&gt;
|-&lt;br /&gt;
| [[Scheme]] || [[Racket]], [[Guile]], [[Chez Scheme]] || Lisp 계열, 함수형 메타프로그래밍 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Tcl]] || [[Tcl Interpreter]] || 간결한 문법과 확장성, 임베디드 제어용으로 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bash]] || [[GNU Bash]], [[Zsh]] || 셸 환경용 스크립트 해석기, 운영체제 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Elixir]] || [[BEAM VM]] || [[Erlang]] 기반 가상머신, 동시성 처리에 최적화  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 빌드 시스템 ==&lt;br /&gt;
&#039;&#039;&#039;빌드 시스템(Build System)&#039;&#039;&#039;은 여러 소스 파일을 자동으로 컴파일·링크하여 실행 가능한 프로그램이나 라이브러리를 생성하는 &#039;&#039;&#039;소프트웨어 자동화 도구&#039;&#039;&#039;이다.  &lt;br /&gt;
프로젝트가 커질수록 수작업으로 빌드를 관리하기 어려워지기 때문에,  &lt;br /&gt;
빌드 시스템은 &#039;&#039;&#039;의존성 관리&#039;&#039;&#039;, &#039;&#039;&#039;병렬 처리&#039;&#039;&#039;, &#039;&#039;&#039;테스트 실행&#039;&#039;&#039;, &#039;&#039;&#039;패키징&#039;&#039;&#039; 등 다양한 과정을 자동화한다.  &lt;br /&gt;
&lt;br /&gt;
일부 빌드 시스템은 단순한 명령 스크립트를 넘어,  &lt;br /&gt;
독자적인 DSL(Domain Specific Language) 또는 메타 빌드 구조를 제공한다.  &lt;br /&gt;
대표적인 예로 [[CMake]], [[Gradle]], [[Bazel]] 등이 있으며,  &lt;br /&gt;
현대 언어들은 각 언어에 특화된 자체 빌드 도구([[Cargo]], [[x.py]], [[Vex]] 등)를 제공하기도 한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 이름 !! 언어/환경 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Make]] || [[C]], [[C++]] || 전통적인 빌드 자동화 도구, 의존성 기반 명령 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[CMake]] || 다중 언어 || 메타 빌드 시스템, [[Ninja]]·[[Make]] 백엔드 지원, 크로스 플랫폼  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ninja]] || 다중 언어 || 고속·병렬 빌드에 최적화된 경량 빌드 실행기  &lt;br /&gt;
|-&lt;br /&gt;
| [[Meson]] || [[C]], [[C++]], [[Rust]] 등 || Python 유사 DSL, [[Ninja]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[SCons]] || [[Python]] || 완전한 파이썬 스크립팅 기반 빌드 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Premake]] || [[Lua]] || [[Lua]] 기반 설정, IDE 프로젝트 파일 자동 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[QMake]] || [[C++]] ([[Qt]]) || Qt 프레임워크 전용 프로젝트 구성 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Gradle]] || [[Java]], [[Kotlin]] || Groovy/Kotlin DSL 기반, JVM 생태계 표준 빌드 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bazel]] || 다중 언어 || [[Google]]의 대규모 모노레포 빌드용, 캐싱·병렬화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[x.py]] || [[Rust]], [[Wave]] || 통합식 컴파일 파이프라인, 컴파일러 및 툴체인 자체 빌드에 사용  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 디버깅 및 분석 도구 ==&lt;br /&gt;
&#039;&#039;&#039;디버깅 및 분석 도구(Debugging and Analysis Tools)&#039;&#039;&#039;는  &lt;br /&gt;
프로그램의 실행 과정, 메모리 사용, 성능 병목, 시스템 호출 등을 관찰·분석하여  &lt;br /&gt;
오류를 진단하고 최적화를 지원하는 개발 보조 도구이다.  &lt;br /&gt;
&lt;br /&gt;
이러한 도구들은 일반적으로 다음과 같은 목적에 따라 구분된다:&lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 코드의 실행 흐름 제어 및 변수 상태 추적  &lt;br /&gt;
* &#039;&#039;&#039;메모리 분석기(Memory Analyzer):&#039;&#039;&#039; 메모리 누수, 접근 위반 등 런타임 오류 탐지  &lt;br /&gt;
* &#039;&#039;&#039;성능 프로파일러(Profiler):&#039;&#039;&#039; CPU·메모리 사용률, 함수 호출 시간 등 측정  &lt;br /&gt;
* &#039;&#039;&#039;시스템 추적기(System Tracer):&#039;&#039;&#039; 커널 및 시스템 호출 수준에서 동작 모니터링  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 도구 !! 기능 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[GDB]] || 디버거 || GNU 프로젝트의 대표 디버거, 프로세스 실행 중단·단계별 추적·변수 조사 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[LLDB]] || 디버거 || [[LLVM]] 인프라 기반, [[Clang]]과 통합된 현대적 디버거  &lt;br /&gt;
|-&lt;br /&gt;
| [[Valgrind]] || 메모리 분석 || 메모리 누수, 잘못된 접근, 캐시 동작 등을 분석  &lt;br /&gt;
|-&lt;br /&gt;
| [[AddressSanitizer]] || 런타임 검증 || [[Clang]] 및 [[GCC]] 통합 런타임 검증기, 메모리 오류 탐지  &lt;br /&gt;
|-&lt;br /&gt;
| [[ThreadSanitizer]] || 동시성 검증 || 데이터 레이스 및 스레드 동기화 문제 감지  &lt;br /&gt;
|-&lt;br /&gt;
| [[gprof]] || 성능 분석 || 함수 호출 빈도·시간 측정 기반의 전통적 프로파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[perf]] || 성능 측정 || [[Linux]] 커널 레벨의 고성능 성능 분석 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perfetto]] || 트레이싱 || [[Android]] 및 [[Chrome]]용 성능 추적 프레임워크  &lt;br /&gt;
|-&lt;br /&gt;
| [[strace]] || 시스템 호출 추적 || [[Linux]] 환경에서 시스템 콜 및 시그널 동작 로깅  &lt;br /&gt;
|-&lt;br /&gt;
| [[DTrace]] || 동적 트레이싱 || [[Solaris]], [[macOS]], [[BSD]] 계열의 실시간 커널·유저 레벨 분석  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 패키지 관리자 ==&lt;br /&gt;
&#039;&#039;&#039;패키지 관리자(Package Manager)&#039;&#039;&#039;는  &lt;br /&gt;
라이브러리 설치, 업데이트, 삭제, 버전 관리, 의존성 해결을 자동화하는 시스템이다.  &lt;br /&gt;
개발자는 개별 라이브러리를 직접 다운로드할 필요 없이  &lt;br /&gt;
패키지 관리자를 통해 중앙 저장소(Repository)에서 필요한 모듈을 손쉽게 가져올 수 있다.  &lt;br /&gt;
&lt;br /&gt;
현대의 패키지 관리자는 단순한 설치 도구를 넘어  &lt;br /&gt;
&#039;&#039;&#039;빌드 시스템과의 통합&#039;&#039;&#039;, &#039;&#039;&#039;테스트 자동화&#039;&#039;&#039;, &#039;&#039;&#039;출시 버전 관리&#039;&#039;&#039;, &#039;&#039;&#039;보안 검증&#039;&#039;&#039;까지 포괄하며,  &lt;br /&gt;
언어별로 고유한 생태계를 형성하고 있다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 도구 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[vcpkg]], [[Conan]] || 바이너리·소스 기반 혼합 지원, 크로스 플랫폼 배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[Cargo]] || 통합 빌드·배포·테스트 시스템, [[Crates.io]] 레지스트리 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[pip]], [[Poetry]] || [[PyPI]] 연동, 가상 환경과 의존성 잠금 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Node.js]] / [[JavaScript]] || [[npm]], [[pnpm]], [[yarn]] || JS 생태계 표준 도구, 빠른 캐싱과 병렬 설치  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[Maven]], [[Gradle]] || XML/DSL 기반 의존성 정의, 중앙 저장소 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] / [[.NET]] || [[NuGet]] || .NET 플랫폼 전용 패키지 배포 및 버전 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[Go Modules]] || 소스 코드 기반 버전 모듈 관리, Git과 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swift Package Manager]] || [[Xcode]]와 통합된 공식 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DUB]] || [[DMD]] 및 [[LDC]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[Cabal]], [[Stack]] || Hackage 저장소 기반 빌드·배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Composer]] || PHP 생태계의 표준 의존성 관리 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Vex]] || [[WSON]] 기반 빌드·패키징·다중 플랫폼 배포 지원  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 통합 개발 환경 (IDE) ==&lt;br /&gt;
&#039;&#039;&#039;통합 개발 환경(Integrated Development Environment, IDE)&#039;&#039;&#039;는  &lt;br /&gt;
코드 작성, 빌드, 디버깅, 테스트, 배포 등의 개발 과정을 하나의 프로그램 내에서 수행할 수 있도록 통합한 소프트웨어이다.  &lt;br /&gt;
&lt;br /&gt;
IDE는 단순한 텍스트 에디터와 달리  &lt;br /&gt;
다음과 같은 구성 요소를 통합 제공한다:&lt;br /&gt;
* &#039;&#039;&#039;코드 편집기(Editor):&#039;&#039;&#039; 구문 강조, 자동 완성, 코드 탐색 기능 제공  &lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템 통합(Build Integration):&#039;&#039;&#039; 컴파일, 링크, 테스트 자동화  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 런타임 실행 제어, 변수 추적, 스택 분석  &lt;br /&gt;
* &#039;&#039;&#039;버전 관리(VCS Integration):&#039;&#039;&#039; [[Git]] 등과 연동한 협업 기능  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리 연동(Package Manager Integration):&#039;&#039;&#039; 의존성 설치 및 관리 지원  &lt;br /&gt;
&lt;br /&gt;
현대의 IDE는 플러그인 확장 구조를 채택하여,  &lt;br /&gt;
다양한 언어와 프레임워크를 통합적으로 지원한다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! IDE !! 주요 언어 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio]] || [[C (프로그래밍 언어)]], [[C++]], [[C＃]] || 마이크로소프트의 대표 IDE, 윈도우 통합 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio Code|VS Code]] || 다중 언어 || 오픈소스, 경량·확장성 중심, 풍부한 확장 마켓  &lt;br /&gt;
|-&lt;br /&gt;
| [[RustRover]] || [[Rust]] || [[JetBrains]] 기반 Rust 전용 IDE, [[Cargo]] 완전 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[IntelliJ IDEA]] || [[Java]], [[Kotlin]] || JVM 언어 중심, 강력한 코드 분석 및 리팩토링  &lt;br /&gt;
|-&lt;br /&gt;
| [[PyCharm]] || [[Python]] || 코드 자동 완성, 디버깅, 테스트 프레임워크 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[CLion]] || [[C (프로그래밍 언어)]], [[C++]], [[Rust]] || [[JetBrains]]의 네이티브 언어 IDE, [[CMake]] 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Xcode]] || [[Swift]], [[Objective-C]] || [[macOS]] 및 [[iOS]] 공식 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Eclipse]] || [[Java]], [[C++]], [[Python]] 등 || 오픈소스, 플러그인 기반 확장 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[NetBeans]] || [[Java]], [[PHP]], [[HTML]] || [[Apache]] 재단 관리, 교육 및 웹 개발 친화적  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rider]] || [[C＃]], [[.NET]] || [[JetBrains]]의 크로스 플랫폼 .NET IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Android Studio]] || [[Kotlin]], [[Java]] || [[Android]] 공식 IDE, [[Gradle]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Qt Creator]] || [[C++]], [[QML]] || [[Qt]] 프레임워크용 공식 IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Code::Blocks]] || [[C (프로그래밍 언어)]], [[C++]] || 오픈소스 경량 IDE, 플러그인 기반 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 중간 표현 (IR) ==&lt;br /&gt;
&#039;&#039;&#039;중간 표현(Intermediate Representation, IR)&#039;&#039;&#039;은  &lt;br /&gt;
컴파일러 내부에서 소스 코드의 의미를 추상화하여 표현한 중간 형태의 코드 구조이다.  &lt;br /&gt;
이는 프론트엔드(Front-end)에서 생성되어, 미들엔드(Middle-end) 최적화를 거친 뒤  &lt;br /&gt;
백엔드(Back-end)에서 기계어로 변환되는 핵심 매개체 역할을 한다.  &lt;br /&gt;
&lt;br /&gt;
IR은 언어의 문법적 복잡성을 제거하고,  &lt;br /&gt;
하드웨어나 플랫폼에 독립적인 형태로 프로그램의 의미를 유지한다.  &lt;br /&gt;
이로써 최적화, 코드 분석, 플랫폼 간 이식성을 효율적으로 구현할 수 있다.  &lt;br /&gt;
&lt;br /&gt;
대표적인 IR은 대부분 &#039;&#039;&#039;SSA(Static Single Assignment)&#039;&#039;&#039; 형식을 채택하며,  &lt;br /&gt;
각 변수는 단 한 번만 할당되어 데이터 흐름 분석이 단순화된다.  &lt;br /&gt;
또한 일부 IR은 가상 머신 실행용(예: JVM Bytecode, WebAssembly)으로 활용되어,  &lt;br /&gt;
컴파일과 실행의 경계를 유연하게 확장한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 명칭 !! 사용 컴파일러 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[LLVM IR]] || [[Clang]], [[Rustc]], [[Swiftc]] || 범용 SSA 기반 IR, [[LLVM]] 미들엔드의 핵심 구성  &lt;br /&gt;
|-&lt;br /&gt;
| [[GIMPLE]] || [[GCC]] || 3단계 중간 표현(고수준–단순화–저수준) 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[MIR]] || [[Rustc]] || [[LLVM]] 이전 단계의 내부 표현, 제어 흐름 기반 분석에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[WAIL]] || [[Whale]] || [[Wave]] 전용 백엔드 IR, “WAIL Assembly Integration Layer”  &lt;br /&gt;
|-&lt;br /&gt;
| [[MLIR]] || [[LLVM Project]] || 멀티 레벨 중간 표현, 다양한 도메인(머신러닝·GPU)에 대응  &lt;br /&gt;
|-&lt;br /&gt;
| [[SIL (Swift Intermediate Language)]] || [[Swiftc]] || [[Swift]] 전용 중간 언어, [[ARC]] 기반 최적화  &lt;br /&gt;
|-&lt;br /&gt;
| [[FIR (Fortran IR)]] || [[Flang]] || [[Fortran]]용 [[LLVM]] 통합 IR, 과학 계산용 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[GHC Core]] || [[GHC]] || [[Haskell]] 전용 함수형 중간 표현, 람다 기반 변환 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[JVM Bytecode]] || [[javac]], [[kotlinc]], [[scalac]] || [[JVM]] 위에서 실행되는 스택 기반 중간 코드  &lt;br /&gt;
|-&lt;br /&gt;
| [[WebAssembly]] || [[Emscripten]], [[V8]], [[Wasmtime]] || 브라우저 및 경량 VM용 범용 중간 표현  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 컴파일러 최적화 기법 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러 최적화(Compiler Optimization)&#039;&#039;&#039;는  &lt;br /&gt;
생성된 코드의 성능을 향상시키거나 메모리 사용량을 줄이기 위해  &lt;br /&gt;
중간 표현(IR) 또는 기계어 단계에서 수행되는 변환 과정이다.  &lt;br /&gt;
&lt;br /&gt;
최적화는 주로 &#039;&#039;&#039;미들엔드(Middle-end)&#039;&#039;&#039; 단계에서 이루어지며,  &lt;br /&gt;
프로그램의 의미(semantic)를 변경하지 않으면서 실행 효율을 높인다.  &lt;br /&gt;
일부 최적화는 타깃 아키텍처에 맞추어 &#039;&#039;&#039;백엔드(Back-end)&#039;&#039;&#039; 단계에서 추가로 수행된다.&lt;br /&gt;
&lt;br /&gt;
대표적인 최적화 기법은 다음과 같다:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Constant Folding (상수 접기)&#039;&#039;&#039; –  &lt;br /&gt;
  컴파일 시점에 상수 표현식을 미리 계산하여 실행 시 연산을 줄인다.  &lt;br /&gt;
  예: `3 * 4` → `12`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dead Code Elimination (죽은 코드 제거)&#039;&#039;&#039; –  &lt;br /&gt;
  실행 결과에 영향을 주지 않는 명령어, 변수, 분기 등을 삭제하여 코드 크기를 축소한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Loop Unrolling (루프 전개)&#039;&#039;&#039; –  &lt;br /&gt;
  반복문 내부의 연산을 여러 번 펼쳐 배치함으로써 루프 제어 오버헤드를 줄인다.  &lt;br /&gt;
  예: `for(i=0;i&amp;lt;4;i++) sum+=a[i];` → 직접 4회 연산 나열&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Inlining (인라이닝)&#039;&#039;&#039; –  &lt;br /&gt;
  짧고 자주 호출되는 함수를 호출 대신 본문으로 삽입하여 함수 호출 오버헤드를 제거한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Register Allocation (레지스터 할당)&#039;&#039;&#039; –  &lt;br /&gt;
  변수나 임시 값을 CPU 레지스터에 효율적으로 배치하여 메모리 접근을 최소화한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instruction Scheduling (명령어 스케줄링)&#039;&#039;&#039; –  &lt;br /&gt;
  명령어 실행 순서를 재배치하여 파이프라인 병목을 줄이고 병렬 실행 효율을 높인다.&lt;br /&gt;
&lt;br /&gt;
이 외에도 다음과 같은 고급 최적화가 존재한다:&lt;br /&gt;
* &#039;&#039;&#039;Common Subexpression Elimination&#039;&#039;&#039; – 동일한 계산을 한 번만 수행  &lt;br /&gt;
* &#039;&#039;&#039;Loop-Invariant Code Motion&#039;&#039;&#039; – 루프 내 불변식을 루프 밖으로 이동  &lt;br /&gt;
* &#039;&#039;&#039;Tail Call Optimization&#039;&#039;&#039; – 재귀 호출을 반복 구조로 변환  &lt;br /&gt;
* &#039;&#039;&#039;Interprocedural Optimization&#039;&#039;&#039; – 함수 간 데이터 흐름 기반 최적화  &lt;br /&gt;
* &#039;&#039;&#039;Vectorization&#039;&#039;&#039; – [[SIMD]] 명령어를 이용해 데이터 병렬 처리  &lt;br /&gt;
&lt;br /&gt;
최적화 수준은 일반적으로 컴파일러 옵션으로 제어되며,  &lt;br /&gt;
예를 들어 [[GCC]]와 [[Clang]]에서는 `-O1`, `-O2`, `-O3`, `-Ofast`, `-Os` 등의 단계를 제공한다.  &lt;br /&gt;
이러한 단계는 코드 크기, 실행 속도, 빌드 시간 사이의 균형을 조절하기 위한 설정이다.&lt;br /&gt;
&lt;br /&gt;
== 현대 컴파일러 트렌드 ==&lt;br /&gt;
현대의 컴파일러는 단순히 코드를 기계어로 변환하는 역할을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;실행 효율&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 다양성&#039;&#039;&#039;, &#039;&#039;&#039;개발 환경 통합&#039;&#039;&#039;, &#039;&#039;&#039;언어 생태계 확장성&#039;&#039;&#039;을 동시에 달성하는 방향으로 발전하고 있다.  &lt;br /&gt;
아래는 현재 컴파일러 기술의 주요 트렌드이다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[JIT (Just-In-Time) 컴파일]]&#039;&#039;&#039; – 실행 시점에 코드의 일부를 기계어로 변환하여 성능과 유연성을 동시에 확보하는 기법. 런타임 중 프로파일링 데이터를 수집해 최적화하며, 대표적으로 [[V8]], [[JVM]], [[.NET CLR]], [[LuaJIT]] 등이 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[AOT (Ahead-Of-Time) 컴파일]]&#039;&#039;&#039; – 프로그램 실행 전에 모든 코드를 완전히 컴파일하는 방식으로, 실행 속도와 배포 효율이 높다. [[Rust]], [[Swift]], [[C++]], [[Wave]] 같은 정적 언어들이 주로 채택한다. [[GraalVM]]의 AOT 모드와 같이 JIT 기반 언어에서도 AOT를 병행하는 사례가 늘고 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[멀티 타깃 빌드]]&#039;&#039;&#039; – 하나의 소스 코드로 여러 하드웨어 아키텍처(x86, ARM, RISC-V, WebAssembly 등)에 대응하는 기능. [[LLVM]], [[Whale]], [[GCC]]는 모듈식 백엔드 구조를 통해 이를 지원하며, [[Vex]] 같은 패키지 매니저는 빌드 타깃을 직접 지정할 수 있게 통합된다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[자체 툴체인]]&#039;&#039;&#039; – 언어 전용으로 설계된 빌드 및 패키징 시스템을 통합 제공하는 구조. [[Cargo]]([[Rust]]), [[Vex]]([[Wave]]), [[Swift Package Manager]], [[Go Modules]] 등이 이에 속한다. 이는 빌드 자동화, 테스트, 배포를 언어 레벨에서 일원화하여 개발 생태계를 견고하게 만든다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[언어 서버 프로토콜]] (LSP)&#039;&#039;&#039; – [[IDE]]와 컴파일러 간의 실시간 연동을 표준화한 프로토콜. 코드 분석, 자동 완성, 오류 감지 등을 컴파일러가 직접 제공하며, [[VS Code]], [[RustRover]], [[IntelliJ IDEA]] 등 대부분의 IDE가 지원한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[IR 수준 최적화]]&#039;&#039;&#039; – [[LLVM Pass]], [[WAIL Pass]], [[MLIR]]과 같은 중간 표현 레벨에서 수행되는 고급 최적화 기법. 백엔드 독립적으로 적용되어 다양한 플랫폼에서 동일한 최적화 효과를 얻을 수 있다. 이는 현대 컴파일러의 핵심 경쟁력으로 자리 잡고 있다.&lt;br /&gt;
&lt;br /&gt;
현대 컴파일러들은 이러한 기술을 결합하여, &#039;&#039;&#039;다중 아키텍처 대응·지능형 최적화·개발 도구 통합&#039;&#039;&#039;이라는 세 가지 축을 중심으로 진화하고 있다. 이러한 경향은 [[LLVM]], [[Whale]], [[GraalVM]], [[V8]] 등의 오픈소스 프로젝트를 통해 빠르게 확산되고 있다.&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[링커]]  &lt;br /&gt;
* [[어셈블러]]  &lt;br /&gt;
* [[빌드 시스템]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[GCC]]  &lt;br /&gt;
* [[Whale]]  &lt;br /&gt;
* [[Vex]]  &lt;br /&gt;
* [[IDE]]  &lt;br /&gt;
* [[디버거]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Alfred V. Aho, Monica Lam, Ravi Sethi, Jeffrey Ullman, &#039;&#039;Compilers: Principles, Techniques, and Tools&#039;&#039; (Dragon Book)  &lt;br /&gt;
* Chris Lattner, “LLVM: A Compilation Framework for Lifelong Program Analysis &amp;amp; Transformation” (2002)  &lt;br /&gt;
* John Levine, &#039;&#039;Linkers and Loaders&#039;&#039; (2000)  &lt;br /&gt;
* Rustc Dev Guide – [https://rustc-dev-guide.rust-lang.org/]  &lt;br /&gt;
* LLVM Documentation – [https://llvm.org/docs/]  &lt;br /&gt;
* GCC Internals Manual – GNU Project  &lt;br /&gt;
* JetBrains IDE Documentation – 2024 Edition&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=FrameDOS&amp;diff=201</id>
		<title>FrameDOS</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=FrameDOS&amp;diff=201"/>
		<updated>2025-11-13T06:25:10Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{소프트웨어 정보&lt;br /&gt;
 | 이름      = FrameDOS&lt;br /&gt;
 | 개발사    = MonikasStoudias FuchsuaProject&lt;br /&gt;
 | 개발자    = lo99r 외&lt;br /&gt;
 | 출시일    = 예정&lt;br /&gt;
 | 최신 버전 = 레거시 :: 1.0.4&amp;lt;br/&amp;gt;CupCake :: -&lt;br /&gt;
 | 플랫폼    = amd64&lt;br /&gt;
 | 언어      = C, Assembly, C++(레거시)&lt;br /&gt;
 | 라이선스  = MIT&lt;br /&gt;
 | 웹사이트  = https://github.com/fuchsuaproject/FrameDOS&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;FrameDOS&#039;&#039;&#039;는 오픈소스 프로젝트 커뮤니티인 MonikasStoudias FuchsuaProject에서 개발 중인 64비트 기반 운영체제이다.  &lt;br /&gt;
현재 레거시 버전과 차세대 버전인 CupCake 에디션이 함께 개발되고 있다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
* &#039;&#039;&#039;2025-10-08&#039;&#039;&#039; – 개발 발표, 버전 1.0.0 ~ 1.0.3 공개  &lt;br /&gt;
* &#039;&#039;&#039;2025-10-13&#039;&#039;&#039; – 버전 1.0.4 공개  &lt;br /&gt;
* &#039;&#039;&#039;2025-10-22&#039;&#039;&#039; – CupCake 에디션 개발 발표&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=FrameDOS&amp;diff=200</id>
		<title>FrameDOS</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=FrameDOS&amp;diff=200"/>
		<updated>2025-11-10T08:49:37Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 역사 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{소프트웨어 정보&lt;br /&gt;
 | 이름      = FrameDOS &lt;br /&gt;
 | 개발사    = MonikasStoudias FuchsuaProject&lt;br /&gt;
 | 개발자    = lo99r 외&lt;br /&gt;
 | 출시일    = 예정&lt;br /&gt;
 | 최신 버전 = 레거시 :: 1.0.4&amp;lt;br/&amp;gt;CupCake :: -&lt;br /&gt;
 | 플랫폼    = amd64&lt;br /&gt;
 | 언어      = C, Assembly, C++(레거시)&lt;br /&gt;
 | 라이선스  = MIT&lt;br /&gt;
 | 웹사이트  = https://github.com/fuchsuaproject/FrameDOS&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
FrameDOS는 오픈소스 프로젝트 커뮤니티인 MonikasStoudias FuchsuaProject에서 개발중인 64비트 기반 운영체제이다.&lt;br /&gt;
== 역사 ==&lt;br /&gt;
* 2025.10.8 개발 발표, 1.0.0 ~ 1.0.3&lt;br /&gt;
* 2025.10.13 1.0.4&lt;br /&gt;
* 2025.10.22 CupCake 개발 발표&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=199</id>
		<title>Wave</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=199"/>
		<updated>2025-11-10T04:24:06Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 참고 문헌 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{소프트웨어 언어 정보&lt;br /&gt;
 | 이름      = Wave&lt;br /&gt;
 | 로고      = [[File:Wave_logo.png|120px]]&lt;br /&gt;
 | 개발자    = LunaStev&lt;br /&gt;
 | 출시일    = 2025년 1월 14일&lt;br /&gt;
 | 최신 버전 = v0.1.4-pre-beta&lt;br /&gt;
 | 확장자    = &#039;&#039;&#039;.wave&#039;&#039;&#039;&lt;br /&gt;
 | 라이선스  = LSD License&lt;br /&gt;
 | 저장소    = [https://github.com/wavefnd/Wave GitHub]&lt;br /&gt;
 | 웹사이트  = https://wave-lang.dev/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Wave&#039;&#039;&#039;는 시스템 소프트웨어 엔지니어 &#039;&#039;&#039;LunaStev&#039;&#039;&#039;가 개발한 범용 프로그래밍 언어이다.  &lt;br /&gt;
Wave는 저수준 언어의 성능과 고수준 언어의 추상화를 동시에 추구하며, &#039;&#039;“Reimagining Low-Level Programming”&#039;&#039;(저수준 프로그래밍의 재정의)을 철학으로 한다.  &lt;br /&gt;
Rust와 C 계열의 언어 디자인 철학을 계승하면서도, 새로운 문법 구조와 통합 생태계를 통해 다양한 영역(시스템, 네트워크, 웹, AI 등)에서 단일 언어로 개발이 가능하도록 설계되었다.&lt;br /&gt;
&lt;br /&gt;
Wave는 컴파일 언어이며, 기본적으로 LLVM 백엔드를 기반으로 하지만, 장기적으로는 독자적인 툴체인인 &#039;&#039;&#039;Whale&#039;&#039;&#039;을 중심으로 완전한 독립 생태계를 구축할 계획이다. &amp;lt;ref&amp;gt;https://www.wave-lang.dev/docs/ecosystem/whale&amp;lt;/ref&amp;gt;&lt;br /&gt;
또한 패키지 매니저 &#039;&#039;&#039;Vex&#039;&#039;&#039;, 직렬화 포맷 &#039;&#039;&#039;WSON&#039;&#039;&#039;, 표준 라이브러리 집합 등 언어 자체의 통합 환경을 제공한다.  &lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
* &#039;&#039;&#039;2024년 5월&#039;&#039;&#039;: Wave 개발 착수  &lt;br /&gt;
* &#039;&#039;&#039;2024년 12월&#039;&#039;&#039;: LLVM 기반 초기 컴파일러 프로토타입 완성  &lt;br /&gt;
* &#039;&#039;&#039;2025년 1월 14일&#039;&#039;&#039;: Wave 공식 릴리스(버전 0.0.1-pre-alpha)&lt;br /&gt;
* &#039;&#039;&#039;2025년 8월 1일&#039;&#039;&#039;: v0.1.4-pre-beta 출시&lt;br /&gt;
&lt;br /&gt;
== 설계 철학 ==&lt;br /&gt;
Wave의 핵심 철학은 “&#039;&#039;&#039;명시적, 예측 가능, 통합적&#039;&#039;&#039;”이다.  &lt;br /&gt;
이는 단순히 문법적 간결함이 아닌, 시스템 수준까지 일관된 동작을 추구하는 디자인으로 이어진다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;명시적 타입 지정&#039;&#039;&#039; — 모든 변수는 타입을 반드시 선언해야 하며, 타입 추론은 지원하지 않는다.  &lt;br /&gt;
* &#039;&#039;&#039;FFI 최소화&#039;&#039;&#039; — Wave는 외부 언어에 의존하지 않고, 공식적으로 자체 표준 라이브러리로 완결된 생태계를 구축한다.  &lt;br /&gt;
* &#039;&#039;&#039;낮은 복잡도&#039;&#039;&#039; — Rust와 유사한 안전성을 유지하면서, 불필요한 추상화나 복잡한 매크로 시스템을 제거한다.  &lt;br /&gt;
* &#039;&#039;&#039;C 스타일 문법&#039;&#039;&#039; — C 언어의 친숙한 구조를 유지하되, 현대적 오류 처리와 체인 API를 제공한다.  &lt;br /&gt;
* &#039;&#039;&#039;성능 중심&#039;&#039;&#039; — 가비지 컬렉션을 도입하지 않으며, 필요 시 직접 메모리 제어 가능.  &lt;br /&gt;
&lt;br /&gt;
== 언어 구조 ==&lt;br /&gt;
=== 기본 문법 ===&lt;br /&gt;
Wave의 기본 문법은 C/Rust 계열 구조를 기반으로 하며, 함수 중심의 실행 구조를 가진다.  &lt;br /&gt;
모든 프로그램은 반드시 &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; 함수를 포함해야 하며, Wave는 해당 함수를 자동으로 탐색하여 실행한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var name: str = &amp;quot;Wave&amp;quot;;&lt;br /&gt;
    let version: f32 = 0.1;&lt;br /&gt;
    println(&amp;quot;Language: {}, Version: {}&amp;quot;, name, version);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 변수 선언 ===&lt;br /&gt;
* &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt;: 가변 변수 선언  &lt;br /&gt;
* &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;: 불변 변수 선언  &lt;br /&gt;
* 타입은 반드시 명시해야 하며, 다음과 같은 예를 가질 수 있다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
var count: i32 = 10;&lt;br /&gt;
let message: str = &amp;quot;Hello Wave&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 제어문 ===&lt;br /&gt;
Wave는 &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; 등의 제어문을 지원한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var i: i32 = 0;&lt;br /&gt;
    while (i &amp;lt; 5) {&lt;br /&gt;
        if (i == 3) {&lt;br /&gt;
            println(&amp;quot;Reached 3, breaking.&amp;quot;);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
        println(&amp;quot;i = {}&amp;quot;, i);&lt;br /&gt;
        i = i + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 함수 ===&lt;br /&gt;
Wave는 강타입 기반의 함수 선언을 지원하며, 반환 타입은 반드시 명시해야 한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun add(a: i32, b: i32) -&amp;gt; i32 {&lt;br /&gt;
    return a + b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fun main() {&lt;br /&gt;
    let result: i32 = add(5, 3);&lt;br /&gt;
    println(&amp;quot;Result: {}&amp;quot;, result);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 표준 라이브러리 ==&lt;br /&gt;
Wave는 표준 라이브러리와 핵심 모듈을 내장하고 있으며, 각 모듈은 특정 영역을 담당한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 라이브러리 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;sys&#039;&#039;&#039; || 시스템 호출, 프로세스, 메모리 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;file&#039;&#039;&#039; || 파일 입출력, 경로, 권한 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;network&#039;&#039;&#039; || TCP, UDP, HTTP 통신&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;http&#039;&#039;&#039; || HTTP 요청/응답, 인증, 쿠키 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;hardware&#039;&#039;&#039; || 하드웨어 제어, 장치 인터페이스&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;iosys&#039;&#039;&#039; || 콘솔 입출력, 터미널 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;wson&#039;&#039;&#039; || Wave의 직렬화 포맷 (WSON) 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;quantum&#039;&#039;&#039; || 양자 연산 및 시뮬레이션용 인터페이스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Whale 툴체인 ==&lt;br /&gt;
&#039;&#039;&#039;Whale&#039;&#039;&#039;은 Wave의 공식 컴파일러 툴체인으로, LLVM을 완전히 대체하기 위해 설계되었다.  &lt;br /&gt;
모듈형 구조를 기반으로 하며, 아키텍처별 백엔드를 독립적으로 관리할 수 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;모듈형 설계&#039;&#039;&#039; — 아키텍처(x86, ARM 등)별 모듈을 폴더 단위로 분리  &lt;br /&gt;
* &#039;&#039;&#039;WSON 기반 구성 파일&#039;&#039;&#039; — 모든 설정은 &amp;lt;code&amp;gt;.ws&amp;lt;/code&amp;gt; 형식으로 관리  &lt;br /&gt;
* &#039;&#039;&#039;WAIL (WAIL Assembly Integration Layer)&#039;&#039;&#039; — Whale 전용 IR (Intermediate Representation) 포맷  &lt;br /&gt;
&lt;br /&gt;
== Vex 패키지 매니저 ==&lt;br /&gt;
&#039;&#039;&#039;Vex&#039;&#039;&#039;는 Wave 전용 패키지 매니저로, 빌드 및 배포 시스템을 통합한다.  &lt;br /&gt;
명령어 구조는 단순하며, OS별 빌드를 지원한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vex build --linux&lt;br /&gt;
vex build --windows&lt;br /&gt;
vex build --macos&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WSON ==&lt;br /&gt;
&#039;&#039;&#039;WSON&#039;&#039;&#039;(Wave Serialized Object Notation)은 Wave의 공식 데이터 직렬화 포맷이다.&lt;br /&gt;
JSON, YAML, TOML보다 빠르고 간결한 문법을 지향하며 `.ws` 확장자를 사용한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  name = &amp;quot;Wave&amp;quot;,&lt;br /&gt;
  version = 0.1.4,&lt;br /&gt;
  author = &amp;quot;LunaStev&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 활용 ==&lt;br /&gt;
Wave는 범용 언어로서 다양한 분야에 적용될 수 있다:&lt;br /&gt;
* 시스템 프로그래밍 (운영체제, 드라이버, 커널)&lt;br /&gt;
* 웹 백엔드 서버 및 API&lt;br /&gt;
* AI 및 데이터 분석 프레임워크&lt;br /&gt;
* 블록체인 노드 및 스마트 컨트랙트&lt;br /&gt;
* 게임 엔진 및 그래픽 모듈&lt;br /&gt;
* 양자 컴퓨팅 및 과학 시뮬레이션&lt;br /&gt;
&lt;br /&gt;
== 영향과 비교 ==&lt;br /&gt;
Wave는 [[C (프로그래밍 언어)]], [[Rust]], [[Python]], [[Go]]의 영향을 받았으며, 다음과 같은 철학적 비교가 가능하다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 언어 !! 철학적 방향 !! 메모리 모델 !! 안전성&lt;br /&gt;
|-&lt;br /&gt;
| C || 저수준, 수동 제어 || 포인터 기반 || 낮음&lt;br /&gt;
|-&lt;br /&gt;
| Rust || 안전한 시스템 프로그래밍 || 소유권 모델 || 매우 높음&lt;br /&gt;
|-&lt;br /&gt;
| Wave || 단일 언어 통합 생태계 || 명시적 타입 제어 || 높음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[프로그래밍 언어]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[C (프로그래밍 언어)]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[운영체제]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* [https://github.com/wavefnd/Wave Wave GitHub 저장소]  &lt;br /&gt;
* [https://wave-lang.dev/ Wave 공식 사이트]  &lt;br /&gt;
* [https://github.com/wavefnd/Vex Vex 저장소]  &lt;br /&gt;
* [https://github.com/wavefnd/Whale Whale 저장소]  &lt;br /&gt;
* [https://github.com/LunaStev/wson-rust WSON 저장소]&lt;br /&gt;
&lt;br /&gt;
== 각주 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:프로그래밍 언어]]&lt;br /&gt;
[[Category:시스템 프로그래밍]]&lt;br /&gt;
[[Category:2020년대 소프트웨어]]&lt;br /&gt;
[[Category:오픈 소스 소프트웨어]]&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=198</id>
		<title>Wave</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=198"/>
		<updated>2025-11-10T04:21:10Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 변수 선언 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{소프트웨어 언어 정보&lt;br /&gt;
 | 이름      = Wave&lt;br /&gt;
 | 로고      = [[File:Wave_logo.png|120px]]&lt;br /&gt;
 | 개발자    = LunaStev&lt;br /&gt;
 | 출시일    = 2025년 1월 14일&lt;br /&gt;
 | 최신 버전 = v0.1.4-pre-beta&lt;br /&gt;
 | 확장자    = &#039;&#039;&#039;.wave&#039;&#039;&#039;&lt;br /&gt;
 | 라이선스  = LSD License&lt;br /&gt;
 | 저장소    = [https://github.com/wavefnd/Wave GitHub]&lt;br /&gt;
 | 웹사이트  = https://wave-lang.dev/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Wave&#039;&#039;&#039;는 시스템 소프트웨어 엔지니어 &#039;&#039;&#039;LunaStev&#039;&#039;&#039;가 개발한 범용 프로그래밍 언어이다.  &lt;br /&gt;
Wave는 저수준 언어의 성능과 고수준 언어의 추상화를 동시에 추구하며, &#039;&#039;“Reimagining Low-Level Programming”&#039;&#039;(저수준 프로그래밍의 재정의)을 철학으로 한다.  &lt;br /&gt;
Rust와 C 계열의 언어 디자인 철학을 계승하면서도, 새로운 문법 구조와 통합 생태계를 통해 다양한 영역(시스템, 네트워크, 웹, AI 등)에서 단일 언어로 개발이 가능하도록 설계되었다.&lt;br /&gt;
&lt;br /&gt;
Wave는 컴파일 언어이며, 기본적으로 LLVM 백엔드를 기반으로 하지만, 장기적으로는 독자적인 툴체인인 &#039;&#039;&#039;Whale&#039;&#039;&#039;을 중심으로 완전한 독립 생태계를 구축할 계획이다. &amp;lt;ref&amp;gt;https://www.wave-lang.dev/docs/ecosystem/whale&amp;lt;/ref&amp;gt;&lt;br /&gt;
또한 패키지 매니저 &#039;&#039;&#039;Vex&#039;&#039;&#039;, 직렬화 포맷 &#039;&#039;&#039;WSON&#039;&#039;&#039;, 표준 라이브러리 집합 등 언어 자체의 통합 환경을 제공한다.  &lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
* &#039;&#039;&#039;2024년 5월&#039;&#039;&#039;: Wave 개발 착수  &lt;br /&gt;
* &#039;&#039;&#039;2024년 12월&#039;&#039;&#039;: LLVM 기반 초기 컴파일러 프로토타입 완성  &lt;br /&gt;
* &#039;&#039;&#039;2025년 1월 14일&#039;&#039;&#039;: Wave 공식 릴리스(버전 0.0.1-pre-alpha)&lt;br /&gt;
* &#039;&#039;&#039;2025년 8월 1일&#039;&#039;&#039;: v0.1.4-pre-beta 출시&lt;br /&gt;
&lt;br /&gt;
== 설계 철학 ==&lt;br /&gt;
Wave의 핵심 철학은 “&#039;&#039;&#039;명시적, 예측 가능, 통합적&#039;&#039;&#039;”이다.  &lt;br /&gt;
이는 단순히 문법적 간결함이 아닌, 시스템 수준까지 일관된 동작을 추구하는 디자인으로 이어진다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;명시적 타입 지정&#039;&#039;&#039; — 모든 변수는 타입을 반드시 선언해야 하며, 타입 추론은 지원하지 않는다.  &lt;br /&gt;
* &#039;&#039;&#039;FFI 최소화&#039;&#039;&#039; — Wave는 외부 언어에 의존하지 않고, 공식적으로 자체 표준 라이브러리로 완결된 생태계를 구축한다.  &lt;br /&gt;
* &#039;&#039;&#039;낮은 복잡도&#039;&#039;&#039; — Rust와 유사한 안전성을 유지하면서, 불필요한 추상화나 복잡한 매크로 시스템을 제거한다.  &lt;br /&gt;
* &#039;&#039;&#039;C 스타일 문법&#039;&#039;&#039; — C 언어의 친숙한 구조를 유지하되, 현대적 오류 처리와 체인 API를 제공한다.  &lt;br /&gt;
* &#039;&#039;&#039;성능 중심&#039;&#039;&#039; — 가비지 컬렉션을 도입하지 않으며, 필요 시 직접 메모리 제어 가능.  &lt;br /&gt;
&lt;br /&gt;
== 언어 구조 ==&lt;br /&gt;
=== 기본 문법 ===&lt;br /&gt;
Wave의 기본 문법은 C/Rust 계열 구조를 기반으로 하며, 함수 중심의 실행 구조를 가진다.  &lt;br /&gt;
모든 프로그램은 반드시 &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; 함수를 포함해야 하며, Wave는 해당 함수를 자동으로 탐색하여 실행한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var name: str = &amp;quot;Wave&amp;quot;;&lt;br /&gt;
    let version: f32 = 0.1;&lt;br /&gt;
    println(&amp;quot;Language: {}, Version: {}&amp;quot;, name, version);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 변수 선언 ===&lt;br /&gt;
* &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt;: 가변 변수 선언  &lt;br /&gt;
* &amp;lt;code&amp;gt;let&amp;lt;/code&amp;gt;: 불변 변수 선언  &lt;br /&gt;
* 타입은 반드시 명시해야 하며, 다음과 같은 예를 가질 수 있다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
var count: i32 = 10;&lt;br /&gt;
let message: str = &amp;quot;Hello Wave&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 제어문 ===&lt;br /&gt;
Wave는 &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; 등의 제어문을 지원한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var i: i32 = 0;&lt;br /&gt;
    while (i &amp;lt; 5) {&lt;br /&gt;
        if (i == 3) {&lt;br /&gt;
            println(&amp;quot;Reached 3, breaking.&amp;quot;);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
        println(&amp;quot;i = {}&amp;quot;, i);&lt;br /&gt;
        i = i + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 함수 ===&lt;br /&gt;
Wave는 강타입 기반의 함수 선언을 지원하며, 반환 타입은 반드시 명시해야 한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun add(a: i32, b: i32) -&amp;gt; i32 {&lt;br /&gt;
    return a + b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fun main() {&lt;br /&gt;
    let result: i32 = add(5, 3);&lt;br /&gt;
    println(&amp;quot;Result: {}&amp;quot;, result);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 표준 라이브러리 ==&lt;br /&gt;
Wave는 표준 라이브러리와 핵심 모듈을 내장하고 있으며, 각 모듈은 특정 영역을 담당한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 라이브러리 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;sys&#039;&#039;&#039; || 시스템 호출, 프로세스, 메모리 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;file&#039;&#039;&#039; || 파일 입출력, 경로, 권한 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;network&#039;&#039;&#039; || TCP, UDP, HTTP 통신&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;http&#039;&#039;&#039; || HTTP 요청/응답, 인증, 쿠키 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;hardware&#039;&#039;&#039; || 하드웨어 제어, 장치 인터페이스&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;iosys&#039;&#039;&#039; || 콘솔 입출력, 터미널 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;wson&#039;&#039;&#039; || Wave의 직렬화 포맷 (WSON) 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;quantum&#039;&#039;&#039; || 양자 연산 및 시뮬레이션용 인터페이스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Whale 툴체인 ==&lt;br /&gt;
&#039;&#039;&#039;Whale&#039;&#039;&#039;은 Wave의 공식 컴파일러 툴체인으로, LLVM을 완전히 대체하기 위해 설계되었다.  &lt;br /&gt;
모듈형 구조를 기반으로 하며, 아키텍처별 백엔드를 독립적으로 관리할 수 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;모듈형 설계&#039;&#039;&#039; — 아키텍처(x86, ARM 등)별 모듈을 폴더 단위로 분리  &lt;br /&gt;
* &#039;&#039;&#039;WSON 기반 구성 파일&#039;&#039;&#039; — 모든 설정은 &amp;lt;code&amp;gt;.ws&amp;lt;/code&amp;gt; 형식으로 관리  &lt;br /&gt;
* &#039;&#039;&#039;WAIL (WAIL Assembly Integration Layer)&#039;&#039;&#039; — Whale 전용 IR (Intermediate Representation) 포맷  &lt;br /&gt;
&lt;br /&gt;
== Vex 패키지 매니저 ==&lt;br /&gt;
&#039;&#039;&#039;Vex&#039;&#039;&#039;는 Wave 전용 패키지 매니저로, 빌드 및 배포 시스템을 통합한다.  &lt;br /&gt;
명령어 구조는 단순하며, OS별 빌드를 지원한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vex build --linux&lt;br /&gt;
vex build --windows&lt;br /&gt;
vex build --macos&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WSON ==&lt;br /&gt;
&#039;&#039;&#039;WSON&#039;&#039;&#039;(Wave Serialized Object Notation)은 Wave의 공식 데이터 직렬화 포맷이다.&lt;br /&gt;
JSON, YAML, TOML보다 빠르고 간결한 문법을 지향하며 `.ws` 확장자를 사용한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  name = &amp;quot;Wave&amp;quot;,&lt;br /&gt;
  version = 0.1.4,&lt;br /&gt;
  author = &amp;quot;LunaStev&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 활용 ==&lt;br /&gt;
Wave는 범용 언어로서 다양한 분야에 적용될 수 있다:&lt;br /&gt;
* 시스템 프로그래밍 (운영체제, 드라이버, 커널)&lt;br /&gt;
* 웹 백엔드 서버 및 API&lt;br /&gt;
* AI 및 데이터 분석 프레임워크&lt;br /&gt;
* 블록체인 노드 및 스마트 컨트랙트&lt;br /&gt;
* 게임 엔진 및 그래픽 모듈&lt;br /&gt;
* 양자 컴퓨팅 및 과학 시뮬레이션&lt;br /&gt;
&lt;br /&gt;
== 영향과 비교 ==&lt;br /&gt;
Wave는 [[C (프로그래밍 언어)]], [[Rust]], [[Python]], [[Go]]의 영향을 받았으며, 다음과 같은 철학적 비교가 가능하다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 언어 !! 철학적 방향 !! 메모리 모델 !! 안전성&lt;br /&gt;
|-&lt;br /&gt;
| C || 저수준, 수동 제어 || 포인터 기반 || 낮음&lt;br /&gt;
|-&lt;br /&gt;
| Rust || 안전한 시스템 프로그래밍 || 소유권 모델 || 매우 높음&lt;br /&gt;
|-&lt;br /&gt;
| Wave || 단일 언어 통합 생태계 || 명시적 타입 제어 || 높음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[프로그래밍 언어]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[C (프로그래밍 언어)]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[운영체제]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* [https://github.com/wavefnd/Wave Wave GitHub 저장소]  &lt;br /&gt;
* [https://wave-lang.dev/ Wave 공식 사이트]  &lt;br /&gt;
* [https://github.com/wavefnd/Vex Vex 저장소]  &lt;br /&gt;
* [https://github.com/wavefnd/Whale Whale 저장소]  &lt;br /&gt;
* [https://github.com/wavefnd/WSON WSON 저장소]  &lt;br /&gt;
&lt;br /&gt;
== 각주 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:프로그래밍 언어]]&lt;br /&gt;
[[Category:시스템 프로그래밍]]&lt;br /&gt;
[[Category:2020년대 소프트웨어]]&lt;br /&gt;
[[Category:오픈 소스 소프트웨어]]&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=C_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=197</id>
		<title>C (프로그래밍 언어)</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=C_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=197"/>
		<updated>2025-11-10T04:19:07Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{소프트웨어 언어 정보&lt;br /&gt;
 | 이름      = C&lt;br /&gt;
 | 로고      = [[File:C_logo.png|120px]]&lt;br /&gt;
 | 개발자    = &#039;&#039;&#039;Dennis Ritchie&#039;&#039;&#039;&lt;br /&gt;
 | 출시일    = &#039;&#039;&#039;1972년&#039;&#039;&#039;&lt;br /&gt;
 | 최신 버전 = &#039;&#039;&#039;C23 (2023년)&#039;&#039;&#039;&lt;br /&gt;
 | 확장자    = &#039;&#039;.c&#039;&#039;, &#039;&#039;.h&#039;&#039;&lt;br /&gt;
 | 라이선스  = &#039;&#039;&#039;ISO/IEC 9899&#039;&#039;&#039;&lt;br /&gt;
 | 웹사이트  = https://www.open-std.org/jtc1/sc22/wg14/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;C&#039;&#039;&#039;는 1970년대 초 [[Bell Labs]](벨 연구소)에서 &#039;&#039;&#039;Dennis Ritchie&#039;&#039;&#039;가 개발한 범용 프로그래밍 언어이다.  &lt;br /&gt;
당시 Bell Labs는 [[Ken Thompson]]과 Ritchie를 중심으로 새로운 운영체제인 [[Unix]]를 개발하고 있었으며,  &lt;br /&gt;
이 과정에서 기존 어셈블리어 기반 시스템의 한계가 명확히 드러났다.  &lt;br /&gt;
&lt;br /&gt;
1970년대 초의 컴퓨터들은 모두 하드웨어마다 명령어 체계가 달랐고,  &lt;br /&gt;
운영체제나 컴파일러를 이식하려면 전체 코드를 다시 작성해야 했다.  &lt;br /&gt;
이 문제를 해결하기 위해 Bell Labs는 &#039;&#039;&#039;“이식 가능한 운영체제”&#039;&#039;&#039;(portable operating system)를 목표로 삼았고,  &lt;br /&gt;
이를 위해 어셈블리 수준의 제어력을 유지하면서도  &lt;br /&gt;
고급 언어의 구조적 표현을 갖춘 새로운 언어가 필요했다.  &lt;br /&gt;
&lt;br /&gt;
이런 배경 속에서 등장한 언어가 바로 C이다.  &lt;br /&gt;
Ritchie는 Thompson이 개발했던 [[B (프로그래밍 언어)]]를 개선하여,  &lt;br /&gt;
보다 효율적이고 기계 친화적인 설계를 도입했다.  &lt;br /&gt;
C는 1972년 처음 완성되었으며, 이후 1973년에는 Unix 커널 전체를 C로 재작성하는 데 성공했다.  &lt;br /&gt;
이 사건은 컴퓨터 과학사에서 큰 전환점으로 평가되며,  &lt;br /&gt;
C를 “운영체제 수준 언어(system-level language)”로 확립시켰다.  &lt;br /&gt;
&lt;br /&gt;
C의 가장 큰 혁신은 &#039;&#039;&#039;“기계에 가까운 고급 언어(machine-oriented high-level language)”&#039;&#039;&#039;라는 철학에 있다.  &lt;br /&gt;
이 개념은 하드웨어를 직접 제어하면서도  &lt;br /&gt;
코드 구조를 함수와 블록 단위로 조직할 수 있게 함으로써  &lt;br /&gt;
성능과 추상화의 균형을 이루었다.  &lt;br /&gt;
&lt;br /&gt;
C는 다음과 같은 기술적 특징과 철학을 중심으로 설계되었다:&lt;br /&gt;
* &#039;&#039;&#039;Low-level 접근성&#039;&#039;&#039; — 포인터(&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;)와 주소 연산자(&amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;)를 통한 직접 메모리 제어.  &lt;br /&gt;
* &#039;&#039;&#039;High-level 구조화&#039;&#039;&#039; — 조건문, 반복문, 함수, 구조체를 통한 논리적 코드 구성.  &lt;br /&gt;
* &#039;&#039;&#039;Minimalism&#039;&#039;&#039; — 불필요한 문법을 배제하고 단순함 속에서 유연성 제공.  &lt;br /&gt;
* &#039;&#039;&#039;Portability&#039;&#039;&#039; — 기계에 종속되지 않으며, 다른 아키텍처에서도 재컴파일만으로 실행 가능.  &lt;br /&gt;
&lt;br /&gt;
또한 C는 하드웨어에 대한 명시적 제어를 허용하면서도  &lt;br /&gt;
코드를 인간이 읽고 유지보수할 수 있는 수준으로 단순화했다.  &lt;br /&gt;
이 특성 덕분에 C는 컴파일러, 운영체제, 임베디드 시스템, 데이터베이스, 게임 엔진 등  &lt;br /&gt;
거의 모든 영역에서 핵심 언어로 자리 잡았다.  &lt;br /&gt;
&lt;br /&gt;
C의 구조적 단순함은 이후 수많은 언어의 설계에 영향을 미쳤다.  &lt;br /&gt;
[[C++]], [[Objective-C]], [[C#]], [[Rust]], [[Go]], [[Wave]] 등은  &lt;br /&gt;
C의 문법 체계, 메모리 모델, 함수 구조, 제어문을 계승하고 발전시켰다.  &lt;br /&gt;
이로 인해 C는 단순한 언어를 넘어,  &lt;br /&gt;
&#039;&#039;&#039;프로그래밍 언어 설계의 기본 원형(architectural prototype)&#039; 으로 간주된다.  &lt;br /&gt;
&lt;br /&gt;
오늘날에도 C는 새로운 언어와 시스템 설계의 기준으로 기능하며,  &lt;br /&gt;
운영체제 개발, 마이크로컨트롤러 프로그래밍,  &lt;br /&gt;
그리고 현대 언어의 런타임 구현 등에서 없어서는 안 될 존재로 남아 있다.  &lt;br /&gt;
그 철학적 기초는 다음과 같은 문장으로 요약된다.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“C is not just a programming language; it is a way of thinking about machines.”&#039;&#039; — Dennis Ritchie&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
C의 발전사는 단순한 문법 변화가 아닌,  &lt;br /&gt;
운영체제·컴파일러·하드웨어 구조의 발전과 맞물린 진화 과정이다.  &lt;br /&gt;
1970년대 초 탄생한 이후, C는 여러 차례의 표준화를 거치며  &lt;br /&gt;
현대 프로그래밍 언어 체계의 기초를 형성했다.&lt;br /&gt;
&lt;br /&gt;
=== 1970년대: 탄생과 확립 ===&lt;br /&gt;
C는 1972년 [[Bell Labs]]의 &#039;&#039;&#039;Dennis Ritchie&#039;&#039;&#039;가 개발하였다.  &lt;br /&gt;
이 언어는 [[B (프로그래밍 언어)]]와 [[BCPL]]의 영향을 받았으며,  &lt;br /&gt;
당시 PDP-11 컴퓨터 환경에서 [[Unix]] 커널을 효율적으로 작성하기 위해 설계되었다.  &lt;br /&gt;
&lt;br /&gt;
1973년, Unix 커널이 대부분 C로 재작성되면서  &lt;br /&gt;
C는 “기계 독립적인 운영체제 구현”을 가능하게 한 최초의 언어가 되었다.  &lt;br /&gt;
이는 소프트웨어 산업에 이식성(portability)의 개념을 정착시켰다.  &lt;br /&gt;
&lt;br /&gt;
1978년에는 Ritchie와 [[Brian W. Kernighan]]이 저술한  &lt;br /&gt;
&#039;&#039;The C Programming Language&#039;&#039; (일명 &#039;&#039;&#039;K&amp;amp;R C&#039;&#039;&#039;)가 출간되었다.  &lt;br /&gt;
이 책은 사실상 비공식 표준으로 자리 잡았고,  &lt;br /&gt;
전 세계 컴파일러 제작자들이 이를 기반으로 C 구현을 개발하였다.&lt;br /&gt;
&lt;br /&gt;
=== 1980년대: 표준화의 시작 (ANSI C) ===&lt;br /&gt;
C가 다양한 환경에서 쓰이면서 컴파일러 간의 문법 차이가 커지자,  &lt;br /&gt;
언어 표준화 필요성이 대두되었다.  &lt;br /&gt;
&lt;br /&gt;
1983년, &#039;&#039;&#039;ANSI X3J11 위원회&#039;&#039;&#039;가 구성되어  &lt;br /&gt;
공식 표준안을 수립하기 시작했고,  &lt;br /&gt;
1989년 미국표준협회(ANSI)가 이를 승인하였다.  &lt;br /&gt;
&lt;br /&gt;
이 표준은 &#039;&#039;&#039;ANSI X3.159-1989&#039;&#039;&#039;, 즉 &#039;&#039;&#039;ANSI C&#039;&#039;&#039; 혹은 &#039;&#039;&#039;C89&#039;&#039;&#039;로 불리며,  &lt;br /&gt;
다음과 같은 주요 변경이 포함되었다:&lt;br /&gt;
* 함수 선언 형식이 명확히 정의됨 (프로토타입 도입)  &lt;br /&gt;
* 표준 라이브러리 &amp;lt;code&amp;gt;stdlib.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;string.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;assert.h&amp;lt;/code&amp;gt; 추가  &lt;br /&gt;
* 열거형(&amp;lt;code&amp;gt;enum&amp;lt;/code&amp;gt;)과 상수 표현식 개선  &lt;br /&gt;
* 표준 입출력 모델 확립 (&amp;lt;code&amp;gt;stdio.h&amp;lt;/code&amp;gt;)  &lt;br /&gt;
&lt;br /&gt;
ANSI C는 이후 1990년에 ISO에 의해 국제표준으로 승인되며  &lt;br /&gt;
&#039;&#039;&#039;ISO/IEC 9899:1990&#039;&#039;&#039; 혹은 &#039;&#039;&#039;C90&#039;&#039;&#039;으로 불리게 된다.&lt;br /&gt;
&lt;br /&gt;
=== 1990년대: 현대 문법의 기초 (C99) ===&lt;br /&gt;
C89/C90 표준이 제정된 이후,  &lt;br /&gt;
C는 빠르게 발전하는 하드웨어와 컴파일러 기술을 반영해야 했다.  &lt;br /&gt;
그 결과 1999년에 새로운 표준인 &#039;&#039;&#039;C99&#039;&#039;&#039;가 발표되었다.  &lt;br /&gt;
&lt;br /&gt;
C99의 주요 변화는 다음과 같다:&lt;br /&gt;
* &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; 단일행 주석 추가 (C++과의 호환성 확보)  &lt;br /&gt;
* &amp;lt;code&amp;gt;inline&amp;lt;/code&amp;gt; 함수 도입으로 성능 최적화 지원  &lt;br /&gt;
* 가변 길이 배열(VLA, Variable Length Array) 지원  &lt;br /&gt;
* &amp;lt;code&amp;gt;long long&amp;lt;/code&amp;gt; 정수형 및 복소수 타입(&amp;lt;code&amp;gt;_Complex&amp;lt;/code&amp;gt;) 추가  &lt;br /&gt;
* &amp;lt;code&amp;gt;_Bool&amp;lt;/code&amp;gt; 타입과 &amp;lt;code&amp;gt;stdbool.h&amp;lt;/code&amp;gt; 헤더 도입  &lt;br /&gt;
* &amp;lt;code&amp;gt;stdint.h&amp;lt;/code&amp;gt;로 고정 크기 정수형 제공 (예: &amp;lt;code&amp;gt;int32_t&amp;lt;/code&amp;gt;)  &lt;br /&gt;
&lt;br /&gt;
이 시기의 C는 임베디드 시스템, 네트워크 장비, 과학 계산 환경 등  &lt;br /&gt;
다양한 하드웨어에서 활용되며 “산업 표준 언어”로 확립되었다.&lt;br /&gt;
&lt;br /&gt;
=== 2010년대: 병렬화와 안정성 강화 (C11, C17) ===&lt;br /&gt;
멀티코어 프로세서의 보급과 함께, C 언어도 병렬 프로그래밍을 공식적으로 지원하게 되었다.  &lt;br /&gt;
2011년에 발표된 &#039;&#039;&#039;C11&#039;&#039;&#039;은 메모리 모델과 스레드 안전성을 다루는 최초의 C 표준이었다.&lt;br /&gt;
&lt;br /&gt;
C11의 핵심 기능:&lt;br /&gt;
* 멀티스레딩 지원 (&amp;lt;code&amp;gt;_Thread_local&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;atomic&amp;lt;/code&amp;gt; 타입 추가)  &lt;br /&gt;
* 정적 어서션(&amp;lt;code&amp;gt;_Static_assert&amp;lt;/code&amp;gt;)  &lt;br /&gt;
* 익명 구조체 및 공용체 지원  &lt;br /&gt;
* 유니코드 확장 (&amp;lt;code&amp;gt;uchar.h&amp;lt;/code&amp;gt;)  &lt;br /&gt;
* 안전한 표준 함수(&amp;lt;code&amp;gt;gets()&amp;lt;/code&amp;gt; 제거, &amp;lt;code&amp;gt;snprintf()&amp;lt;/code&amp;gt; 권장)  &lt;br /&gt;
&lt;br /&gt;
C11은 사실상 “현대 시스템 언어로서의 C”를 정의한 표준으로 평가된다.  &lt;br /&gt;
&lt;br /&gt;
이후 2018년에 제정된 &#039;&#039;&#039;C17&#039;&#039;&#039;(ISO/IEC 9899:2018)은  &lt;br /&gt;
기능 확장보다는 버그 수정과 정리 중심의 개정판으로,  &lt;br /&gt;
C11의 안정판 역할을 했다.&lt;br /&gt;
&lt;br /&gt;
=== 2020년대: 현대적 개선 (C23) ===&lt;br /&gt;
2023년에 발표된 &#039;&#039;&#039;C23&#039;&#039;&#039;은  &lt;br /&gt;
50년간 유지되어온 C 철학을 유지하면서도  &lt;br /&gt;
현대 프로그래밍 언어의 기능 일부를 흡수했다.  &lt;br /&gt;
&lt;br /&gt;
주요 변경점은 다음과 같다:&lt;br /&gt;
* &amp;lt;code&amp;gt;nullptr&amp;lt;/code&amp;gt; 키워드 도입 (기존 &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; 보완)  &lt;br /&gt;
* UTF-8 문자열 리터럴 표준화 (&amp;lt;code&amp;gt;u8&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;)  &lt;br /&gt;
* &amp;lt;code&amp;gt;typeof&amp;lt;/code&amp;gt; 연산자와 타입 추론식 추가  &lt;br /&gt;
* &amp;lt;code&amp;gt;constexpr&amp;lt;/code&amp;gt;-유사 상수 평가 지원  &lt;br /&gt;
* &amp;lt;code&amp;gt;static_assert&amp;lt;/code&amp;gt; 구문 정식 도입  &lt;br /&gt;
* &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt; 지시어로 바이너리 데이터 삽입 지원  &lt;br /&gt;
&lt;br /&gt;
C23은 “C를 완전히 새로운 언어로 만들지 않으면서도,  &lt;br /&gt;
현대 시스템과 컴파일러 구조를 반영한 실용적 진화”로 평가된다.  &lt;br /&gt;
&lt;br /&gt;
이로써 C는 1970년대의 Unix 개발 언어에서 출발해,  &lt;br /&gt;
2020년대에도 여전히 &#039;&#039;&#039;운영체제·컴파일러·임베디드 시스템·하드웨어 제어의 표준 언어&#039;&#039;&#039;로 사용되고 있다.  &lt;br /&gt;
50년이 넘는 역사 속에서도 그 철학과 구조는 거의 변하지 않았으며,  &lt;br /&gt;
C는 여전히 “가장 단순하면서 가장 근본적인 프로그래밍 언어”로 남아 있다.&lt;br /&gt;
&lt;br /&gt;
== 철학 ==&lt;br /&gt;
C의 설계 철학은 단순한 문법 규칙의 집합이 아니라,  &lt;br /&gt;
컴퓨터 하드웨어를 이해하고 다루는 &#039;&#039;&#039;사고방식(thought paradigm)&#039;&#039;&#039; 에 가깝다.  &lt;br /&gt;
Dennis Ritchie는 C를 “기계에 가까운 고급 언어(machine-oriented high-level language)”로 정의했으며,  &lt;br /&gt;
이는 C가 단순히 프로그래밍 도구를 넘어,  &lt;br /&gt;
‘컴퓨터를 사고하는 방식’을 제시한 언어임을 의미한다.  &lt;br /&gt;
&lt;br /&gt;
C의 철학은 크게 네 가지 원칙으로 정리된다.&lt;br /&gt;
&lt;br /&gt;
=== 1. 최소주의(Minimalism) ===&lt;br /&gt;
C는 “필요한 만큼만 제공한다”는 원칙 아래 설계되었다.  &lt;br /&gt;
언어는 작은 핵심 구조만을 정의하고,  &lt;br /&gt;
그 위에서 복잡한 기능은 프로그래머가 직접 구현하도록 맡긴다.  &lt;br /&gt;
Garbage Collector, 클래스, 예외 처리 등  &lt;br /&gt;
자동화된 추상화 계층은 의도적으로 배제되었다.  &lt;br /&gt;
&lt;br /&gt;
이 철학은 프로그래머에게 &#039;&#039;&#039;절대적인 자유와 책임&#039;&#039;&#039;을 부여하며,  &lt;br /&gt;
그 결과 C는 작은 언어로도 매우 강력한 시스템을 구현할 수 있다.  &lt;br /&gt;
이러한 설계 방식은 훗날 [[Unix]] 철학의 한 부분으로 계승되었으며,  &lt;br /&gt;
“작게 만들고, 단일한 일을 잘하게 하라(Do one thing and do it well)”는 원칙의 기초가 되었다.&lt;br /&gt;
&lt;br /&gt;
=== 2. 기계 지향적 추상화(Machine-Oriented Abstraction) ===&lt;br /&gt;
C는 하드웨어와 직접 상호작용할 수 있는 고급 언어를 목표로 한다.  &lt;br /&gt;
이는 곧 &#039;&#039;&#039;“기계어에 대한 추상화”&#039;&#039;&#039;로,  &lt;br /&gt;
프로그래머가 어셈블리어를 쓰지 않고도  &lt;br /&gt;
메모리 주소, 포인터, 레지스터 수준의 연산을 제어할 수 있게 설계되었다.  &lt;br /&gt;
&lt;br /&gt;
이 개념은 단순히 하드웨어 친화적인 문법을 뜻하지 않는다.  &lt;br /&gt;
C는 “기계의 동작을 그대로 이해하면서 프로그래밍하라”는  &lt;br /&gt;
언어적 사고방식을 형성한다.  &lt;br /&gt;
이로써 C는 하드웨어 제어와 고급 논리 구조를 연결하는  &lt;br /&gt;
‘언어적 인터페이스’ 역할을 하게 되었다.&lt;br /&gt;
&lt;br /&gt;
=== 3. 이식성과 구현의 독립성(Portability and Implementation Freedom) ===&lt;br /&gt;
C는 컴파일러 중심 언어이다.  &lt;br /&gt;
즉, 언어 자체보다 구현(compiler)이 중요하게 설계되었다.  &lt;br /&gt;
언어는 최소한의 규칙만 정의하고,  &lt;br /&gt;
컴파일러는 이를 각 플랫폼에 맞게 변환한다.  &lt;br /&gt;
&lt;br /&gt;
이러한 구조는 “한 번 작성하면 어디서나 실행할 수 있는 코드”라는  &lt;br /&gt;
이식성(portability)의 개념을 실현시켰다.  &lt;br /&gt;
C의 핵심 사상 중 하나는 “언어는 기계에 묶이지 않는다”이며,  &lt;br /&gt;
이는 [[Unix]]가 여러 하드웨어로 이식될 수 있었던 근본 이유였다.  &lt;br /&gt;
&lt;br /&gt;
동시에, C는 &#039;&#039;&#039;정의되지 않은 동작(undefined behavior)&#039;&#039;&#039; 을 허용함으로써  &lt;br /&gt;
컴파일러 최적화와 구현 자유도를 극대화했다.  &lt;br /&gt;
이것은 현대 언어에서는 보기 드문 접근이지만,  &lt;br /&gt;
C의 성능과 단순성을 유지하게 한 핵심 설계이다.&lt;br /&gt;
&lt;br /&gt;
=== 4. 프로그래머 중심 설계(Freedom and Responsibility) ===&lt;br /&gt;
C는 프로그래머에게 거의 모든 권한을 부여한다.  &lt;br /&gt;
메모리 관리, 자료형 변환, 포인터 연산, 비트 연산 등  &lt;br /&gt;
모든 제어권은 사용자에게 있다.  &lt;br /&gt;
그만큼 안전 장치는 최소화되어 있으며,  &lt;br /&gt;
잘못된 접근은 즉시 오류나 크래시를 일으킨다.  &lt;br /&gt;
&lt;br /&gt;
이 구조는 “안전성보다 제어권”을 중시하는 철학을 반영한다.  &lt;br /&gt;
C는 프로그래머를 보호하지 않지만,  &lt;br /&gt;
그 대신 하드웨어와 동일한 수준의 자유를 제공한다.  &lt;br /&gt;
이러한 태도는 “기계와 대등한 언어”라는 C의 정체성을 확립시켰다.&lt;br /&gt;
&lt;br /&gt;
=== 5. 단순함 속의 확장성(Simplicity and Extensibility) ===&lt;br /&gt;
C는 단순하지만 그 위에 모든 복잡한 시스템을 구축할 수 있다.  &lt;br /&gt;
언어 자체는 작지만, 그 조합과 패턴을 통해  &lt;br /&gt;
운영체제, 컴파일러, 그래픽 엔진, 가상 머신까지 표현할 수 있다.  &lt;br /&gt;
&lt;br /&gt;
이것은 C가 “작은 언어이지만 완전한 언어”로 평가받는 이유이다.  &lt;br /&gt;
Ritchie는 한 인터뷰에서 이렇게 말했다.  &lt;br /&gt;
:&#039;&#039;&amp;quot;C was not designed to hide the machine, but to express it efficiently.&amp;quot;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
즉, C의 단순함은 표현의 한계가 아니라,  &lt;br /&gt;
표현 효율성을 극대화하기 위한 선택이었다.&lt;br /&gt;
&lt;br /&gt;
=== 6. 현대 언어에 미친 철학적 영향 ===&lt;br /&gt;
C의 철학은 이후 등장한 수많은 언어의 근본 사상으로 이어졌다.  &lt;br /&gt;
* [[C++]] — C의 구조 위에 객체지향과 캡슐화를 추가.  &lt;br /&gt;
* [[Rust]] — C의 성능과 저수준 제어를 계승하면서 안전성 강화.  &lt;br /&gt;
* [[Go]] — C의 단순성과 명시적 제어를 현대 시스템 프로그래밍에 적용.  &lt;br /&gt;
* [[Wave]] — C의 메모리 모델과 철학을 현대화하여 재구성한 차세대 저수준 언어.  &lt;br /&gt;
&lt;br /&gt;
이처럼 C는 단순히 언어로서의 수명을 넘어,  &lt;br /&gt;
“프로그래밍 언어의 철학적 근원”으로 자리 잡았다.  &lt;br /&gt;
그 기본 이념 — 최소주의, 이식성, 제어권, 단순함 — 은  &lt;br /&gt;
오늘날까지도 모든 시스템 프로그래밍 언어의 뿌리로 남아 있다.&lt;br /&gt;
&lt;br /&gt;
== 주요 특징 ==&lt;br /&gt;
C는 구조적 단순성과 하드웨어 제어 능력을 동시에 갖춘 언어로,  &lt;br /&gt;
다음의 기술적 특징들을 통해 고성능과 유연성을 실현한다.&lt;br /&gt;
&lt;br /&gt;
=== 1. 정적 타입 시스템 (Static Type System) ===&lt;br /&gt;
C는 모든 변수의 자료형을 &#039;&#039;&#039;컴파일 시점&#039;&#039;&#039;에 명시해야 한다.  &lt;br /&gt;
이로 인해 프로그램의 동작이 예측 가능하며,  &lt;br /&gt;
컴파일러가 메모리 크기와 연산 방식을 미리 결정할 수 있다.  &lt;br /&gt;
&lt;br /&gt;
예를 들어 &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;와 &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;의 연산은 컴파일러가 명확히 구분하므로,  &lt;br /&gt;
런타임 오버헤드 없이 수행된다.  &lt;br /&gt;
이는 현대의 동적 언어와 대조되는 &#039;&#039;&#039;정적 분석 기반 설계로,  &lt;br /&gt;
하드웨어에 밀접하게 대응할 수 있게 한다.&lt;br /&gt;
&lt;br /&gt;
또한 C는 &#039;&#039;&#039;암시적 형 변환(implicit cast)&#039;&#039;&#039; 과 &#039;&#039;&#039;명시적 형 변환(explicit cast)&#039;&#039;&#039; 을 모두 지원하여  &lt;br /&gt;
프로그래머에게 연산 제어권을 제공한다.  &lt;br /&gt;
이 특징은 강력하지만, 잘못된 변환으로 인한 &#039;&#039;&#039;정밀도 손실&#039;&#039;&#039;이나 &#039;&#039;&#039;오버플로우의 위험도 존재한다.&lt;br /&gt;
&lt;br /&gt;
=== 2. 포인터와 메모리 직접 제어 (Pointer and Memory Access) ===&lt;br /&gt;
C의 가장 두드러진 특징은 포인터(pointer) 개념이다.  &lt;br /&gt;
포인터는 메모리 주소를 값으로 가지며,  &lt;br /&gt;
이를 통해 메모리 영역을 직접 읽고 쓸 수 있다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int a = 10;&lt;br /&gt;
int *p = &amp;amp;a;&lt;br /&gt;
printf(&amp;quot;%d\n&amp;quot;, *p);  // 10 출력&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
포인터는 C의 강력함이자 위험성의 근원이다.  &lt;br /&gt;
이를 통해 배열, 함수, 구조체 등 모든 데이터에 간접 접근이 가능하며,  &lt;br /&gt;
운영체제 커널이나 드라이버 같은 저수준 시스템 개발에서 필수적이다.  &lt;br /&gt;
&lt;br /&gt;
하지만 잘못된 주소 접근은 즉시 &#039;&#039;&#039;Segmentation Fault&#039;&#039;&#039;를 유발할 수 있으며,  &lt;br /&gt;
이 때문에 C는 “안전하지 않지만 예측 가능한 언어”로 평가된다.&lt;br /&gt;
&lt;br /&gt;
=== 3. 수동 메모리 관리 (Manual Memory Management) ===&lt;br /&gt;
C는 가비지 컬렉션(GC)을 지원하지 않는다.  &lt;br /&gt;
즉, 메모리 할당과 해제는 프로그래머의 책임이다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int *arr = malloc(sizeof(int) * 5);&lt;br /&gt;
...&lt;br /&gt;
free(arr);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;malloc()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;calloc()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;realloc()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;free()&amp;lt;/code&amp;gt; 등의 함수는  &lt;br /&gt;
표준 라이브러리 &amp;lt;code&amp;gt;stdlib.h&amp;lt;/code&amp;gt;에 정의되어 있으며,  &lt;br /&gt;
이 수동 관리 방식은 &#039;&#039;&#039;최대 성능&#039;&#039;&#039;을 제공하지만,  &lt;br /&gt;
잘못 사용하면 &#039;&#039;&#039;메모리 누수(memory leak)&#039;&#039;&#039; 나 &#039;&#039;&#039;이중 해제(double free)&#039;&#039;&#039; 를 초래할 수 있다.  &lt;br /&gt;
&lt;br /&gt;
이 구조는 현대 언어의 자동 메모리 관리와 달리,  &lt;br /&gt;
시스템 자원을 완전히 통제하려는 C의 철학을 반영한다.&lt;br /&gt;
&lt;br /&gt;
=== 4. 전처리기 (Preprocessor) ===&lt;br /&gt;
C 컴파일러는 실제 컴파일 전에 &#039;&#039;&#039;전처리기(preprocessor)&#039;&#039;&#039; 단계를 수행한다.  &lt;br /&gt;
이는 &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; 기호로 시작하는 지시문을 처리하며,  &lt;br /&gt;
코드의 구조적 유연성을 크게 높여준다.&lt;br /&gt;
&lt;br /&gt;
주요 전처리 명령어는 다음과 같다:&lt;br /&gt;
* &amp;lt;code&amp;gt;#include&amp;lt;/code&amp;gt; – 외부 헤더 파일 포함  &lt;br /&gt;
* &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; – 매크로 정의  &lt;br /&gt;
* &amp;lt;code&amp;gt;#ifdef&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;#ifndef&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;#endif&amp;lt;/code&amp;gt; – 조건부 컴파일  &lt;br /&gt;
&lt;br /&gt;
전처리기는 단순한 텍스트 치환이지만,  &lt;br /&gt;
C의 빌드 시스템에 유연성을 제공하며,  &lt;br /&gt;
대형 프로젝트에서 플랫폼별 코드를 관리하는 데 핵심 역할을 한다.&lt;br /&gt;
&lt;br /&gt;
=== 5. 구조적 프로그래밍 (Structured Programming) ===&lt;br /&gt;
C는 절차적 언어이지만, 블록 구조를 도입하여 &#039;&#039;&#039;구조적 프로그래밍&#039;&#039;&#039;을 실현했다.  &lt;br /&gt;
이는 제어 흐름을 함수 단위로 분리하고,  &lt;br /&gt;
조건문(&amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;), 반복문(&amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;),  &lt;br /&gt;
그리고 &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; 문을 통해 명확한 실행 구조를 제공한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
for (int i = 0; i &amp;lt; 5; i++) {&lt;br /&gt;
    printf(&amp;quot;%d\n&amp;quot;, i);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
이러한 구조적 설계는 유지보수성과 가독성을 높였으며,  &lt;br /&gt;
[[B language]]와 [[assembly language]]의 선형적 코드 구조에서 벗어나  &lt;br /&gt;
“논리적 프로그램 구성”의 개념을 정립했다.  &lt;br /&gt;
&lt;br /&gt;
이는 후대 언어인 [[Pascal]], [[C++]], [[Rust]] 등에 계승되었다.&lt;br /&gt;
&lt;br /&gt;
=== 6. 함수 중심 설계 (Function-Centric Architecture) ===&lt;br /&gt;
C는 “모든 코드는 함수 안에서 실행된다”는 구조적 규칙을 따른다.  &lt;br /&gt;
모든 실행 가능한 프로그램은 &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; 함수를 가져야 하며,  &lt;br /&gt;
함수는 명시적인 반환 타입과 매개변수 리스트를 가진다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int add(int a, int b) {&lt;br /&gt;
    return a + b;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C89 이후 표준에서는 함수 선언 시 &#039;&#039;&#039;프로토타입(prototype)&#039;&#039;&#039; 형태가 도입되어  &lt;br /&gt;
컴파일러가 인자 타입을 검사할 수 있게 되었다.  &lt;br /&gt;
이로써 함수 호출 시점의 안정성이 향상되었다.&lt;br /&gt;
&lt;br /&gt;
또한 C의 함수 설계는 이후 [[C++]]의 메서드, [[Rust]]의 함수형 모델,  &lt;br /&gt;
[[Wave]]의 체인 API 등으로 발전했다.&lt;br /&gt;
&lt;br /&gt;
=== 7. 플랫폼 독립성 (Platform Independence) ===&lt;br /&gt;
C는 “기계에 종속되지 않는다”는 목표 아래 설계되었다.  &lt;br /&gt;
이는 특정 CPU나 운영체제에 맞춰진 어셈블리 코드 대신,  &lt;br /&gt;
하드웨어에 독립적인 소스 코드를 작성하고  &lt;br /&gt;
컴파일러가 이를 변환하도록 하는 개념이다.&lt;br /&gt;
&lt;br /&gt;
이식성은 C의 가장 중요한 특징 중 하나로,  &lt;br /&gt;
동일한 코드가 Windows, Linux, macOS, Unix 등  &lt;br /&gt;
거의 모든 환경에서 재컴파일만으로 동작할 수 있다.  &lt;br /&gt;
&lt;br /&gt;
이는 &amp;lt;code&amp;gt;sizeof&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;typedef&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;std*&amp;lt;/code&amp;gt; 계열 타입을 통해  &lt;br /&gt;
플랫폼 간의 메모리 크기 차이를 흡수하는 구조 덕분이다.&lt;br /&gt;
&lt;br /&gt;
=== 8. 표준 라이브러리 (Standard Library) ===&lt;br /&gt;
C의 표준 라이브러리는 언어의 기능을 보완하는 핵심 구성요소이다.  &lt;br /&gt;
파일 입출력, 문자열 처리, 수학 계산, 메모리 관리 등을 포함하며,  &lt;br /&gt;
운영체제 호출 없이도 기본적인 시스템 작업이 가능하게 해준다.&lt;br /&gt;
&lt;br /&gt;
주요 헤더 파일은 다음과 같다:&lt;br /&gt;
* &amp;lt;code&amp;gt;stdio.h&amp;lt;/code&amp;gt; – 표준 입출력  &lt;br /&gt;
* &amp;lt;code&amp;gt;stdlib.h&amp;lt;/code&amp;gt; – 메모리 관리 및 유틸리티  &lt;br /&gt;
* &amp;lt;code&amp;gt;string.h&amp;lt;/code&amp;gt; – 문자열 연산  &lt;br /&gt;
* &amp;lt;code&amp;gt;math.h&amp;lt;/code&amp;gt; – 수학 함수  &lt;br /&gt;
* &amp;lt;code&amp;gt;time.h&amp;lt;/code&amp;gt; – 시간 관련 함수  &lt;br /&gt;
&lt;br /&gt;
표준 라이브러리는 ISO 표준으로 규정되어 있으며,  &lt;br /&gt;
모든 C 구현체는 이를 지원해야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 9. 효율성과 단순성의 결합 (Efficiency and Simplicity) ===&lt;br /&gt;
C는 하드웨어 제어에 가까운 효율성과  &lt;br /&gt;
읽기 쉬운 고급 언어 문법을 결합시킨 언어이다.  &lt;br /&gt;
그 결과, C 프로그램은 빠르고 가볍지만 여전히 이해 가능한 형태를 유지한다.  &lt;br /&gt;
&lt;br /&gt;
이 구조는 C가 반세기 동안 사라지지 않고 유지된 핵심 이유로,  &lt;br /&gt;
운영체제, 컴파일러, 임베디드 시스템 등  &lt;br /&gt;
“성능이 모든 것보다 중요한 환경”에서 여전히 표준으로 남게 했다.&lt;br /&gt;
&lt;br /&gt;
=== 10. 정의되지 않은 동작 (Undefined Behavior) ===&lt;br /&gt;
C는 명시적으로 정의되지 않은 동작을 일부 허용한다.  &lt;br /&gt;
이는 컴파일러가 최적화를 수행할 여지를 남겨주기 위함이다.  &lt;br /&gt;
&lt;br /&gt;
예를 들어, 메모리 경계를 넘는 포인터 접근,  &lt;br /&gt;
초기화되지 않은 변수 사용 등은 “정의되지 않은 동작”으로 분류된다.  &lt;br /&gt;
이러한 유연성은 컴파일러 구현의 자유를 주지만,  &lt;br /&gt;
프로그램 안정성 측면에서는 위험 요인으로 작용한다.  &lt;br /&gt;
&lt;br /&gt;
이 구조는 C가 여전히 빠르고 효율적인 이유이자,  &lt;br /&gt;
동시에 프로그래머에게 높은 수준의 책임을 요구하는 이유이기도 하다.&lt;br /&gt;
&lt;br /&gt;
== 기본 구조 ==&lt;br /&gt;
C 프로그램은 “모든 코드는 함수 내부에서 실행된다”는 구조적 원칙을 따른다.  &lt;br /&gt;
가장 중요한 진입점은 &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; 함수이며,  &lt;br /&gt;
프로그램의 시작과 종료는 항상 이 함수에서 결정된다.  &lt;br /&gt;
&lt;br /&gt;
C는 모듈 기반 구조를 갖는다.  &lt;br /&gt;
각 소스 파일(&amp;lt;code&amp;gt;.c&amp;lt;/code&amp;gt;)은 하나 이상의 함수를 포함하고,  &lt;br /&gt;
헤더 파일(&amp;lt;code&amp;gt;.h&amp;lt;/code&amp;gt;)을 통해 외부 선언과 인터페이스를 공유한다.  &lt;br /&gt;
&lt;br /&gt;
모든 C 프로그램은 다음 세 가지 구성을 가진다:&lt;br /&gt;
# &#039;&#039;&#039;전처리부&#039;&#039;&#039; – &amp;lt;code&amp;gt;#include&amp;lt;/code&amp;gt; 및 &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; 등의 지시문.  &lt;br /&gt;
# &#039;&#039;&#039;함수부&#039;&#039;&#039; – &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; 및 사용자 정의 함수들.  &lt;br /&gt;
# &#039;&#039;&#039;데이터부&#039;&#039;&#039; – 전역 변수, 상수, 구조체 등의 정의.  &lt;br /&gt;
&lt;br /&gt;
다음 예시는 가장 단순한 형태의 C 프로그램 구조이다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    printf(&amp;quot;Hello, World!\n&amp;quot;);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#include&amp;lt;/code&amp;gt;는 전처리기로 표준 라이브러리를 불러오며,  &lt;br /&gt;
&amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; 함수는 프로그램의 진입점(entry point)이다.  &lt;br /&gt;
C 컴파일러는 반드시 &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt;을 찾아 실행을 시작한다.  &lt;br /&gt;
이 구조는 이후 등장한 [[C++]], [[Rust]], [[Wave]] 등에도 그대로 계승되었다.  &lt;br /&gt;
&lt;br /&gt;
C의 구조적 단순함은 컴파일러 설계, 운영체제 개발, 임베디드 시스템 프로그래밍의  &lt;br /&gt;
표준적 사고 방식으로 자리잡았다.&lt;br /&gt;
&lt;br /&gt;
=== 자료형 (Data Types) ===&lt;br /&gt;
C의 자료형은 하드웨어의 메모리 구조와 직접적으로 연결된다.  &lt;br /&gt;
각 자료형은 &#039;&#039;&#039;저장 크기&#039;&#039;&#039;, &#039;&#039;&#039;부호 유무, 연산 가능한 형태를 명시적으로 정의하며,  &lt;br /&gt;
이로 인해 프로그램의 성능과 메모리 효율이 결정된다.&lt;br /&gt;
&lt;br /&gt;
기본 자료형은 다음과 같다:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 분류 !! 자료형 !! 크기 (일반적 기준) !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 정수형 || &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt; || 1 byte || 문자 혹은 8비트 정수&lt;br /&gt;
|-&lt;br /&gt;
| 정수형 || &amp;lt;code&amp;gt;short&amp;lt;/code&amp;gt; || 2 byte || 작은 정수 표현&lt;br /&gt;
|-&lt;br /&gt;
| 정수형 || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || 4 byte || 기본 정수형&lt;br /&gt;
|-&lt;br /&gt;
| 정수형 || &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt; || 4~8 byte || 큰 정수 표현&lt;br /&gt;
|-&lt;br /&gt;
| 부동소수형 || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || 4 byte || 단정밀도 실수&lt;br /&gt;
|-&lt;br /&gt;
| 부동소수형 || &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt; || 8 byte || 배정밀도 실수&lt;br /&gt;
|-&lt;br /&gt;
| 불리언 || &amp;lt;code&amp;gt;_Bool&amp;lt;/code&amp;gt; || 1 byte || C99 이후 도입된 불리언&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C99 표준부터는 &amp;lt;code&amp;gt;stdint.h&amp;lt;/code&amp;gt;를 통해  &lt;br /&gt;
&amp;lt;code&amp;gt;int8_t&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;int32_t&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;uint64_t&amp;lt;/code&amp;gt; 등의  &lt;br /&gt;
고정 크기 정수형이 추가되어 플랫폼 간 일관성이 확보되었다.&lt;br /&gt;
&lt;br /&gt;
또한 C는 복합 자료형을 지원한다:&lt;br /&gt;
* &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt; – 여러 변수를 하나의 논리 단위로 묶는 구조체.  &lt;br /&gt;
* &amp;lt;code&amp;gt;union&amp;lt;/code&amp;gt; – 여러 타입이 동일한 메모리 공간을 공유.  &lt;br /&gt;
* &amp;lt;code&amp;gt;enum&amp;lt;/code&amp;gt; – 상수 집합을 이름으로 정의.  &lt;br /&gt;
* &amp;lt;code&amp;gt;typedef&amp;lt;/code&amp;gt; – 기존 타입에 별칭을 부여.  &lt;br /&gt;
&lt;br /&gt;
C의 자료형 시스템은 매우 단순하지만,  &lt;br /&gt;
이 단순함 덕분에 하드웨어 아키텍처에 직접 대응하는 효율적인 코드 생성을 가능하게 한다.&lt;br /&gt;
&lt;br /&gt;
=== 제어문 (Control Statements) ===&lt;br /&gt;
C의 제어문은 프로그램의 흐름을 결정하는 핵심 구조이다.  &lt;br /&gt;
조건문과 반복문은 어셈블리의 분기 명령(jump, branch)을 고수준으로 추상화한 형태이며,  &lt;br /&gt;
모든 로직 제어의 근본은 이 제어문으로부터 출발한다.&lt;br /&gt;
&lt;br /&gt;
* 조건문: &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;  &lt;br /&gt;
* 선택문: &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt;  &lt;br /&gt;
* 반복문: &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;do-while&amp;lt;/code&amp;gt;  &lt;br /&gt;
* 흐름 제어: &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;goto&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
예시:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
for (int i = 0; i &amp;lt; 5; i++) {&lt;br /&gt;
    if (i == 3) continue;&lt;br /&gt;
    printf(&amp;quot;%d\n&amp;quot;, i);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C의 제어문은 단순히 흐름을 분기시키는 역할을 넘어,  &lt;br /&gt;
명령형 프로그래밍의 논리적 구조를 정의하는 기초이기도 하다.  &lt;br /&gt;
또한, C의 제어문은 직접 기계 명령으로 매핑되기 쉬워  &lt;br /&gt;
컴파일러가 효율적인 최적화를 수행할 수 있게 한다.&lt;br /&gt;
&lt;br /&gt;
=== 메모리와 포인터 (Memory and Pointers) ===&lt;br /&gt;
C의 핵심은 “메모리 주소를 제어할 수 있다”는 점이다.  &lt;br /&gt;
이는 C를 단순한 고급 언어가 아닌 시스템 언어(System Language) 로 만드는 핵심 기능이다.  &lt;br /&gt;
&lt;br /&gt;
포인터는 메모리 주소를 저장하는 변수로,  &lt;br /&gt;
이를 통해 다른 변수의 값을 간접적으로 참조하거나 수정할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int x = 42;&lt;br /&gt;
int *ptr = &amp;amp;x;&lt;br /&gt;
printf(&amp;quot;%d\n&amp;quot;, *ptr);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
여기서 &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt;는 주소 연산자(address-of),  &lt;br /&gt;
&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;는 역참조(dereference) 연산자이다.  &lt;br /&gt;
즉, &amp;lt;code&amp;gt;*ptr&amp;lt;/code&amp;gt;은 &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;의 실제 메모리 값을 읽는 행위이다.&lt;br /&gt;
&lt;br /&gt;
C는 포인터 연산을 통해 다음과 같은 저수준 제어를 가능하게 한다:&lt;br /&gt;
* 직접 메모리 접근 및 수정  &lt;br /&gt;
* 배열과 문자열의 효율적 처리  &lt;br /&gt;
* 함수 포인터를 통한 콜백 구현  &lt;br /&gt;
* 동적 메모리 할당 (&amp;lt;code&amp;gt;malloc()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;free()&amp;lt;/code&amp;gt;)  &lt;br /&gt;
&lt;br /&gt;
이런 구조는 C가 운영체제, 드라이버, 펌웨어 등  &lt;br /&gt;
하드웨어 제어가 필요한 분야에 최적화된 언어로 자리잡게 만든 근본 이유이다.  &lt;br /&gt;
단, 잘못된 주소 접근은 즉시 오류를 발생시킬 수 있으며,  &lt;br /&gt;
이러한 위험성 또한 C 철학의 일부로 간주된다.  &lt;br /&gt;
즉, “자유에는 책임이 따른다”는 것이다.&lt;br /&gt;
&lt;br /&gt;
=== 컴파일 과정 (Compilation Process) ===&lt;br /&gt;
C는 &#039;&#039;&#039;컴파일 언어(Compiled Language)&#039;&#039;&#039; 로,  &lt;br /&gt;
소스 코드는 실행 전 기계어로 변환되어야 한다.  &lt;br /&gt;
컴파일 과정은 다음 네 단계로 구성된다.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;전처리(Preprocessing) —&#039;&#039;&#039; &amp;lt;code&amp;gt;#include&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; 등의 지시문을 처리하며, 조건부 컴파일과 매크로 확장이 이 단계에서 수행된다.  &lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;컴파일(Compilation) —&#039;&#039;&#039; 전처리된 코드를 어셈블리어로 변환한다.     이 과정에서 구문 분석, 타입 검사, 최적화가 이루어진다.  &lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;어셈블(Assembly) —&#039;&#039;&#039; 어셈블리 코드를 목적 파일(&amp;lt;code&amp;gt;.o&amp;lt;/code&amp;gt;)로 변환한다.  &lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;링크(Linking) —&#039;&#039;&#039; 여러 개의 목적 파일과 라이브러리를 결합하여     최종 실행 파일(&amp;lt;code&amp;gt;.exe&amp;lt;/code&amp;gt; 혹은 ELF 바이너리)을 생성한다.&lt;br /&gt;
다음은 리눅스 환경에서의 일반적인 빌드 과정이다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
gcc -E main.c -o main.i     # 전처리&lt;br /&gt;
gcc -S main.i -o main.s     # 컴파일&lt;br /&gt;
gcc -c main.s -o main.o     # 어셈블&lt;br /&gt;
gcc main.o -o main          # 링크&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
이러한 다단계 구조는 C의 단순성뿐 아니라  &lt;br /&gt;
[[compiler]] 설계의 기초를 제시한 모델로 평가된다.  &lt;br /&gt;
대부분의 현대 언어 컴파일러는 이 구조를 기반으로 발전했다.  &lt;br /&gt;
&lt;br /&gt;
컴파일 과정 전반에 걸쳐 C는  &lt;br /&gt;
프로그램을 하드웨어 수준으로 표현하는 언어로서의 본질을 유지한다.  &lt;br /&gt;
그 결과, C는 하드웨어 자원을 효율적으로 활용하면서도  &lt;br /&gt;
읽기 쉬운 코드를 작성할 수 있는 “기계 친화적 고급 언어”라는 평가를 받는다.&lt;br /&gt;
== 표준 매크로 ==&lt;br /&gt;
C 표준은 모든 구현체(컴파일러)가 반드시 정의해야 하는 &#039;&#039;&#039;표준 매크로(Predefined Macros)&#039;&#039;&#039; 를 규정한다.  &lt;br /&gt;
이 매크로들은 컴파일러의 동작 환경, 표준 버전, 플랫폼 정보를 알려주며  &lt;br /&gt;
프로그램이 다양한 시스템에서 올바르게 동작하도록 돕는다.  &lt;br /&gt;
&lt;br /&gt;
표준 매크로는 전처리기(preprocessor) 단계에서 인식되며,  &lt;br /&gt;
실행 시점이 아닌 &#039;&#039;&#039;컴파일 시점&#039;&#039;&#039;에 확정된다.  &lt;br /&gt;
즉, C의 전처리기 언어는 본질적으로 “컴파일러 내부의 정보 인터페이스” 역할을 한다.&lt;br /&gt;
&lt;br /&gt;
=== 주요 매크로 목록 ===&lt;br /&gt;
아래 표는 ISO/IEC 표준에 의해 정의된 대표적인 매크로들과 그 기능을 정리한 것이다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 매크로 이름 !! 설명 !! 도입 표준&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__STDC__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
C 컴파일러가 ANSI/ISO 표준을 준수함을 나타낸다.  &lt;br /&gt;
이 값이 1이면 표준 C 구현임을 의미한다. || C89&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__STDC_VERSION__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
지원하는 C 표준 버전을 나타내는 상수.  &lt;br /&gt;
예:  &lt;br /&gt;
&amp;lt;code&amp;gt;199409L&amp;lt;/code&amp;gt; → C94  &lt;br /&gt;
&amp;lt;code&amp;gt;199901L&amp;lt;/code&amp;gt; → C99  &lt;br /&gt;
&amp;lt;code&amp;gt;201112L&amp;lt;/code&amp;gt; → C11  &lt;br /&gt;
&amp;lt;code&amp;gt;201710L&amp;lt;/code&amp;gt; → C17  &lt;br /&gt;
&amp;lt;code&amp;gt;202311L&amp;lt;/code&amp;gt; → C23 || C90 이후&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__STDC_HOSTED__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
현재 환경이 hosted(표준 라이브러리 사용 가능)인지  &lt;br /&gt;
freestanding(임베디드, 커널 등 독립 환경)인지 표시.  &lt;br /&gt;
1이면 hosted, 0이면 freestanding. || C99&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__FILE__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
현재 컴파일 중인 소스 파일 이름(문자열 형태). || C89&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__LINE__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
현재 코드의 행 번호. 디버깅 및 로깅에 유용하다. || C89&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__DATE__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
컴파일 시점의 날짜 문자열. (예: &amp;quot;Oct 17 2025&amp;quot;) || C89&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__TIME__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
컴파일 시각 문자열. (예: &amp;quot;14:30:42&amp;quot;) || C89&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__func__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
현재 함수 이름을 문자열로 반환.  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void test() {&lt;br /&gt;
    printf(&amp;quot;%s\n&amp;quot;, __func__);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;  &lt;br /&gt;
위 코드는 &amp;quot;test&amp;quot;를 출력한다. || C99&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__STDC_NO_ATOMICS__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
컴파일러가 &amp;lt;code&amp;gt;_Atomic&amp;lt;/code&amp;gt;을 지원하지 않으면 1로 정의됨. || C11&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__STDC_NO_THREADS__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
표준 스레드 라이브러리(&amp;lt;code&amp;gt;threads.h&amp;lt;/code&amp;gt;) 미지원 시 정의됨. || C11&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__STDC_UTF_16__&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;__STDC_UTF_32__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
UTF-16 / UTF-32 문자형을 지원함을 나타냄. || C11&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__STDC_ANALYZABLE__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
정적 분석(static analysis) 지원 여부를 나타냄. || C23&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;__STDC_VERSION_STDINT_H__&amp;lt;/code&amp;gt; ||  &lt;br /&gt;
&amp;lt;code&amp;gt;stdint.h&amp;lt;/code&amp;gt;의 버전을 나타내며,  &lt;br /&gt;
표준 정수형 지원 환경을 확인할 수 있다. || C23&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
이 외에도 각 컴파일러(예: GCC, Clang, MSVC)는  &lt;br /&gt;
독자적인 확장 매크로를 추가로 제공한다.  &lt;br /&gt;
예를 들어 GCC는 &amp;lt;code&amp;gt;__GNUC__&amp;lt;/code&amp;gt;, MSVC는 &amp;lt;code&amp;gt;_MSC_VER&amp;lt;/code&amp;gt;을 정의한다.&lt;br /&gt;
&lt;br /&gt;
=== 매크로의 역할과 의미 ===&lt;br /&gt;
표준 매크로는 단순한 상수가 아니라,  &lt;br /&gt;
&#039;&#039;&#039;컴파일러와 프로그램 사이의 언어적 인터페이스&#039;&#039;&#039;로 작동한다.  &lt;br /&gt;
즉, 런타임이 아닌 “컴파일 타임 환경 정보”를 제공함으로써  &lt;br /&gt;
코드가 환경에 따라 다른 동작을 하도록 제어할 수 있다.&lt;br /&gt;
&lt;br /&gt;
예를 들어, 다음과 같은 코드는 컴파일러별 조건부 빌드를 구현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#ifdef __GNUC__&lt;br /&gt;
    printf(&amp;quot;Compiled with GCC\n&amp;quot;);&lt;br /&gt;
#elif defined(_MSC_VER)&lt;br /&gt;
    printf(&amp;quot;Compiled with MSVC\n&amp;quot;);&lt;br /&gt;
#else&lt;br /&gt;
    printf(&amp;quot;Unknown compiler\n&amp;quot;);&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
이런 구조는 C가 이식성과 구현 독립성을 확보하게 한 핵심 기전이다.  &lt;br /&gt;
즉, 소스 코드는 동일하지만, 컴파일러가 다른 환경에 맞는 기계어를 생성할 수 있도록  &lt;br /&gt;
&#039;&#039;&#039;전처리기 매크로 수준에서 환경 정보를 노출&#039;&#039;&#039;하는 것이다.&lt;br /&gt;
&lt;br /&gt;
=== 철학적 측면 ===&lt;br /&gt;
C의 표준 매크로 시스템은 단순히 전처리 기능을 확장한 것이 아니다.  &lt;br /&gt;
이는 언어 설계 철학인 &#039;&#039;&#039;“언어는 작고, 구현이 강력해야 한다”&#039;&#039;&#039;를 그대로 반영한다.  &lt;br /&gt;
언어는 최소한의 약속만 정의하고,  &lt;br /&gt;
나머지 환경 정보는 전처리기를 통해 컴파일러에게 맡긴다.  &lt;br /&gt;
&lt;br /&gt;
이 구조는 이후 [[C++]], [[Rust]], [[Wave]] 등의 빌드 시스템과 컴파일러 메타 정보 처리에도  &lt;br /&gt;
직접적인 영향을 주었다.  &lt;br /&gt;
특히 Wave 언어의 &amp;lt;code&amp;gt;build.meta&amp;lt;/code&amp;gt; 시스템은  &lt;br /&gt;
C의 전처리 매크로 개념을 발전시킨 예로 평가된다.&lt;br /&gt;
&lt;br /&gt;
결국 표준 매크로는 “언어-컴파일러-하드웨어”를 잇는 중간 계층으로,  &lt;br /&gt;
C가 반세기 동안 &#039;&#039;&#039;이식성과 구현의 자유를 유지&#039;&#039;&#039;할 수 있었던 핵심 장치이다.&lt;br /&gt;
&lt;br /&gt;
== 다른 언어에 끼친 영향 ==&lt;br /&gt;
C는 20세기 후반 이후 등장한 거의 모든 주요 프로그래밍 언어의 기초가 되었다.  &lt;br /&gt;
그 영향은 단순히 문법적 형태를 넘어,  &lt;br /&gt;
언어 설계의 철학·메모리 모델·컴파일 구조·에러 처리 방식 전반에 걸쳐 있다.  &lt;br /&gt;
즉, C는 “언어의 형태”가 아니라 “언어의 사고방식”을 남겼다.&lt;br /&gt;
&lt;br /&gt;
=== 1. 직접적인 후손 언어들 ===&lt;br /&gt;
C의 구조와 문법을 직접 계승한 언어들은 ‘C 계열(C family)’로 불린다.  &lt;br /&gt;
이들은 C의 문법 체계, 표현식 구조, 포인터 또는 참조 개념을 기반으로 발전했다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;C++&#039;&#039;&#039; — 1983년 [[Bjarne Stroustrup]]이 개발. C의 문법을 확장하여 클래스, 객체, 상속, 템플릿 등 &#039;&#039;&#039;객체지향(Object-Oriented)&#039;&#039;&#039; 기능을 추가했다. C++는 C의 하위 호환성을 유지하면서도 하드웨어 제어와 추상화를 동시에 달성한 언어로, “C의 철학을 확장한 언어”로 평가된다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Objective-C&#039;&#039;&#039; — 1980년대 [[Brad Cox]]와 [[Tom Love]]가 개발. C 문법 위에 Smalltalk의 메시징 개념을 결합했다. [[NeXTSTEP]], [[macOS]], [[iOS]] 등 Apple의 소프트웨어 생태계를 이끌었다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;C#&#039;&#039;&#039; — [[Microsoft]]의 [[Anders Hejlsberg]]가 설계. C/C++ 문법을 기반으로 .NET Framework에서 동작하도록 설계되었다. C의 문법적 익숙함을 유지하면서도 가비지 컬렉션과 런타임 안정성을 도입하였다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Java&#039;&#039;&#039; — C++의 구문을 단순화하고 메모리 모델을 추상화하였다. 완전한 가상 머신 환경에서 동작하지만, 여전히 제어문·연산자·타입 구조 등 대부분의 기본 문법은 C와 동일하다.&lt;br /&gt;
이 계열의 언어들은 공통적으로 “C처럼 보이되, C보다 안전한 언어”를 목표로 한다.&lt;br /&gt;
&lt;br /&gt;
=== 2. 간접적인 영향 (언어 구조와 철학) ===&lt;br /&gt;
C의 영향은 문법뿐 아니라 언어 설계 사상에도 깊이 스며들어 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Rust&#039;&#039;&#039; — C의 저수준 제어 철학을 계승하되, 소유권(Ownership) 시스템과 빌드타임 검증을 통해 메모리 안전성을 확보했다. “C without undefined behavior”라는 평가를 받는다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Go&#039;&#039;&#039; — C의 단순성과 명시적 제어 구조를 계승하여 동시성(concurrency)과 네트워크 시스템 프로그래밍에 맞게 현대화했다. [[Ken Thompson]]과 [[Rob Pike]]가 참여한 점에서 C의 정신적 후속 언어로 간주된다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;D language&#039;&#039;&#039; — C와 C++의 성능을 유지하면서 현대 언어의 추상화와 메모리 관리 기능을 통합하였다. C 코드와의 상호운용성이 강조된다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Swift&#039;&#039;&#039; — Objective-C 이후 [[Apple]]의 시스템 언어로, C 기반 런타임을 현대적 타입 시스템으로 대체했다. 하지만 내부 ABI와 런타임 구조는 여전히 C의 영향 아래 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wave&#039;&#039;&#039; — 차세대 시스템 언어로, C의 메모리 모델과 컴파일 철학을 근본적으로 계승하면서 불필요한 복잡성을 제거하고 새로운 문법 구조를 실험한다. C의 “기계에 가까운 추상화” 개념을 그대로 유지한 대표적 현대 후손이다.&lt;br /&gt;
=== 3. 언어 내부 개념으로서의 영향 ===&lt;br /&gt;
C는 후대 언어들의 내부 구조에도 깊은 흔적을 남겼다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;연산자 구조 (Operator Semantics)&#039;&#039;&#039; — 대부분의 언어는 C의 연산자 체계를 그대로 사용한다. 예: &amp;lt;code&amp;gt;++&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt; 등. 이 표기법은 사실상 “산업 표준 연산자 표기”로 자리잡았다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;표준 라이브러리 구조&#039;&#039;&#039; — C의 &amp;lt;code&amp;gt;stdio&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;stdlib&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; 헤더 모델은 이후 언어의 모듈 시스템과 패키지 구조 설계의 기초가 되었다.  &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;컴파일 모델&#039;&#039;&#039; — 전처리기 → 컴파일 → 어셈블 → 링크로 이어지는 빌드 파이프라인은 [[C++]], [[Objective-C]], [[Rust]], [[Wave]]까지 계승되었다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;정의되지 않은 동작(Undefined Behavior)&#039;&#039;&#039; 개념 — 이는 C의 철학적 유산 중 하나로, 일부 언어는 이를 완전히 제거(Rust, Swift), 일부는 제한적 형태로 유지(C++, D)하며 발전했다.&lt;br /&gt;
=== 4. 프로그래밍 언어 문화에 끼친 영향 ===&lt;br /&gt;
C는 단순히 기술적 토대가 아니라,  &lt;br /&gt;
프로그래밍 문화 전반에도 거대한 영향을 미쳤다.&lt;br /&gt;
&lt;br /&gt;
* “Hello, World!” 프로그램의 관습은 C 교재인 &#039;&#039;The C Programming Language&#039;&#039;에서 처음 등장하였다.  &lt;br /&gt;
&lt;br /&gt;
* “함수는 프로그램의 기본 단위”라는 개념은 C 이후 대부분의 언어 설계의 전제가 되었다.  &lt;br /&gt;
&lt;br /&gt;
* C의 문법은 교육·연구·산업용 언어 모두의 공통 문법으로 자리 잡았다. 오늘날 대부분의 프로그래머는 C 계열 문법을 통해 다른 언어를 빠르게 학습할 수 있게 되었다.&lt;br /&gt;
=== 5. 철학적 계승 ===&lt;br /&gt;
C는 단순히 기능의 출발점이 아니라,  &lt;br /&gt;
“언어 설계의 철학적 기준점”이 되었다.  &lt;br /&gt;
&lt;br /&gt;
그 영향은 다음 세 가지 축으로 이어진다:&lt;br /&gt;
* &#039;&#039;&#039;단순함의 힘 (Simplicity)&#039;&#039;&#039; — 불필요한 추상화를 제거하고, 본질에 집중.  &lt;br /&gt;
* &#039;&#039;&#039;제어의 자유 (Control)&#039;&#039;&#039; — 언어가 아닌 프로그래머가 메모리를 다스린다.  &lt;br /&gt;
* &#039;&#039;&#039;효율성의 철학 (Efficiency)&#039;&#039;&#039; — 하드웨어의 성능을 직접 이끌어내는 언어.  &lt;br /&gt;
&lt;br /&gt;
이러한 정신은 현대 언어들이 아무리 발전해도  &lt;br /&gt;
여전히 C를 기준으로 비교·분석되는 이유이다.&lt;br /&gt;
&lt;br /&gt;
결국 C는 단순한 언어가 아니라,  &lt;br /&gt;
&#039;&#039;&#039;프로그래밍 언어 역사의 좌표계&#039;&#039;&#039;로서 기능한다.  &lt;br /&gt;
모든 언어는 C 이전과 C 이후로 구분된다.&lt;br /&gt;
&lt;br /&gt;
== 현대적 평가 ==&lt;br /&gt;
C는 1970년대 초에 설계된 언어이지만,  &lt;br /&gt;
2020년대에도 여전히 세계에서 가장 중요한 시스템 프로그래밍 언어 중 하나로 자리하고 있다.  &lt;br /&gt;
그 위치는 단순한 “역사적 유산”이 아니라,  &lt;br /&gt;
현대 컴퓨팅 구조의 근본이 여전히 C 위에 존재하기 때문이다.&lt;br /&gt;
&lt;br /&gt;
=== 1. 지속적인 산업적 영향력 ===&lt;br /&gt;
대부분의 운영체제, 임베디드 펌웨어, 컴파일러, 네트워크 스택,  &lt;br /&gt;
그리고 데이터베이스 엔진은 여전히 C로 작성되어 있거나 C와 밀접하게 연결되어 있다.  &lt;br /&gt;
대표적으로 [[Linux]] 커널, [[Windows]] NT 커널, [[macOS]]의 Darwin 계층,  &lt;br /&gt;
[[PostgreSQL]], [[MySQL]], [[Redis]], [[Nginx]] 등은 모두 C를 기반으로 하고 있다.  &lt;br /&gt;
&lt;br /&gt;
이러한 시스템들은 단순한 응용 프로그램이 아니라,  &lt;br /&gt;
다른 모든 소프트웨어가 의존하는 &#039;&#039;&#039;컴퓨팅 인프라의 핵심&#039;&#039;&#039;이다.  &lt;br /&gt;
즉, C는 “모든 고급 언어가 돌아가는 토대 언어”로 기능한다.  &lt;br /&gt;
&lt;br /&gt;
현대의 대부분의 하드웨어 API와 운영체제 인터페이스는  &lt;br /&gt;
C ABI(Application Binary Interface)를 표준으로 사용한다.  &lt;br /&gt;
이는 곧 C가 단순한 언어가 아니라 &#039;&#039;&#039;시스템 레벨의 공용 언어(Common Language of Systems)&#039;&#039;&#039; 임을 의미한다.&lt;br /&gt;
&lt;br /&gt;
=== 2. 기술적 장점과 생존 이유 ===&lt;br /&gt;
C가 반세기 동안 사라지지 않은 이유는 다음과 같은 기술적 특성 덕분이다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예측 가능한 성능 (Deterministic Performance)&#039;&#039;&#039; – C는 가비지 컬렉션이나 런타임 관리가 없기 때문에 실행 시간과 메모리 사용량이 완전히 예측 가능하다. 이는 실시간 시스템, 임베디드 장비, 커널 프로그래밍에 필수적이다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;직접적인 하드웨어 제어 (Direct Hardware Control)&#039;&#039;&#039; – 포인터와 비트 단위 연산을 통해 메모리·레지스터·장치에 직접 접근 가능하다. 이 특성은 현대의 어떤 고급 언어도 완전히 대체하지 못한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;단순한 컴파일 모델 (Simple Compilation Model)&#039;&#039;&#039; – C는 전처리 → 컴파일 → 어셈블 → 링크의 단일 경로를 유지하며, 언어 자체가 복잡한 런타임이나 가상 머신을 필요로 하지 않는다. 이 단순함은 이식성과 안정성을 높였다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;언어적 투명성 (Transparency)&#039;&#039;&#039; – 코드가 실제 기계 동작과 거의 일치한다. 즉, 프로그래머는 어셈블리 수준에서 프로그램의 메모리 배치와 실행 흐름을 예측할 수 있다.  &lt;br /&gt;
결국 C는 “성능, 단순함, 제어권”이라는 세 가지 축에서 여전히 타 언어보다 우위를 점하고 있다.&lt;br /&gt;
&lt;br /&gt;
=== 3. 한계와 비판 ===&lt;br /&gt;
C는 강력하지만, 현대적 요구에는 몇 가지 본질적인 한계를 갖고 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;메모리 안전성 결여&#039;&#039;&#039; — 포인터 연산과 수동 메모리 관리는 높은 자유도를 주지만, 동시에 버퍼 오버플로우(buffer overflow), 유효하지 않은 참조(segfault), use-after-free 등 심각한 보안 문제를 유발한다. 실제로 2020년대에도 수많은 보안 취약점이 C 코드에서 비롯된다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;정의되지 않은 동작 (Undefined Behavior)&#039;&#039;&#039; — C 표준은 성능 최적화를 위해 일부 동작을 정의하지 않는다. 하지만 이로 인해 코드의 재현성이 떨어지고, 다른 컴파일러에서의 동작 차이를 초래한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;표현력의 한계&#039;&#039;&#039; — C는 객체지향, 제너릭, 예외 처리 등 현대 언어의 추상화 기능을 지원하지 않는다. 복잡한 시스템을 작성할 때는 보조 언어나 별도의 프레임워크가 필요하다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;개발 생산성 문제 —&#039;&#039;&#039;  메모리 관리, 포인터 처리, 수동 디버깅 등으로 인한 진입 장벽이 높고, 개발 속도가 느리다는 점에서 대규모 응용 소프트웨어 개발에는 부적합하다는 평가도 존재한다.&lt;br /&gt;
이러한 한계로 인해 C는 더 이상 “만능 언어”는 아니며,  &lt;br /&gt;
[[Rust]], [[Go]], [[Wave]] 같은 후속 시스템 언어들이  &lt;br /&gt;
안전성과 효율성을 동시에 추구하며 등장하게 되었다.&lt;br /&gt;
&lt;br /&gt;
=== 4. 교육적·철학적 가치 ===&lt;br /&gt;
그럼에도 불구하고, C는 여전히 &#039;&#039;&#039;컴퓨터 과학 교육의 핵심 언어&#039;&#039;&#039;로 남아 있다.  &lt;br /&gt;
이는 단순히 역사적 이유 때문이 아니라,  &lt;br /&gt;
C가 “컴퓨터의 근본 원리”를 가장 직접적으로 드러내기 때문이다.  &lt;br /&gt;
&lt;br /&gt;
C를 배우는 것은 단순한 프로그래밍이 아니라  &lt;br /&gt;
메모리 구조, 포인터, 컴파일러 동작, CPU 명령어 모델을 이해하는 과정이다.  &lt;br /&gt;
이 때문에 전 세계의 대학, 연구소, 기업 교육 과정에서  &lt;br /&gt;
C는 “모든 언어의 기초가 되는 언어”로 가르쳐진다.  &lt;br /&gt;
&lt;br /&gt;
또한 철학적 관점에서 C는  &lt;br /&gt;
“언어가 인간을 보호하기보다, 인간이 기계를 다스려야 한다”는  &lt;br /&gt;
초기 시스템 프로그래밍 정신을 대표한다.  &lt;br /&gt;
이 철학은 현대 언어가 자동화와 추상화로 나아가도  &lt;br /&gt;
여전히 C가 유지되는 이유 중 하나이다.&lt;br /&gt;
&lt;br /&gt;
=== 5. C의 현재 위치 ===&lt;br /&gt;
오늘날 C는 새로운 기능이 빠르게 추가되는 언어는 아니다. 대신 “변하지 않는 안정성”과 “확립된 생태계”로 평가받는다. C는 현대 언어들처럼 혁신을 목표로 하지 않으며, 대부분의 변화는 기존 표준의 보완과 안정화에 초점이 맞춰져 있다.  &lt;br /&gt;
&lt;br /&gt;
C23 이후의 C는 [[LLVM]]·[[GCC]]·[[Clang]]과 같은 고도화된 컴파일러 인프라와 함께 여전히 커널, 네트워크, 하드웨어 제어, 실시간 처리 분야의 주력 언어로 남아 있다. 그 역할은 더 이상 “새로운 언어의 경쟁자”가 아니라 “모든 언어의 기준(reference language)”이다.&lt;br /&gt;
&lt;br /&gt;
=== 6. 종합 평가 ===&lt;br /&gt;
C는 현대 소프트웨어 세계의 기초이자, 언어 철학의 중심축으로 남아 있다. 그 단순함과 위험성은 동시에 가장 큰 강점이며, 성능과 통제력 면에서 여전히 무적에 가깝다.  &lt;br /&gt;
&lt;br /&gt;
결국 C는 “완벽하지 않지만 완전히 이해 가능한 언어”이며, 그 존재는 기술 그 자체의 역사와 동일하다.  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&amp;quot;C is both the origin and the gravity of programming languages.&amp;quot;&#039;&#039; — TechPedia Editorial&lt;br /&gt;
&lt;br /&gt;
== 구현체 ==&lt;br /&gt;
&lt;br /&gt;
=== 최초의 C 컴파일러 ===&lt;br /&gt;
최초의 C 컴파일러는 공식적인 명칭이 존재하지 않으며, &#039;&#039;&#039;Dennis Ritchie&#039;&#039;&#039;에 의해 개발되었다. 개발 시기는 1972년경으로, 초기 [[Unix]] 시스템이 구동되던 [[PDP-11]] 환경에서 작성되었다. 당시 컴파일러는 [[어셈블리어]]로 구현되었으며, 상위 언어로부터 직접 기계어를 생성하는 형태의 단순한 일단계 컴파일러였다.&lt;br /&gt;
&lt;br /&gt;
이 초기 버전은 [[B (프로그래밍 언어)]]의 컴파일러를 기반으로 발전하였고, 이후 C 언어 자체의 안정화와 함께 &#039;&#039;&#039;Dennis Ritchie&#039;&#039;&#039;가 해당 컴파일러를 C 언어로 재작성하면서 완전한 [[셀프호스팅]] 환경이 이루어졌다. 이 과정은 현대 프로그래밍 언어 개발의 중요한 이정표로 평가되며, C 언어가 자신을 컴파일할 수 있게 된 최초의 사례로 기록된다. 결과적으로 이 컴파일러는 [[Unix]] [[Unix|커널]]과 핵심 유틸리티의 C 언어화를 가능하게 하여, 오늘날 대부분의 시스템 프로그래밍 언어의 기반을 마련하였다.&lt;br /&gt;
&lt;br /&gt;
그가 C로 작성한 C 컴파일러 소스이다. [https://github.com/LunaStev/legacy-cc legacy-cc]&lt;br /&gt;
&lt;br /&gt;
=== 컴파일러 ===&lt;br /&gt;
&lt;br /&gt;
* [[GNU Compiler Collection]]&lt;br /&gt;
* [[LLVM|Clang / LLVM]]&lt;br /&gt;
* [[Microsoft Visual C++]]&lt;br /&gt;
* [[TinyCC]]&lt;br /&gt;
* [[Portable C Compiler]]&lt;br /&gt;
* [[Local C Compiler]]&lt;br /&gt;
* [[Small Device C Compiler]]&lt;br /&gt;
* [[Intel C Compiler]]&lt;br /&gt;
* [[Watcom C Compiler]]&lt;br /&gt;
* [[Borland Turbo C / C++]]&lt;br /&gt;
* [[Comeau C/C++]]&lt;br /&gt;
* [[LCC-Win32]]&lt;br /&gt;
* [[cproc]]&lt;br /&gt;
* [[8cc]]&lt;br /&gt;
* [[chibicc]]&lt;br /&gt;
* [[pcc68k]]&lt;br /&gt;
* [[vbcc]]&lt;br /&gt;
* [[cfront]]&lt;br /&gt;
&lt;br /&gt;
=== 인터프리터 ===&lt;br /&gt;
&lt;br /&gt;
* [[CINT]]&lt;br /&gt;
* [[Ch Interpreter]]&lt;br /&gt;
* [[Cling]]&lt;br /&gt;
* [[C-REPL]]&lt;br /&gt;
* [[CSharpRepl]]&lt;br /&gt;
&lt;br /&gt;
== 관련 문서 ==&lt;br /&gt;
* [[프로그래밍 언어]]  &lt;br /&gt;
* [[B (프로그래밍 언어)]]  &lt;br /&gt;
* [[C++]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[Wave]]  &lt;br /&gt;
* [[어셈블리어]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[운영체제]]  &lt;br /&gt;
* [[Unix]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Dennis M. Ritchie &amp;amp; Brian W. Kernighan, &#039;&#039;The C Programming Language&#039;&#039;, Prentice Hall, 1978.  &lt;br /&gt;
* ISO/IEC 9899:2023 – Information technology — Programming languages — C (C23 표준).  &lt;br /&gt;
* ISO/IEC JTC1/SC22/WG14, [https://www.open-std.org/jtc1/sc22/wg14/ 공식 C 언어 표준 위원회 웹사이트].  &lt;br /&gt;
* Bell Labs Computer Science Research Center, &#039;&#039;The Development of the C Language&#039;&#039;, Dennis Ritchie, 1993.  &lt;br /&gt;
* Bjarne Stroustrup, &#039;&#039;A History of C++: 1979–1991&#039;&#039;, ACM SIGPLAN Notices, Vol. 28, No. 3, 1993.  &lt;br /&gt;
* GNU Project, [https://gcc.gnu.org GCC (GNU Compiler Collection) 공식 문서].  &lt;br /&gt;
* Clang Project, [https://clang.llvm.org Clang: C Language Family Frontend for LLVM].&lt;br /&gt;
&lt;br /&gt;
[[Category:프로그래밍 언어]]&lt;br /&gt;
[[Category:C 계열 언어]]&lt;br /&gt;
[[Category:시스템 프로그래밍]]&lt;br /&gt;
[[Category:1970년대 소프트웨어]]&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=TechPedia%ED%86%A0%EB%A1%A0:%ED%86%A0%EB%A1%A0&amp;diff=196</id>
		<title>TechPedia토론:토론</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=TechPedia%ED%86%A0%EB%A1%A0:%ED%86%A0%EB%A1%A0&amp;diff=196"/>
		<updated>2025-11-09T12:28:17Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: /* 여기는 TechPedia 자체에 대해 토론을 하는 곳입니다. */ 새 문단&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 여기는 TechPedia 자체에 대해 토론을 하는 곳입니다. ==&lt;br /&gt;
&lt;br /&gt;
여기는 TechPedia 자체에 대해 토론을 하는 곳입니다. 문서에 대한 토론은 각 문서에 토론에서 해주세요.&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=TechPedia%ED%86%A0%EB%A1%A0:%ED%86%A0%EB%A1%A0&amp;diff=195</id>
		<title>TechPedia토론:토론</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=TechPedia%ED%86%A0%EB%A1%A0:%ED%86%A0%EB%A1%A0&amp;diff=195"/>
		<updated>2025-11-09T12:27:32Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 빈 문서를 만듦&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=TechPedia:%ED%86%A0%EB%A1%A0&amp;diff=194</id>
		<title>TechPedia:토론</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=TechPedia:%ED%86%A0%EB%A1%A0&amp;diff=194"/>
		<updated>2025-11-09T12:27:26Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 빈 문서를 만듦&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EB%B6%84%EB%A5%98:%EC%98%A4%ED%94%88_%EC%86%8C%EC%8A%A4_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4&amp;diff=193</id>
		<title>분류:오픈 소스 소프트웨어</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EB%B6%84%EB%A5%98:%EC%98%A4%ED%94%88_%EC%86%8C%EC%8A%A4_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4&amp;diff=193"/>
		<updated>2025-11-09T12:27:06Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 빈 문서를 만듦&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EB%B6%84%EB%A5%98:2020%EB%85%84%EB%8C%80_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4&amp;diff=192</id>
		<title>분류:2020년대 소프트웨어</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EB%B6%84%EB%A5%98:2020%EB%85%84%EB%8C%80_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4&amp;diff=192"/>
		<updated>2025-11-09T12:26:42Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 빈 문서를 만듦&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EB%B6%84%EB%A5%98:%EC%8B%9C%EC%8A%A4%ED%85%9C_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&amp;diff=191</id>
		<title>분류:시스템 프로그래밍</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EB%B6%84%EB%A5%98:%EC%8B%9C%EC%8A%A4%ED%85%9C_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&amp;diff=191"/>
		<updated>2025-11-09T12:26:33Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 빈 문서를 만듦&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EB%B6%84%EB%A5%98:%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4&amp;diff=190</id>
		<title>분류:프로그래밍 언어</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EB%B6%84%EB%A5%98:%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4&amp;diff=190"/>
		<updated>2025-11-09T12:25:45Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: 빈 문서를 만듦&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=189</id>
		<title>Wave</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=189"/>
		<updated>2025-11-09T12:25:20Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{소프트웨어 언어 정보&lt;br /&gt;
 | 이름      = Wave&lt;br /&gt;
 | 로고      = [[File:Wave_logo.png|120px]]&lt;br /&gt;
 | 개발자    = LunaStev&lt;br /&gt;
 | 출시일    = 2025년 1월 14일&lt;br /&gt;
 | 최신 버전 = v0.1.4-pre-beta&lt;br /&gt;
 | 확장자    = &#039;&#039;&#039;.wave&#039;&#039;&#039;&lt;br /&gt;
 | 라이선스  = LSD License&lt;br /&gt;
 | 저장소    = [https://github.com/wavefnd/Wave GitHub]&lt;br /&gt;
 | 웹사이트  = https://wave-lang.dev/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Wave&#039;&#039;&#039;는 시스템 소프트웨어 엔지니어 &#039;&#039;&#039;LunaStev&#039;&#039;&#039;가 개발한 범용 프로그래밍 언어이다.  &lt;br /&gt;
Wave는 저수준 언어의 성능과 고수준 언어의 추상화를 동시에 추구하며, &#039;&#039;“Reimagining Low-Level Programming”&#039;&#039;(저수준 프로그래밍의 재정의)을 철학으로 한다.  &lt;br /&gt;
Rust와 C 계열의 언어 디자인 철학을 계승하면서도, 새로운 문법 구조와 통합 생태계를 통해 다양한 영역(시스템, 네트워크, 웹, AI 등)에서 단일 언어로 개발이 가능하도록 설계되었다.&lt;br /&gt;
&lt;br /&gt;
Wave는 컴파일 언어이며, 기본적으로 LLVM 백엔드를 기반으로 하지만, 장기적으로는 독자적인 툴체인인 &#039;&#039;&#039;Whale&#039;&#039;&#039;을 중심으로 완전한 독립 생태계를 구축할 계획이다. &amp;lt;ref&amp;gt;https://www.wave-lang.dev/docs/ecosystem/whale&amp;lt;/ref&amp;gt;&lt;br /&gt;
또한 패키지 매니저 &#039;&#039;&#039;Vex&#039;&#039;&#039;, 직렬화 포맷 &#039;&#039;&#039;WSON&#039;&#039;&#039;, 표준 라이브러리 집합 등 언어 자체의 통합 환경을 제공한다.  &lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
* &#039;&#039;&#039;2024년 5월&#039;&#039;&#039;: Wave 개발 착수  &lt;br /&gt;
* &#039;&#039;&#039;2024년 12월&#039;&#039;&#039;: LLVM 기반 초기 컴파일러 프로토타입 완성  &lt;br /&gt;
* &#039;&#039;&#039;2025년 1월 14일&#039;&#039;&#039;: Wave 공식 릴리스(버전 0.0.1-pre-alpha)&lt;br /&gt;
* &#039;&#039;&#039;2025년 8월 1일&#039;&#039;&#039;: v0.1.4-pre-beta 출시&lt;br /&gt;
&lt;br /&gt;
== 설계 철학 ==&lt;br /&gt;
Wave의 핵심 철학은 “&#039;&#039;&#039;명시적, 예측 가능, 통합적&#039;&#039;&#039;”이다.  &lt;br /&gt;
이는 단순히 문법적 간결함이 아닌, 시스템 수준까지 일관된 동작을 추구하는 디자인으로 이어진다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;명시적 타입 지정&#039;&#039;&#039; — 모든 변수는 타입을 반드시 선언해야 하며, 타입 추론은 지원하지 않는다.  &lt;br /&gt;
* &#039;&#039;&#039;FFI 최소화&#039;&#039;&#039; — Wave는 외부 언어에 의존하지 않고, 공식적으로 자체 표준 라이브러리로 완결된 생태계를 구축한다.  &lt;br /&gt;
* &#039;&#039;&#039;낮은 복잡도&#039;&#039;&#039; — Rust와 유사한 안전성을 유지하면서, 불필요한 추상화나 복잡한 매크로 시스템을 제거한다.  &lt;br /&gt;
* &#039;&#039;&#039;C 스타일 문법&#039;&#039;&#039; — C 언어의 친숙한 구조를 유지하되, 현대적 오류 처리와 체인 API를 제공한다.  &lt;br /&gt;
* &#039;&#039;&#039;성능 중심&#039;&#039;&#039; — 가비지 컬렉션을 도입하지 않으며, 필요 시 직접 메모리 제어 가능.  &lt;br /&gt;
&lt;br /&gt;
== 언어 구조 ==&lt;br /&gt;
=== 기본 문법 ===&lt;br /&gt;
Wave의 기본 문법은 C/Rust 계열 구조를 기반으로 하며, 함수 중심의 실행 구조를 가진다.  &lt;br /&gt;
모든 프로그램은 반드시 &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; 함수를 포함해야 하며, Wave는 해당 함수를 자동으로 탐색하여 실행한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var name: str = &amp;quot;Wave&amp;quot;;&lt;br /&gt;
    let version: f32 = 0.1;&lt;br /&gt;
    println(&amp;quot;Language: {}, Version: {}&amp;quot;, name, version);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 변수 선언 ===&lt;br /&gt;
* `var`: 가변 변수 선언  &lt;br /&gt;
* `let`: 불변 변수 선언  &lt;br /&gt;
* 타입은 반드시 명시해야 하며, 다음과 같은 예를 가질 수 있다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
var count: i32 = 10;&lt;br /&gt;
let message: str = &amp;quot;Hello Wave&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 제어문 ===&lt;br /&gt;
Wave는 &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; 등의 제어문을 지원한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var i: i32 = 0;&lt;br /&gt;
    while (i &amp;lt; 5) {&lt;br /&gt;
        if (i == 3) {&lt;br /&gt;
            println(&amp;quot;Reached 3, breaking.&amp;quot;);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
        println(&amp;quot;i = {}&amp;quot;, i);&lt;br /&gt;
        i = i + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 함수 ===&lt;br /&gt;
Wave는 강타입 기반의 함수 선언을 지원하며, 반환 타입은 반드시 명시해야 한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun add(a: i32, b: i32) -&amp;gt; i32 {&lt;br /&gt;
    return a + b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fun main() {&lt;br /&gt;
    let result: i32 = add(5, 3);&lt;br /&gt;
    println(&amp;quot;Result: {}&amp;quot;, result);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 표준 라이브러리 ==&lt;br /&gt;
Wave는 표준 라이브러리와 핵심 모듈을 내장하고 있으며, 각 모듈은 특정 영역을 담당한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 라이브러리 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;sys&#039;&#039;&#039; || 시스템 호출, 프로세스, 메모리 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;file&#039;&#039;&#039; || 파일 입출력, 경로, 권한 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;network&#039;&#039;&#039; || TCP, UDP, HTTP 통신&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;http&#039;&#039;&#039; || HTTP 요청/응답, 인증, 쿠키 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;hardware&#039;&#039;&#039; || 하드웨어 제어, 장치 인터페이스&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;iosys&#039;&#039;&#039; || 콘솔 입출력, 터미널 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;wson&#039;&#039;&#039; || Wave의 직렬화 포맷 (WSON) 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;quantum&#039;&#039;&#039; || 양자 연산 및 시뮬레이션용 인터페이스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Whale 툴체인 ==&lt;br /&gt;
&#039;&#039;&#039;Whale&#039;&#039;&#039;은 Wave의 공식 컴파일러 툴체인으로, LLVM을 완전히 대체하기 위해 설계되었다.  &lt;br /&gt;
모듈형 구조를 기반으로 하며, 아키텍처별 백엔드를 독립적으로 관리할 수 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;모듈형 설계&#039;&#039;&#039; — 아키텍처(x86, ARM 등)별 모듈을 폴더 단위로 분리  &lt;br /&gt;
* &#039;&#039;&#039;WSON 기반 구성 파일&#039;&#039;&#039; — 모든 설정은 &amp;lt;code&amp;gt;.ws&amp;lt;/code&amp;gt; 형식으로 관리  &lt;br /&gt;
* &#039;&#039;&#039;WAIL (WAIL Assembly Integration Layer)&#039;&#039;&#039; — Whale 전용 IR (Intermediate Representation) 포맷  &lt;br /&gt;
&lt;br /&gt;
== Vex 패키지 매니저 ==&lt;br /&gt;
&#039;&#039;&#039;Vex&#039;&#039;&#039;는 Wave 전용 패키지 매니저로, 빌드 및 배포 시스템을 통합한다.  &lt;br /&gt;
명령어 구조는 단순하며, OS별 빌드를 지원한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vex build --linux&lt;br /&gt;
vex build --windows&lt;br /&gt;
vex build --macos&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WSON ==&lt;br /&gt;
&#039;&#039;&#039;WSON&#039;&#039;&#039;(Wave Serialized Object Notation)은 Wave의 공식 데이터 직렬화 포맷이다.&lt;br /&gt;
JSON, YAML, TOML보다 빠르고 간결한 문법을 지향하며 `.ws` 확장자를 사용한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  name = &amp;quot;Wave&amp;quot;,&lt;br /&gt;
  version = 0.1.4,&lt;br /&gt;
  author = &amp;quot;LunaStev&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 활용 ==&lt;br /&gt;
Wave는 범용 언어로서 다양한 분야에 적용될 수 있다:&lt;br /&gt;
* 시스템 프로그래밍 (운영체제, 드라이버, 커널)&lt;br /&gt;
* 웹 백엔드 서버 및 API&lt;br /&gt;
* AI 및 데이터 분석 프레임워크&lt;br /&gt;
* 블록체인 노드 및 스마트 컨트랙트&lt;br /&gt;
* 게임 엔진 및 그래픽 모듈&lt;br /&gt;
* 양자 컴퓨팅 및 과학 시뮬레이션&lt;br /&gt;
&lt;br /&gt;
== 영향과 비교 ==&lt;br /&gt;
Wave는 [[C (프로그래밍 언어)]], [[Rust]], [[Python]], [[Go]]의 영향을 받았으며, 다음과 같은 철학적 비교가 가능하다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 언어 !! 철학적 방향 !! 메모리 모델 !! 안전성&lt;br /&gt;
|-&lt;br /&gt;
| C || 저수준, 수동 제어 || 포인터 기반 || 낮음&lt;br /&gt;
|-&lt;br /&gt;
| Rust || 안전한 시스템 프로그래밍 || 소유권 모델 || 매우 높음&lt;br /&gt;
|-&lt;br /&gt;
| Wave || 단일 언어 통합 생태계 || 명시적 타입 제어 || 높음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[프로그래밍 언어]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[C (프로그래밍 언어)]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[운영체제]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* [https://github.com/wavefnd/Wave Wave GitHub 저장소]  &lt;br /&gt;
* [https://wave-lang.dev/ Wave 공식 사이트]  &lt;br /&gt;
* [https://github.com/wavefnd/Vex Vex 저장소]  &lt;br /&gt;
* [https://github.com/wavefnd/Whale Whale 저장소]  &lt;br /&gt;
* [https://github.com/wavefnd/WSON WSON 저장소]  &lt;br /&gt;
&lt;br /&gt;
== 각주 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:프로그래밍 언어]]&lt;br /&gt;
[[Category:시스템 프로그래밍]]&lt;br /&gt;
[[Category:2020년대 소프트웨어]]&lt;br /&gt;
[[Category:오픈 소스 소프트웨어]]&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=188</id>
		<title>Wave</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=Wave&amp;diff=188"/>
		<updated>2025-11-09T12:18:07Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{소프트웨어 언어 정보&lt;br /&gt;
 | 이름      = Wave&lt;br /&gt;
 | 로고      = [[File:Wave_logo.png|120px]]&lt;br /&gt;
 | 개발자    = LunaStev&lt;br /&gt;
 | 출시일    = 2025년 1월 14일&lt;br /&gt;
 | 최신 버전 = v0.1.4-pre-beta&lt;br /&gt;
 | 확장자    = &#039;&#039;&#039;.wave&#039;&#039;&#039;&lt;br /&gt;
 | 라이선스  = LSD License&lt;br /&gt;
 | 저장소    = [https://github.com/wavefnd/Wave GitHub]&lt;br /&gt;
 | 웹사이트  = [https://wave-lang.dev/ 공식 사이트]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;Wave&#039;&#039;&#039;는 시스템 소프트웨어 엔지니어 &#039;&#039;&#039;LunaStev&#039;&#039;&#039;가 개발한 범용 프로그래밍 언어이다.  &lt;br /&gt;
Wave는 저수준 언어의 성능과 고수준 언어의 추상화를 동시에 추구하며, &#039;&#039;“Reimagining Low-Level Programming”&#039;&#039;(저수준 프로그래밍의 재정의)을 철학으로 한다.  &lt;br /&gt;
Rust와 C 계열의 언어 디자인 철학을 계승하면서도, 새로운 문법 구조와 통합 생태계를 통해 다양한 영역(시스템, 네트워크, 웹, AI 등)에서 단일 언어로 개발이 가능하도록 설계되었다.&lt;br /&gt;
&lt;br /&gt;
Wave는 컴파일 언어이며, 기본적으로 LLVM 백엔드를 기반으로 하지만, 장기적으로는 독자적인 툴체인인 &#039;&#039;&#039;Whale&#039;&#039;&#039;을 중심으로 완전한 독립 생태계를 구축할 계획이다. &amp;lt;ref&amp;gt;https://www.wave-lang.dev/docs/ecosystem/whale&amp;lt;/ref&amp;gt;&lt;br /&gt;
또한 패키지 매니저 &#039;&#039;&#039;Vex&#039;&#039;&#039;, 직렬화 포맷 &#039;&#039;&#039;WSON&#039;&#039;&#039;, 표준 라이브러리 집합 등 언어 자체의 통합 환경을 제공한다.  &lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
* &#039;&#039;&#039;2024년 5월&#039;&#039;&#039;: Wave 개발 착수  &lt;br /&gt;
* &#039;&#039;&#039;2024년 12월&#039;&#039;&#039;: LLVM 기반 초기 컴파일러 프로토타입 완성  &lt;br /&gt;
* &#039;&#039;&#039;2025년 1월 14일&#039;&#039;&#039;: Wave 공식 릴리스(버전 0.0.1-pre-alpha)&lt;br /&gt;
* &#039;&#039;&#039;2025년 8월 1일&#039;&#039;&#039;: v0.1.4-pre-beta 출시&lt;br /&gt;
&lt;br /&gt;
== 설계 철학 ==&lt;br /&gt;
Wave의 핵심 철학은 “&#039;&#039;&#039;명시적, 예측 가능, 통합적&#039;&#039;&#039;”이다.  &lt;br /&gt;
이는 단순히 문법적 간결함이 아닌, 시스템 수준까지 일관된 동작을 추구하는 디자인으로 이어진다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;명시적 타입 지정&#039;&#039;&#039; — 모든 변수는 타입을 반드시 선언해야 하며, 타입 추론은 지원하지 않는다.  &lt;br /&gt;
* &#039;&#039;&#039;FFI 최소화&#039;&#039;&#039; — Wave는 외부 언어에 의존하지 않고, 공식적으로 자체 표준 라이브러리로 완결된 생태계를 구축한다.  &lt;br /&gt;
* &#039;&#039;&#039;낮은 복잡도&#039;&#039;&#039; — Rust와 유사한 안전성을 유지하면서, 불필요한 추상화나 복잡한 매크로 시스템을 제거한다.  &lt;br /&gt;
* &#039;&#039;&#039;C 스타일 문법&#039;&#039;&#039; — C 언어의 친숙한 구조를 유지하되, 현대적 오류 처리와 체인 API를 제공한다.  &lt;br /&gt;
* &#039;&#039;&#039;성능 중심&#039;&#039;&#039; — 가비지 컬렉션을 도입하지 않으며, 필요 시 직접 메모리 제어 가능.  &lt;br /&gt;
&lt;br /&gt;
== 언어 구조 ==&lt;br /&gt;
=== 기본 문법 ===&lt;br /&gt;
Wave의 기본 문법은 C/Rust 계열 구조를 기반으로 하며, 함수 중심의 실행 구조를 가진다.  &lt;br /&gt;
모든 프로그램은 반드시 &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; 함수를 포함해야 하며, Wave는 해당 함수를 자동으로 탐색하여 실행한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var name: str = &amp;quot;Wave&amp;quot;;&lt;br /&gt;
    let version: f32 = 0.1;&lt;br /&gt;
    println(&amp;quot;Language: {}, Version: {}&amp;quot;, name, version);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 변수 선언 ===&lt;br /&gt;
* `var`: 가변 변수 선언  &lt;br /&gt;
* `let`: 불변 변수 선언  &lt;br /&gt;
* 타입은 반드시 명시해야 하며, 다음과 같은 예를 가질 수 있다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
var count: i32 = 10;&lt;br /&gt;
let message: str = &amp;quot;Hello Wave&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 제어문 ===&lt;br /&gt;
Wave는 &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;continue&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; 등의 제어문을 지원한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun main() {&lt;br /&gt;
    var i: i32 = 0;&lt;br /&gt;
    while (i &amp;lt; 5) {&lt;br /&gt;
        if (i == 3) {&lt;br /&gt;
            println(&amp;quot;Reached 3, breaking.&amp;quot;);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
        println(&amp;quot;i = {}&amp;quot;, i);&lt;br /&gt;
        i = i + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 함수 ===&lt;br /&gt;
Wave는 강타입 기반의 함수 선언을 지원하며, 반환 타입은 반드시 명시해야 한다.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
fun add(a: i32, b: i32) -&amp;gt; i32 {&lt;br /&gt;
    return a + b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
fun main() {&lt;br /&gt;
    let result: i32 = add(5, 3);&lt;br /&gt;
    println(&amp;quot;Result: {}&amp;quot;, result);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 표준 라이브러리 ==&lt;br /&gt;
Wave는 표준 라이브러리와 핵심 모듈을 내장하고 있으며, 각 모듈은 특정 영역을 담당한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 라이브러리 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;sys&#039;&#039;&#039; || 시스템 호출, 프로세스, 메모리 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;file&#039;&#039;&#039; || 파일 입출력, 경로, 권한 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;network&#039;&#039;&#039; || TCP, UDP, HTTP 통신&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;http&#039;&#039;&#039; || HTTP 요청/응답, 인증, 쿠키 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;hardware&#039;&#039;&#039; || 하드웨어 제어, 장치 인터페이스&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;iosys&#039;&#039;&#039; || 콘솔 입출력, 터미널 관리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;wson&#039;&#039;&#039; || Wave의 직렬화 포맷 (WSON) 처리&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;quantum&#039;&#039;&#039; || 양자 연산 및 시뮬레이션용 인터페이스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Whale 툴체인 ==&lt;br /&gt;
&#039;&#039;&#039;Whale&#039;&#039;&#039;은 Wave의 공식 컴파일러 툴체인으로, LLVM을 완전히 대체하기 위해 설계되었다.  &lt;br /&gt;
모듈형 구조를 기반으로 하며, 아키텍처별 백엔드를 독립적으로 관리할 수 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;모듈형 설계&#039;&#039;&#039; — 아키텍처(x86, ARM 등)별 모듈을 폴더 단위로 분리  &lt;br /&gt;
* &#039;&#039;&#039;WSON 기반 구성 파일&#039;&#039;&#039; — 모든 설정은 &amp;lt;code&amp;gt;.ws&amp;lt;/code&amp;gt; 형식으로 관리  &lt;br /&gt;
* &#039;&#039;&#039;WAIL (WAIL Assembly Integration Layer)&#039;&#039;&#039; — Whale 전용 IR (Intermediate Representation) 포맷  &lt;br /&gt;
&lt;br /&gt;
== Vex 패키지 매니저 ==&lt;br /&gt;
&#039;&#039;&#039;Vex&#039;&#039;&#039;는 Wave 전용 패키지 매니저로, 빌드 및 배포 시스템을 통합한다.  &lt;br /&gt;
명령어 구조는 단순하며, OS별 빌드를 지원한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vex build --linux&lt;br /&gt;
vex build --windows&lt;br /&gt;
vex build --macos&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WSON ==&lt;br /&gt;
&#039;&#039;&#039;WSON&#039;&#039;&#039;(Wave Serialized Object Notation)은 Wave의 공식 데이터 직렬화 포맷이다.&lt;br /&gt;
JSON, YAML, TOML보다 빠르고 간결한 문법을 지향하며 `.ws` 확장자를 사용한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  name = &amp;quot;Wave&amp;quot;,&lt;br /&gt;
  version = 0.1.4,&lt;br /&gt;
  author = &amp;quot;LunaStev&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 활용 ==&lt;br /&gt;
Wave는 범용 언어로서 다양한 분야에 적용될 수 있다:&lt;br /&gt;
* 시스템 프로그래밍 (운영체제, 드라이버, 커널)&lt;br /&gt;
* 웹 백엔드 서버 및 API&lt;br /&gt;
* AI 및 데이터 분석 프레임워크&lt;br /&gt;
* 블록체인 노드 및 스마트 컨트랙트&lt;br /&gt;
* 게임 엔진 및 그래픽 모듈&lt;br /&gt;
* 양자 컴퓨팅 및 과학 시뮬레이션&lt;br /&gt;
&lt;br /&gt;
== 영향과 비교 ==&lt;br /&gt;
Wave는 [[C (프로그래밍 언어)]], [[Rust]], [[Python]], [[Go]]의 영향을 받았으며, 다음과 같은 철학적 비교가 가능하다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 언어 !! 철학적 방향 !! 메모리 모델 !! 안전성&lt;br /&gt;
|-&lt;br /&gt;
| C || 저수준, 수동 제어 || 포인터 기반 || 낮음&lt;br /&gt;
|-&lt;br /&gt;
| Rust || 안전한 시스템 프로그래밍 || 소유권 모델 || 매우 높음&lt;br /&gt;
|-&lt;br /&gt;
| Wave || 단일 언어 통합 생태계 || 명시적 타입 제어 || 높음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[프로그래밍 언어]]  &lt;br /&gt;
* [[Rust]]  &lt;br /&gt;
* [[C (프로그래밍 언어)]]  &lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[운영체제]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* [https://github.com/wavefnd/Wave Wave GitHub 저장소]  &lt;br /&gt;
* [https://wave-lang.dev/ Wave 공식 사이트]  &lt;br /&gt;
* [https://github.com/wavefnd/Vex Vex 저장소]  &lt;br /&gt;
* [https://github.com/wavefnd/Whale Whale 저장소]  &lt;br /&gt;
* [https://github.com/wavefnd/WSON WSON 저장소]  &lt;br /&gt;
&lt;br /&gt;
== 각주 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:프로그래밍 언어]]&lt;br /&gt;
[[Category:시스템 프로그래밍]]&lt;br /&gt;
[[Category:2020년대 소프트웨어]]&lt;br /&gt;
[[Category:오픈 소스 소프트웨어]]&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EC%9B%94%EB%93%9C_%EC%99%80%EC%9D%B4%EB%93%9C_%EC%9B%B9&amp;diff=187</id>
		<title>월드 와이드 웹</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EC%9B%94%EB%93%9C_%EC%99%80%EC%9D%B4%EB%93%9C_%EC%9B%B9&amp;diff=187"/>
		<updated>2025-11-09T09:56:31Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;월드 와이드 웹&#039;&#039;&#039;(World Wide Web, 약칭 &#039;&#039;&#039;WWW&#039;&#039;&#039; 또는 단순히 &#039;&#039;&#039;웹(Web)&#039;&#039;&#039;)은  &lt;br /&gt;
[[인터넷]] 상에서 문서, 이미지, 영상, 오디오 등 다양한 정보를  &lt;br /&gt;
&#039;&#039;&#039;하이퍼텍스트(Hypertext)&#039;&#039;&#039; 형태로 연결하고 접근할 수 있도록 하는 &#039;&#039;&#039;정보 시스템&#039;&#039;&#039;이다.  &lt;br /&gt;
&lt;br /&gt;
1989년 [[팀 버너스리]](Tim Berners-Lee)가 [[CERN]](유럽 입자 물리 연구소)에서 제안하였으며,  &lt;br /&gt;
그는 웹의 기본 구성 요소인 &#039;&#039;&#039;HTTP&#039;&#039;&#039;, &#039;&#039;&#039;HTML&#039;&#039;&#039;, &#039;&#039;&#039;URL&#039;&#039;&#039;을 함께 설계하였다.  &lt;br /&gt;
1991년 8월, 최초의 웹사이트가 CERN 내부 네트워크에서 공개되면서  &lt;br /&gt;
월드 와이드 웹은 오늘날의 인터넷 문명으로 이어지는 정보 혁명의 출발점이 되었다.  &lt;br /&gt;
&lt;br /&gt;
웹은 본질적으로 &#039;&#039;&#039;인터넷 위에서 동작하는 응용 계층 서비스&#039;&#039;&#039;이다.  &lt;br /&gt;
인터넷은 전 세계의 네트워크를 연결하는 통신 인프라이며,  &lt;br /&gt;
웹은 그 위에서 정보를 교환하고 표현하기 위한 프로토콜 체계이다.  &lt;br /&gt;
즉, 웹은 인터넷을 기반으로 작동하지만 인터넷 전체를 의미하지는 않는다.  &lt;br /&gt;
&lt;br /&gt;
웹의 핵심은 &#039;&#039;&#039;하이퍼텍스트 시스템&#039;&#039;&#039;이다.  &lt;br /&gt;
문서 내부의 하이퍼링크(Hyperlink)를 통해  &lt;br /&gt;
다른 문서나 자원으로 비선형적(Non-linear)으로 이동할 수 있으며,  &lt;br /&gt;
이 구조는 정보 간의 연관성을 시각적으로 표현하고,  &lt;br /&gt;
지식의 상호 연결(Interconnected Knowledge)을 가능하게 한다.  &lt;br /&gt;
&lt;br /&gt;
웹은 다음과 같은 주요 기술 요소로 구성된다:&lt;br /&gt;
* &#039;&#039;&#039;[[HTML]]&#039;&#039;&#039; – 문서 구조와 콘텐츠를 기술하는 마크업 언어  &lt;br /&gt;
* &#039;&#039;&#039;[[HTTP]]&#039;&#039;&#039; – 클라이언트(웹 브라우저)와 서버 간의 통신 프로토콜  &lt;br /&gt;
* &#039;&#039;&#039;[[URL]]&#039;&#039;&#039; – 자원의 위치를 식별하기 위한 통합 자원 지시자(주소 체계)  &lt;br /&gt;
&lt;br /&gt;
이 세 가지 기술이 결합되어,  &lt;br /&gt;
사용자는 [[웹 브라우저]]를 통해 원격 서버의 문서를 열람하고,  &lt;br /&gt;
링크를 따라 자유롭게 탐색할 수 있게 되었다.  &lt;br /&gt;
&lt;br /&gt;
오늘날 월드 와이드 웹은 단순한 문서 열람을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;웹 애플리케이션&#039;&#039;&#039;, &#039;&#039;&#039;클라우드 서비스&#039;&#039;&#039;, &#039;&#039;&#039;소셜 네트워크&#039;&#039;&#039;, &#039;&#039;&#039;스트리밍 플랫폼&#039;&#039;&#039; 등  &lt;br /&gt;
수많은 인터넷 서비스의 기술적 기반으로 발전하였다.  &lt;br /&gt;
이는 인류의 지식 교류, 경제 활동, 문화 생산 전반에 걸쳐  &lt;br /&gt;
가장 중요한 정보 인프라 중 하나로 평가된다.&lt;br /&gt;
&lt;br /&gt;
== 역사 ==&lt;br /&gt;
월드 와이드 웹의 역사는 정보 공유와 접근 방식을 혁신한 기술적 전환의 연속이다.  &lt;br /&gt;
1989년 CERN에서 시작된 웹은 초기에는 연구소 간 문서 공유 시스템에 불과했으나,  &lt;br /&gt;
1990년대 중반 이후 대중화되면서 현대 인터넷 사회의 핵심 인프라로 자리 잡았다.  &lt;br /&gt;
&lt;br /&gt;
=== 주요 연혁 ===&lt;br /&gt;
* &#039;&#039;&#039;1989년&#039;&#039;&#039; – [[팀 버너스리]]가 “&#039;&#039;Information Management: A Proposal&#039;&#039;” 문서를 통해  &lt;br /&gt;
  하이퍼텍스트를 기반으로 한 전 세계적 정보 공유 시스템(웹)의 개념을 제안.  &lt;br /&gt;
* &#039;&#039;&#039;1990년&#039;&#039;&#039; – [[NeXT]] 컴퓨터에서 최초의 웹 서버와 브라우저인 “&#039;&#039;WorldWideWeb&#039;&#039;” 개발.  &lt;br /&gt;
  HTML, HTTP, URL의 기본 구조가 확립됨.  &lt;br /&gt;
* &#039;&#039;&#039;1991년&#039;&#039;&#039; – CERN 내부 네트워크에서 월드 와이드 웹이 시범적으로 공개되었으며,  &lt;br /&gt;
  이후 외부 연구 기관으로 확산되기 시작함.  &lt;br /&gt;
* &#039;&#039;&#039;1993년&#039;&#039;&#039; – [[Mosaic]] 웹 브라우저 등장으로 일반 대중에게 웹이 보급되기 시작.  &lt;br /&gt;
  GUI 기반 인터페이스로 인해 웹 사용이 폭발적으로 증가함.  &lt;br /&gt;
* &#039;&#039;&#039;1994년&#039;&#039;&#039; – [[W3C]](World Wide Web Consortium) 설립.  &lt;br /&gt;
  웹 표준(HTML, HTTP, CSS 등)의 국제적 관리와 호환성 확보를 목표로 함.  &lt;br /&gt;
* &#039;&#039;&#039;1995년&#039;&#039;&#039; – [[JavaScript]], [[CSS]], [[HTML 2.0]] 등 핵심 기술 등장.  &lt;br /&gt;
  정적 웹에서 동적·상호작용형 웹으로의 전환이 시작됨.  &lt;br /&gt;
* &#039;&#039;&#039;2000년대&#039;&#039;&#039; – [[Web 2.0]] 시대 도래.  &lt;br /&gt;
  블로그, SNS, 위키, 사용자 생성 콘텐츠(UGC)의 등장으로 웹이 참여형 플랫폼으로 진화.  &lt;br /&gt;
* &#039;&#039;&#039;2010년대 이후&#039;&#039;&#039; – [[HTML5]], [[PWA]], [[WebAssembly]] 등의 기술로  &lt;br /&gt;
  웹 애플리케이션이 데스크톱 수준의 성능을 갖추게 됨.  &lt;br /&gt;
  모바일 웹과 클라우드 서비스 중심의 생태계로 확장됨.&lt;br /&gt;
&lt;br /&gt;
오늘날 웹은 단순한 문서 네트워크를 넘어,  &lt;br /&gt;
애플리케이션 실행 환경·미디어 플랫폼·분산 서비스 인프라로 진화하였다.  &lt;br /&gt;
이 과정에서 [[HTTP/2]], [[HTTP/3]], [[TLS]] 등 네트워크 계층의 기술 발전과 함께  &lt;br /&gt;
웹은 현대 인터넷의 가장 강력한 응용 계층으로 자리 잡게 되었다.&lt;br /&gt;
&lt;br /&gt;
== 핵심 구성 요소 ==&lt;br /&gt;
월드 와이드 웹은 세 가지 기본 기술로 구성된다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 구성 요소 !! 약어 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 하이퍼텍스트 마크업 언어 || [[HTML]] || 웹 페이지의 구조와 내용 정의&lt;br /&gt;
|-&lt;br /&gt;
| 하이퍼텍스트 전송 프로토콜 || [[HTTP]] || 클라이언트–서버 간 문서 송수신 규약&lt;br /&gt;
|-&lt;br /&gt;
| 통합 자원 식별자 || [[URL]] || 웹 자원의 위치를 지정하는 주소 체계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 작동 원리 ==&lt;br /&gt;
웹은 클라이언트–서버 모델로 동작한다.  &lt;br /&gt;
사용자가 웹 브라우저(클라이언트)를 통해 URL을 입력하면  &lt;br /&gt;
해당 주소의 서버로 [[HTTP 요청]]을 보내고,  &lt;br /&gt;
서버는 HTML 문서로 된 응답을 전송한다.  &lt;br /&gt;
브라우저는 이를 렌더링하여 사용자에게 시각적으로 보여준다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[사용자] → [브라우저] → [HTTP 요청] → [웹 서버]&lt;br /&gt;
&lt;br /&gt;
[웹 서버] → [HTTP 응답] → [HTML 렌더링] → [화면 표시]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 주요 구성 기술 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 계층 !! 기술 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 표현 계층 || [[HTML]], [[CSS]], [[SVG]], [[Web Fonts]] || 콘텐츠 구조 및 시각 표현  &lt;br /&gt;
|-&lt;br /&gt;
| 동작 계층 || [[JavaScript]], [[DOM]], [[Web APIs]] || 동적 콘텐츠 처리  &lt;br /&gt;
|-&lt;br /&gt;
| 통신 계층 || [[HTTP]], [[HTTPS]], [[WebSocket]], [[QUIC]] || 데이터 송수신  &lt;br /&gt;
|-&lt;br /&gt;
| 데이터 계층 || [[JSON]], [[XML]], [[WASM]] || 구조화된 데이터 및 실행 모듈  &lt;br /&gt;
|-&lt;br /&gt;
| 보안 계층 || [[TLS]], [[Same-Origin Policy]], [[CSP]] || 통신 암호화 및 정책 보호  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 웹의 세대 발전 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 세대 !! 명칭 !! 시기 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| 1세대 || Web 1.0 || 1990s || 정적 HTML 중심, 정보 열람 위주  &lt;br /&gt;
|-&lt;br /&gt;
| 2세대 || Web 2.0 || 2000s || 사용자 참여, [[AJAX]], SNS, 위키  &lt;br /&gt;
|-&lt;br /&gt;
| 3세대 || Web 3.0 || 2010s || [[시맨틱 웹]], [[AI]], [[블록체인]], 분산 구조  &lt;br /&gt;
|-&lt;br /&gt;
| 4세대 (현대) || WebAssembly 시대 || 2020s || 브라우저 기반 애플리케이션 실행, 클라우드 통합&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 웹 표준화 기관 ==&lt;br /&gt;
* &#039;&#039;&#039;[[W3C]] (World Wide Web Consortium)&#039;&#039;&#039; – 웹 표준 제정 및 관리  &lt;br /&gt;
* &#039;&#039;&#039;[[WHATWG]] (Web Hypertext Application Technology Working Group)&#039;&#039;&#039; – HTML Living Standard 개발  &lt;br /&gt;
* &#039;&#039;&#039;[[IETF]]&#039;&#039;&#039; – [[HTTP]], [[TLS]] 등 인터넷 프로토콜 표준화  &lt;br /&gt;
&lt;br /&gt;
== 주요 브라우저 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 이름 !! 개발사 !! 렌더링 엔진 !! 출시 연도&lt;br /&gt;
|-&lt;br /&gt;
|[[WorldWideWeb]]&lt;br /&gt;
|Tim Berners-Lee for CERN&lt;br /&gt;
|NeXTSTEP Text Manager&lt;br /&gt;
|1990&lt;br /&gt;
|-&lt;br /&gt;
| [[Mosaic]] || NCSA || Mosaic Engine || 1993  &lt;br /&gt;
|-&lt;br /&gt;
| [[Netscape Navigator]] || Netscape || Pre-Gecko || 1994  &lt;br /&gt;
|-&lt;br /&gt;
|[[Opera]]&lt;br /&gt;
|Opera&lt;br /&gt;
|Blink, V8&lt;br /&gt;
|1995&lt;br /&gt;
|-&lt;br /&gt;
| [[Internet Explorer]] || Microsoft || Trident || 1995  &lt;br /&gt;
|-&lt;br /&gt;
| [[Mozilla Firefox]] || Mozilla Foundation || Gecko || 2004  &lt;br /&gt;
|-&lt;br /&gt;
| [[Google Chrome]] || Google || Blink || 2008  &lt;br /&gt;
|-&lt;br /&gt;
| [[Safari]] || Apple || WebKit || 2003  &lt;br /&gt;
|-&lt;br /&gt;
| [[Microsoft Edge]] || Microsoft || Blink || 2020  &lt;br /&gt;
|-&lt;br /&gt;
|[[Arc]]&lt;br /&gt;
|The Browser Company&lt;br /&gt;
|Blink, V8&lt;br /&gt;
|2023&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 철학 ==&lt;br /&gt;
[[팀 버너스리]]는 웹을 “&#039;&#039;&#039;열린 지식의 공유 플랫폼&#039;&#039;&#039;”으로 설계했다.  &lt;br /&gt;
웹은 다음의 세 가지 원칙을 기반으로 발전했다:&lt;br /&gt;
* &#039;&#039;&#039;보편성 (Universality):&#039;&#039;&#039; 누구나 접근 가능한 개방형 시스템  &lt;br /&gt;
* &#039;&#039;&#039;비중앙화 (Decentralization):&#039;&#039;&#039; 통제되지 않는 연결 구조  &lt;br /&gt;
* &#039;&#039;&#039;상호운용성 (Interoperability):&#039;&#039;&#039; 다양한 플랫폼 간 호환성 보장  &lt;br /&gt;
&lt;br /&gt;
== 웹과 인터넷의 차이 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 월드 와이드 웹 (WWW) !! 인터넷&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 정보 접근 시스템 || 컴퓨터 네트워크 인프라  &lt;br /&gt;
|-&lt;br /&gt;
| 핵심 기술 || HTML, HTTP, URL || TCP/IP, DNS, Routing  &lt;br /&gt;
|-&lt;br /&gt;
| 사용 방식 || 웹 브라우저 || 모든 응용 (이메일, FTP 등)  &lt;br /&gt;
|-&lt;br /&gt;
| 창시자 || 팀 버너스리 || 여러 기관의 공동 개발  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 영향 ==&lt;br /&gt;
* 전 세계 정보 공유의 표준 플랫폼 확립  &lt;br /&gt;
* [[검색 엔진]], [[전자상거래]], [[클라우드 컴퓨팅]]의 토대 형성  &lt;br /&gt;
* [[웹 애플리케이션]], [[소셜 미디어]], [[온라인 교육]] 등 다양한 산업 창출  &lt;br /&gt;
* [[HTML5]], [[CSS3]], [[WebAssembly]] 등 오픈 표준 중심 생태계 확립  &lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[팀 버너스리]]  &lt;br /&gt;
* [[CERN]]  &lt;br /&gt;
* [[HTTP]]  &lt;br /&gt;
* [[HTML]]  &lt;br /&gt;
* [[W3C]]  &lt;br /&gt;
* [[웹 브라우저]]  &lt;br /&gt;
* [[인터넷]]  &lt;br /&gt;
* [[시맨틱 웹]]  &lt;br /&gt;
* [[WebAssembly]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Tim Berners-Lee, “Information Management: A Proposal”, CERN, 1989  &lt;br /&gt;
* “Weaving the Web”, Tim Berners-Lee, HarperCollins, 1999  &lt;br /&gt;
* W3C Official Site – [https://www.w3.org/ w3.org]  &lt;br /&gt;
* Internet Society, “A Brief History of the Web”, 2022  &lt;br /&gt;
* “The Birth of the Web”, CERN Historical Archives, 2019&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=186</id>
		<title>컴파일러와 도구</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%99%80_%EB%8F%84%EA%B5%AC&amp;diff=186"/>
		<updated>2025-11-09T02:43:58Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러와 도구&#039;&#039;&#039;(Compilers and Tools)는  &lt;br /&gt;
프로그래밍 언어로 작성된 소스 코드를 해석, 변환, 최적화, 실행하기 위한  &lt;br /&gt;
&#039;&#039;&#039;소프트웨어 개발 인프라의 핵심 구성 요소&#039;&#039;&#039;이다.  &lt;br /&gt;
&lt;br /&gt;
이들은 단순히 코드를 “기계가 이해할 수 있는 형태로 변환하는 시스템”을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;개발 생산성 향상&#039;&#039;&#039;, &#039;&#039;&#039;코드 품질 보장&#039;&#039;&#039;, &#039;&#039;&#039;성능 최적화&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 간 이식성 확보&#039;&#039;&#039;를 담당한다.  &lt;br /&gt;
&lt;br /&gt;
컴파일러, 인터프리터, 어셈블러, 링커, 디버거, 빌드 시스템, IDE, 패키지 관리자 등은  &lt;br /&gt;
모두 언어의 생명주기 — &#039;&#039;&#039;작성 → 분석 → 변환 → 실행 → 유지보수&#039;&#039;&#039; — 를 구성하는 필수적인 도구군(toolchain)을 이룬다.  &lt;br /&gt;
&lt;br /&gt;
=== 컴파일러 ===&lt;br /&gt;
&#039;&#039;&#039;컴파일러(Compiler)&#039;&#039;&#039;는 고급 언어(high-level language)로 작성된 소스 코드를  &lt;br /&gt;
기계어(machine code) 또는 중간 표현(intermediate representation)으로 변환하는 프로그램이다.  &lt;br /&gt;
이 과정은 일반적으로 다음 단계를 거친다:&lt;br /&gt;
# &#039;&#039;&#039;어휘 분석(Lexical Analysis)&#039;&#039;&#039; — 토큰 단위로 소스 코드를 분해  &lt;br /&gt;
# &#039;&#039;&#039;구문 분석(Syntax Analysis)&#039;&#039;&#039; — 언어의 문법에 따라 트리 구조(AST)를 생성  &lt;br /&gt;
# &#039;&#039;&#039;의미 분석(Semantic Analysis)&#039;&#039;&#039; — 타입, 스코프, 참조 관계를 검증  &lt;br /&gt;
# &#039;&#039;&#039;중간 코드 생성(IR Generation)&#039;&#039;&#039; — 하드웨어 독립적인 내부 표현 생성  &lt;br /&gt;
# &#039;&#039;&#039;최적화(Optimization)&#039;&#039;&#039; — 실행 효율을 높이기 위한 변환 수행  &lt;br /&gt;
# &#039;&#039;&#039;코드 생성(Code Generation)&#039;&#039;&#039; — 타깃 플랫폼의 기계어로 변환  &lt;br /&gt;
&lt;br /&gt;
일부 현대 컴파일러는 이 과정을 여러 모듈로 분리하여,  &lt;br /&gt;
프런트엔드(frontend), 미들엔드(midend), 백엔드(backend) 구조로 구성한다.  &lt;br /&gt;
예: [[LLVM]], [[GCC]], [[Whale (컴파일러 툴체인)]] 등.&lt;br /&gt;
&lt;br /&gt;
=== 기타 개발 도구 ===&lt;br /&gt;
컴파일러 외에도 다음과 같은 다양한 개발 도구가 소프트웨어 품질과 효율성을 높인다:&lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템(Build System):&#039;&#039;&#039; 소스 코드의 컴파일, 링크, 테스트, 배포를 자동화 (예: [[CMake]], [[Ninja]], [[x.py]])  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 실행 중인 프로그램의 동작을 추적하고 오류를 분석 (예: [[GDB]], [[LLDB]])  &lt;br /&gt;
* &#039;&#039;&#039;린터(Linter):&#039;&#039;&#039; 코드 스타일 및 잠재적 버그를 정적 분석으로 탐지 (예: [[Clippy]], [[ESLint]])  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리자(Package Manager):&#039;&#039;&#039; 의존성 관리 및 모듈 배포를 지원 (예: [[Cargo]], [[Vex]], [[npm]])  &lt;br /&gt;
* &#039;&#039;&#039;IDE(통합 개발 환경):&#039;&#039;&#039; 코드 작성, 빌드, 디버깅, 테스트를 통합 제공 (예: [[Visual Studio Code]], [[RustRover]])  &lt;br /&gt;
&lt;br /&gt;
=== 역할과 중요성 ===&lt;br /&gt;
컴파일러와 개발 도구는 프로그래밍 언어 생태계의 기반을 이루며,  &lt;br /&gt;
언어 설계 철학과 밀접하게 연관되어 있다.  &lt;br /&gt;
효율적인 도구 체계는 언어의 확장성, 성능, 보안성, 유지보수성을 직접적으로 좌우한다.  &lt;br /&gt;
&lt;br /&gt;
현대의 개발 환경에서는 단일 컴파일러가 아닌  &lt;br /&gt;
&#039;&#039;&#039;모듈화된 툴체인(toolchain)&#039;&#039;&#039;이 표준으로 자리 잡고 있으며,  &lt;br /&gt;
이러한 구조는 다양한 아키텍처와 플랫폼에서의 고성능 빌드와 이식성을 가능하게 한다.  &lt;br /&gt;
&lt;br /&gt;
== 컴파일러의 구조 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러&#039;&#039;&#039;는 소스 코드를 기계어로 변환하기 위해 일련의 분석과 변환 단계를 거치며,  &lt;br /&gt;
일반적으로 &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;, &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;, &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;의 세 부분으로 구성된다.  &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;전단부(Front-end)&#039;&#039;&#039;는 주로 언어의 문법과 의미를 해석하는 역할을 담당한다. 소스 코드를 분석하여 구조화된 내부 표현(AST)을 생성하고, 타입 검사와 같은 의미적 검증을 수행한다.  &lt;br /&gt;
* &#039;&#039;&#039;중간부(Middle-end)&#039;&#039;&#039;는 이 내부 표현을 기반으로 프로그램의 효율을 향상시키는 최적화 단계이다. 불필요한 연산을 제거하고, 실행 속도와 메모리 사용량을 개선한다.  &lt;br /&gt;
* &#039;&#039;&#039;후단부(Back-end)&#039;&#039;&#039;는 최종적으로 타깃 플랫폼에 맞는 기계어 코드나 바이트코드를 생성하며, 여러 오브젝트 파일을 결합(Linking)하여 실행 가능한 프로그램을 만든다.  &lt;br /&gt;
&lt;br /&gt;
아래는 각 단계의 세부 구성이다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 단계 !! 설명 !! 관련 기술&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;어휘 분석 (Lexical Analysis)&#039;&#039;&#039; || 소스 코드를 문자 단위로 읽어 의미 있는 최소 단위(토큰)로 분해한다. || [[Flex]], [[Lex]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;구문 분석 (Syntax Analysis)&#039;&#039;&#039; || 언어의 문법 규칙에 따라 토큰을 구조적으로 해석하고, 추상 구문 트리(AST)를 생성한다. || [[Bison]], [[Yacc]], [[LALR]], [[PEG]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;의미 분석 (Semantic Analysis)&#039;&#039;&#039; || 변수, 함수, 타입의 유효성을 검사하고, 스코프 및 참조 관계를 검증한다. || [[LLVM Clang]], [[GCC Front-end]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;중간 코드 생성 (IR Generation)&#039;&#039;&#039; || 하드웨어에 독립적인 중간 표현(IR, Intermediate Representation)을 생성한다. || [[LLVM IR]], [[GIMPLE]], [[MIR]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;최적화 (Optimization)&#039;&#039;&#039; || 중간 표현 단계에서 프로그램의 성능을 향상시키기 위한 변환을 수행한다. 불필요한 연산 제거(Dead Code Elimination), 상수 접기(Constant Folding), 제어 흐름 단순화(Control Flow Simplification) 등이 포함된다. || SSA, Constant Folding, Dead Code Elimination&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;코드 생성 (Code Generation)&#039;&#039;&#039; || 최적화된 중간 표현을 실제 타깃 플랫폼의 명령어 집합(ISA)에 맞는 기계어 코드 또는 바이트코드로 변환한다. || [[x86_64]], [[ARM]], [[JVM]], [[WebAssembly]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;링킹 (Linking)&#039;&#039;&#039; || 여러 오브젝트 파일과 라이브러리를 결합하여 실행 가능한 단일 바이너리를 생성한다. || [[ld]], [[lld]], [[gold linker]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
현대의 컴파일러는 이러한 단계를 모듈화하여 독립적으로 개선하거나 교체할 수 있으며,  &lt;br /&gt;
대표적인 예로 [[LLVM]]은 프런트엔드, 미들엔드, 백엔드가 명확히 분리된 구조를 가진다.  &lt;br /&gt;
이러한 구조적 분리는 언어 확장, 타깃 아키텍처 추가, 최적화 연구 등 다양한 분야에서 유연성을 제공한다.&lt;br /&gt;
&lt;br /&gt;
== 주요 컴파일러 ==&lt;br /&gt;
아래 표는 대표적인 &#039;&#039;&#039;정적 컴파일러(Static Compiler)&#039;&#039;&#039; 또는 &#039;&#039;&#039;JIT 컴파일러&#039;&#039;&#039;를 정리한 것이다.  &lt;br /&gt;
인터프리터 기반 언어 구현체는 제외되었으며, 각 항목은 언어의 공식 또는 주요 오픈소스 컴파일러를 나타낸다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 컴파일러 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[C (프로그래밍 언어)]] || [[GCC]], [[Clang]], [[TinyCC]] || 전통적인 시스템 언어 컴파일러, 다양한 아키텍처 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[GCC]], [[Clang]], [[MSVC]] || 객체지향 + 저수준 접근성, [[LLVM]] 기반 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[Fortran]] || [[GFortran]], [[Flang]] || 과학·수치 계산 특화, [[LLVM]] 기반 현대화 진행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ada]] || [[GNAT]] || 고신뢰·임베디드 시스템용, [[SPARK]]와 결합 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[Pascal]] || [[Free Pascal]], [[Turbo Pascal]] || 교육용 및 레거시 시스템 유지에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DMD]], [[LDC]], [[GDC]] || C++ 대체 지향, 네이티브·LLVM 백엔드 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[rustc]] || 안전성과 병행성 중심, [[LLVM]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[gc]], [[Gollvm]] || 빠른 빌드와 간결한 런타임 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swiftc]] || [[LLVM]] 기반, [[Objective-C]]와 상호 운용  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] || [[Roslyn]], [[Mono AOT]] || .NET 플랫폼용 컴파일러, API 기반 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[javac]], [[Eclipse Compiler for Java]] || 바이트코드 생성, [[JVM]] 위에서 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[Kotlin]] || [[Kotlinc]] || JVM·Native·JS 등 다중 타깃 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[GHC]] || 함수형 언어 전용 고급 최적화, [[LLVM]] 백엔드  &lt;br /&gt;
|-&lt;br /&gt;
| [[OCaml]] || [[OCamlopt]] || 정적 타입 기반 함수형 언어, 네이티브 코드 컴파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[Zig]] || [[Zig Compiler]] || [[LLVM]] 사용, 크로스 컴파일과 성능 중심 설계  &lt;br /&gt;
|-&lt;br /&gt;
| [[Nim]] || [[Nim Compiler]] || [[C]], [[C++]], [[ObjC]] 코드로 트랜스파일, 네이티브 바이너리 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[V (프로그래밍 언어)]] || [[V Compiler]] || 단일 바이너리, 빠른 컴파일 속도  &lt;br /&gt;
|-&lt;br /&gt;
| [[Carbon (프로그래밍 언어)]] || [[Carbon Compiler]] || [[C++]] 후속 실험 언어, [[LLVM]] 인프라 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Whale]] || 차세대 저수준 언어용 [[LLVM]] 대체 툴체인, 고도로 모듈화된 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 인터프리터 ==&lt;br /&gt;
&#039;&#039;&#039;인터프리터(Interpreter)&#039;&#039;&#039;는 프로그램의 소스 코드를 &#039;&#039;&#039;즉시 해석하여 실행&#039;&#039;&#039;하는 소프트웨어이다.  &lt;br /&gt;
컴파일 단계를 거쳐 기계어로 변환하는 대신, 런타임 시점에 명령을 해석하고 수행한다.  &lt;br /&gt;
&lt;br /&gt;
이 방식은 프로그램의 수정·실행 주기가 빠르고, 대화형 환경(Interactive Environment)에 적합하다.  &lt;br /&gt;
주로 [[스크립트 언어]]나 [[동적 타이핑 언어]]에서 사용되며,  &lt;br /&gt;
최근에는 [[JIT (Just-In-Time) 컴파일]]을 결합한 하이브리드 구조가 일반적이다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 대표 인터프리터 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[CPython]], [[PyPy]] || 대표적인 스크립트 언어, JIT 지원 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ruby]] || [[MRI]], [[JRuby]], [[TruffleRuby]] || 순수 객체지향 구조, JVM 기반 구현체 존재  &lt;br /&gt;
|-&lt;br /&gt;
| [[JavaScript]] || [[V8]], [[SpiderMonkey]], [[JavaScriptCore]] || 브라우저 및 서버 런타임, 고성능 JIT 내장  &lt;br /&gt;
|-&lt;br /&gt;
| [[Lua]] || [[LuaJIT]], [[PUC-Rio Lua]] || 임베디드 시스템 친화적, C API 통합 용이  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Zend Engine]], [[HHVM]] || 서버 사이드 웹 스크립팅, JIT 기반 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perl]] || [[Perl Interpreter]] || 문자열 처리와 정규식에 강력한 기능 제공  &lt;br /&gt;
|-&lt;br /&gt;
| [[R (프로그래밍 언어)]] || [[GNU R]], [[Renjin]] || 통계 계산 및 데이터 분석용 언어  &lt;br /&gt;
|-&lt;br /&gt;
| [[Scheme]] || [[Racket]], [[Guile]], [[Chez Scheme]] || Lisp 계열, 함수형 메타프로그래밍 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Tcl]] || [[Tcl Interpreter]] || 간결한 문법과 확장성, 임베디드 제어용으로 활용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bash]] || [[GNU Bash]], [[Zsh]] || 셸 환경용 스크립트 해석기, 운영체제 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Elixir]] || [[BEAM VM]] || [[Erlang]] 기반 가상머신, 동시성 처리에 최적화  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 빌드 시스템 ==&lt;br /&gt;
&#039;&#039;&#039;빌드 시스템(Build System)&#039;&#039;&#039;은 여러 소스 파일을 자동으로 컴파일·링크하여 실행 가능한 프로그램이나 라이브러리를 생성하는 &#039;&#039;&#039;소프트웨어 자동화 도구&#039;&#039;&#039;이다.  &lt;br /&gt;
프로젝트가 커질수록 수작업으로 빌드를 관리하기 어려워지기 때문에,  &lt;br /&gt;
빌드 시스템은 &#039;&#039;&#039;의존성 관리&#039;&#039;&#039;, &#039;&#039;&#039;병렬 처리&#039;&#039;&#039;, &#039;&#039;&#039;테스트 실행&#039;&#039;&#039;, &#039;&#039;&#039;패키징&#039;&#039;&#039; 등 다양한 과정을 자동화한다.  &lt;br /&gt;
&lt;br /&gt;
일부 빌드 시스템은 단순한 명령 스크립트를 넘어,  &lt;br /&gt;
독자적인 DSL(Domain Specific Language) 또는 메타 빌드 구조를 제공한다.  &lt;br /&gt;
대표적인 예로 [[CMake]], [[Gradle]], [[Bazel]] 등이 있으며,  &lt;br /&gt;
현대 언어들은 각 언어에 특화된 자체 빌드 도구([[Cargo]], [[x.py]], [[Vex]] 등)를 제공하기도 한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 이름 !! 언어/환경 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Make]] || [[C]], [[C++]] || 전통적인 빌드 자동화 도구, 의존성 기반 명령 실행  &lt;br /&gt;
|-&lt;br /&gt;
| [[CMake]] || 다중 언어 || 메타 빌드 시스템, [[Ninja]]·[[Make]] 백엔드 지원, 크로스 플랫폼  &lt;br /&gt;
|-&lt;br /&gt;
| [[Ninja]] || 다중 언어 || 고속·병렬 빌드에 최적화된 경량 빌드 실행기  &lt;br /&gt;
|-&lt;br /&gt;
| [[Meson]] || [[C]], [[C++]], [[Rust]] 등 || Python 유사 DSL, [[Ninja]] 백엔드 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[SCons]] || [[Python]] || 완전한 파이썬 스크립팅 기반 빌드 자동화  &lt;br /&gt;
|-&lt;br /&gt;
| [[Premake]] || [[Lua]] || [[Lua]] 기반 설정, IDE 프로젝트 파일 자동 생성  &lt;br /&gt;
|-&lt;br /&gt;
| [[QMake]] || [[C++]] ([[Qt]]) || Qt 프레임워크 전용 프로젝트 구성 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Gradle]] || [[Java]], [[Kotlin]] || Groovy/Kotlin DSL 기반, JVM 생태계 표준 빌드 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Bazel]] || 다중 언어 || [[Google]]의 대규모 모노레포 빌드용, 캐싱·병렬화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[x.py]] || [[Rust]], [[Wave]] || 통합식 컴파일 파이프라인, 컴파일러 및 툴체인 자체 빌드에 사용  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 디버깅 및 분석 도구 ==&lt;br /&gt;
&#039;&#039;&#039;디버깅 및 분석 도구(Debugging and Analysis Tools)&#039;&#039;&#039;는  &lt;br /&gt;
프로그램의 실행 과정, 메모리 사용, 성능 병목, 시스템 호출 등을 관찰·분석하여  &lt;br /&gt;
오류를 진단하고 최적화를 지원하는 개발 보조 도구이다.  &lt;br /&gt;
&lt;br /&gt;
이러한 도구들은 일반적으로 다음과 같은 목적에 따라 구분된다:&lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 코드의 실행 흐름 제어 및 변수 상태 추적  &lt;br /&gt;
* &#039;&#039;&#039;메모리 분석기(Memory Analyzer):&#039;&#039;&#039; 메모리 누수, 접근 위반 등 런타임 오류 탐지  &lt;br /&gt;
* &#039;&#039;&#039;성능 프로파일러(Profiler):&#039;&#039;&#039; CPU·메모리 사용률, 함수 호출 시간 등 측정  &lt;br /&gt;
* &#039;&#039;&#039;시스템 추적기(System Tracer):&#039;&#039;&#039; 커널 및 시스템 호출 수준에서 동작 모니터링  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 도구 !! 기능 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[GDB]] || 디버거 || GNU 프로젝트의 대표 디버거, 프로세스 실행 중단·단계별 추적·변수 조사 가능  &lt;br /&gt;
|-&lt;br /&gt;
| [[LLDB]] || 디버거 || [[LLVM]] 인프라 기반, [[Clang]]과 통합된 현대적 디버거  &lt;br /&gt;
|-&lt;br /&gt;
| [[Valgrind]] || 메모리 분석 || 메모리 누수, 잘못된 접근, 캐시 동작 등을 분석  &lt;br /&gt;
|-&lt;br /&gt;
| [[AddressSanitizer]] || 런타임 검증 || [[Clang]] 및 [[GCC]] 통합 런타임 검증기, 메모리 오류 탐지  &lt;br /&gt;
|-&lt;br /&gt;
| [[ThreadSanitizer]] || 동시성 검증 || 데이터 레이스 및 스레드 동기화 문제 감지  &lt;br /&gt;
|-&lt;br /&gt;
| [[gprof]] || 성능 분석 || 함수 호출 빈도·시간 측정 기반의 전통적 프로파일러  &lt;br /&gt;
|-&lt;br /&gt;
| [[perf]] || 성능 측정 || [[Linux]] 커널 레벨의 고성능 성능 분석 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Perfetto]] || 트레이싱 || [[Android]] 및 [[Chrome]]용 성능 추적 프레임워크  &lt;br /&gt;
|-&lt;br /&gt;
| [[strace]] || 시스템 호출 추적 || [[Linux]] 환경에서 시스템 콜 및 시그널 동작 로깅  &lt;br /&gt;
|-&lt;br /&gt;
| [[DTrace]] || 동적 트레이싱 || [[Solaris]], [[macOS]], [[BSD]] 계열의 실시간 커널·유저 레벨 분석  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 패키지 관리자 ==&lt;br /&gt;
&#039;&#039;&#039;패키지 관리자(Package Manager)&#039;&#039;&#039;는  &lt;br /&gt;
라이브러리 설치, 업데이트, 삭제, 버전 관리, 의존성 해결을 자동화하는 시스템이다.  &lt;br /&gt;
개발자는 개별 라이브러리를 직접 다운로드할 필요 없이  &lt;br /&gt;
패키지 관리자를 통해 중앙 저장소(Repository)에서 필요한 모듈을 손쉽게 가져올 수 있다.  &lt;br /&gt;
&lt;br /&gt;
현대의 패키지 관리자는 단순한 설치 도구를 넘어  &lt;br /&gt;
&#039;&#039;&#039;빌드 시스템과의 통합&#039;&#039;&#039;, &#039;&#039;&#039;테스트 자동화&#039;&#039;&#039;, &#039;&#039;&#039;출시 버전 관리&#039;&#039;&#039;, &#039;&#039;&#039;보안 검증&#039;&#039;&#039;까지 포괄하며,  &lt;br /&gt;
언어별로 고유한 생태계를 형성하고 있다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 언어 !! 도구 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[C++]] || [[vcpkg]], [[Conan]] || 바이너리·소스 기반 혼합 지원, 크로스 플랫폼 배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rust]] || [[Cargo]] || 통합 빌드·배포·테스트 시스템, [[Crates.io]] 레지스트리 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[Python]] || [[pip]], [[Poetry]] || [[PyPI]] 연동, 가상 환경과 의존성 잠금 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Node.js]] / [[JavaScript]] || [[npm]], [[pnpm]], [[yarn]] || JS 생태계 표준 도구, 빠른 캐싱과 병렬 설치  &lt;br /&gt;
|-&lt;br /&gt;
| [[Java]] || [[Maven]], [[Gradle]] || XML/DSL 기반 의존성 정의, 중앙 저장소 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[C＃]] / [[.NET]] || [[NuGet]] || .NET 플랫폼 전용 패키지 배포 및 버전 관리  &lt;br /&gt;
|-&lt;br /&gt;
| [[Go]] || [[Go Modules]] || 소스 코드 기반 버전 모듈 관리, Git과 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Swift]] || [[Swift Package Manager]] || [[Xcode]]와 통합된 공식 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[D (프로그래밍 언어)]] || [[DUB]] || [[DMD]] 및 [[LDC]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Haskell]] || [[Cabal]], [[Stack]] || Hackage 저장소 기반 빌드·배포  &lt;br /&gt;
|-&lt;br /&gt;
| [[PHP]] || [[Composer]] || PHP 생태계의 표준 의존성 관리 도구  &lt;br /&gt;
|-&lt;br /&gt;
| [[Wave]] || [[Vex]] || [[WSON]] 기반 빌드·패키징·다중 플랫폼 배포 지원  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 통합 개발 환경 (IDE) ==&lt;br /&gt;
&#039;&#039;&#039;통합 개발 환경(Integrated Development Environment, IDE)&#039;&#039;&#039;는  &lt;br /&gt;
코드 작성, 빌드, 디버깅, 테스트, 배포 등의 개발 과정을 하나의 프로그램 내에서 수행할 수 있도록 통합한 소프트웨어이다.  &lt;br /&gt;
&lt;br /&gt;
IDE는 단순한 텍스트 에디터와 달리  &lt;br /&gt;
다음과 같은 구성 요소를 통합 제공한다:&lt;br /&gt;
* &#039;&#039;&#039;코드 편집기(Editor):&#039;&#039;&#039; 구문 강조, 자동 완성, 코드 탐색 기능 제공  &lt;br /&gt;
* &#039;&#039;&#039;빌드 시스템 통합(Build Integration):&#039;&#039;&#039; 컴파일, 링크, 테스트 자동화  &lt;br /&gt;
* &#039;&#039;&#039;디버거(Debugger):&#039;&#039;&#039; 런타임 실행 제어, 변수 추적, 스택 분석  &lt;br /&gt;
* &#039;&#039;&#039;버전 관리(VCS Integration):&#039;&#039;&#039; [[Git]] 등과 연동한 협업 기능  &lt;br /&gt;
* &#039;&#039;&#039;패키지 관리 연동(Package Manager Integration):&#039;&#039;&#039; 의존성 설치 및 관리 지원  &lt;br /&gt;
&lt;br /&gt;
현대의 IDE는 플러그인 확장 구조를 채택하여,  &lt;br /&gt;
다양한 언어와 프레임워크를 통합적으로 지원한다.  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! IDE !! 주요 언어 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio]] || [[C (프로그래밍 언어)]], [[C++]], [[C＃]] || 마이크로소프트의 대표 IDE, 윈도우 통합 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Visual Studio Code|VS Code]] || 다중 언어 || 오픈소스, 경량·확장성 중심, 풍부한 확장 마켓  &lt;br /&gt;
|-&lt;br /&gt;
| [[RustRover]] || [[Rust]] || [[JetBrains]] 기반 Rust 전용 IDE, [[Cargo]] 완전 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[IntelliJ IDEA]] || [[Java]], [[Kotlin]] || JVM 언어 중심, 강력한 코드 분석 및 리팩토링  &lt;br /&gt;
|-&lt;br /&gt;
| [[PyCharm]] || [[Python]] || 코드 자동 완성, 디버깅, 테스트 프레임워크 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[CLion]] || [[C (프로그래밍 언어)]], [[C++]], [[Rust]] || [[JetBrains]]의 네이티브 언어 IDE, [[CMake]] 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[Xcode]] || [[Swift]], [[Objective-C]] || [[macOS]] 및 [[iOS]] 공식 개발 환경  &lt;br /&gt;
|-&lt;br /&gt;
| [[Eclipse]] || [[Java]], [[C++]], [[Python]] 등 || 오픈소스, 플러그인 기반 확장 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[NetBeans]] || [[Java]], [[PHP]], [[HTML]] || [[Apache]] 재단 관리, 교육 및 웹 개발 친화적  &lt;br /&gt;
|-&lt;br /&gt;
| [[Rider]] || [[C＃]], [[.NET]] || [[JetBrains]]의 크로스 플랫폼 .NET IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Android Studio]] || [[Kotlin]], [[Java]] || [[Android]] 공식 IDE, [[Gradle]] 빌드 통합  &lt;br /&gt;
|-&lt;br /&gt;
| [[Qt Creator]] || [[C++]], [[QML]] || [[Qt]] 프레임워크용 공식 IDE  &lt;br /&gt;
|-&lt;br /&gt;
| [[Code::Blocks]] || [[C (프로그래밍 언어)]], [[C++]] || 오픈소스 경량 IDE, 플러그인 기반 구조  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 중간 표현 (IR) ==&lt;br /&gt;
&#039;&#039;&#039;중간 표현(Intermediate Representation, IR)&#039;&#039;&#039;은  &lt;br /&gt;
컴파일러 내부에서 소스 코드의 의미를 추상화하여 표현한 중간 형태의 코드 구조이다.  &lt;br /&gt;
이는 프론트엔드(Front-end)에서 생성되어, 미들엔드(Middle-end) 최적화를 거친 뒤  &lt;br /&gt;
백엔드(Back-end)에서 기계어로 변환되는 핵심 매개체 역할을 한다.  &lt;br /&gt;
&lt;br /&gt;
IR은 언어의 문법적 복잡성을 제거하고,  &lt;br /&gt;
하드웨어나 플랫폼에 독립적인 형태로 프로그램의 의미를 유지한다.  &lt;br /&gt;
이로써 최적화, 코드 분석, 플랫폼 간 이식성을 효율적으로 구현할 수 있다.  &lt;br /&gt;
&lt;br /&gt;
대표적인 IR은 대부분 &#039;&#039;&#039;SSA(Static Single Assignment)&#039;&#039;&#039; 형식을 채택하며,  &lt;br /&gt;
각 변수는 단 한 번만 할당되어 데이터 흐름 분석이 단순화된다.  &lt;br /&gt;
또한 일부 IR은 가상 머신 실행용(예: JVM Bytecode, WebAssembly)으로 활용되어,  &lt;br /&gt;
컴파일과 실행의 경계를 유연하게 확장한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width:100%;&amp;quot;&lt;br /&gt;
! 명칭 !! 사용 컴파일러 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| [[LLVM IR]] || [[Clang]], [[Rustc]], [[Swiftc]] || 범용 SSA 기반 IR, [[LLVM]] 미들엔드의 핵심 구성  &lt;br /&gt;
|-&lt;br /&gt;
| [[GIMPLE]] || [[GCC]] || 3단계 중간 표현(고수준–단순화–저수준) 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[MIR]] || [[Rustc]] || [[LLVM]] 이전 단계의 내부 표현, 제어 흐름 기반 분석에 사용  &lt;br /&gt;
|-&lt;br /&gt;
| [[WAIL]] || [[Whale]] || [[Wave]] 전용 백엔드 IR, “WAIL Assembly Integration Layer”  &lt;br /&gt;
|-&lt;br /&gt;
| [[MLIR]] || [[LLVM Project]] || 멀티 레벨 중간 표현, 다양한 도메인(머신러닝·GPU)에 대응  &lt;br /&gt;
|-&lt;br /&gt;
| [[SIL (Swift Intermediate Language)]] || [[Swiftc]] || [[Swift]] 전용 중간 언어, [[ARC]] 기반 최적화  &lt;br /&gt;
|-&lt;br /&gt;
| [[FIR (Fortran IR)]] || [[Flang]] || [[Fortran]]용 [[LLVM]] 통합 IR, 과학 계산용 최적화 지원  &lt;br /&gt;
|-&lt;br /&gt;
| [[GHC Core]] || [[GHC]] || [[Haskell]] 전용 함수형 중간 표현, 람다 기반 변환 구조  &lt;br /&gt;
|-&lt;br /&gt;
| [[JVM Bytecode]] || [[javac]], [[kotlinc]], [[scalac]] || [[JVM]] 위에서 실행되는 스택 기반 중간 코드  &lt;br /&gt;
|-&lt;br /&gt;
| [[WebAssembly]] || [[Emscripten]], [[V8]], [[Wasmtime]] || 브라우저 및 경량 VM용 범용 중간 표현  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 컴파일러 최적화 기법 ==&lt;br /&gt;
&#039;&#039;&#039;컴파일러 최적화(Compiler Optimization)&#039;&#039;&#039;는  &lt;br /&gt;
생성된 코드의 성능을 향상시키거나 메모리 사용량을 줄이기 위해  &lt;br /&gt;
중간 표현(IR) 또는 기계어 단계에서 수행되는 변환 과정이다.  &lt;br /&gt;
&lt;br /&gt;
최적화는 주로 &#039;&#039;&#039;미들엔드(Middle-end)&#039;&#039;&#039; 단계에서 이루어지며,  &lt;br /&gt;
프로그램의 의미(semantic)를 변경하지 않으면서 실행 효율을 높인다.  &lt;br /&gt;
일부 최적화는 타깃 아키텍처에 맞추어 &#039;&#039;&#039;백엔드(Back-end)&#039;&#039;&#039; 단계에서 추가로 수행된다.&lt;br /&gt;
&lt;br /&gt;
대표적인 최적화 기법은 다음과 같다:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Constant Folding (상수 접기)&#039;&#039;&#039; –  &lt;br /&gt;
  컴파일 시점에 상수 표현식을 미리 계산하여 실행 시 연산을 줄인다.  &lt;br /&gt;
  예: `3 * 4` → `12`&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Dead Code Elimination (죽은 코드 제거)&#039;&#039;&#039; –  &lt;br /&gt;
  실행 결과에 영향을 주지 않는 명령어, 변수, 분기 등을 삭제하여 코드 크기를 축소한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Loop Unrolling (루프 전개)&#039;&#039;&#039; –  &lt;br /&gt;
  반복문 내부의 연산을 여러 번 펼쳐 배치함으로써 루프 제어 오버헤드를 줄인다.  &lt;br /&gt;
  예: `for(i=0;i&amp;lt;4;i++) sum+=a[i];` → 직접 4회 연산 나열&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Inlining (인라이닝)&#039;&#039;&#039; –  &lt;br /&gt;
  짧고 자주 호출되는 함수를 호출 대신 본문으로 삽입하여 함수 호출 오버헤드를 제거한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Register Allocation (레지스터 할당)&#039;&#039;&#039; –  &lt;br /&gt;
  변수나 임시 값을 CPU 레지스터에 효율적으로 배치하여 메모리 접근을 최소화한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instruction Scheduling (명령어 스케줄링)&#039;&#039;&#039; –  &lt;br /&gt;
  명령어 실행 순서를 재배치하여 파이프라인 병목을 줄이고 병렬 실행 효율을 높인다.&lt;br /&gt;
&lt;br /&gt;
이 외에도 다음과 같은 고급 최적화가 존재한다:&lt;br /&gt;
* &#039;&#039;&#039;Common Subexpression Elimination&#039;&#039;&#039; – 동일한 계산을 한 번만 수행  &lt;br /&gt;
* &#039;&#039;&#039;Loop-Invariant Code Motion&#039;&#039;&#039; – 루프 내 불변식을 루프 밖으로 이동  &lt;br /&gt;
* &#039;&#039;&#039;Tail Call Optimization&#039;&#039;&#039; – 재귀 호출을 반복 구조로 변환  &lt;br /&gt;
* &#039;&#039;&#039;Interprocedural Optimization&#039;&#039;&#039; – 함수 간 데이터 흐름 기반 최적화  &lt;br /&gt;
* &#039;&#039;&#039;Vectorization&#039;&#039;&#039; – [[SIMD]] 명령어를 이용해 데이터 병렬 처리  &lt;br /&gt;
&lt;br /&gt;
최적화 수준은 일반적으로 컴파일러 옵션으로 제어되며,  &lt;br /&gt;
예를 들어 [[GCC]]와 [[Clang]]에서는 `-O1`, `-O2`, `-O3`, `-Ofast`, `-Os` 등의 단계를 제공한다.  &lt;br /&gt;
이러한 단계는 코드 크기, 실행 속도, 빌드 시간 사이의 균형을 조절하기 위한 설정이다.&lt;br /&gt;
&lt;br /&gt;
== 현대 컴파일러 트렌드 ==&lt;br /&gt;
현대의 컴파일러는 단순히 코드를 기계어로 변환하는 역할을 넘어,  &lt;br /&gt;
&#039;&#039;&#039;실행 효율&#039;&#039;&#039;, &#039;&#039;&#039;플랫폼 다양성&#039;&#039;&#039;, &#039;&#039;&#039;개발 환경 통합&#039;&#039;&#039;, &#039;&#039;&#039;언어 생태계 확장성&#039;&#039;&#039;을 동시에 달성하는 방향으로 발전하고 있다.  &lt;br /&gt;
아래는 현재 컴파일러 기술의 주요 트렌드이다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[JIT (Just-In-Time) 컴파일]]&#039;&#039;&#039; –  &lt;br /&gt;
  실행 시점에 코드의 일부를 기계어로 변환하여 성능과 유연성을 동시에 확보하는 기법.  &lt;br /&gt;
  런타임 중 프로파일링 데이터를 수집해 최적화하며,  &lt;br /&gt;
  대표적으로 [[V8]], [[JVM]], [[.NET CLR]], [[LuaJIT]] 등이 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[AOT (Ahead-Of-Time) 컴파일]]&#039;&#039;&#039; –  &lt;br /&gt;
  프로그램 실행 전에 모든 코드를 완전히 컴파일하는 방식으로,  &lt;br /&gt;
  실행 속도와 배포 효율이 높다.  &lt;br /&gt;
  [[Rust]], [[Swift]], [[C++]], [[Wave]] 같은 정적 언어들이 주로 채택한다.  &lt;br /&gt;
  [[GraalVM]]의 AOT 모드와 같이 JIT 기반 언어에서도 AOT를 병행하는 사례가 늘고 있다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[멀티 타깃 빌드]]&#039;&#039;&#039; –  &lt;br /&gt;
  하나의 소스 코드로 여러 하드웨어 아키텍처(x86, ARM, RISC-V, WebAssembly 등)에 대응하는 기능.  &lt;br /&gt;
  [[LLVM]], [[Whale]], [[GCC]]는 모듈식 백엔드 구조를 통해 이를 지원하며,  &lt;br /&gt;
  [[Vex]] 같은 패키지 매니저는 빌드 타깃을 직접 지정할 수 있게 통합된다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[자체 툴체인]]&#039;&#039;&#039; –  &lt;br /&gt;
  언어 전용으로 설계된 빌드 및 패키징 시스템을 통합 제공하는 구조.  &lt;br /&gt;
  [[Cargo]]([[Rust]]), [[Vex]]([[Wave]]), [[Swift Package Manager]], [[Go Modules]] 등이 이에 속한다.  &lt;br /&gt;
  이는 빌드 자동화, 테스트, 배포를 언어 레벨에서 일원화하여 개발 생태계를 견고하게 만든다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[언어 서버 프로토콜]] (LSP)&#039;&#039;&#039; –  &lt;br /&gt;
  [[IDE]]와 컴파일러 간의 실시간 연동을 표준화한 프로토콜.  &lt;br /&gt;
  코드 분석, 자동 완성, 오류 감지 등을 컴파일러가 직접 제공하며,  &lt;br /&gt;
  [[VS Code]], [[RustRover]], [[IntelliJ IDEA]] 등 대부분의 IDE가 지원한다.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[IR 수준 최적화]]&#039;&#039;&#039; –  &lt;br /&gt;
  [[LLVM Pass]], [[WAIL Pass]], [[MLIR]]과 같은 중간 표현 레벨에서 수행되는 고급 최적화 기법.  &lt;br /&gt;
  백엔드 독립적으로 적용되어 다양한 플랫폼에서 동일한 최적화 효과를 얻을 수 있다.  &lt;br /&gt;
  이는 현대 컴파일러의 핵심 경쟁력으로 자리 잡고 있다.&lt;br /&gt;
&lt;br /&gt;
현대 컴파일러들은 이러한 기술을 결합하여,  &lt;br /&gt;
&#039;&#039;&#039;다중 아키텍처 대응·지능형 최적화·개발 도구 통합&#039;&#039;&#039;이라는 세 가지 축을 중심으로 진화하고 있다.  &lt;br /&gt;
이러한 경향은 [[LLVM]], [[Whale]], [[GraalVM]], [[V8]] 등의 오픈소스 프로젝트를 통해 빠르게 확산되고 있다.&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[컴파일러]]  &lt;br /&gt;
* [[링커]]  &lt;br /&gt;
* [[어셈블러]]  &lt;br /&gt;
* [[빌드 시스템]]  &lt;br /&gt;
* [[LLVM]]  &lt;br /&gt;
* [[GCC]]  &lt;br /&gt;
* [[Whale]]  &lt;br /&gt;
* [[Vex]]  &lt;br /&gt;
* [[IDE]]  &lt;br /&gt;
* [[디버거]]  &lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;br /&gt;
* Alfred V. Aho, Monica Lam, Ravi Sethi, Jeffrey Ullman, &#039;&#039;Compilers: Principles, Techniques, and Tools&#039;&#039; (Dragon Book)  &lt;br /&gt;
* Chris Lattner, “LLVM: A Compilation Framework for Lifelong Program Analysis &amp;amp; Transformation” (2002)  &lt;br /&gt;
* John Levine, &#039;&#039;Linkers and Loaders&#039;&#039; (2000)  &lt;br /&gt;
* Rustc Dev Guide – [https://rustc-dev-guide.rust-lang.org/]  &lt;br /&gt;
* LLVM Documentation – [https://llvm.org/docs/]  &lt;br /&gt;
* GCC Internals Manual – GNU Project  &lt;br /&gt;
* JetBrains IDE Documentation – 2024 Edition&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
	<entry>
		<id>https://ko.techpedia.wiki/index.php?title=%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4&amp;diff=185</id>
		<title>프로그래밍 언어</title>
		<link rel="alternate" type="text/html" href="https://ko.techpedia.wiki/index.php?title=%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4&amp;diff=185"/>
		<updated>2025-11-09T02:00:34Z</updated>

		<summary type="html">&lt;p&gt;LunaStev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{언어&lt;br /&gt;
 | 한국어=https://ko.techpedia.wiki/wiki/프로그래밍_언어&lt;br /&gt;
 | 영어=https://en.techpedia.wiki/wiki/Programming_languages&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
&#039;&#039;&#039;프로그래밍 언어&#039;&#039;&#039;(Programming Language)는 컴퓨터에게 명령을 전달하고 문제를 해결하기 위해 사람이 설계한 &#039;&#039;&#039;형식적 언어(formal language)&#039;&#039;&#039;이다.  &lt;br /&gt;
이 언어는 인간의 논리적 사고를 기계가 이해할 수 있는 구조로 변환하기 위해 고안되었으며,  &lt;br /&gt;
&#039;&#039;&#039;문법(syntax)&#039;&#039;&#039;, &#039;&#039;&#039;의미(semantics)&#039;&#039;&#039;, &#039;&#039;&#039;실행 모델(execution model)&#039;&#039;&#039;이라는 세 가지 축을 기반으로 구성된다.  &lt;br /&gt;
&lt;br /&gt;
프로그래밍 언어는 컴퓨터 과학의 근간을 이루는 도구로서,  &lt;br /&gt;
인간의 사고를 기계적 연산으로 전환하는 가장 직접적인 매개체이다.  &lt;br /&gt;
언어의 설계와 발전은 하드웨어의 진화, 소프트웨어 공학의 확립, 그리고 인공지능·데이터 과학의 확장과 맞물려 지속적으로 변화해왔다.  &lt;br /&gt;
&lt;br /&gt;
각 언어는 특정한 목표와 철학을 바탕으로 만들어지며,  &lt;br /&gt;
이는 곧 해당 언어가 어떤 문제를 해결하기 위해 설계되었는지를 반영한다.  &lt;br /&gt;
예를 들어, &#039;&#039;&#039;[[C (프로그래밍 언어)]]&#039;&#039;&#039;는 하드웨어 제어를 위한 저수준 접근성을,  &lt;br /&gt;
&#039;&#039;&#039;[[Python]]&#039;&#039;&#039;은 생산성과 가독성을,  &lt;br /&gt;
&#039;&#039;&#039;[[Rust]]&#039;&#039;&#039;는 메모리 안전성과 성능의 균형을 중시한다.  &lt;br /&gt;
&lt;br /&gt;
프로그래밍 언어의 주요 역할은 다음과 같다:&lt;br /&gt;
* &#039;&#039;&#039;알고리즘과 논리의 표현:&#039;&#039;&#039; 문제 해결 과정을 구조적으로 기술  &lt;br /&gt;
* &#039;&#039;&#039;데이터와 제어 흐름의 정의:&#039;&#039;&#039; 프로그램의 상태와 동작 순서를 규정  &lt;br /&gt;
* &#039;&#039;&#039;하드웨어 및 소프트웨어와의 상호작용:&#039;&#039;&#039; 시스템 자원 접근 및 외부 세계와의 통신  &lt;br /&gt;
&lt;br /&gt;
현대의 프로그래밍 언어는 학문적 실험을 넘어 산업 전반에 걸쳐 사용되며,  &lt;br /&gt;
교육, 연구, 공학, 예술, 과학 시각화, 창작 등 광범위한 분야에서 핵심적인 역할을 수행한다.  &lt;br /&gt;
이는 단순한 도구를 넘어, &#039;&#039;&#039;인류의 지식 체계와 기술 발전을 이끄는 언어적 기반&#039;&#039;&#039;으로 평가된다.  &lt;br /&gt;
&lt;br /&gt;
== 프로그래밍 언어 목록 ==&lt;br /&gt;
아래는 TechPedia에서 다루는 프로그래밍 언어의 목록입니다.  &lt;br /&gt;
이 목록은 &#039;&#039;&#039;이름순(숫자 → 알파벳 → 기타)&#039;&#039;&#039; 으로 정리됩니다.  &lt;br /&gt;
새로운 언어 문서를 만들면 여기에 추가하세요.&lt;br /&gt;
&lt;br /&gt;
=== 0–9 ===&lt;br /&gt;
* [[1C:Enterprise]]&lt;br /&gt;
* [[4th Dimension]]&lt;br /&gt;
&lt;br /&gt;
=== A ===&lt;br /&gt;
* [[Ada]]&lt;br /&gt;
* [[ALGOL]]&lt;br /&gt;
* [[APL]]&lt;br /&gt;
* [[Assembly]]&lt;br /&gt;
&lt;br /&gt;
=== B ===&lt;br /&gt;
* [[B]]&lt;br /&gt;
* [[BASIC]]&lt;br /&gt;
* [[Brainfuck]]&lt;br /&gt;
&lt;br /&gt;
=== C ===&lt;br /&gt;
* [[C (프로그래밍 언어)]]&lt;br /&gt;
* [[C/AL]]&lt;br /&gt;
* [[C Shell]]&lt;br /&gt;
* [[C--]]&lt;br /&gt;
* [[C++]]&lt;br /&gt;
* [[C*]]&lt;br /&gt;
* [[C＃]]&lt;br /&gt;
* [[Caché ObjectScript]]&lt;br /&gt;
* [[Caml]]&lt;br /&gt;
* [[Carbon]]&lt;br /&gt;
* [[Cayenne]]&lt;br /&gt;
* [[Cecil]]&lt;br /&gt;
* [[CESIL]]&lt;br /&gt;
* [[Céu]]&lt;br /&gt;
* [[Ceylon]]&lt;br /&gt;
* [[CFEngine]]&lt;br /&gt;
* [[CFML]]&lt;br /&gt;
* [[Cg]]&lt;br /&gt;
* [[Ch]]&lt;br /&gt;
* [[Chapel]]&lt;br /&gt;
* [[Charm]]&lt;br /&gt;
* [[CHILL]]&lt;br /&gt;
* [[CHIP-8]]&lt;br /&gt;
* [[ChucK]]&lt;br /&gt;
* [[Cilk]]&lt;br /&gt;
* [[Claire]]&lt;br /&gt;
* [[Clean]]&lt;br /&gt;
* [[Clipper]]&lt;br /&gt;
* [[CLIPS]]&lt;br /&gt;
* [[CLIST]]&lt;br /&gt;
* [[Clojure]]&lt;br /&gt;
* [[CLU]]&lt;br /&gt;
* [[CMS-2]]&lt;br /&gt;
* [[COBOL]]&lt;br /&gt;
* [[CobolScript]]&lt;br /&gt;
* [[Cobra]]&lt;br /&gt;
* [[CoffeeScript]]&lt;br /&gt;
* [[ColdFusion]]&lt;br /&gt;
* [[COMAL]]&lt;br /&gt;
* [[COMIT]]&lt;br /&gt;
* [[Common Intermediate]]&lt;br /&gt;
* [[Common Lisp]]&lt;br /&gt;
* [[COMPASS]]&lt;br /&gt;
* [[Component Pascal]]&lt;br /&gt;
* [[COMTRAN]]&lt;br /&gt;
* [[Concurrent Pascal]]&lt;br /&gt;
* [[Constraint Handling Rules]]&lt;br /&gt;
* [[Control Language]]&lt;br /&gt;
* [[Coq]]&lt;br /&gt;
* [[CORAL]]&lt;br /&gt;
* [[CorVision]]&lt;br /&gt;
* [[COWSEL]]&lt;br /&gt;
* [[CPL]]&lt;br /&gt;
* [[Cryptol]]&lt;br /&gt;
* [[Crystal]]&lt;br /&gt;
* [[Csound]]&lt;br /&gt;
* [[Cuneiform]]&lt;br /&gt;
* [[Curl]]&lt;br /&gt;
* [[Curry]]&lt;br /&gt;
* [[Cybil]]&lt;br /&gt;
* [[Cyclone]]&lt;br /&gt;
* [[Cypher Query Language]]&lt;br /&gt;
* [[Cython]]&lt;br /&gt;
&lt;br /&gt;
=== D ===&lt;br /&gt;
* [[D]]&lt;br /&gt;
* [[Dart]]&lt;br /&gt;
&lt;br /&gt;
=== E ===&lt;br /&gt;
* [[Eiffel]]&lt;br /&gt;
* [[Elixir]]&lt;br /&gt;
* [[Erlang]]&lt;br /&gt;
&lt;br /&gt;
=== F ===&lt;br /&gt;
* [[F＃]]&lt;br /&gt;
* [[Fortran]]&lt;br /&gt;
&lt;br /&gt;
=== G ===&lt;br /&gt;
* [[Go]]&lt;br /&gt;
* [[Groovy]]&lt;br /&gt;
&lt;br /&gt;
=== H ===&lt;br /&gt;
* [[Haskell]]&lt;br /&gt;
&lt;br /&gt;
=== J ===&lt;br /&gt;
* [[Java]]&lt;br /&gt;
* [[JavaScript]]&lt;br /&gt;
* [[Julia]]&lt;br /&gt;
&lt;br /&gt;
=== K ===&lt;br /&gt;
* [[Kotlin]]&lt;br /&gt;
&lt;br /&gt;
=== L ===&lt;br /&gt;
* [[Lisp]]&lt;br /&gt;
* [[Lua]]&lt;br /&gt;
&lt;br /&gt;
=== M ===&lt;br /&gt;
* [[MATLAB]]&lt;br /&gt;
* [[Modula-2]]&lt;br /&gt;
&lt;br /&gt;
=== N ===&lt;br /&gt;
* [[Nim]]&lt;br /&gt;
&lt;br /&gt;
=== O ===&lt;br /&gt;
* [[Objective-C]]&lt;br /&gt;
* [[OCaml]]&lt;br /&gt;
&lt;br /&gt;
=== P ===&lt;br /&gt;
* [[Pascal]]&lt;br /&gt;
* [[Perl]]&lt;br /&gt;
* [[PHP]]&lt;br /&gt;
* [[Prolog]]&lt;br /&gt;
* [[Python]]&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
* [[R]]&lt;br /&gt;
* [[Ruby]]&lt;br /&gt;
* [[Rust]]&lt;br /&gt;
&lt;br /&gt;
=== S ===&lt;br /&gt;
* [[Scala]]&lt;br /&gt;
* [[Scheme]]&lt;br /&gt;
* [[Smalltalk]]&lt;br /&gt;
* [[Swift]]&lt;br /&gt;
&lt;br /&gt;
=== T ===&lt;br /&gt;
* [[Tcl]]&lt;br /&gt;
* [[TypeScript]]&lt;br /&gt;
&lt;br /&gt;
=== V ===&lt;br /&gt;
* [[V]]&lt;br /&gt;
* [[Verilog]]&lt;br /&gt;
* [[VHDL]]&lt;br /&gt;
* [[Visual Basic]]&lt;br /&gt;
&lt;br /&gt;
=== W ===&lt;br /&gt;
* [[Wave]]&lt;br /&gt;
* [[Whitespace]]&lt;br /&gt;
&lt;br /&gt;
=== Z ===&lt;br /&gt;
* [[Zeta]]&lt;br /&gt;
* [[Zig]]&lt;br /&gt;
&lt;br /&gt;
=== 기타 ===&lt;br /&gt;
* [[Malbolge]]&lt;br /&gt;
* [[INTERCAL]]&lt;br /&gt;
* [[에소테릭 프로그래밍 언어]]&lt;br /&gt;
* [[마크업 언어]]&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[컴퓨터 과학 기초]]&lt;br /&gt;
* [[컴파일러와 도구]]&lt;br /&gt;
* [[운영체제]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;이 문서는 프로그래밍 언어의 개념을 설명하는 동시에, TechPedia에서 제공하는 언어 목록의 허브 역할을 합니다.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>LunaStev</name></author>
	</entry>
</feed>