티스토리 뷰
코딩이란 무엇인가
내 마음대로 작업을 지시한다.
이전에 프로그래밍을 해본 적이 없는 사람에게 코딩은 신비로운 예술과 같다. ‘코더’는 컴퓨터를 마음대로 조종해서 자신이 원하는 대로 움직이게 하는 사람이다(대체로 헤드폰을 쓰고 전자음악을 들으며). 하지만 실제 전체 과정은 훨씬 간단하다.
한마디로 코딩은 컴퓨터(혹은 태블릿, 스마트폰, 스마트시계)에게 어떤 작업을 지시하는 글을 한 줄씩 써 내려가는 과정이다. 이보다는 약간 더 복잡하기는 하다. 이제 필요한 배경지식을 알아보자.
컴퓨터가 움직이게 만드는 기본 전자 부품은 반도체다. 1, 즉 도체(전기가 통하는 상태)와 0, 즉 부도체(전기가 통하지 않는 상태)를 오가는 작은 전자 부품이다. 현재 컴퓨터 처리장치에는 대략 20억 개의 반도체 소자가 있다. 매 초당 30억 번가량 도체와 부도체 사이를 오간다. (그런데 호모 사피엔스의 뇌는 1000억 개의 뉴런으로 1초당 1000번의 신호가 오간다. 인간의 뇌를 시뮬레이션 하는 단계에 꽤 근접해가는 중이다.)
이 말은 컴퓨터가 1과 0 사이를 오가며 ‘생각’을 한다는 뜻이다. 1은 도체 또는 참, 0은 부도체 또는 거짓을 의미한다고 가정한다. 컴퓨터 산업의 초창기에는 컴퓨터와 대화하는 방법이 일련의 0과 1을 입력하는 방법뿐이었다. 물론 이는 무척 실용적이지 못했다. 그래서 점차 컴퓨터 ‘언어’가 개발되었다. 사람들은 이 언어를 이용해 컴퓨터에게 보다 편리한 방법으로 지시할 수 있다.
컴퓨터 언어는 영어나 스페인어와 같은 인간의 언어와 유사하다. 각 컴퓨터 언어에는 특정 명령어(단어)와 문법(구두점)이 있다. 이를 통해 인간과 컴퓨터가 함께 의미를 이해한다. 그런데 컴퓨터와 인간의 언어에는 중요한 차이가 있다. 컴퓨터 언어는 의미가 절대적으로 간결하고 명확하다. 반면 인간의 언어는 여러 의미로 해석될 수 있다. 만약 명령어의 철자를 틀리거나 세미콜론을 빼먹으면 전체 코드가 돌아가지 않는다. 사람들이 나누는 대화와는 다르다. 컴퓨터는 철자와 문법에 극도로 민감하다.
이런 명확성 때문에 코드를 올바르게 작성하면 코드에 따라 컴퓨터가 정확하게 명령을 수행할 거라고 확신할 수 있다. 인간의 대화에서는 뜻밖의 결과가 나오기도 하지만 좋든 싫든 컴퓨터는 항상 정확하게 명령한 바를 수행한다.
코딩 없이도 컴퓨터를 잘 다룰 수 있다고요‘나는 코딩을 모르지만 컴퓨터와 전화기로 하고 싶은 것은 다 할 수 있어요’라고 생각할 수도 있다.
지난 30여 년간 윈도우나 맥OS(그리고 모바일 기기의 안드로이드와 iOS)와 같은 사용하기 편리한 운영체제들은 코드를 작성하지 않고도 컴퓨터를 다룰 수 있게 했다. 그래픽 사용자 인터페이스GUI, Graphical User Interfaces가 발전해서 누구든지 컴퓨터와 전화기를 바로 사용할 수 있다. 이는 이용 편의성 측면에서는 큰 발전이다. 하지만 많은 사람이 워드나 크롬 같은 일상적 소프트웨어를 넘어서 자신의 손가락 끝으로 만들어낼 수 있는 가능성을 깨닫지 못하게 했다.
사람들이 사용하는 모든 소프트웨어는 누군가 아니면 대개는 한 그룹의 사람들이 코드로 쓴 것이다. 시리Siri(애플의 음성 인식 서비스-옮긴이)에게 말을 걸거나 브라우저에 웹 주소를 입력할 때마다 몇 줄의(혹은 수천 줄의) 코드가 질문에 대답하기 위해 또 웹사이트를 출력하기 위해 실행된다. 여기에 마술 같은 것은 없다. 그저 수천 명의 개발자가 들인 노고와 명령대로 움직이는 수십억 개의 반도체가 있을 뿐이다.
코드를 배우면 이런 반도체를 통제하는 절대 권력을 손에 쥔다. 자신만의 소프트웨어를 만들어 명령을 내리고 자동화를 통해 시간을 절약할 수 있다. 이미 보유한 장비를 완전히 새로운 방식으로 이용할 수 있다.
'프로그래밍' 카테고리의 다른 글
프로그램 언어가 다양한 이유 (0) | 2020.05.22 |
---|---|
간단한 코딩으로 워밍업 (0) | 2020.05.22 |
JSON .NET 패키지 (0) | 2020.05.21 |
C# 개발 환경 (0) | 2020.05.20 |
C# (C-Sharp)프로그래밍 언어. (0) | 2020.05.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- swift프로그매밍
- bson
- html
- JSON .NET
- C# 개발 환경
- 자바스크립
- Object
- 데이터베이스
- 자바
- json
- 인코딩
- 폴리글랏시대
- json기본구성
- json요소별문법
- 동적그래프
- RUBY(루비 프로그래밍 언어)
- array배열
- 디코딩
- Java
- php
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함