재밌고 어려운 IT를 이해해보자~!
Visual Studio, C# 컴파일 본문
콘솔 앱(.NET Framework) 프로젝트 생성 !
컴파일이란?
각각의 언어마다 별개의 컴파일러가 존재합니다. 우리가 C#로 작성된 소스 코드를 컴파일하면, C# 컴파일러에 의해 exe나 dll 파일과 같은 출력 파일이 만들어집니다. 이렇게 만들어진 파일을 어셈블리(Assembly)라고 부릅니다. 그리고 이 어셈블리 안에는 CIL(Common Intermediate Language)와 메타데이터(Metadata), 매니페스트(Manifest) 정보가 포함되어 있습니다.
여기서 CIL란 컴퓨터가 해석 가능한 원시 코드(Native Code)가 되기 전 중간 단계의 언어입니다. 우리가 작성한 소스 코드는 바로 CIL로 변환되는 것입니다. 여기에서 컴파일 과정은 끝이 납니다. 이후는, JIT(Just-In-Time) 컴파일러에 의해 컴퓨터가 이해할 수 있는 원시 코드로 다시 컴파일되어 우리가 만든 프로그램이 실행되게 됩니다.
이후 디버깅을 통해 출력 결과를 확인할 수 있습니다.
디버깅이란?
프로그램 내에 있는 기존의 논리적인 오류나 잠재적인 오류를 가리켜 버그(bug)라 하며, 이러한 오류를 수정해나가는 과정을 디버깅이라 말합니다. 우리가 프로그램을 만드는 과정에서 '반드시'라고 해도 될 정도로 많은 결함들이 생겨납니다. 프로그램이 실행 중에 비정상적으로 종료되거나, 우리가 생각한 결과와는 다른 잘못된 결과 값을 출력할 때 디버깅을 통해 근본적인 원인을 찾아낼 수 있습니다.
Hello world 코드분석
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
}
}
}
using System;
네임스페이스란?
네임스페이스(namespace)는 관련된 구조체, 클래스, 델리게이트, 인터페이스 등을 그룹화 한것을 말합니다. 예를 들어서, System.Collections.Generic에는 제네릭 컬렉션을 정의하는 클래스와 인터페이스들이 들어있습니다. 또 System.Linq에는, LINQ를 사용하는 쿼리를 지원하는 클래스와 인터페이스들이 들어있습니다. 이처럼 네임스페이스는 사용하기 편리하게끔 성격이 비슷한 것들을 묶어놓는 것과 같습니다.
Console.WriteLine("Hello, world!"); 코드만으로도 콘솔 출력이 가능하다!
'C#' 카테고리의 다른 글
무한루프 제어문 (0) | 2024.06.29 |
---|---|
반복문 (0) | 2024.06.28 |
조건문 (0) | 2024.06.28 |
연산자(Operators) (0) | 2024.06.28 |
변수, 데이터 형식, 상수 (0) | 2024.06.28 |