🤔 유니티에서 ".cs 파일"을 왜 스크립트 파일이라고 부를까?
유니티를 공부하다가,
".cs 파일을 왜 스크립트 파일이라고 부를까?" 하는 궁금증이 생겼다
.cs 파일은 사실 C# 소스 파일(C# Source)이다
즉, 스크립트(script)의 약자가 아니다!😲
그런데도 불구하고, 유니티에서는 .cs 파일을 스크립트 파일이라고 부른다
[왜 그럴까......?]
유니티에서는 .cs 파일을
하나의 독립된 프로그램처럼 만드는 것이 아니라, 게임 오브젝트에 붙여서 동작(Behavior)을 추가하는 코드 조각으로 사용한다
이 방식은 마치
.html 파일에 자바 스크립트를 붙여서 페이지에 동작을 추가하는 것과 매우 비슷하다
즉, html 파일에 붙은 javascript처럼, 게임 오브젝트에 붙은 .cs 파일이랄까...? ㅎㅎ
[기존 소프트웨어 개발에서 스크립트(script)란......?]
동작을 정의하는 짧은 코드를 뜻하는데, 유니티의 .cs 파일 사용 방식이 이 개념과 딱 들어 맞는다
그래서 유니티에서 자연스럽게 .cs파일을 스크립트 파일이라고 부르게 된 것이다
😲 스크립트 파일인데, 인터프리터 언어일까?
유니티에서 .cs 파일을 스크립트 파일이라고 부르다 보니, 자연스럽게 이런 생각이 들었다.
"스크립트 파일이면 인터프리터 언어인가?!?!"
왜냐하면 나는 "스크립트"라는 단어를 들으면, 인터프리터 방식으로 한 줄씩 해석하고 실행하는 언어로 떠올렸기 때문이다
(대표적으로 Python, JavaScript 같은 언어들)
하지만 이걸 공부하면서 알게 됐다
현대에서는 "스크립트"라는 단어가 꼭 "인터프리터 언어"를 의미하지는 않는다
전통적으로는 스크립트 = 인터프린트 언어가 맞았다
하지만 지금은 가볍게 동작을 추가할 수 있는 코드를 통틀어 스크립트라고 부른다
실행방식(컴파일이든 인터프린트든)은 중요한 기준이 아니다
결국, 유니티의 .cs 파일은
C#으로 작성된 컴파일 언어이면서 하이브리드 방식이지만,
오브젝트에 동작을 추가하는 짧은 코드라는 점에서 스크립트 파일처럼 다루는 것이다
🚀 요즘은 한 줄 한 줄 해석하는 언어가 없다
요즘 인터프린트 언어들도
소스코드를 바로 해석하지 않고
먼저 바이트코드(Bytecode)로 변환하거나, 내부적으로 중간 형태(IR)로 최적한 뒤 실행하는 경우가 많다
(예) Python은 .py 파일을 .pyc 바이트코드로 변환,
JavaScript(V8 엔진)는 내부에서 최적화를 거쳐 실행 속도를 높임
즉, 겉으로 보기에는 코드를 수정하면 바로 반영되는 것처럼 보이지만
내부적으로는 한 줄 한 줄 해석하는 게 아니라 최적화 과정을 거쳐 빠르게 실행하는 방향으로 진화했다
🤔 여기서 헷갈렸던 것: JIT은 인터프리터인가?
공부를 하면서 처음에는
"JIT 컴파일러가 변경된 부분만 컴파일한다"는 이야기를 듣고,
"변경된 부분만 다루니까 인터프리터처럼 동작하는 거 아냐?"라고 생각했다
하지만 정확히는 그렇지 않다
JIT는 소스 코드가 아니라 중간 언어를 기계어로 컴파일한다
변경된 부분만 컴파일이란 것은 성능 최적화를 위한 전략일 뿐이지
인터프린트처럼 그냥 해석만 하는 것이 아니다
✅ 최종 한 줄 요약
"스크립트 = 인터프리트는 옛날 이야기고, C#과 Java는 런타임 컴파일하는 하이브리드 언어다"
ㄴ 이때, JIT 컴파일러는 메서드 단위 또는 블록 단위로 실행 도중에 기계어로 변환하여 실행한다
'IT공부' 카테고리의 다른 글
| [C#] .NET 9 decimal 구조체 톺아보기 (0) | 2025.06.16 |
|---|---|
| [C#, Unity] 비동기 함수와 코루틴의 차이 (0) | 2025.05.05 |
| [C#] 추상 클래스와 인터페이스의 차이 (0) | 2025.04.14 |
| [C#] 오버라이딩 정리 (0) | 2025.04.11 |
| [C#] 문자열 리터럴 vs 참조 타입 문자열 (0) | 2025.04.10 |