본문 바로가기
C++/따배씨 강의 정리

[몽돌] [따배씨 - 공부 노트] 0.1 프로그래밍 언어?

by 몽돌리스트 2021. 8. 11.
반응형

참고 링크

 

프로그래밍 언어란?

우리가 컴퓨터랑 소통을 하기 위한 언어 라고 생각하면 됨.

why? 컴퓨터는 우리랑 다른 소통의 채널을 가지고 있기 때문이다.

 

프로그램 - 우리가 원하는 기능을 컴퓨터가 하도록 해주는 것.

어플리케이션 - 프로그램이긴 한데, 그냥 비슷한 .. *( 아이폰 ) 문맥에 따라 다르게 사용.

소프트웨어 - 컴퓨터의 기계적인 부분과 비교가 될 때 사용되는 표현 중 하나.

 

문맥에 따라 의미가 조금 조금 바뀌긴 한다.


1. 기계어 Machine Language - 여기서 machine 은 computer를 의미한다.

 

전자회로, 전압의 차이로 신호가 생기고 그것을 인식한다.

전압의 높고 낮음을 통해서 신호를 구분한다.

010101010111100000000 이런 식으로 :) 2가지 밖에 모른다. 

( 프로그래밍할 때 거의 사용하지 않는다. )

 

 

2. 어셈블리 언어 Assembly Language

 

기계어를 사용할 수 없었기 때문에..

직접적으로 제어를 할 수 있는 저 수준의 언어

( 최근에는 거의 사용하지 않는다. )

 

3. 고수준 언어 High level language

 

우리가 익숙한 - C C++ Java Javascript ... 

 

하드웨어에 가까운 자세한 정밀한 등등 -> Low level

사람에게 가까운 언어 -> High level

( 높고 낮다, 편하다 불편하다, 쉽다 어렵다 등의 의미 차이가 아니다. )

 

왜냐하면 인간의 언어에 점점 더 가까워지는 언어들이 등장하고 있기 때문에

최근에는 C / C ++ 를 중간 수준 언어로 표현하는 경우도 생기도 있다.

 

즉 고수준 언어에서도, high / low 를 나눌 수 있기 때문에 

어디에 쓰느냐에 따라서 (적용분야) 종류 별로 적절한 언어 사용 기준이 있다.

 


 

컴파일러 Compiler

출처 : 따배씨 0.1 프로그래밍 언어?

컴파일러 - 이것도 하나의 프로그램이다.

 

우리가 작성한 코드를 기계가 알아들을 수 있는 언어로 ( 기계어 ) 바꿔주는 역할을 한다.

즉 번역기와 같은 역할이다.

 

그렇게 해서 나오는 실행파일 ( Excutable )이 생성되는데

이는 우리가 흔히 표현하는 프로그램이다. 

 

우리가 적어놓은 문서 -> 고수준 언어로 쓰여진 코드

컴파일러 -> 우리가 아는 프로그램을 생성해주는 프로그램

프로그램 -> 코드가 컴파일 된 후에 생성된 우리가 흔히 표현하는 프로그램 // 

 

C / C ++ 와 같은 컴파일러 언어는

실행 파일이 반드시 생성되고, 이는 하드 디스크에 저장이 된다.

그런데 내부적으로 개발 환경 (IDE)이 사용자의 편의를 위해

그 실행 파일을 자동으로 저장 후 실행시켜서 중앙처리 및 메모리가 실행 결과를 보여줄 수 있도록 해주기 때문에

마치 이 과정이 생략된 것 처럼 보인다.

 

실행파일 -> 하드디스크에 저장 -> 중앙처리장치 / 메모리를 통해 기능 수행 -> 실행 결과

꼭 알아야 하는 과정중에 하나 ! ( 헷갈리지 말 것. ) 

 


 

출처 : 따배씨 0.1 프로그래밍 언어?

컴파일러 언어가 아닌 것도 있는가?

 

그렇다.

인터프리터 언어라는 것이 있다.

* 대표적인 언어 : 파이썬

코드가 아닌 스크립트 ( script ) - 최근에는 개념이 혼용되지만, 일단 이렇게 불러져 왔기 때문에 다음과 같이 구분함.

모두 code라고 불러지는 것이 점점 익숙해지는 중이다. 

 

특징은? 실행 파일이 생성되지 않는다.

바로 중앙처리 장치를 통해서 실행을 해버린다.

( 어찌보면 실행 파일이 생기지 않는다는 것이 장점일 수 있다. )

( 사실 양날의 검이다. 실행 파일이 생기지 않으니 더 빠르지 않는가? )

( 라고 생각할 수 있지만, 일반적인(대부분) 경우 인터프리터 언어가 더 느리다. ) 

( 실행 파일을 한번 만들어서 반복적으로 사용하면 엄청 빠르다. ) 

( 인터프리터 언어는 같은 스크립트를 반복적으로 사용해야 하고, 인터프리터를 계속 거쳐야 하기 때문에 )

( 오히려 더 느려진다. ) 

( 인터프리터도 프로그램이다. )

 


출처 : 따배씨 0.1 프로그래밍 언어?

이식성 Portability

 

가끔 개발 환경 ( Windows / Linux / Mac ) 이 달라질 수 있다.

컴파일러 언어를 사용할 경우, 기계마다/개발 환경에 따라 컴파일러가 다르다. 

즉, 언어는 같은 C++일지라도, 컴파일러가 다르다.

컴파일러가 다르다? -> 작동하는 방식이 약간씩 달라지는 경우도 있다.

주의 사항 !

언어는 같을지라도 컴파일러가 다르고, 컴파일 하는 방식이 약간씩 차이가 생기기도 한다.

문법도 때때로 안맞는 경우가 생긴다. 따라서 호환성을 맞춰줘야 하는 경우가 많이 생긴다.

 

이러한 차이점은 지금 당장 걱정하지 않아도 된다.

나중에 충분히 배울 수 있는 내용들이기 때문이다.

 

또한 실행파일도 다르다. 호환이 되지 않는다.

( 윈도우즈 실행 파일은 리눅스 환경에서 실행되지 않는다. )

이 간극도 조금씩 허물어지고 있기 때문에, 장기적으로는 호환성이 좋아질 것으로 예상되기도 한다.

 

Java 자바의 경우에도 조금 다르다.

소스 파일 ( 코드를 파일로 저장해둔 것. ) 

컴파일을 하면, 바이트코드가 생성되는데 

이는 윈도우 리눅스 둘다에서 읽을 수 있는 중립적인 형태를 가진다.

따라서 바이트 코드가 윈도우 가상 기계에 들어가면 윈도우즈 실행결과가 나오게 되고,

리눅스 가상 기계에 들어가면 리눅스 실행결과가 나오게 된다.

하지만 결과는 보이는 것 처럼 각 환경에 맞게 생성된다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

댓글