https://www.youtube.com/watch?v=ZeD8yNMYe-o
1. 이건 꼭 알아야 한다[^1]
[? 질문] 코딩이란 정확히 무엇이며, 왜 “컴퓨터에게 명령하는 것”이라고 말하는가[^2]
[= 답] 코딩은 **코드(명령어)**를 작성하는 행위이며, 그 명령어는 “컴퓨터에게 무엇을 하라고 시키는 말”이다. 사람이 하기엔 오래 걸리거나 반복적인 일을 컴퓨터가 빠르게 수행하게 만들 수 있고, 웹사이트/게임/앱/전자기기 제어 등 광범위한 결과물이 모두 “명령의 실행”으로 설명된다.[^3]
[? 질문] 프로그래밍 언어는 왜 필요하고, 컴퓨터는 왜 사람 말(한국어 등)을 못 알아듣는가[^4]
[= 답] 컴퓨터의 “뇌” 역할을 하는 CPU는 결국 **0과 1(전원 꺼짐/켜짐)**로 표현되는 기계어만 이해한다. 그래서 사람이 쓰기 쉬운 프로그래밍 언어로 작성한 내용을, **컴파일러(번역기)**가 0과 1 형태(기계어)로 변환해줘야 컴퓨터가 실행할 수 있다.[^5]
[? 질문] 같은 프로그래밍 언어로 말해도 왜 컴퓨터는 “모호한 지시”를 수행하지 못하는가(= 알고리즘이 왜 중요한가)[^6]
[= 답] 컴퓨터는 완전 논리적이고 구체적인 절차만 이해한다. 따라서 “어떻게/무엇을/어디에/어떤 순서로” 할지 단계별로 정확히 적는 **알고리즘(절차)**이 필요하며, 이를 체감시키기 위한 교육 방식으로 샌드위치 코딩(샌드위치를 컴퓨터에게 시키듯 초구체적으로 명령해보기)을 소개한다.[^7]
2. 큰 그림[^8]
이 콘텐츠는 코딩을 처음 접하는 사람을 대상으로, 코딩의 정의, 프로그래밍 언어의 필요성, 알고리즘(구체적 절차)의 의미를 한 번에 연결해 설명한다.[^9] 또한 웹개발 강의를 시작하기 전 “기초 개념을 정리”하는 맥락에서, 일상적인 비유(샌드위치 만들기)를 통해 컴퓨터가 요구하는 명령의 수준을 체험시키는 방식으로 전개된다.[^10]
- 코딩은 컴퓨터에게 명령어(코드)를 작성하는 행위이며, 그 결과로 웹/앱/게임/자동화 등 다양한 창작과 제어가 가능해진다.[^3]
- 프로그래밍 언어는 사람에게 읽기 쉬운 형태의 명령 체계이고, 컴파일러가 이를 **기계어(0과 1)**로 바꿔 컴퓨터가 실행하게 만든다.[^5]
- 알고리즘은 “컴퓨터가 이해할 정도로” 일을 구체적·논리적 단계로 쪼개는 것이며, 샌드위치 코딩 사례로 “모호함이 곧 오류”가 됨을 보여준다.[^11]
3. 하나씩 살펴보기[^12]
3.1 오프닝과 강의 맥락: “웹개발 5주 완성”의 출발점으로서 기초 개념[^13]
화자는 라이브로 진행할 “웹개발 5주 완성 강의”를 예고하며, 코딩을 아예 처음 접하는 사람도 따라올 수 있도록 “완전 기본 개념부터” 시작하겠다고 밝힌다.[^14] 커리큘럼은 크게 프론트엔드 3주 + 백엔드 2주로 설명하고, 이를 통해 “웹 개발의 전반적인 모든 과정”을 배우는 것으로 이해하면 된다고 안내한다.[^15] 이후 “코딩이란?”부터 개념 정리를 시작하겠다고 전환한다.[^16]
[!NOTE] 맥락 정리
이 영상은 “웹개발 강좌”의 0단계로, 본격 기술(HTML/CSS/JS 등) 이전에 **용어와 구조(코딩-언어-알고리즘)**를 먼저 맞추는 도입부 역할을 한다.[^15]
3.2 코딩의 정의: 코드(명령어)를 작성하는 행위[^17]
화자는 “코딩”이라는 단어를 코드(code) + ing로 풀어 설명한다.[^18] 여기서 “코드가 뭐냐”에 대해, 코드는 명령어라고 규정하며, 코딩은 “명령어를 작성한다”는 의미라고 말한다.[^19] 그리고 그 명령은 곧 “컴퓨터에게 명령하는 것”을 뜻한다고 정리한다.[^20]
- 코딩 = 컴퓨터에게 “야, 이거 해”라고 시키는 것[^20]
- 일상적 표현으로는 “컴퓨터야 내 일 좀 대신해줘”처럼, 사람이 하기 번거로운 일을 맡기는 명령으로 비유[^21]
이때 화자는 코딩의 효용을 “컴퓨터가 하면 오래 걸릴 일도 엄청 빠르게 끝난다”는 식으로 연결한다.[^22] 즉, 코딩은 단지 텍스트를 쓰는 행위가 아니라, 결과적으로 시간이 많이 드는 작업을 빠르게 처리하게 만드는 수단으로 제시된다.[^22]
[c 코딩은 ‘컴퓨터에게 수행할 일을 명령어로 구체화해 전달하는 행위’라는 정의가 영상 전체 전개의 출발점이다.][^20]
3.3 코딩으로 만들어지는 것들: 구글·롤·틱톡 등 “명령의 결과물” 사례[^23]
화자는 코딩이 만들어내는 결과를 매우 넓게 보여주기 위해, “컴퓨터에게 이런 걸 만들어줘”라고 명령하면 무엇이 되느냐는 방식으로 예시를 연속 제시한다.[^24]
- “인터넷에서 정보 찾는 사이트 만들어줘” → 구글 같은 사이트[^25]
- “오디오로 즐기는 게임 만들어줘”라는 식의 게임 제작 명령 → 리그 오브 레전드 같은 게임도 코딩으로 만들어진 결과물[^26]
- “짧은 영상 공유 앱 만들어줘” → 틱톡 같은 영상 공유 앱도 코딩으로 구현된 것[^27]
또한 “엘론 머스크가 조코딩 칭찬 영상 만들어줘” 같은 다소 과장된 예를 통해, 코딩을 통해 특정 목적의 영상(콘텐츠)을 만들어내는 상황을 유머 섞어 제시한다.[^28] 이어서 “맥도날드 신메뉴 만들어줘” 같은 비유도 등장시키며, 코딩이 단순히 정해진 일만 반복하는 것이 아니라 “창의적인 것”도 컴퓨터가 수행하게 만들 수 있다는 방향으로 확장한다.[^29]
화자는 이 확장의 예로 “소설 쓰기”, “음악 작업”, “비트코인 가격 예측” 등도 코딩으로 가능하다고 언급한다.[^30] 즉, 코딩이 다루는 영역을 “웹/앱/게임”에 한정하지 않고, 콘텐츠 생성·예측·분석 같은 영역까지 넓혀 “명령할 수 있는 것의 범위”를 크게 잡는다.[^30]
[!IMPORTANT] 화자가 의도하는 메시지
코딩을 “개발자만 하는 어려운 작업”이 아니라, “컴퓨터가 할 수 있는 일을 확장하는 보편적 도구”로 인식시키기 위해, 친숙한 서비스와 과장된 예시를 섞어 ‘가능성의 스펙트럼’을 보여준다.[^24]
3.4 “컴퓨터”의 범위 확장: PC가 아니라 반도체가 들어간 모든 전자기기[^31]
화자는 “컴퓨터에게 명령한다”에서 말하는 컴퓨터가, 우리가 흔히 떠올리는 PC만이 아니라고 강조한다.[^32]
- 노트북, 스마트폰, 태블릿, 서버 등도 물론 컴퓨터[^32]
- 공장 기계, 애플 워치 같은 웨어러블 기기, 자동차도 점점 “컴퓨터화”되고 있다고 설명[^33]
- 더 나아가 전등 등도 “명령에 의해 변화할 수 있는 전자기기”라는 관점에서 컴퓨터로 볼 수 있다고 말한다.[^34]
여기서 핵심 기준은 “반도체가 들어가서 어떤 명령어에 의해 변화할 수 있는 모든 전자기기”이며, 이런 것들은 모두 코딩이 적용될 수 있는 분야라고 정리한다.[^35] 그리고 결론적으로 “코딩을 하면 이런 모든 것들을 다 제어할 수 있는 것”이라고 말한다.[^36]
[h 코딩의 적용 범위를 ‘소프트웨어 화면’에서 ‘명령 가능한 모든 전자적 시스템’으로 확장해, 학습 동기를 넓히는 장치다.][^35]
3.5 코딩은 마법인가: 해리포터 비유로 “생명 부여”의 감각 전달[^37]
화자는 로봇을 예로 들며, “춤춰봐” 같은 명령을 통해 로봇이 살아있는 것처럼 움직이게 만들 수 있다는 식으로 코딩의 제어 능력을 보여준다.[^38] 이어서 “코딩이 마법이랑 똑같지 않나요?”라고 질문 형태로 던지고, 해리포터 세계관의 “생명 부여” 같은 마법을 떠올리게 한다.[^39]
- 해리포터의 마법처럼, 코딩도 어떤 대상(기계/시스템)에 행동을 부여한다는 점에서 유사하다는 주장[^39]
- 더 나아가 “마법보다도 더 마법 같은 것”을 할 수 있는 게 코딩이라고 표현[^40]
- “코딩의 프로그램 … 이런 걸 보시면 이런 마법 책을 읽는 거랑 크게 다르지 않다”는 식으로, 코드를 마법책에 비유해 친숙하게 만든다.[^41]
이 비유는 이후 이어질 기술적 설명(0과 1, 컴파일러, 알고리즘)로 들어가기 전에, 코딩을 “흥미롭고 강력한 도구”로 감각적으로 납득시키는 역할을 한다.[^40]
3.6 프로그래밍 언어가 필요한 이유(1): 컴퓨터는 한국어가 아니라 0과 1만 이해한다[^42]
화자는 다음 주제로 “프로그래밍 언어와 알고리즘이 무엇인지” 보겠다고 예고하고, 먼저 프로그래밍 언어를 설명하기 위해 상황을 하나 설정한다.[^43]
- 코딩은 컴퓨터에게 명령하는 것인데, 사람이 “한국말로” 명령을 내리면 컴퓨터는 수행하지 못한다.[^44]
- 이유: 컴퓨터가 한국어를 알아들을 수 없기 때문.[^45]
이 문제를 해결하려면 신경 쓸 것이 “두 가지 정도” 있다고 말하면서, 첫 번째로 “언어가 다르다”를 든다.[^46] 즉 사람 언어와 컴퓨터 언어 사이에 간극이 있다는 것이다.[^46]
컴퓨터가 이해하는 언어를 설명할 때 화자는 CPU를 꺼낸다. 컴퓨터는 CPU를 통해 연산하며, 이 “컴퓨터의 뇌”는 0과 1밖에 못 알아듣는다고 말한다.[^47] 0과 1은 “전원이 꺼진 것과 켜진 것”처럼 이진 상태로 설명한다.[^48] CPU가 결국 0과 1의 조합을 계산해 결과를 내는 방식이므로, 컴퓨터는 생각보다 굉장히 단순하다고 평가한다.[^49]
- 컴퓨터가 이해하는 것 = 0과 1
- 그래서 컴퓨터에게 명령하려면 “매트릭스에 나올 것 같은” 바이너리 코드를 입력해야 한다고 연결[^50]
[!NOTE] CPU 설명의 위치
화자는 CPU 원리의 자세한 내용은 다른 2분 영상에 있다고 언급하며, 여기서는 결론만: “컴퓨터는 0과 1밖에 모른다”로 압축한다.[^51]
3.7 프로그래밍 언어가 필요한 이유(2): 바이너리로 직접 코딩하는 건 사람에게 너무 어렵다[^52]
화자는 원론적으로 컴퓨터에게 “진짜로 알아듣게 말하려면” 사람이 1과 0을 입력해 명령해야 한다는 점을 강조한다.[^53] 그리고 “진정한 프로그래머는 바이너리로 코딩한다” 같은 밈(짤)을 예로 들며 웃음을 유도한다.[^54] 하지만 곧바로 현실적 결론으로, 이렇게 0과 1로 직접 코딩하면 “엄청 힘들겠죠”라고 말한다.[^55]
즉 문제가 생긴다:
- 컴퓨터 입장: 바이너리(기계어)가 필요
- 사람 입장: 바이너리는 너무 비직관적이고 생산성이 낮음[^55]
여기서 화자는 “구글 번역기” 비유로 해결책을 소개한다.[^56] 한국어 문장을 영어로 번역해주는 번역기가 있듯이, 프로그래밍에서도 “번역기”가 있어 사람 친화적 언어를 컴퓨터 친화적 언어로 바꿔준다는 흐름이다.[^56]
3.8 컴파일러: 프로그래밍 언어를 기계어로 바꿔주는 번역기[^57]
화자는 프로그래밍에서 그 번역기 역할을 하는 것이 컴파일러라고 말한다.[^58] 컴파일러는 우리가 작성한 프로그래밍 언어를 컴퓨터가 이해하는 **기계어(0과 1)**로 변환해 준다고 정의한다.[^59]
정리하면 영상의 논리는 다음 순서로 이어진다.[^59]
- 컴퓨터는 0과 1만 이해한다.[^47]
- 사람이 0과 1로 직접 쓰기는 너무 어렵다.[^55]
- 그래서 사람이 쓰는 프로그래밍 언어가 필요하다.[^59]
- 다만 컴퓨터 실행을 위해 그 언어를 기계어로 번역해야 한다.[^59]
- 그 번역기가 컴파일러다.[^58]
그 결과 “우리는 프로그래밍 언어를 작성하고, 컴파일러를 돌려서, 컴퓨터가 이해할 수 있게 해준다”는 결론이 된다.[^60]
[c 프로그래밍 언어-컴파일러-기계어(0/1)의 삼각 구조가, ‘컴퓨터에게 명령을 전달하는 경로’로 제시된다.][^60]
3.9 고급 언어 vs 저급 언어: 사람에 가깝나, 기계에 가깝나[^61]
화자는 프로그래밍 언어의 예로 파이썬, C, 어셈블리어 등을 언급한 뒤, 언어를 크게 고급 언어와 저급 언어로 나눌 수 있다고 설명한다.[^62]
- 고급 언어: 사람의 말과 비슷하다는 의미에서 “고급”[^63]
- 저급 언어: 컴퓨터(기계)에 더 가깝다는 의미에서 “저급”[^64]
그리고 실제 코드 생김새로 체감시키기 위해 “Hello World 출력” 예시를 든다.
- 파이썬(고급 언어) 예시:
print("Hello World")처럼 사람이 봐도 “출력한다”는 의미를 단어 수준에서 유추 가능[^65] - 어셈블리어(저급 언어) 예시:
global _start등, 사람이 봤을 때는 “하나도 모르겠다”는 반응이 나올 정도로 기계어에 가깝게 보임[^66] - 하지만 그 어셈블리 코드도 결국 “Hello World를 출력하는 코드”라고 말하며, 같은 목적을 다른 추상화 수준으로 수행함을 보여준다.[^67]
이 대목에서 화자는 “0과 1에 가깝게 되는 언어가 어셈블리어”라고 정리해, 저급 언어의 의미를 “기계어와의 거리”로 다시 고정한다.[^68]
[!TIP] 초보 관점에서의 실용적 해석(영상의 뉘앙스)
사람에게 읽기 쉬울수록(고급) 시작이 쉽고, 기계에 가까울수록(저급) 직관성이 떨어진다. 화자는 이 차이를 ‘코드를 봤을 때 느낌’으로 납득시키려 한다.[^65]
3.10 알고리즘의 필요: “언어”만 맞춰도 컴퓨터는 모호한 지시를 못 알아듣는다[^69]
화자는 다시 처음 상황(“컴퓨터야 내 일 좀 대신해줘”)으로 돌아간다.[^70] 이번에는 한국어가 아니라, 예를 들어 파이썬 언어로 컴퓨터에게 “내 일 좀 대신해줘”라고 말한다고 가정한다.[^71] 그러면 언어 문제는 해결된 것처럼 보이지만, 또 하나의 문제가 남아 있다고 한다.[^72]
그 문제는:
- 컴퓨터는 완전 논리적인 명령어만 알아들을 수 있다.[^73]
- 따라서 “내 일”이 뭔지, “언제까지”인지 같은 정보가 없으면 컴퓨터는 되레 궁금증이 많아져서(= 정의가 부족해서) 수행할 수 없다.[^74]
- 이런 “논리적 절차/정확한 단계”를 다루는 것이 알고리즘이라고 소개한다.[^75]
즉 화자는 프로그래밍을 위해 필요한 것이 단지 “언어”가 아니라, **문제를 실행 가능한 절차로 바꾸는 설계(알고리즘)**라는 점을 강조한다.[^75]
[h 같은 문장을 프로그래밍 언어로 적을 수 있어도, 모호하면 컴퓨터는 실행 불가 → ‘알고리즘(구체적 절차)’가 핵심이라는 연결이다.][^74]
3.11 샌드위치 코딩 기법: 알고리즘을 ‘구체적으로 쓰는 법’을 체감시키는 교육 방법[^76]
화자는 알고리즘을 쉽게 이해시키는 방법 중 하나로 샌드위치 코딩을 소개한다.[^77] 이는 “샌드위치를 만들 때, 컴퓨터에게 명령하듯이 만들도록” 시키는 교육 방식이다.[^78] 아이들에게 알고리즘을 가르칠 때 사용한다고 설명하며, 샌드위치를 겹쳐서(빵-잼-빵) 먹는 상태가 되도록 명령을 하게 만드는 과정이 핵심이라고 말한다.[^79]
이제 화자는 실제로 샌드위치 재료(식빵, 잼 등)와 접시, 칼을 준비했다고 말하고, 시청자 채팅으로 명령을 내려주면 자신이 그대로 수행해 보겠다고 한다.[^80] 이 실습은 “명령이 얼마나 구체적이어야 하는가”를 몸으로 보여주기 위한 장치다.[^81]
3.12 실습(1): 명령을 받으면 그대로 수행하지만, 명령이 엉성하면 결과도 엉뚱해진다[^82]
채팅에서 들어오는 명령이 순차적으로 제시된다. 예를 들어:
- “빵 포장지를 뜯는다”, “칼을 든다” 같은 시작 명령[^83]
- “식빵을 접시 위에 놓는다”, “봉지를 연다”, “빵 2개를 꺼낸다” 등 재료 준비 단계[^84]
그런데 진행 중 “빵이 상했는지 냄새를 맡는다” 같은 명령도 등장하고, 화자는 “빵 이상한지 냄새를 맡는다… 엄한데요”처럼 반응한다.[^85] 또한 너무 이상하거나 진행을 방해하는 명령이 섞여 들어오자, 화자는 시간상/진행상 이유로 “적절한 것만” 골라서 수행하겠다고 말한다.[^86]
이 과정에서 “접시를 눕힌다/높인다”처럼 애매하거나 말이 이상한 지시가 등장하고, 화자는 그 모호함을 지적하며 “접시가 수평하게 된다”처럼 조건을 명확히 제시한 명령을 더 ‘제대로 된 명령’으로 평가한다.[^87] 즉 실습 중에도 “정확한 상태 정의”가 중요하다는 평가가 계속 붙는다.[^87]
3.13 실습(2): “잼을 바른다”가 왜 문제인가 — 컴퓨터는 ‘어디에’ 바를지 모른다[^88]
다음 단계로 “나이프를 든다”, “잼 통을 열어 빵에 잼을 한 번 바른다” 같은 명령이 나온다.[^89] 화자는 수행을 시도하지만, 곧 “생각처럼 안 되네요”라고 말하며 난점이 드러났음을 알린다.[^90] 이어서 “애들이랑 해야 되는데 어른들이 하니까 이상한 걸 시키네요”라고 농담 섞어 상황을 정리한다.[^91]
가장 중요한 교훈은 “잼을 바른다” 같은 표현이 너무 모호하다는 점에서 나온다.
화자는 “컴퓨터는 구체적이어야 돼요”라고 결론을 먼저 말하고,[^92] 왜 구체적이어야 하는지 예를 든다:
- “위에 바른다”라고 하면, “여기가 위일 수도 있죠”라고 하며 ‘위’의 기준이 모호함을 지적[^93]
- 그래서 명령을 더 구체화해야 한다고 말하며, 예시로 “빵의 하얀색 넓은 부분에, 나이프에 잼이 묻은 부분을 이용해서 바른다”처럼 대상/영역/도구/방법을 세분화해야 한다고 제시한다.[^94]
즉, 알고리즘이란 단지 순서만이 아니라, 각 단계가 해석의 여지가 없도록 구체적이어야 한다는 교훈을 끌어낸다.[^92]
[c 컴퓨터는 ‘상식으로 보충’하지 않는다. 사람에게 당연한 생략이 컴퓨터에겐 치명적 공백이 된다.][^92]
3.14 실습(3): 덮기/먹기까지의 “정답형 명령”과 ‘픽셀 단위’ 농담[^95]
채팅에는 점점 더 그럴듯한 명령이 나온다. 예:
- “접시 위에 올려진 빵의 흰 부분에 잼을 바른다”처럼 영역을 특정[^96]
- “다른 빵 하나를 잼 바른 빵 위에 덮는다”로 샌드위치 형태 완성[^97]
그 다음 “먹기” 단계로 가면, 여기도 역시 구체성이 요구된다는 흐름을 유지한다. 예컨대:
- “입을 연다” 같은 명령이 등장하고, 화자는 이것이 더 ‘정답에 가까운’ 명령이라고 반응[^98]
- 더 과장된 형태로 “입을 몇 픽셀 만큼 움직인다” 같은 표현이 나오는데, 화자는 코딩에서는 그런 식의 정확함(픽셀 단위)이 맞다는 농담을 덧붙인다.[^99]
- “저작 활동을 30회 한다” 같이 씹는 횟수까지 명령하는 식의 극단적 구체화도 등장하며, “끝까지 갈 수 있겠죠”라고 말해 알고리즘의 무한한 세분 가능성을 시사한다.[^100]
이 파트는 “인간에게는 우스운 수준의 디테일”이 컴퓨터 관점에서는 자연스럽다는 점을 웃음 코드로 전달한다.[^99]
3.15 “라이브러리 import”로 추상화하기: 고수준 도구가 있으면 명령을 통째로 줄일 수 있다[^101]
실습 말미에 화자는 채팅 중 “빵 먹기” 같은 엄청난(고수준) 명령이 있었다고 언급한다.[^102] 그리고 만약 “빵 먹기”라는 기능이 라이브러리로 준비되어 있다면, 파이썬에서 import 하듯 가져와서 한 번에 써버릴 수도 있다는 식으로 연결한다.[^103]
- “라이브러리가 있다면 임포트해서 바로…”라는 말로, 복잡한 절차를 함수/라이브러리로 포장해 재사용하는 아이디어를 예고[^103]
- “이게 뒤에 나올 중요한 내용”이라고 말해, 이후 강의에서 라이브러리/모듈 같은 개념으로 확장될 것을 암시[^104]
즉, 알고리즘은 원칙적으로 매우 구체적이어야 하지만, 실무에서는 그 구체성을 **이미 만들어진 도구(라이브러리)**가 대신 감춰주기도 한다는 관점을 맛보기로 던진다.[^103]
[!TIP] 영상이 말하는 ‘추상화’의 감각
- 원래는 단계별로 아주 구체적으로 명령해야 한다.[^92]
- 하지만 누군가가 그 단계를 묶어 “기능(라이브러리)”로 만들어두면, 우리는 더 짧은 명령으로 같은 일을 시킬 수 있다.[^103]
3.16 최종 정리: 자동화를 예로 든 “정확한 절차를 언어로 써야 컴퓨터가 수행한다”[^105]
화자는 결론적으로 “어떤 식으로 일을 해서 어떻게 해야 된다를 굉장히 구체적으로 해야 된다”고 다시 한번 강조한다.[^106] 그리고 예시로, 엑셀 파일을 열어 이름/주소를 복사하고 특정 양식에 넣어 인쇄하는 등의 작업을 하나하나 단계로 적는 상황을 제시한다.[^107] (화자는 이 예시도 “부정확하긴 한데”라고 덧붙이며, 그럼에도 의도는 ‘최대한 정확하게’라는 점을 강조한다.)[^108]
이런 식으로 최대한 정확하고 논리적으로 프로그래밍 언어로 적어야 컴퓨터가 “오케이” 하고 수행해서 자동화를 해준다는 결론으로 마무리한다.[^109]
[c 코딩(명령) → 언어(번역) → 알고리즘(구체 절차)로 이어져, 결국 ‘자동화/창작/제어’를 가능케 한다는 구조로 종결한다.][^109]
4. 핵심 통찰[^110]
- 코딩을 “무언가를 만드는 신비한 행위”가 아니라, 컴퓨터에게 할 일을 시키는 명령 체계로 잡으면 모든 개념이 정리된다.[^20]
- 프로그래밍 언어의 필요성은 “컴퓨터가 0과 1만 이해한다”는 제약에서 시작되며, 컴파일러는 사람 언어→기계어로 바꾸는 번역기로 이해하면 된다.[^59]
- 언어를 안다고 끝이 아니라, 컴퓨터가 실행할 수 있을 만큼 **모호함을 제거한 절차(알고리즘)**가 있어야 한다.[^74]
- 샌드위치 코딩은 “잼을 바른다”처럼 사람이 생략하는 정보를 컴퓨터는 절대 보완하지 못한다는 점을, 실습으로 강제 노출시키는 교육 장치다.[^92]
- 실무적 관점에서는 “끝없는 구체화”를 매번 쓰지 않기 위해, 누군가가 만들어 둔 기능을 라이브러리로 가져와(import) 더 짧은 명령으로 추상화할 수 있다.[^103]
- 실행 시사점(콘텐츠 흐름에 맞춘 행동 항목)
- “내가 시키는 일이 모호한가?”를 점검하기 위해, 내 작업을 누군가에게 글로만 설명해 보고 빈칸이 생기면 알고리즘을 더 쪼갠다.[^92]
- 같은 결과(예: 출력)도 언어마다 표현이 다르므로, 초반에는 **고급 언어(예: 파이썬)**처럼 읽기 쉬운 것으로 시작해 개념을 안정화한다.[^65]
- 반복 작업은 “엑셀 열기→복사→붙여넣기→인쇄”처럼 단계화해보면 자동화 가능성이 보인다.[^107]
5. 헷갈리는 용어 정리[^111]
- 코딩: 코드(명령어)를 작성해 컴퓨터에게 어떤 일을 수행하도록 명령하는 행위.[^20]
- 코드(명령어): 컴퓨터가 수행할 행동을 지정하는 지시문(“명령”).[^19]
- CPU: 컴퓨터가 연산을 수행하는 핵심 장치로, 화자 표현에 따르면 컴퓨터의 “뇌”에 해당하며 0과 1 기반으로 동작한다.[^47]
- 기계어 / 바이너리 코드(0과 1): 컴퓨터가 직접 이해하는 언어(전원 꺼짐/켜짐의 이진 상태 조합).[^48]
- 프로그래밍 언어: 사람이 쓰기 쉬운 형태로 컴퓨터 명령을 표현하는 언어(예: 파이썬, C, 어셈블리어).[^62]
- 컴파일러: 프로그래밍 언어로 작성된 코드를 컴퓨터가 이해할 수 있는 **기계어(0과 1)**로 변환해 주는 번역기.[^58]
- 고급 언어: 사람의 말과 비슷해 사람이 읽고 쓰기 쉬운 언어 범주.[^63]
- 저급 언어: 기계어에 더 가까워 사람이 보기엔 직관성이 낮은 언어 범주(예: 어셈블리어).[^64]
- 알고리즘: 컴퓨터가 수행할 수 있도록 일을 논리적이고 구체적인 단계로 정의한 절차.[^75]
- 샌드위치 코딩: 샌드위치 만들기를 컴퓨터에게 시키듯 명령해보며, 알고리즘의 “구체성”을 체감하게 하는 교육 기법.[^77]
- 라이브러리 / import: 특정 기능(예: “빵 먹기”)이 이미 구현되어 있다면, 그것을 가져와(임포트) 복잡한 절차를 한 번에 호출하는 식의 재사용 개념.[^103]
참고(콘텐츠 정보)[^112]
- 제목: 코딩이란? 프로그래밍 언어? 알고리즘? 기초 개념 정리해드립니다 (ft. 샌드위치 코딩)[^112]
- 채널: 조코딩 JoCoding[^112]
- 길이: 10분 15초[^112]
- 링크: https://www.youtube.com/watch?v=ZeD8yNMYe-o[^112]
- 키워드(제공): 코딩, 프로그래밍, 웹개발, 웹, 개발, 개발자, 프로그래밍 언어, 파이썬, c언어, 어셈블리어[^112]
[^1]: @[00:22] “코딩 이란 부터 진행해 보겠습니다” ~ 이후 전체가 코딩/언어/알고리즘 기초 개념 정리로 전개됨.
[^2]: @[00:25] “코딩 이란 코드… 플러스 ing 입니다”
[^3]: @[00:32] “코드가 뭐냐면 … 명령어… 컴퓨터에게 명령하는 것” + @[00:50] “엄청 오래 걸릴 일도… 엄청 빠르게” + @[00:55]~@[01:17] 구글/게임/틱톡 예시.
[^4]: @[03:09] “컴퓨터한테 … 한국말로 … 안 해 주겠죠”
[^5]: @[03:30]~@[03:57] CPU는 0과 1만 이해 + @[04:41]~@[04:52] 컴파일러가 프로그래밍 언어를 기계어로 변환.
[^6]: @[05:46]~@[06:04] “파이썬 언어… 내 일 좀 대신… 또 문제가… 완전 논리적인 명령어만… 내 일이 뭔데/언제까지”
[^7]: @[06:07]~@[06:24] 샌드위치 코딩 소개 및 알고리즘 교육 목적 설명.
[^8]: @[00:15]~@[00:22] 웹개발 전반을 배우는 5주 커리큘럼 맥락 + @[00:22]~@[09:55] 코딩/언어/알고리즘 순서 전개.
[^9]: @[00:22] “코딩 이란 부터” + @[02:53] “프로그래밍 언어… 알고리즘”
[^10]: @[06:07]~@[06:24] 샌드위치 코딩으로 알고리즘 설명.
[^11]: @[08:05]~@[08:23] “컴퓨터는 구체적이어야” + 구체 명령 예시.
[^12]: @[00:11] “전체적으로 한번 살펴보겠습니다” 이후 개념을 순서대로 설명.
[^13]: @[00:07]~@[00:18] 라이브 강의 예고 및 대상/구성 설명.
[^14]: @[00:15] “코딩을 아예 처음 접하는 사람도… 완전 기본 개념부터”
[^15]: @[00:15] “프론트엔드 3주… 백 2주” + @[00:18] “웹 개발의 전반적인 모든 과정을 배운다”
[^16]: @[00:22] “코딩 이란 부터 진행해 보겠습니다”
[^17]: @[00:25]~@[00:41] 코딩=코드+ing, 코드=명령어, 컴퓨터에게 명령.
[^18]: @[00:25]~@[00:31] “코딩 이란 코드… 플러스 ing”
[^19]: @[00:32]~@[00:36] “코드… 명령어… 명령어를 작성한다”
[^20]: @[00:36]~@[00:41] “컴퓨터에게 명령하는 것… 코딩”
[^21]: @[00:46] “컴퓨터 야 내일 중 대신 해 줘”
[^22]: @[00:50] “엄청 오래 걸릴 일도… 엄청 빠르게”
[^23]: @[00:55]~@[01:17] 구글/리그오브레전드/틱톡 예시.
[^24]: @[00:55] “사이트 만들어 줘… 그게 구글” 식의 ‘명령→결과물’ 구성.
[^25]: @[00:55]~@[00:59] “정보 찾는 사이트… 구글”
[^26]: @[01:06] “리그오브레전드… 코딩이 만들어주는”
[^27]: @[01:11]~@[01:17] “틱톡… 영상 공유하는 앱… 다 코딩”
[^28]: @[01:17]~@[01:24] “엘론 머스크… 칭찬 영상 만들어 줘… 나오죠”
[^29]: @[01:31]~@[01:36] “맥도날드 신메뉴 만들어줘… 만들 수” + @[01:36] 창의적 작업 가능 언급.
[^30]: @[01:36]~@[01:46] “창의적인 것도… 소설… 음악… 비트 코인 가격 예측”
[^31]: @[01:46]~@[02:21] 컴퓨터 범위 확장(스마트폰/공장기계/전등 등).
[^32]: @[01:46]~@[01:57] “pc 뿐만 아니라 노트북 스마트폰… 서버”
[^33]: @[01:57]~@[02:04] “공장 기계… 애플 워치… 자동차도… 컴퓨터화”
[^34]: @[02:04]~@[02:10] “전등… 다 컴퓨터라고 볼 수”
[^35]: @[02:10]~@[02:19] “반도체가 들어가서… 변화할 수 있는 모든 전자기기”
[^36]: @[02:21]~@[02:26] “코딩을 하면 … 다 제어”
[^37]: @[02:35]~@[02:53] 코딩=마법 비유(해리포터/마법책).
[^38]: @[02:26]~@[02:35] “로봇아 춤춰봐… 살아있는 것처럼”
[^39]: @[02:35]~@[02:41] “코딩이 마법… 해리포터… 생명 부여”
[^40]: @[02:41]~@[02:46] “마법 보다도 더 마법 같은”
[^41]: @[02:46]~@[02:53] “마법 책을 읽는 거랑… 다르지 않다”
[^42]: @[03:00]~@[03:57] 한국어 불가 → CPU는 0과 1만.
[^43]: @[02:53] “프로그래밍 언어… 알고리즘” 예고 + @[03:00] “먼저… 설명”
[^44]: @[03:09] “한국말로 이렇게 명령”
[^45]: @[03:12] “컴퓨터가 알아들을 수가 없기 때문”
[^46]: @[03:16]~@[03:21] “두가지… 첫번째… 언어가 다릅니다”
[^47]: @[03:21]~@[03:35] “cpu… 컴퓨터의 뇌는… 0과 1밖에”
[^48]: @[03:35] “전원이 꺼진 것과 켜진 것”
[^49]: @[03:40] “컴퓨터가 생각보다 굉장히 단순합니다”
[^50]: @[03:57]~@[04:05] “바이너리 코드… 입력해야”
[^51]: @[03:46]~@[03:52] CPU 원리 영상 언급 + “결국… 컴퓨터는 0과 1”
[^52]: @[04:09]~@[04:25] 바이너리 직접 입력은 힘듦.
[^53]: @[04:09]~@[04:13] “사람이 1 0 1… 명령… 컴퓨터가 알아듣게”
[^54]: @[04:13]~@[04:21] “진정한 프로그래머는 바이너리로 코딩” 짤 언급
[^55]: @[04:21]~@[04:25] “엄청 힘들겠죠”
[^56]: @[04:25]~@[04:35] 구글번역기 비유
[^57]: @[04:41]~@[04:52] 컴파일러 설명.
[^58]: @[04:41] “컴파일러 라는게 있는데”
[^59]: @[04:41]~@[04:46] “프로그래밍 언어를… 기계어로 변환… 컴파일러”
[^60]: @[04:46]~@[04:52] “우리는 프로그래밍 언어… 컴파일러… 컴퓨터가 이해”
[^61]: @[04:52]~@[05:13] 고급/저급 언어 구분.
[^62]: @[04:52]~@[04:58] “파이썬… c… 어셈블리어” + @[04:58] “고급/저급”
[^63]: @[04:58]~@[05:05] “사람의 말과 비슷… 고급 언어”
[^64]: @[05:05]~@[05:10] “컴퓨터에 더 가깝다… 저급 언어”
[^65]: @[05:13]~@[05:24] 파이썬 print 예시와 사람이 유추 가능하다는 설명
[^66]: @[05:24]~@[05:31] 어셈블리어 코드 보고 “하나도 모르겠어요”
[^67]: @[05:31]~@[05:34] “결국 헬로 월드 출력하는 코드”
[^68]: @[05:34]~@[05:38] “기계어에 가깝게… 어셈블리어”
[^69]: @[05:46]~@[06:04] 언어 문제 이후 남는 문제(논리/구체성) 제시.
[^70]: @[05:46] “원래 상황으로 들어와서”
[^71]: @[05:46]~@[05:50] “파이썬 언어를 이용해서… 내 일 좀”
[^72]: @[05:50] “또 하나의 더 문제가 있습니다”
[^73]: @[05:53]~@[05:57] “완전 논리적인 명령어만”
[^74]: @[06:00]~@[06:04] “내일이 뭔데… 언제까지… 궁금증… 알아들을 수 없다”
[^75]: @[05:57]~@[06:00] “알고리즘이라고 하는데요”
[^76]: @[06:07]~@[06:24] 샌드위치 코딩 설명.
[^77]: @[06:07] “샌드위치 코딩”
[^78]: @[06:12]~@[06:18] “샌드위치를 만들 때 컴퓨터한테 명령하듯이”
[^79]: @[06:18]~@[06:24] “겹쳐서… 잼 발라진 상태로… 명령”
[^80]: @[06:37]~@[06:44] “샀습니다… 명령을 채팅으로… 수행”
[^81]: @[08:05]~@[08:10] “교훈… 컴퓨터는 구체적이어야”로 실습 목적 환기.
[^82]: @[06:44]~@[07:39] 채팅 명령 수행 과정과 모호한 지시의 문제 노출.
[^83]: @[06:44]~@[06:50] “빵 포장지를 뜯는다… 칼을 든다”
[^84]: @[06:50]~@[07:02] “식빵을 접시… 봉지 연다… 2개 꺼낸다”
[^85]: @[07:11]~@[07:14] “빵이 상했는지 냄새… 엄한데요”
[^86]: @[07:04]~@[07:18] “시간 관계… 적절한 것만” 취사 선택.
[^87]: @[07:18]~@[07:39] “접시를 눕힌다… 어떻게… 수평” + “제대로 하셨습니다”
[^88]: @[07:39]~@[08:23] 잼 바르기 명령의 모호함과 구체화 교훈.
[^89]: @[07:39]~@[07:48] “나이프를 든다… 잼 통을 열어… 바른다”
[^90]: @[07:50]~@[07:52] “생각처럼 안되네요”
[^91]: @[07:52]~@[07:56] “애들이랑 해야되는데… 어른들… 이상한걸”
[^92]: @[08:05]~@[08:10] “교훈… 컴퓨터는 구체적이어야”
[^93]: @[08:10]~@[08:16] “위에 바른다면 여기가 위일 수도”
[^94]: @[08:16]~@[08:23] “빵… 하얀색 넓은 부분… 나이프… 이용해서…”
[^95]: @[08:33]~@[09:15] 덮기/먹기 단계, 픽셀/저작 활동 등 구체화 농담.
[^96]: @[08:33]~@[08:37] “접시위… 흰 부분에 쨈을 바른다”
[^97]: @[08:40]~@[08:46] “다른 빵… 덮는다”
[^98]: @[08:50]~@[08:56] “입을 연다… 정답에 가까운 명령” 취지 반응
[^99]: @[09:02] “픽셀 단위로 하는게… 코딩에서는”
[^100]: @[09:02]~@[09:15] “저작 활동을 30회… 끝까지 갈 수”
[^101]: @[09:23]~@[09:35] 라이브러리/import로 고수준 명령 가능성 언급.
[^102]: @[09:23] “엄청난 명령어… 빵 먹기”
[^103]: @[09:23]~@[09:29] “라이브러리가 있다면 임포트에서 바로…”
[^104]: @[09:29]~@[09:35] “이런게 뒤에 나올 중요한 내용”
[^105]: @[09:35]~@[09:55] 최대한 정확하고 논리적으로 써야 자동화된다는 마무리.
[^106]: @[09:35]~@[09:42] “굉장히 구체적으로 해야 됩니다”
[^107]: @[09:55] “엑셀 파일을 열어서… 이름과 주소… 복사… 양식… 인쇄” 예시
[^108]: @[09:55] “이것도 좀 부정확 하긴 한데”
[^109]: @[09:55] “최대한 정확하게 논리적으로… 해야 컴터가… 자동화를 해주겠죠”
[^110]: @[00:32]~@[09:55] 전 구간에서 반복되는 정의(명령/번역/구체화)로부터 도출.
[^111]: @[00:32]~@[09:35] 용어들이 정의/예시로 직접 언급되는 구간들.
[^112]: 사용자 제공 메타데이터(제목/채널/길이/링크/키워드).