본문 바로가기

프로그래밍 일반

프로그래밍 언어는 기본 레퍼런스에 충실하자

지난 포스팅에서, 프로그래밍 공부를 어느 정도 진행하신 분들께서 교육용 프로그래밍 언어를 보신다거나,
혹은 지금 공부하시는 프로그래밍 언어에서 어떻게 기본적인 사항을 챙길 것인가 하는 부분에 대해서
일종의 마이그레이션(migration) 관련한 포스팅을 드린다고 말씀드렸습니다.

 

처음에는 웹이나 파이썬과 같이 여러 분들이 주로 다루시는 언어나 플랫폼을 중심으로
실질적인 마이그레이션 사례를 들어가면서 설명을 드리려고 생각했습니다.

하지만 곰곰이 생각해 보니, 각각의 언어 하나하나가 독립적인 포스팅 거리이기도 하고,
나중에 그 언어나 플랫폼을 다룰 계획도 분명히 있기 때문에,
그 부분은 여러분께 죄송하지만 일단 나중을 위해서 미루어 두기로 했습니다.

 

대신에, 기존 언어에서 공통적으로 챙겨야 할 부분에 대한 이야기를 드리는 것으로 대체하려고 합니다.
본의 아니게 식언(食言)하게 되어 대단히 죄송합니다.
그러고 보니 주말에도 그렇고, 계속 쫓기다 보니 역시 좋은 글이 나오지 않는 것 같습니다.

 

기본적인 내용들은 레퍼런스 사이트에 있다

기본적으로 어떤 프로그래밍 언어이던, 혹은 플랫폼이건, 그것을 소개하는 표준 레퍼런스 사이트가 대부분 있습니다.

 

C나 C++의 경우 오히려 꽤나 오래된 언어임에도 공식 레퍼런스가 존재하지 않고 있는데,
대신 레퍼런스에 준하는 사이트들이 많기 때문에 잘 알려진 몇몇 곳이 레퍼런스 사이트를 대체하고 있습니다.
대표적인 곳이 https://cplusplus.com 같은 곳이 있겠습니다.

 

