티스토리 뷰
프로그래밍 언어는 개발자라는 직업을 선택한 사람들에게 가장 기초가 되는 과목이다.
개인적으로 학부생 시절에 이 수업을 들으면서, 이런 걸 과연 왜 배우는 걸까? 의미가 있을까? 외우기 위주 수업이라고 재미없다고 생각했다. 하지만, 졸업을 하고 나니, 프로그래밍 언어라는 과목이 얼마나 중요한지 깨달았고, 퇴근한 금요일 밤에 예전에 했던 수업 필기를 찾아서 정리하려고 한다.
퇴근한 금요일 밤에 이 게시물을 작성하는 것 만으로도, 지금 학부생인 분들께 프로그래밍 언어라는 수업을 열심히 들어야 한다는 생각이 꼭 들길 바란다.
내가 참고한 책은 수업 교재였던 'Concepts of Programming Languages, 10th edition, Robert W. Sebesta'이다.
이 책에 의하면, 프로그래밍 언어를 배우는 이유는 다음과 같다.
1. 적합한 언어를 선택하는 능력 향상
2. 새로운 언어를 학습하는 능력 향상
3. 구현의 중요성을 이해하고 이미 알고 있는 언어를 더 잘 사용
4. 생각을 표현하는 능력 향상
5. 전반적으로 computing에 대한 이해도를 향상
그 외에, 내가 프로그래밍 언어가 중요하다는 생각이 든 이유는 다음과 같다.
1. 코드가 실행될 때 어떤 메모리를 사용하는지 알아서 메모리를 효율적으로 사용할 수 있어야 한다
2. pass by value, pass by variable을 구별하여 변수와 값을 원하는 데로 잘 사용하고 있는지 알아야 한다
3. 데이터 타입의 사이즈를 알고, 적절한 형변환을 사용해주어야 한다.
먼저 1의 경우는 알고리즘 문제를 풀다 보면, stack memory가 1MB라는 아주 작은 사이즈로 제공되는 경우가 있기 때문에 중요하다. 특히 재귀 함수 같은 경우는 stack memory에 쌓이면서 실행되기 때문에, stack memory에 저런 제한이 있다면 stack overflow!라는 유명한 에러가 발생한다.
stack overflow는 내 코드가 에러가 났을 때 검색하면 도움을 주는 사이트여서 아주 익숙한데, 이런 부분이 있는지 몰랐다.
그리고 2번은 값을 넘겨줄 때 언어에 따라 내가 생각한 값이 아닌게 넘어가는 경우가 있어서 특히 중요하다. 이런 부분은 코드 리뷰를 하더라도 프로그래밍 언어 자체의 구조를 모르면 에러를 발견하기 어렵다.
마지막으로 3번이다. 대충 int 범위에서 -2312~ 이런식의 아주 큰 음수로 값이 나오면 연산 과정 중 int 범위를 벗어나 값이 제대로 저장되지 않았음을 유추할 수 있다. 미리, int, double, long의 범위를 알고 있다면 피할 수 있는 문제이다.
앞으로 이 폴더에는 내가 생각하는 중요한 점을 리뷰하면서 작은 단위로 쪼개 포스팅할 생각이다.
(내가 언제든지 찾아보고 도움을 받을 수 있도록.)
복습의 중요성을 실감하는 요즘,, 꾸준히 포스팅할 수 있길 바란다.