Machineboy空
컴파일 언어와 스크립트 언어 본문
그간 아무렇지 않게 언어를 선택해 왔다. 선택했다는 건 내 의지를 가지고 판단을 했다는 것이니 이 표현은 틀렸다. 당연히 Unity에서는 C#이 지원되니까 C#을 배웠고, iOS 앱을 만드려면 XCode에서 Swift를 써야한다고 하니 Swift를 배웠다.
스크립트 언어? 순간 TypeScript랑 착각하고는 공부한 적 없다고 했다. 이미 서류엔 javascript를 3개월 독학해봤다고 적어 놓고는 말이다. 상대가 무안주지 않으려 나의 실수를 짚지 않고 넘어간 것이라는 것을 깨닫고는 정말 부끄러웠다. 그래서 또 얉게 나마 탐구해보겠다. 왜 언어가 바뀌어 가고 있고 언어가 동작하기 위해선 어떤 절차가 내부에서 진행되고 있는지를 알아보겠다.
컴파일 언어와 스크립트 언어의 주된 차이점
프로그래밍의 작동 방식에 따라 컴파일 언어, 인터프리터 언어 두가지로 구분할 수 있다.
컴파일 언어 | 스크립트 언어 | |
실행 과정 | 소스 코드를 컴파일러가 기계가 이해할 수 있는 기계어로 변환한 다음 실행 파일을 만들어 실행한다. | 소스 코드를 인터프리터가 실시간으로 기계어로 해석하여 실행한다. |
실행 파일 유무 |
O | X |
오류 수정 | 소스 코드 수정 후 다시 컴파일하여 실행파일을 만들어야 한다. | 소스 코드를 수정하여 바로 실행해 결과를 확인할 수 있다 |
예시 | C, C++ | Python, Ruby, Javascript |
장점 | 안정성, 성능이 빠르다 | 개발 속도가 빠르며, 편의성 |
단점 | 개발 속도 느리거나, 만든 실행파일이 OS에 종속 | 실행 속도 느리다 |
* 컴파일은 소스 코드를 실행 가능한 형태로 변환하는 과정이다.
프로그래밍 언어의 역사
1) 어셈블리어(Assembly Language)
기계어 | 컴퓨터가 이해 | 01001100 00001000 10000001 10010000 |
어셈블리어 | 인간이 이해 | MOV |
어셈블리어는 프로그램을 작성하기 위해 만들어진 인공 언어 체계였고,
컴파일 과정을 통해 컴퓨터가 이해하는 기계어 코드로 변환한다.
2) 포트란(Fortran)
어셈블리어 | Data var1 DWORD 1 var2 DWORD 5 .code mov eax, var1 add eax, var2 |
포트란 | a = 5 + 1 |
IBM 스피트 코딩 프로젝트 경험을 기반으로 사람의 언어에 가까운 최초의 프로그래밍 언어 포트란(Fortran)과 컴파일러를 개발했다.
3) C언어
너무 건너 뛰긴 했지만, 켄 톰슨과 데니스 리치가 Unix라는 운영 체제를 개발하며, B 언어의 특징을 물려받은 새로운 프로그래밍 언어 C 언어를 만들었다. 어셈블리어는 코드 생산성이 너무 낮았고, 당시 사용하던 B 언어는 Unix의 새로운 컴퓨터인 PDP-11의 새로운 기능을 활용하는 데 역부족이었기 때문이다. 이후 유닉스가 주류 운영체제로 자리잡으면서 C 언어가 보급화되었다.
4) C++과 C#으로의 진화
C++은 기존 C언어를 거의 계승하고, 객체지향 프로그래밍을 지원해 프로그래머가 거대하고 복잡한 소프트웨어를 이전보다 쉽게 만들 수 있도록 했다. 포토샵, 윈도우, 마이크로소프트 오피스 등의 많은 상용 소프트웨어가 이 언어로 작성되었다.
C#은 엄연히 말하면 C++,C와는 다른 언어이며 .NET에 최적화된 언어이다. .NET 클래스 라이브러리는 콘솔, 데스크톱, 웹, 모바일 등에서 동작하는 애플리케이션을 손 쉽게 개발할 수 있는 API를 제공한다.
여기까지 출처: 이것이 C#이다
5) 스크립트 언어의 등장
초기의 스크립트 언어는 주로 대형 컴퓨터 시스템에서 작업 자동화를 목적으로 사용되었다. 초기 언어 중 하나가 IBM의 JCL(Job Control Language)이다.
1990년대 접어들면서 인터넷의 급격한 확산으로 웹 개발을 위한 스크립트 언어가 등장하기 시작했다. 특히 Javascript가 대표적인데, 실행 전 컴파일 과정없이 브라우저에서 즉시 실행되어, 빠르게 코드를 작성하고 결과를 확인할 수 있어 웹 개발에서 유용하게 활용된다.
또한 1991년 등장한 Python은 복잡한 기능을 최소한의 코드로 구현할 수 있어 코드를 작성하는 시간이 짧고 유지 보수하기가 용이하다. 그리고 데이터 분석이나 머신 러닝을 위한 다양한 표준 라이브러리를 제공해, 데이터 과학 및 인공지능 분야에서 표준적인 언어로 자리 잡았다.
6) 현재 논의점
더 자세한 건 아래 블로그를 참고하도록 하고, 한 줄 요약하자면, 스크립트 언어의 인기와 필요성이 높아지고 있으며 두 언어 간의 장벽 또한 무너지고 있다는 것이다.
출처: https://yhuj79.github.io/Computer%20Science/241021/
가장 인기있는 언어
자세한 내용은 아래 링크로 들어가서 확인하길 바란다. 이미 자바스크립트나, 파이썬 등 스크립트 언어가 컴파일 언어에 비해 인기가 높다.
https://survey.stackoverflow.co/2024/technology#2-programming-scripting-and-markup-languages
Technology | 2024 Stack Overflow Developer Survey
PostgreSQL debuted in the developer survey in 2018 when 33% of developers reported using it, compared with the most popular option that year: MySQL, in use by 59% of developers. Six years later, PostgreSQL is used by 49% of developers and is the most popul
survey.stackoverflow.co
게임 개발에서의 스크립트 언어
아래 언어들이 정확히 인터프리터 언어인지 모르겠다. 우선 각 엔진별로 C#과 C++이 아닌 간편한 언어들을 지원하는 예시를 찾아보았다.
이렇게 다양한 언어로 게임을 개발할 수 있었구나.. 그리고 충격적인 건, 게임 개발에서 스크립트 언어의 역할에 관해 논의한 흔적이 13년 전 부터 있었단 거다. 갈 길이 너무 멀었다.
고도 엔진 | GDScript | https://docs.godotengine.org/ko/4.x/getting_started/step_by_step/scripting_languages.html |
로블록스 | Lua | https://wikidocs.net/224686 |
언리얼 | UnrealScript | https://ko.wikipedia.org/wiki/%EC%96%B8%EB%A6%AC%EC%96%BC%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8 |
Pygame | Python |
https://stackoverflow.com/questions/609076/the-role-of-scripting-languages-in-game-programming
The role of scripting languages in game Programming
So I've been running into a debate at work about what the proper role of a scripting language is in game development. As far as I can tell there are two schools of thought on this: 1) The scripting
stackoverflow.com
https://blog.naver.com/yulian/223774026348
루아 프로그래밍 언어 - 로블록스 게임 만들기
▣ 로블록스에서 루아의 역할? 로블록스가 3차원 객체들로만 구성된다면 어딘가 허전할 것입니다. 사물이 ...
blog.naver.com
https://koreascience.kr/article/CFKO200321138073709.page;
Game Development Using Script Language -Annual Conference of KIPS | Korea Science
Abstract 엔진을 도입하여 개발할 경우 단지 하부 구조를 구현하지 않았을 뿐, 엔진 내용을 이해할 정도의 수준이 되어야 한다는 것이다. 그러므로 게임 업계에서는 양질의 게임을 개발하기 위해
koreascience.kr
로블록스 게임 스크립트로 코딩 입문하기
게임도 공부가 된다! 게임을 만들며 즐겁게 배우는 코딩의 기초 도서 구매 사이트(가나다순) 교보문고 / 도서11번가 / 알라딘 / 예스이십사 / 인터파크 / 쿠팡 전자책 구매 사이트(가나다순) 교보
jpub.tistory.com
https://www.gianty.com/programming-languages-for-game-development/
The 8 Best Programming Languages For Game Development | GIANTY
Choosing the right programming language for your game is crucial because it directly affects the game’s overall performance and development speed.
www.gianty.com
'Computer > CS' 카테고리의 다른 글
Exercism - Strain: 제너릭 메소드, 델리게이트, yield return (0) | 2025.02.13 |
---|---|
[From Nand to Tetris] 모듈 5. Machine Language (0) | 2025.02.10 |
[From Nand to Tetris] Project 3 : Bit, Register, RAM8, RAM64, RAM512, RAM4K, RAM16K, PC (0) | 2025.02.04 |
[From Nand to Tetris] 모듈 3. Memory (0) | 2025.02.03 |
[From Nand to Tetris] Project 2 - HalfAdder, FullAdder, Add16, Inc16, ALU (0) | 2025.01.23 |