Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
Computer Science

C? C++? C#??? 기계어, 어셈블리어, 고급언어와 함께

by Toughie 2023. 3. 19.

 

C, C++, C#의 차이점이 궁금해서 알아봤다. 뭐가 다른데

 

우선 기계어, 어셈블리어, 고급언어를 알아야 한다.

 

[기계어] Machine Language

컴퓨터가 사용하는 언어. 즉 CPU가 명령을 처리할 때 사용하는 언어고 2진법을 사용한다.(0과 1)

우리가 코드를 작성하면 컴파일 하는 과정을 거치는데 컴파일이 바로 바로 기계어로 우리가 짠 코드를 변환하는 것이다.

그런데 0과 1로만 막 쓰여 있으면 인간의 입장에서 너무 읽기가 힘들다..

그래서 등장한 것이 바로

 

[어셈블리어] Assembly Language

기계어에서 숫자를 인간이 알기 쉬운, 의미 있는 단어로 바꿔서 이해하기 쉽게 만든 언어가 '어셈블리어'이다.

(mov, add 등) 다만 이렇게 쓰면 CPU는 이해하지 못하기 때문에 개발자가 어셈블리어로 작성한 프로그램을

기계어로 번역하는 과정이 필요하다. 즉 어셈블리어를 기계어로 번역하는 프로그램이 있는데, 이 프로그램을 어셈블러 라고 한다.

(저급 언어)

 

대망의

[고급언어] High-Level Language

프로그래밍 언어의 문법이 기계어와 유사하면 저급언어(Low-Level Language)라 부르고

인간이 이해하기 쉽게 만들어져 있을 수록 고급언어(High-Level Language)라 한다.

성능이랑 상관 없다. '인간이 이해하기 쉬울수록' 고급언어이다.

어셈블리어와 마찬가지로, 고급언어로 코드를 작성하면 CPU는 이해를 전혀 하지 못한다.

따라서 고급언어로 작성된 명령어를 기계어로 변경하는 프로그램이 있는데, 이를 컴파일러(Compiler)라고 한다.

(xcode에서 컴파일 에러 자주 만나서 아시죠? ㅎ..)

 

자 그러면 C 붙은 녀석들은 어떤 차이점이 있을까?

 

 

[C] 

거의 50년 전에 만들어진..선조 같은 언어? ㅋㅋㅋ
자바,자바스크립트,파이썬 등 많은 언어에 영향을 끼쳤다.

리소스가 적은 기계에서 잘 작동한다.(메모리가 매우 작고, 프로세싱 파워가 약한 기계)

하드웨어와 매우 밀접하게 작동(화성 탐사선이 250만줄의 C언어로 동작한다고 한다..ㄷㄷ)

C는 사람마다 다른데 저급,중급언어로 불리기도 한다.(기계어랑 많이 명령 구조나 문법이 유사해서)

[C++]

C언어에서 클래스 개념이 추가 된 것

객체 지향 프로그래밍 가능!

(C의 확장판, 자바스크립트에서 타입의 개념이 추가 된 것이 타입 스크립트인 것처럼)

[C#]

자바(Oracle에서 만듦)랑 비슷함.

기업용으로 만들어진 프로그래밍 언어(MS가 만들었음, .NET)

백 프론트 개발 전부 가능.

unity 3D등 게임 만들 때 자주 씀.

컴파일러 도움을 많이 받아서 빠르지는 않음

 

 

 

그렇다면 스위프트는? 당연히 고급 언어이다.(나온지 정말 얼마 안됐다.)

인간이 이해하기 가장 쉬운 고급언어일텐데 왜이리 이해하기 어렵지..

 

Apple WWDC14#에서 공개된 프로그래밍 언어. "스위프트"라고 말한다.
이름의 유래는 신속한재빠른이라는 뜻의 영단어인 Swift이다.

로고는 Swift라고 불리우는 칼새[2]를 상징하는 것으로 추정된다.


기존 Objective-C의 단점을 보완하고, LLVM/Clang[3] 컴파일러로 빌드되는 애플의 신규 프로그래밍 언어이다. 기존 Objective-C에 비해 클로저, 다중 리턴 타입(튜플), 네임스페이스, 제네릭, 타입 인터페이스 등 Objective-C에는 없었던 현대 프로그래밍 언어가 갖고 있는 기능을 많이 포함시켰으며, 이에 따라 일정한 성능 향상을 보이고 있다. Apple이 만든 언어답게 iOS와 iPadOSmacOS를 대상으로 한다.

https://namu.wiki/w/Swift#fn-2

 

그럼 참고로 안드로이드 개발에서 핫한 코틀린은? 당연 고급언어이고.. 

 

IntelliJ IDEA의 개발사 JetBrains에서 2011년에 공개한 오픈 소스 프로그래밍 언어JVM 기반의 언어이며, Java와 유사하지만 더 간결한 문법과 다양한 기능을 추가하였다. Java와의 상호 운용이 100% 지원된다.[2] JVM 바이트코드가 기본이지만, Kotlin/Native 컴파일러를 사용하여 기계어로 컴파일할 수 있다. 안드로이드스프링 프레임워크Tomcat[3]JavaScriptJava EEHTML5iOS라즈베리 파이 등을 개발할 때 사용할 수 있다.

2017년에 구글이 안드로이드의 공식 언어로 Kotlin을 추가하였다. 이는 오라클과의 Java API 저작권 분쟁의 여파로 보는 시각이 많다. 2018년 카카오가 카카오톡 메시징 서버에 Kotlin을 사용해 본 결과, 코드량이 비약적으로 감소하고 생산성이 대폭 향상되었다고 한다. # 2019년 1월부터는 구글 내부의 안드로이드 프로젝트에서도 Java 대신 Kotlin을 사용한다. # 안드로이드 공식 문서의 샘플 코드도 Java보다 Kotlin으로 작성된 예제가 먼저 나온다. 예시

이름은 JetBrains의 R&D 센터가 위치한 상트페테르부르크 근처의 코틀린(Ко́тлин) 섬에서 따왔다. Andrey Breslav(Андрей Бреслав)의 발표 참고 Java가 인도네시아의 섬이라는 것을 생각해보면 다분히 Java를 의식한 듯한 이름.

https://namu.wiki/w/Kotlin

 

컴퓨터 언어의 발전사를 간략하게나마 알아봐서 재밌는 시간이었다 :)

'Computer Science' 카테고리의 다른 글

JSON Parsing  (0) 2023.04.16
디자인 패턴 (MVC, MVP, MVVM)  (0) 2023.03.27
코어와 스레드, 멀티 프로세스와 멀티 스레드, 동시성?  (0) 2023.03.19
메모리? Memory  (0) 2023.03.13