콘텐츠 바로가기
본문 바로가기


블로그 전체검색
세상을 만드는 글자, 코딩

[도서] 세상을 만드는 글자, 코딩

박준석 저

내용 평점 5점

구성 평점 4점

프로그래머는 코딩이라는 글쓰기를 통해 컴퓨터에게 어떤 일을 시킴으로써 물리적 세계에 직접적인 영향력을 행사할 수 있습니다.

본문 중에서

앞으로 우리가 살아가는 세상은 어떻게 변할까? 기술은 점점 더 발전하며 인간은 기술 발전과 함께 새로운 삶을 맞이할 것입니다. 사람의 말을 알아듣는 인공지능 비서는 우리가 원하는 것을 곧잘 이해하고 실행할 것이며, 집안 구석구석 붙어있는 각종 센서가 우리의 건강을 확인하게 될 것입니다. 자동차 역시 소유물이 아닌 공공재가 될 가능성이 큽니다. 다양한 곳에서 기술이 결합하고 발전하여 인간에게 더 많은 편리를 선사하게 될 것입니다. 우리는 이 책을 통해 기술이 주도하는 세상을 이해하게 될 것입니다.


그렇다면 이런 기술은 어떻게 발전하는 걸까요? 우리는 기술의 변화를 단편적으로만 알뿐 그 세세한 내막을 알지 못합니다. 변화가 무엇인지 이 책을 통해 알아가는 것도 지적 호기심을 충족시켜주는 의미 있는 시간이 되리라 믿습니다.


이 책에서는 지금 사회적인 화두로 떠오르고 있는 코딩에 대해 살펴보게 될 것입니다. 그렇다면 과연 코딩이 무엇일까요? 코딩이란 용어가 요즘 새롭게 부각되고 있지만 결코 최근에 나온 용어는 아닙니다. 이전에도 코딩이라는 단어는 존재했으며, 비슷한 의미에서 프로그래밍이나 알고리즘 등으로도 함께 쓰이고 있습니다. 외국에서는 컴퓨터 사이언스라는 말로 불리기도 합니다.


각각의 용어가 다소 차이는 있지만 비슷한 맥락으로 이해해도 됩니다. 코딩을 한마디로 정의하기는 쉽지 않지만, 제 나름대로 풀어보면 기계와 대화하는 방법입니다. 그런데 대화를 하려면 특별한 방법이 필요하겠지요? 그것이 바로 코딩입니다. 이렇듯 코딩은 기계가 알아듣을 수 있도록 인간의 언어로 풀어쓴 기호나 문자의 조합이라고 이해할 수 있습니다.




그렇다고 우리가 컴퓨터 자판으로 열심히 타이핑 한 프로그래밍 코드를 기계가 바로 알아듣는 것은 아닙니다. 우리가 외국인을 만나 대화를 하려면 똑같은 말을 사용해야 합니다. 한국 사람과 미국 사람이 만나 한국말이나 미국 말로만 대화하기는 불가능합니다. 둘 중 한명이 상대 언어를 배워야 수월하게 대화가 이뤄질 수 있습니다. 만약 그렇지 않다면 중간에 누군가가 통역을 해줘야 합니다. 우리는 기계가 알아듣는 언어로 또 다시 바꿔줘야 합니다.


기계는 쉽게 말해 2진수의 기계어만 알아듣습니다. 예를 들어 ‘0010100110001’ 뭐, 이런 식으로 나열된 숫자의 조합만을 이해할 수 있다는 말입니다. 이런 숫자의 나열은 기계 속 트랜지스터라는 소자를 열고 닿으며(on/off) 기계가 동작하게 되는 것이지요. 이런 기계에게 내 의사를 전달하려면 누군가는 통역을 해줘야 합니다. 그것은 컴파일러라는 기계어 통역사가 맡습니다. 컴파일러는 ‘인간이 이해하는 코드 -> 컴파일러 -> 기계어”로 번역해 주는 것입니다. 이런 과정을 거쳐 나는 기계에게 일을 시킬 수 있는 것입니다.





