[ 프로그래밍 언어를 배우는 것은… ]

새로운 언어는 새로운 생각에서 나온다.

그러므로 새로운 언어를 배우는 것은 새로운 생각을 배우는 일과 같다.

시대마다 해결해야 할 문제는 다른 당연히 해결하는 방법도 달랐다.

C언어가 해결해야 할 문제는 효율적으로 컴퓨터를 이용할 수 있는 방법을 찾는 일이다, C+언어는 기존의 절차적 프로그래밍 방법에서 발생하는 “관심사의 분리”및”추상화”에 대한 해답을 제공한다.

함수적인 프로그래밍은 코드로 발생 하는 동적인 변화에 대한 적절한 대응책이었다.

현대적인 프로그래밍 언어는 어떻게 하면 보다 쉽게 사용자가 자신의 문제를 스스로 기술하고 해결될지에 집중하는 것처럼 보인다.

프로그래밍의 장벽을 최대한 낮게 유지하면서 기본적인 툴은 모두 제공하려는 노력을 보였고, 또 그만큼의 인프라와 컴퓨팅 장비 개선도 있었다.

그럼 지금 세상에서 “프로그래밍 언어를 배우는 것”은 어떤 의미가 있는가? 한마디로 표현하기는 어렵지만 아무튼 다음과 같은 답을 내고 싶다.

-“프로그래밍은 문제를 논리적으로 서술하고 체계적으로 해결하는 방법을 컴퓨터가 이해되는 언어로 제공하기”이다.

-따라서 프로그래밍을 배우는 것을 단순히 명령어와 문법의 조합으로 생각하는 것은 올바른 방법이 아니다.

그리고 그렇게 배운 모든 코드가 효과적으로 문제를 해결하는 데 도움이 되는 것도 아니다.

말을 배울 때 단어를 암기하고 적절한 상황에서 적절한 답을 하기를 반복 연습한다.

어색한 표현이 없도록 지속적인 피드백을 받거나 누군가의 지적에 대해 ‘왜’라는 질문을 던지고 스스로 해답도 찾는다.

즉 이런 과정이 없으면 제대로 프로그래밍 언어도 배웠다고 할 수 없다.

어색한 표현이란 특정 상황에서 타인이 이해하기 어려운 언어를 사용하는 것이다.

문법적으로는 문제가 없더라도 좀 더 우아한 표현을 찾아 쓰도록 노력해야 하는 것이다.

단지 말할 수 있다고 해서 모든 말을 알기 쉽게(?) 할 수 있는 것은 아니다.

상황에 맞는 표현과 타인이 이해하기 쉽게 말하는 연습은 어디서나 필요하다.

논리적 사고 능력을 키워야 하며 언어의 기초적인 지식과 상황에 맞는 적절한 해결책을 찾는 훈련이 프로그래밍 언어를 배우는 핵심이다.

생각은 언어에 반영되어 다시 언어는 생각에 영향을 준다.

하나의 연어를 배운다는 것은 사고 방식에도 영향을 주고 나아가서 새로운 생각은 또 다른 언어를 만들어 낸다.

이처럼 영향을 주는 악순환의 고리에서 새로운 문제에 대한 발견과 해결은 지속적인 피드백과 실현을 낳는다.

물론 하나의 언어를 충분히 이해하는 게 중요하다.

예컨대 한글 배우기 전에 영어를 배우면 영어에 기초한 한글이 몸에 붙는다.

한글을 먼저 배우고 영어를 배우게 되면 한글로 사고하는 방식의 토대 위에서 영어적인 사고를 쌓게 된다.

모두 영향을 주고받는 과정을 통해서 또 다른 언어적인 사고가 파생할 수 있다.

프로그래밍 언어도 마찬가지다.

단순히 언어적 문법만 배우려 해서는 안 된다.

또, 문법으로 가능한 모든 조합이 항상 올바른 선택은 아니다.

이때 필요한 것이 우리가 잘 아는 낯익은 “표현”이다.

표현과는 상황을 동반한 의미를 전달하는 방법인 프로그래밍 언어에서 흔히 듣게 되는 코딩 표준과 패턴 등이 포함될 수 있다.

써도 좋지만 사용과 혼돈을 불러일으키는 표현도 존재한다.

최대한 사용하지 않는 것이 자신과 타인을 위해서도 도움이 된다.

프로그래밍 언어를 배우면서 정말 배워야 할 것은 그 언어에 내재한 생각과 올바른 표현이며 이를 통해서 자신의 인생에 대한 해석도 차원을 달리하는 것이다.

-“빨리”보다 “정확히”에 더 노력해야 한다.

-