Search

'Programming Language'에 해당되는 글 1건

  1. 2011.10.14 Ultimate programming language? 그런 건 없을 것이고 있어야 할 이유도 없다.
Why Undergraduates Should Learn the Principles of Programming Languages라는 글을 읽었다. 왜 학부생들이 언어의 원리를 알아야 하는가? 하는 물음이다.

컴퓨터 공학을 배우러 왔다는 것은 컴퓨터를 잘 이해하려고 온 것이고 컴퓨터를 이해한 뒤에 해야할 일은 잘 써먹는 것이겠다. 그러니 공학이라고 부르는 것이고. 컴퓨터에게 일을 시켜먹으려면 정확히 어떻게 일해야 하는지 잘 설명해줘야하고 의도를 잘 전달하기 위해서 우리는 다양한 언어(language)를 사용한다.

글의 제목은 의문문을 선택했지만 결국 하고 싶은 말은 프로그래밍 언어의 원리를 알아야 한다는 주장이다. 어떤 것을 공부하는데 있어 그 원리를 아는 것은, 사실, 당연한 일이다. 저자가 제목을 이렇게 단 것은 다음과 같은 이유다.

요즘 세상은 하나의 언어만 잘 아는 것으로는 부족하다. 요즘이 아니라도 예전에도 그랬을 것이다. 단 한대의 서버로 동작하는 웹서버를 만들더라도 SQL로 database와 이야기하고 자바로 웹서비스를 짜고, 클라이언트를 위해 자바스크립트도 써야 하지 않나.

언어가 많으니 난잡하다. 궁극의 언어가 있으면 좋지 않을까? Ultimate programming language? 하지만, 그런 것이 존재할 일은 없을 것이다. 지금 주요 언어들은 각자 자기의 영역을 확고히 하면서 생존하고 있다. 리눅스를 설치해보면 느낄 수 있다. Perl, Ruby, Python, ... 내가 설치하라 명령하지 않아도 기본적으로 패키지에 포함된다. 운영체제 설치 시 기본으로 포함되어 있는 필수 프로그램들이 저마다 다른 언어로 작성되어 있기 때문이다. 언어들은 살아남기 위해 치열하게 경쟁하고 있기도 하다. 옛날처럼 서버 스크립트가 몽땅 Perl로 짜여지고 있지 않다. (FreeBSD는 오래 전에 운영체제의 필수 스크립트를 Perl에서 shell script로 교체했다) 소위 4세대 언어라고 불리는(대표적으로 SQL) 언어들은 자기만의 독자적인 도메인을 가지고 있어 대체도 쉽지 않다.

언어가 많아서 난잡한 것이 아니라 언어가 다양함으로써 얻는 이득이 더 많은 것이 아닐까? 종의 다양성은 일반적으로 전체 생태계를 안정적으로 유지하는데 도움이 된다. 소프트웨어는 다양한 도메인이 있다. 그리고 각 도메인에 맞는 프로그래밍 언어가 있다. 상황에 맞게 언어를 선택하는 것이 중요하다는 이야기다. 엔지니어에게는 여러가지 상황이 발생할 수 있고 다시 말해서 새로운 언어를 습득해야 하면 유리할 경우가 발생할 수 있다. 결론적으로, 여러 언어에 쉽게 적응할 수 있도록 기초(fundamental)에 대한 습득이 필수적이다.

어차피 프로그램이란게 자료구조와 알고리즘 아닌가? 라고 말한다면 너무 기초로 간 것이고. 프로그래밍 언어에 따라 문제를 기술하고 해결하는 방식이 다르다는 것을 이해하고 각자가 가지는 장점과 단점이 무엇인가를 알 필요가 있다.

자, 그렇다면, 다시 글의 제목으로 돌아가자. 학부생에게 어떻게 프로그래밍의 기본 원리, 기초에 대해 정확히 교육시킬 것인가? 아쉽게도 이 글에서는 이 물음이 중요하다는 이야기만을 몇장에 걸쳐 하고 있다. How? 해결책은 구체적으로 나와있지 않다. 나도 모른다. 중요성에 대해서만 적극 공감할 뿐.

어설픈 의견을 내본다면, 여러 언어를 접해보는 것이 가장 좋은 방법이 아닐까 생각해본다. 언어라는 것은 부딪혀 직접 말해봐야 느는 것이니까. 자연어 세계에서 한 언어를 습득하면 그 언어만이 가지고 있는 표현 방식이나 단어 사용 패턴을 이해하게 되고 , 다른 언어에 그것을 잘 적용하면 굉장히 신선한 표현이 되는 경우가 많다. 이 원리는 컴퓨터 프로그래밍 언어에서도 다르지 않다.