앞에서 조금은 어려운 이야기를 했다고 이 책이 전문 프로그래머를 만들려는 의도로 쓰인 것은 아닙니다. 기술의 실체에 접근하여 우리가 좀 더 기술을 이해하는 지침서 정도입니다. 아는 것과 모르는 것은 천지차이입니다. 알면 그것을 이용하여 다양한 활용을 할 수 있지만 모르면 그냥 지나가는 것입니다. 내가 아무리 좋은 아이디어가 있더라도 그것을 구현할 방법을 모른다면 그것은 허무하게 사라지는 아이디어일 뿐일 것입니다. 하지만 도구를 사용할 줄 안다면 그 도구를 이용하여 다양한 시도를 해보겠지요.


프로그래밍 언어가 특이한 점은 인간의 필요에 의해 인위적으로 만들었다는 것입니다. 프로그래밍 언어의 종류는 우리가 생각하는 것보다 훨씬 많습니다. 이것도 시대적 요구에 의해 지속적인 변화와 발전을 거듭하고 있습니다. 현재 700여 개의 프로그래밍 언어가 존재한다고 합니다. 그중 가장 대표적인 언어로는 c/c++ 언어, 자바, 요즘 인공지능의 이슈로 주가 상승 중인 파이썬 등 다양한 언어가 존재하지요. 우리는 이런 언어들을 다 배워야 하는 걸까요? 그럴 필요는 없습니다. 언어에 따라 문법이 다소 차이는 있지만 기본적인 개념은 대동소이합니다. 제대로 하나의 언어를 이해한다면 다른 언어로 접근하는 것은 그리 어렵지 않을 것입니다. 물론 문법의 차이 때문에 익숙해지는데 시간이 필요한 부분도 있습니다.


이 책의 모든 것을 다루지는 않겠지만 이 책은 코딩에 대한 구체적인 예시와 설명으로 개념과 기술적인 부분을 이해를 할 수 있습니다. 또한 특이할 만한 것은 기술의 변화에 따라 프로그래밍 접근에 대한 개념이 바뀐다는 것이지요. 인공지능의 부각으로 기존의 방식으로는 인공지능 구현이 어렵다는 것을 알게 된 사람들은 새로운 방법을 시도합니다. 바로 머신러닝이라는 방법이지요. 간략하게 말하자면 인간이 태어나서 배우는 것과 비슷하게 반복을 통해 그것을 알아가는 것입니다. 물론 깊숙이 들어가면 다양한 기술적 접근 방법이 있지만 그걸 다 말한다면 책 한 권으로도 모자랄 것입니다. 이런 기술의 변화 때문에 기존의 프로그래밍 방법을 고수하는 결정론적 관점을 가진 사람들과 머신러닝에서 사용하는 확률론적 방법으로 접근하는 사람들 간에 이견이 있는 것도 사실입니다.


지구상의 생명체가 환경에 적응하는 과정을 통해 다양한 진화가 이뤄졌듯이 프로그래밍 관점도 시대가 요구하는 환경에 따라 다양한 변화와 시도가 이뤄지고 있습니다. 생명체의 진화 과정과 밀접한 모습을 보입니다. 다만 차이가 있다면 인간이 변화에 중심으로 작용한다는 것이지요. 물론 언젠가는 기계 스스로가 변화를 모색하며 진화하는 날이 올 수도 있겠지요. 그렇다면 그런 시대에는 우리 인간은 어떠한 행동을 취해야 할까요? 지금 살아가는 우리는 생각보다 해야 할 일이 많습니다. 첫 삽을 뜨는 시점에서 커다란 그림을 그리려고 노력해야 하니까요. 그런 밑그림을 그리기 위해서는 우리는 알아야 합니다. 기술의 본질, 저 너머에 존재하는 그 실체를 말입니다.


 
취소

댓글쓰기

저장
덧글 작성
0/1,000

댓글 수 1

댓글쓰기

PRIDE2