반응형
SMALL
코딩이란 대체 뭘까?
[1일차 1교시] 'Coding' 이란 단어 많이들 들어보셨죠? 게임,인공지능,데이터베이스,알고리즘,C언어,깃허브,모바일,네트워크,인터넷 등등 수많은 IT영역이 자리잡은 지금 모든 영역의 기초가 바로 Co
codingstartup.tistory.com
저번시간에 '코딩'이라는 단어에 대해 확실하게 이해를 하셨을 겁니다.
우리가 코딩을 써낸 소스코드를 컴퓨터가 어떤식으로 이해하는 지를 이번 수업을 통해 공부해봅시다.
프로그래밍 : 사람과 컴퓨터가 상호작용관계로서 완성형 집합체를 만드는 과정
이해가 잘 되지 않는 분들은 프로그래밍의 개념에 대해 정확히 알아가고
프로그래밍의 과정도 배워보도록 해요.
코딩이 사람이 하는 거면 컴퓨터는 뭘 하지? 컴퓨터는 우리말을 모르잖아. 0과1 밖에 모르는데 뭘 할 수 있지?
0과 1밖에 모른다고 하지만 0과1로 표현하는 방식이 있잖아.
아! 이진법 같은거?
그렇지 십진법도 있고 그런 숫자들로 문자를 표현하면 되겠지.
컴퓨터는 0과 1만 이해할 수 있기 때문에 숫자와 문자를 표현할 수 있는 아스키코드를 통해서 컴퓨터가 0과 1이외의 숫자와 문자를 이해할 수 있다.
한글이나 외국어들까지도 통합적으로 이해할 수 있는 유니코드도 현대에 쓰이고는 있지만 프로그래밍을 하는 속도나 용량면에서 코딩은 영어로 표현하는게 가장 좋다.
여기서 사람이 내리는 명령(add,divide 등)들을 컴퓨터가 이해하도록 한번 더 바꾼 게 어셈블리어 이다.
어? 그러면 컴퓨터가 모든걸 이해할 수 있는 거 아닌가? 숫자도 알고 알파벳이나 문자도 알고 그 문자들의 문법들도 알고 있으니까 전부 다 알고 있는거네?
그렇지. 하지만 어셈블리어만으로 개발을 하기에는 무리가 있지.
왜? 더하기, 빼기, 나누기, 곱하기만 알면 되지.
그것만 하기에는 복잡한 것들이 많잖아. 예를들어 고차함수나 수학적 논리들을 일일이 다 더하기 빼기 곱하기로 표현하기에는 오래 걸리니까.
아 그러네.. 그럼 그런 함수들을 표현만 하면 끝인가?
아니지 그런 명령들을 표현하기만 하면 안되지. 명령들의 순서도 있잖아. 예를 들어, 내가 컴퓨터한테 명령했는데 중간에 다른 명령이 들어올 수도 있고 내가 잘못 명령했을 수도 있고 지금 명령한 함수의 값이 다른 함수들의 필요값이 될 수도 있고 많은 복합적인 관계가 얽힐 수 있잖아.
어셈블리어들의 복잡한 관계들을 좀더 발전시킨 언어가 바로 우리가 아는 파이썬이나 자바같은 고급언어다. 그 아래에 있는 언어들이 저급언어이다.
이런 과정들을 실행하는게 바로 컴파일러이다.
컴파일러는 어떤 프로그래밍 언어로 쓰여진 소스 파일을 다른 프로그래밍 언어로 바꾸어주는 번역기인 셈이다.
컴파일러는 고급언어 파일을 저급언어로 바꿔주고 저급언어 파일을 어셈블리어 파일로 바꿔준 다음 기계어로 바꿔 실행파일로 만들어준다.
C언어 컴파일러가 동작하는 과정
컴파일 ,어셈블리가 그러면 위에서 말한 고급언어 -> 저급언어 , 저급언어 -> 어셈블리어 에 각각 대응이 되겠네.
어? 그런데 전처리랑 링킹은 뭐지?
전처리는 우리가 코딩을 하는 과정에서 다른 사람이 미리 쓰고 저장해둔 유용한 기능을 가진 파일들을 내가 끌어다 쓸 수 있도록 해주는 과정이다. 링킹은 다른사람이 미리 쓴 유용한 파일들을 내가 사용할 수 있도록 해주는 과정이다.
여기서 전처리과정과 링킹과정이 서로 비슷해보일텐데 링킹이 있는 이유는 코드를 재사용하면서도 소스를 제공하지 않아서 중요한 기술의 유출을 방지할 수 있고 그러면 다른 기업들과 협업하는 개발 시간을 단축시킬 수가 있다.
각 언어마다 컴파일 과정이 다를 수 있다.
우리가 코딩을해서 완성시킨 소스코드들을 외부소스코드들과 같이 합쳐서 컴파일러에게 전달해주면 컴파일러가 라이브러리에 있는 오브젝트파일들과 같이 합쳐서 실행파일로 만들어 주는거네.
그리고 그 실행파일이 바로 '프로그램' 이라는거지? 그걸 실행시키면 우리가 아는 프로그램이 실행되는거겠고!!
프로그래밍이란 고급언어인 소스코드를 저급언어인 기계어로 번역하여 실행파일로 만드는 과정이다.
쉽게 말해서 내가 코딩한 코드를 컴파일러에게 주면 프로그램을 만들어 주는 과정이다.
프로그래밍을 하기 위해서는 프로그래밍 언어를 알아야 한다. 그리고 프로그래밍 언어 각각의 방식도 알아야한다. 프로그래밍 언어를 알고 싶다면?
프로그래밍 언어란 대체 뭘까?(동적vs정적, 비관리vs관리, 명령형vs선언형)
[1일차 3교시] 프로그래밍이란 대체 뭘까> 2023.01.28 - [개발자가 되기 전에 알아야할 것들/주요 용어 개념정리] - 코딩이란 대체 뭘까? 저번시간에 '코딩'이라는 단어에 대해 확실하게 이해를 하셨
codingstartup.tistory.com
반응형
LIST
'개발자가 되기 전에 알아야할 것들 > 주요 용어 개념정리' 카테고리의 다른 글
클래스와 객체란 대체 뭘까? (feat. 인스턴스) (0) | 2023.02.17 |
---|---|
프로그래밍 언어와 분류방식(동적vs정적, 비관리vs관리, 명령형vs선언형) (0) | 2023.01.29 |
코딩이란 대체 뭘까? (0) | 2023.01.28 |
댓글