웹이나 자바스크립트 같은 것들은 모질라 재단에서 표준을 관리하고 있기 때문에,
개발자 사이트(https://developer.mozilla.org/)에서 HTML이나 CSS, 표준 자바스크립트 등의 레퍼런스 문서들을 관리하고 있습니다.

 

이렇듯, 각각의 프로그래밍 언어에는 대표적인 레퍼런스 사이트들이 있는데요.
각 사이트에는 반드시 그 언어의 기본적인 사상이라던가 특징,
혹은 그 언어를 배우기 위해 반드시 알아야 할 내용 같은 것들이 기록되어 있습니다.

최신의 프로그래밍 언어들은 굉장히 알기 쉬운 형태로 튜토리얼 같은 것들이 잘 만들어져 있죠.

 

많은 분들이 프로그래밍 언어 자체를 배우느라 힘들어하시기 때문에 놓치기 쉽고,
딱딱하고 영어로 되어 있는 레퍼런스 대신 정제된 책이나 인터넷 강좌를 통해 언어를 배우시기 때문에 자칫 흘리시기 쉬운데요.
기본적으로 프로그래밍 언어는 레퍼런스 사이트를 항시 참조하시는 것이 좋습니다.

 

역사가 오랜 언어들의 경우 오랜만에 들어가 보면 생각했던 것보다 최신의 사상이 스펙에 반영되어 있는 것들이 많고,
(C++이나 Java 같은 경우가 그렇죠)
역사가 짧은 언어는 안정화를 위해 버전이 바뀌면서 구 버전의 기능이 바뀌거나 삭제되는 것들도 있고 하니,
항상 뭔가 기능이 이상하게 동작하거나 안될 때는 제일 먼저 레퍼런스 사이트를 확인해 보는 것이 좋습니다.

 

하지만 그것보다 중요한 것은, 특정한 언어의 레퍼런스 사이트를 보는 것에 익숙해지고 난 뒤,
다른 언어의 레퍼런스 사이트를 보다 보면 무언가 비슷한 점을 찾는 경우가 많을 것입니다.
우리가 흔히 C언어에서 파생되었다고 해서 C-liked 언어(C-liked language)라고 부르는 녀석들이 특히 그렇습니다.
몇몇 특수한 기능을 위한 언어를 제외하고, 현재 우리가 사용하는 대부분의 개발용 언어들이 여기에 포함됩니다.

 

이 부분까지 들으셨으면, 이제 다시 엔트리 얘기로 돌아와 봅시다.

 

모든 프로그래밍 언어에서 다루는 공통 사상이 있다

지난번 엔트리에서 다루는 개념을 말하면서 제가 정리했던 내용들을 기억하실 겁니다.

  • 이벤트
  • 액션
  • 반복
  • 상태의 저장
  • 연산과 대입
  • 조건과 분기
  • 데이터 기록
  • 함수
  • 대기

지난 포스팅과 쓰는 방법과 순서가 약간 바뀐 것을 아시겠습니까? 설명하기 쉽게 약간 순서와 내용을 변경한 것입니다.
나중에 실제 엔트리를 가지고 설명드릴 예정인데, 저것들은 사실 모든 프로그래밍 언어가 공통적으로 가지고 있는 사상입니다.
명칭과 사용하는 방법이 다를 뿐이죠.

 

기능들을 사용하기 위해 특별한 약속된 명령어를 사용하고 (예약어 reserved word라고 합니다.)
필요한 기능들을 묶은 표준 라이브러리들을 사용하고 하는 식입니다.
조건을 확인할 때 많이 사용하는 if 문 같은 것이 대표적인 예약어이고,
데이터를 합산할 때 이용하는 SUM() 같은 것이 대표적인 라이브러리 기능이라고 할 수 있겠습니다.

언어별로 하나하나 예를 들어드리고 싶지만, 분량도 적지 않고 그 언어가 낯선 분들에게 오히려 혼란을 드릴 수도 있으니
역시나 그런 내용은 언어별로 하나하나 짚어드리는 시간으로 돌리는 것이 옳겠습니다.

 

결론

하여튼 제가 말씀드리고 싶었던 내용을 정리해서 말씀드리면,
대부분의 프로그래밍 언어는 위에서 나열한 공통 요소들을 어떠한 형태로던 모두 포함하고 있기 때문에,
혹시라도 자신이 지금 옅게라도 공부하고 있거나, 혹은 한 번이라도 접해보신 적이 있는 프로그래밍 언어가 있다면,
한 번 저런 요소들이 어떤 것들이 있는지 점검해 보시는 것이 좋고,
그런 요소들을 친절하게 설명하고 있는 곳은 바로 그 언어의 레퍼런스 사이트라는 것을 말씀드리고 싶었습니다.

 

하지만, 저런 개념들은 역시나 프로그래밍 언어에 익숙하신 분들이 아니라면 역시나 좀 추상적일 수 있기 때문에,
프로그래밍 언어를 단순히 기술적으로만 접하고 계셔서 저런 개념이 별로 익숙하지 않으신 분이라면,
지난 포스팅에서 언급했던 편견에 잡힐 위험이 없는 교육용 프로그래밍 언어를 통해 저런 개념을 깔끔하게 재정립한 다음,
다시 공부하시던 언어에서 저 요소들을 다시금 확인해 보시는 편이 좋은 학습 방법이 아닐까 하고 조심스레 말씀드려 봅니다.

 

예고

다음 포스팅은 이제 엔트리를 통해서 위의 요소들이 어떻게 설명이 가능한지 말씀드리겠습니다.
엔트리 자체는 그렇게 사용이 어렵지 않기 때문에 한두 포스팅 정도로 가볍게 넘어가고,
다음부터 실전 프로그래밍 언어를 이용해서 같은 원리로 설명하는 게 목적이긴 한데, 의도대로 잘 풀릴지 모르겠습니다.

이 챌린지를 시작한 이유가 이런 시리즈를 시작하고 발생하는 예측불허의 상황을 수습하는 연습을 하는 것이 하나의 목적이기도 한 만큼,
어떻게든 잘 이야기를 풀어가보겠습니다.

 

P.S. 역시 이야기를 전개하다 보면 도입부의 중간 연결 부분(?)이 제일 어렵습니다.