Sad Puppy 3 [묘공단] Go언어 기초 2장 프로그래밍 언어 :: 개발자 아지트

프로그램은 무엇인가?

컴퓨터가 수행해야 될 명령과 순서를 쓴 문서이다.

글이 어떤 언어로 되어있냐에 따라 다르다.

어떤 프로그래밍 언어냐 따라 다르다.

 

컴퓨터← 글로 된 문서(프로그램)을 받는다.

 

컴퓨터→ 내가 이걸 읽을 수 있는가?

 

인간의 언어 구조를 컴퓨터로 이해한다는 것은 어렵다.

프로그램을 컴퓨터가 바로 읽을 수는 없다.

 

컴퓨터는 프로그램 언어를 0, 1로 변환해서 읽어야 한다.

 

명령어 = OP(Operater)

 

명령어에 숫자를 넣은 것은 opcode다

 

ADD 3, 4   와 같은 것을 어셈블리어라고 한다. 

 

언어를 변환시켜줄 필요가 있다. 

 

 

고수준언어를 컴퓨터 기계어로 변환하는 변환기는 컴파일러라고 한다.

 

결국 프로그램은 실행파일이라고 한다. == .exe파일

 

코딩해서 컴파일 하는 과정을 빌드(변환)이라고한다. 이렇게 하면 기계어로 바뀜

 

역변환도 가능하다.

 

해커들은 기계어만 가지고도 어떤 프로그램인지 알 수 있고, 고칠 수 있다.

그러나 굉장히 어렵다. 그러나 가능하다.


프로그램 언어란?

 

고급언어/저급언어로 나뉜다. 

 

고급언어에는 c, c++, go와 같은 컴파일 언어와 Java, C#, Python, javascript와 같은 동적 언어가 있다. 

 

c, c++, go

  • 컴파일 언어
  • 코딩→ 빌드→ 기계어
  • 먹기전에 돈까스 다 잘라놓고 먹는사람
  • 실행 속도가 빠름

 

Java, C#, Python, javascript

  • 동적 언어
  • 코딩→ 빌드→
  • 기계어가 나오지 않음
  • 먹을때 하나씩 자르면서 먹는 사람
  • 실행 속도가 좀 느리다.


C, C++, Go언어의 특징

  • 컴파일 언어
  • 프로그래밍 과정
    • 코딩→빌드(컴파일러라는 프로그래머가 코딩한 문서를 기계어로 변환함)→ 실행파일(기계어1, 0)
    • 대부분의 고수준 언어는 역변환 과정이 불가능하다.

C#, Java, Python언어의 특징 

  • 동적 언어
  • 코딩→ 빌드 필요(Java, C#)→중간 언어= 문서임→ 기계어로 변환⇒ 실행 중간에 변환을 하는 것을 동적 언어라고 한다.

이런 구분이 왜 생겨났을까?

 

컴파일 언어는 속도가 빠르다.

동적 언어는 중간 중간 변환 하기 때문에 속도가 느리다.

 

컴파일 언어가 좋은데 왜 동적 언어들이 생겨났을까?

 

컴파일 언어는 각 플랫폼 별로 다른 변환이 필요했다.

⇒ 각 프로그램 별로 실행 파일이 모두 달랐어야 했다.

⇒각 플랫폼 별로 빌드가 필요하다.

 

과거에는 굉장히 많은 CPU회사가 있었다.

 

자연어를 기계어로 변환 할 때의 어셈블리어의 각 명령어 마다 번호를 부여하게 되는데, 문제는 칩셋 제조사 마다 이 번호가 다 달랐다.

결국, 어떤 칩셋을 사용하냐에 따라 다르게 동작해야 했다.

 

인텔 CPU

  • 칩셋의 발전 과정 8086-80286-80386-80486- 펜티엄, , , , I3, I5, I7(요즘 나오는 것)

새로운 CPU가 나올때 OP코드도 추가된다.

같은 인텔 계열 칩셋이라도 어떻게 변환하냐에 따라 프로그램이 달라진다.

 

OS- 윈도우즈, Mac, Linux 등 각 OS마다 동작 방식이 다르고, 실행파일 형식도 다르고 실행하는 방법도 다르다.

 

CPU, OS에 따라 컴파일 변환 과정이 다 달랐다.

 

옛날 게임들- Windows밖에 안돼 등.. 문제가 있었다. 

이런거 해결을 위해 나온것 = 동적 언어

프로그램을 만들어 놓으면 실행주체가 어떤 프로그램인지 파악해서 그때 그때 변환 하는 것임.

 

Java 언어의 특징 

  • 코딩→ 결과 → 빌드 → .JAR
  • 플랫폼에 따라 실행 가능 하도록 알아서 변환된다.
  • 컴파일 언어에 비해서 속도가 떨어진다는 문제점이 있었다.
  • C++이 자바보다 빠르다고 말하는 사람이 많다.
  • 언어적으로 완성도가 높다.
  • 라이브러리 지원이 많다.
  • 생산성이 좋다. (C# 또한)

C, C++ 언어의 특징 

  • 사용법이 까다롭고 라이브러리가 좀 ,, 자바보다 못하다.
  • 속도는 자바와 거의 비슷하다.

 

첫 언어로 선택할만한 언어에 어떤 언어가 있는가.?

 

C언어

  • 기본, 근간, simple, 포인터

C#

  • 첫 언어로 무난하다.
  • Windows에서 잘 돌아간다.

Python

  • 언어구조 단순, 짜임새가 좋다, 언어의 완성도가 높다.
  • OOP적 측면에서 봤을때 완전 좋다.
  • 인터프리터 언어
  • 속도가 떨어진다.

Javascript

  • 웹쪽 언어
  • 자바스크립트를 첫 언어로 쓰기에는 안좋다.
  • 완성도가 떨어진다.
  • 웹쪽 쓸 때는 필수

 

해당 글은 [Tucker의 Go 언어 프로그래밍] 2장을 읽고 공부한 글입니다. 

+ Recent posts