-
2024년 10월 25일 프로그래밍 언어론 공부 3일차프로그래밍 공부 일지 2024. 10. 26. 01:11반응형
이 글을 작성하는 지금 사진을 찍어서 26일이긴 한데, 그래도 공부 다하고 찍고 싶었다.
오늘은 프로그래밍 언어론 p. 62 ~ p. 98을 공부했다.
어제 쓰던 프로그래밍 언어의 발전을 마저 써보자면
1950년대 초기 프로그래밍 언어 : Fortran, Algol, LISP
1960년대 프로그래밍 언어 : Cobol, PL/1, BASIC, Simula
1970년대 프로그래밍 언어 : Pascal, C, Prolog, Smalltalk, Ada, ML, Scheme
1980년대 프로그래밍 언어 : Common Lisp, Objective-C, C++, Perl
1990년대 이후 프로그래밍 언어 : Java, JavaScript, Python, Haskell
이렇게 정리가 된다.
공부하면서 GUI와 마우스등을 최초로 도입한게 Smalltalk 언어라는 것을 알게 되었다. 사실 GUI가 언제 나왔는지 궁금했었는데, 1972년도에 나오면서 등장했다는게 신기했다.
전에 처음 프로그래밍에 관심을 가졌을 때 C랑 오브젝트 C, 그리고 C++ 이렇게 왜 이렇게 다양하게 있는거지? 라는 생각을 해봤다. 근데 C언어에 Smalltalk을 접목해서 만든 것이 오브젝트 C, C언어를 객체지향으로 바꾼 것이 C++이라는 것을 처음 알았다.
그 다음 1990년대 언어들은 Haskell을 제외하면 비교적 익숙했다. 하스켈(Haskell)은 아예 처음 본 언어라 모르겠고, 자바, 자바스크립트, 파이썬은 한 번씩 다 건드려본 언어들이라 안다. 자바는 자바 가상 머신 위에서 돌아가서 운영체제의 제약을 안받고, 파이썬은 컴파일 안하고 즉석에서 기계어로 해석해서 작동해서 작동 속도가 좀 느리다고 알고있다. 자바스크립트는 동적 웹 프로그래밍에 필수적인 언어라서 조금 들어보기만 했다. 확실히 1990년대 이후 언어들이 대중화가 많이 되긴 했나보다.
그리고 오늘은 프로그램 동작 원리, 프로그래밍 언어의 평가 기준, 프로그래밍 언어의 선택 기준에 대해서 배웠다.
프로그램 동작 원리는 저장장치에 저장된 프로그램을 메모리에 적제한 후, CPU로 보내서 실행시키는 것이다. 이것을 인출-해석-실행이라고 한다. 인출-해석-실행 주기를 반복하면서 컴퓨터에서 프로그램이 작동한다.
프로그래밍 언어가 만들어져야 하는 이유는 CPU가 받아들일 수 있는 것은 기계어이고, 이것을 사람이 이해하는 것은 불가능에 가깝기 때문이다. 그래서 기계어와 1대1 대응하는 어셈블리어를 만들게 되었고, 기종과 상관없이 프로그램을 실행시키기 위해서 나온 것이 고급 프로그래밍 언어이다.
프로그래머가 프로그램을 고급 프로그래밍 언어로 작성을 하면 기계어로 전환을 하는 작업이 필요하다. 3가지 방법이 있다. 컴파일러, 인터프리터, 그리고 하이브리드 구현이 있다. 컴파일러는 번역기라고 생각하면 편하다. 컴파일러로 프로그램을 미리 기계어로 번역해서 저장시켜 놓는다. 그럼 CPU는 기계어로 저장해놓은 프로그램을 그냥 가져다가 실행시키면 된다. 인터프리터는 동시통역가 이다. 프로그래밍 언어로 작성된 코드 한 줄 한 줄을 즉석으로 해석을 해서 기계어로 CPU에게 전달해준다. 실행하는데에 있어서 컴파일러 보다 느릴 수밖에 없다. 그리고 하이브리드 구현은 부분적으로 컴파일 해놓고, 인터프리터를 통해서 실행시킨다.
내 기억상으로는 컴파일러를 사용하는 것은 C언어, 파이썬은 인터프리터, 자바는 자바 가상 머신 위에서 작동하니까 하이브리드 구현이라고 볼 수 있다고 생각한다.
프로그래밍 언어의 평가 기준은 나중에 다시 한 번 공부하는 것으로 해야겠다. 어느 정도 이해는 했지만 머리속에서 정리가 안된다. 나중에 다시 한 번 해서 글로 써봐야겠다.
그리고 프로그래밍 언어의 선택 기준이 몇 가지 나와있다. 교재 95페이지에선 언어를 사용하는 커뮤니티가 활발하고 호의적인 곳을 선택하고, 특정 응용 분야가 존재하는 프로그래밍 언어를 선택하고, 프로그래밍 패러다임을 넓힐 수 있는 언어를 선택하라고 한다.
나는 프로그래밍 언어론을 공부하고, 안드로이드 앱 프로그래밍 공부를 시작하려고 한다. 자바를 해볼까도 했었고, 파이썬으로 기초를 쌓을까 생각도 해봤다. 아니면 아예 기초부터 할 생각으로 C언어부터 공부할까 생각을 해봤는데, 우선 내 눈으로 보면서 만드는 재미를 느끼고 싶은 마음이 더 크다. 플러터 공부를 할까 생각도 해봤지만 코틀린을 먼저 공부해볼까 한다.
하면서 전반적인 프로그래밍 과정을 이해하고, 실습을 해보면서 경험을 쌓고, 자바나 파이썬, C언어를 공부하면서 전체적인 지식을 쌓고 싶다. 그리고 다른 알고리즘 관련 언어, 인공지능 관련해서도 공부해보고 싶다. 웹 디자인이나 서버 쪽도 공부해보고 싶고. 시작을 앱 프로그래밍으로 하고싶다.
그렇다면 내가 선택하려는 코틀린은 특정 응용 분야가 존재하고, 커뮤니티가 활발한 언어라고 볼 수 있지 않을까?
오늘은 여기까지이다. 사실 프로그래밍 언어의 역사를 보는데 이해가 안가는 부분도 많았고, 물어볼 곳도 없어서 많이 답답하긴 했다. 독학으로 공부하는 거라 좀 그렇긴 한데 나중에 영상 강의같은 것도 찾아보면서 다시 공부하는 것도 좋을 듯 하다. 한 번만 보고 끝내는 공부가 아니라 몇 번이고 보면서 시험준비 하는 것처럼, 내 것으로 만들고 싶다.
반응형'프로그래밍 공부 일지' 카테고리의 다른 글
2024년 11월 12일 프로그래밍 언어론 공부 5일차 (2) 2024.11.13 2024년 10월 26일 프로그래밍 언어론 공부 4일차 (1) 2024.10.27 2024년 10월 24일 프로그래밍 언어론 공부 2일차 (1) 2024.10.25 2024년 10월 23일 프로그래밍 언어론 공부 1일차 (7) 2024.10.23 저 코드잇으로 공부 시작했어요 (0) 2021.06.24