생활코딩: Coding Everybody
기계(컴퓨터)에게 명령이나 연산을 시킬 목적으로 설계되어 기계와 의사소통을 할 수 있게 해주는 언어를 뜻한다. 그 결과, 사람이 원하는 작업을 컴퓨터가 수행할 수 있도록 프로그래밍 언어로 일련의 과정을 작성하여 일을 시킨다. 쉽게 말하면 컴퓨터를 이용하기 위한 언어이다.
기계어는 소프트웨어를 만드는데 기본이 되고, 소프트웨어는 논리 연산의 집합이기 때문에 수리 언어의 일종으로 보는 시각도 있다. 컴퓨터보다 먼저 등장하였으며 본격적인 연구는 1930년대 즈음부터 수학자들에 의해 기계적으로 계산 가능한 함수에 대한 연구가 진행된 데에서 비롯되었다.
그 결과 기계가 이해할 수 있는 언어인 기계어가 탄생했으며, 이후에 발명된 것이 바로 현대적 의미의 컴퓨터이다. 이는 기계가 계산 가능하고 이해 가능한 언어를 실행하는 기계를 뜻합니다. 이로써 사람이 이해하기 쉽게 만든 언어인 컴퓨터 프로그래밍 언어로 코드를 작성하면 실행 전 기계어로 컴파일 된 후 실행되는 것입니다.
세상에는 정말 많은 언어가 있습니다.
어떤 언어는 다른 언어를 만듭니다.
이를테면 C는 많은 언어들의 부모입니다.
많은 언어들이 C로 만들어져 있습니다.
또 어떤 언어는 대체 불가합니다.
이를테면 웹페이지를 만드는 언어는 HTML, CSS, JavaScript 밖에 없습니다.
브라우저는 이러한 언어 외에는 어떠한 언어의 문법도 이해하지 못합니다.
또 어떤 언어는 대체 가능합니다.
예를들어 데이터베이스와 웹서버를 중계해주는 역할을 하는 PHP는
Java, Python, C, C++, Ruby, Perl, JavaScript등 거의 모든 언어로 대체 가능합니다.
무엇을 선택하느냐는 여러분의 취향이거나, 여러분이 속해있는 조직의 선택입니다.
하지만 한가지 언어와 그 언어가 동작하는 방법을 이해하면
다른 언어를 배우는 것은 어렵지 않습니다.
이때의 장애물은 익숙한 언어를 놔두고 낯선 언어를 배우면서 생겨나는
조급증과 지루함 밖에 없습니다.
정답은 없습니다.
이를테면 PHP는 웹을 위한 언어고, 배우기가 쉽습니다.
PHP는 좋게 말하면 관대한 언어이고,
나쁘게 말하면 어떻게 동작할지 예측이 다소 어려운 언어입니다.
PHP는 개발자의 실수를 알아서 바로잡습니다.
반대로 Java나 C와 같은 엄격한 언어는 이러한 실수를 용납하지 않습니다.
이것은 장점일 수도 있고, 단점일 수도 있습니다.
누군가는 만들고 싶은 것이 있을 때
그것을 빠르게 만들 수 있는 언어가 그 사람의 성향에 더 잘 맞을 것이고,
반대로 엔지니어링적인 미학을 추구한다면 엄격한 언어들에 호감이 갈 것입니다.
엔지니어링을 수단이 아닌 그것 자체가 추구할만한 목적일 수 있습니다.
언어는 자연어든 프로그래밍 언어이든 그 언어를 사용하는 사람들이
직면한 문제와 그것을 해결한 성취를 담고 있습니다.
이러한 성취에 접근하기 위해서는 언어를 알아야 합니다.
이것이 바로 언어의 진짜 정수입니다.
이점을 기억하신다면 엔지니어링을 좀 더 풍부하게 경험하실 수 있습니다.