0.1 프로그래밍 언어?

YongSeok·2023년 2월 2일
0
📍 이 글은 모든 출처는 홍정모의 따배씨 강의임을 밝힙니다


📌 프로그래밍 언어?

📝 프로그램

프로그램은 컴퓨터와 원하는 기능을 수행하도록 만들어준다

이때 부모님이 심부름을 시킬때 사용하는 언어와 내가 컴퓨터한테 일을 시킬때 사용하는 언어는 조금다르다 쉽다 어렵다 문제가 아닌 언어의 사고방식 자체가 다르다

예를들어 외계인을 만난다면 지구인들과 외계인의 문화는 완전히 다를것이다 다른 방식으로 이야기를 해야할 것이다 그 차이를 익히는것이 중요하다

최근에 프로그래밍이 굉장히 널리 퍼지며 여러가지 공부를 도와주는 작업들이 생기고 있는데 대표적으로 계산적사고, 컴퓨터사고 와 관련된 내용들이다

📝 어플리케이션

애플에서 나오는 아이폰에 깔리는 앱들 도 결국 프로그램이다 그러나 이름을 굳이 애플과 맞추기 위해 APPLication 이라는 이름을 사용중이다

📝 하드웨어 소프트웨어

소프트웨어 라는 말은 하드웨어라는 말과 비교가 될때 사용되는 용어이다

위의 용어들이 전부 혼용되는 경향이 있다 그런데 문맥에 따라 뉘앙스가 약간씩 다르니 그런것 정도만 차이를 인식한다면 크게 차이는 없을것이다


📌 기계어

기계어라는것을 먼저 생각을 해보자 우리는 컴퓨터와 의사소통을 하고 싶다

그렇다면 컴퓨터가 어떠한 언어를 알아들을 수 있는지 먼저 알 필요가 있다

컴퓨터는 전자 기계이다 요즘 자주 보이는 딥러닝, 인공지능 등 기계 학습 같은 용어들을 들어본 적이 있을 것이다

컴퓨터는 기본적으로 전자 회로이기 때문에 전압의 차이로 신호를 인식한다 즉, 전압이 높다 낮다를 가지고 신호를 구분하게 된다 즉 0,1 두가지 밖에 모르기에 2진수를 사용하게 된다

그래서 컴퓨터에게 말을 하려면 011010001 조합들을 굉장히 많이 나열을 해줘야한다 그런데 사람이 이런식으로 생각을 하지 않기 때문에 일을 시킬때 기계어로 시킨다면 굉장히 힘들것이다

그래서 우리가 실제로 프로그래밍을 할때는 기계어를 실제로 사용하지 않는다


📌 어셈블리 언어(저수준 언어)

기계어를 직접적으로 사용하는것은 무리가 있기에 나온것중에 하나가 어셈블리 언어이다 주로 CPU가 하는 단위기능들을 직접 수행을 하거나 혹은 메모리의 여기에 있는 정보를 다른곳으로 옮기고 복사를 하는 등 직접적으로 제어를 할수있는 굉장히 저수준의 언어이다

딱 보면 인간의 언어하고 멀게 느껴진다 실제 프로그래밍을 할때 최근에는 거의 사용하지는 않는다 Ariel 한글 만해도 개발 초기에는 일부 코드들을 어셈블리어로 만들었다고 한다


📌 고수준 언어

대부분의 사람들이 프로그래밍을 할때 사용하는 언어는 전부 고수준 언어이다 예시로 게임을 할때에 레벨이 높으면 좋고 쌘거니까 고수준 언어가 더 좋은거구나! 라고 생각하기에는 무리가 있다

왜냐하면 기술용어정의 차원에서 다른것이라 하드웨어에 조금더 가까워 하드웨어를 제어할때 더 자세하게, 꼼꼼하게, 정밀학게 할수 있는것이 저수준 언어이며 사람에게 가까운 언어일수록 고수준 언어이다 이 언어를 어디에 언제 사용하느냐에 따라서 저수준언어가 좋을수도 고수준 언어가 좋을수도 있다

그리고 C 나 C++를 중간레벨 언어라고 표현하는 경우 도 있다 왜냐하면 최근에 C++보다 편하고 인간의 언어에 가까운 프로그래밍언어(파이썬) 과 구분을 짓기위해 이런식으로 표현하기도 한다


📌 컴파일러

컴퓨터에게 어떠한 일을 시키기 위해서 프로그래밍을 작성을 할텐데 그 프로그램이 컴퓨터에서 작동을 하려면 컴퓨터가 알고있는 언어로 번역을 해주는 프로그램이 필요하다

그러한 프로그램들을 우리는 컴파일러 라고 부른다


📌 인터프리터

컴파일러와 차이점은 실행파일이 생성이 되지않으며 곧바로 중앙처리 장치를 통해 실행을 시켜준다

실행파일이 안생기니까 더 빠르다고 생각할 수 있지만 대부분의 경우 인터프리터가 더 느리다 왜냐하면 실행파일을 한번 만들고 여러번 반복해서 사용하다면 그게 더 효율적이기 때문이다 최근에 대표적인 인터프리터 언어의 경우 파이썬이 있다


📌 이식성

0개의 댓글

관련 채용 정보