가끔 C언어가 왜 범용 언어냐? 유닉스가 무슨 범용 운용체제냐? 이런 질문을 하는 인간들이 있는데......


범용이라는 개념은 절대적이 아닌 상대적인 개념임.


C와 유닉스가 등장할 당시 컴퓨터로 할 수 있는 게 몇 가지나 되었을까?


그 시대에 MS-Office나 AutoCAD, 어도비 그래픽 편집툴, 하다못해 알툴즈 같은 건 상상도 못 하던 시절임.


가정용 PC라는 개념도 존재하지 않았고, 인터넷의 전신인 알파넷은 정부와 군의 비밀로 인해 아직 민간에는 알려지지 않은 시절임을 알아야 함.


지금이야 객체지향이니 스크립트니 하는 것들이 난무하는 요즘 C언어만으로 이런저런 걸 만드는 건 거의 불가능하다는 건 누구나 다 아는 사실임.


그러나 컴퓨터로 할 수 있는 게 지금과는 달리 매우 한정되어 있고 GUI 툴 같은 건 꿈도 못 꾸던 당시 과학계산에 극한된 포트란, 인공지능 전용 리스프, 사무용 코볼과는 달리 C로 할 수 있는 것들은 무궁무진했음. 어디까지나 그 당시 기준으론 말이지......


오늘날도 범용 프로그래밍 언어는 존재하지 않는다. 자바나 C#, C++, 자바스크립트, 파이썬 등등 이들 언어 중 한 가지만으로 만든 OS나 소프트웨어, 웹페이지가 존재하냐?


시대가 흐르면 흐를수록 데스크탑, 스마트폰 등에서 할 수 있는 게 많아지고 그만큼 다양한 기능을 구현하기 위한 요구성능도 늘어나기 때문에 아무리 요즘 나오는 성능 좋은 언어라도 그거 하나만으로 모두 구현하는 건 불가능하다. 지금도 그렇고 앞으로도 그럴 것이다.

혹시 모르지. 미래에는 스마트폰으로 전투기, 잠수함, 인공위성 등을 탈취하는 프로그램이 등장하고 이것을 다루는 새로운 전용 프로그래밍 언어가 등장할지도.......


범용 프로그래밍 언어의 범용이라는 개념은 어디까지나 상대적인 개념이고 우리가 아는 절대적이고 완벽한 의미의 범용 프로그래밍 언어라는 건 존재할 수 없다.


참고로 비슷한 예로 미니컴퓨터라는 게 있는데, 미니컴퓨터의 크기가 얼마만했는지 아냐? 노트북, 테블릿PC 정도?


미니컴퓨터 크기는 대형 냉장고만한 크기였다. 근데 왜 미니라는 명칭이 붙었는지 잘 생각해 볼 것. 마이크로 컴퓨터라는 놈도 우리집 데스크톱보다 큰 놈인데......