---
title: "바이브코딩 입문자 프로그래밍 언어 개념 정리"
locale: ko
category: knowledge_base
category_name: "지식 베이스"
translation_status: original
license: cc_by
author: "인조이스 편집팀"
source_url: https://injoys.com/ko/articles/vibe-coding-programming-language-basics
published_at: 2026-10-29T14:25:12+09:00
---

# 바이브코딩 입문자 프로그래밍 언어 개념 정리

> 바이브코딩에서는 언어의 이름보다 실행 위치와 데이터 처리 방식을 이해하는 편이 유용합니다. 프로그래밍 기초와 언어별 선택 기준, AI 생성 코드의 검증 범위를 확인할 수 있습니다.

## Key Points

- 웹 개발은 HTML·CSS·JavaScript의 역할을 구분하는 데서 시작합니다.
- TypeScript는 실행 전 타입 검사를 제공하지만 외부 입력을 자동으로 검증하지는 않습니다.
- Rust의 소유권은 메모리 관리 규칙이며 모든 보안 오류를 막는 장치는 아닙니다.
- Mojo는 CPU와 GPU의 고성능 연산을 겨냥한 언어입니다.
- AI가 생성한 코드는 요구사항에 맞는지 실행과 테스트로 확인해야 합니다.

바이브코딩에는 언어의 역할과 실행 위치를 구분하는 기초가 필요합니다. 웹은 JavaScript와 TypeScript가 출발점입니다. 데이터 처리에는 Python을 검토하세요. Rust와 Mojo는 시스템 개발과 고성능 연산에 쓰입니다.

성능 수치는 Microsoft의 2025년 3월 11일 발표 기준입니다.

## 바이브코딩에서 언어 기초가 필요한 이유

바이브코딩은 자연어 요청을 중심으로 AI와 코드를 만드는 개발 방식입니다. 생성한 프로그램의 실행 결과를 보며 요청을 수정합니다. 자연어 요청도 실제로 실행할 코드로 구현되어야 합니다.

언어 기초는 원하는 기능을 구체적으로 설명하는 데 쓰입니다. 오류가 난 위치를 파악할 때도 도움이 됩니다. 입문 단계에서는 모든 언어의 문법을 외우기보다 역할부터 구분하세요.

- 실행 위치: 브라우저, 서버, 스마트폰, 운영체제 내부
- 입력: 사용자가 넣는 값이나 외부에서 받는 데이터
- 처리: 계산, 검색, 분류처럼 프로그램이 수행할 작업
- 출력: 화면 표시, 파일 생성, 데이터 저장
- 실패 조건: 빈 입력, 잘못된 형식, 연결 끊김

## 변수와 타입부터 알아야 할 기본 개념

변수와 타입은 프로그램이 어떤 데이터를 다루는지 설명하는 기초입니다. 조건문과 반복문은 처리 순서를 정합니다. 함수는 관련 작업을 묶어 다시 사용할 수 있게 합니다.

| 개념 | 쉬운 정의 | 기능을 설명할 때의 예 |
| --- | --- | --- |
| 변수 | 값에 이름을 붙여 참조하는 수단 | 검색어를 저장하는 이름 |
| 타입 | 값의 종류와 허용되는 연산에 관한 규칙 | 수량은 숫자, 제목은 문자열 |
| 조건문 | 조건에 따라 실행할 작업을 고르는 구문 | 제목이 비어 있으면 저장 거절 |
| 반복문 | 같은 작업을 여러 대상에 적용하는 구문 | 목록의 각 항목을 화면에 표시 |
| 함수 | 특정 작업을 수행하도록 묶은 코드 | 입력을 검사하는 함수 |
| 자료구조 | 데이터를 조직하는 방식 | 순서가 있는 목록, 이름으로 찾는 값 |
| 객체 | 관련 상태와 동작을 묶어 표현하는 단위 | 게시글의 제목과 수정 기능 |
| 예외 처리 | 실행 중 발생한 오류에 대응하는 방식 | 파일을 읽지 못했을 때 오류 안내 |
| API | 프로그램끼리 기능이나 데이터를 주고받는 약속 | 서버에 검색 결과 요청 |
| 의존성 | 프로그램이 이용하는 외부 코드나 도구 | 날짜 처리 라이브러리 |

정적 타입 검사는 실행 전에 타입 사용을 확인하는 방식입니다. 동적 타입 언어도 값의 타입을 구분합니다. 동적 타입이라는 말이 데이터 종류가 없다는 뜻은 아닙니다.

## 기계어에서 고급 언어로 바뀐 이유

언어의 발전은 사람이 표현해야 할 세부 작업을 줄여 온 과정입니다. 기계어는 프로세서가 실행하는 명령의 표현입니다. 어셈블리 언어는 그 명령에 사람이 읽을 기호를 붙입니다.

어셈블리는 프로세서의 명령어 체계에 밀접하게 연결됩니다. 부품이 바뀐다고 모든 코드를 다시 쓰는 것은 아닙니다. 호환되지 않는 명령어 체계로 옮길 때 수정 부담이 커집니다.

| 언어 또는 흐름 | 해결하려던 문제 | 기억할 개념 |
| --- | --- | --- |
| 기계어·어셈블리 | 하드웨어에 수행할 작업 전달 | 명령어 체계와 직접적인 연결 |
| Fortran | 과학 계산을 수식에 가깝게 표현 | 수치 계산과 컴파일러 |
| COBOL | 기업의 업무 데이터를 읽기 쉬운 형식으로 처리 | 장부·거래 처리 중심의 표현 |
| Lisp | 기호와 목록을 이용한 계산 | 초기 AI 연구와 함수 중심 표현 |
| C | 시스템 소프트웨어를 효율적으로 작성 | 메모리 제어와 이식성 |
| SQL | 관계형 데이터베이스의 데이터 처리 | 원하는 결과를 선언하는 질의 |
| C++ | 큰 프로그램의 구조화와 자원 관리 | 클래스와 여러 프로그래밍 방식 |
| Java | 실행 환경이 다른 시스템 사이의 이식 | JVM과 바이트코드 |

Fortran은 1957년 IBM에서 등장했습니다. Lisp는 1950년대 후반 AI 연구와 함께 발전했습니다. COBOL은 1959년 시작된 공동 설계 작업에서 나왔습니다.

C는 Unix 개발과 함께 발전한 언어입니다. 다른 기종으로 소프트웨어를 옮기는 데 기여했습니다. 다만 운영체제와 하드웨어에 의존하는 코드는 별도 수정이 필요합니다.

객체지향은 관련 데이터와 동작을 객체로 조직하는 방식입니다. C++는 객체지향을 지원하는 언어입니다. 객체지향이라는 개념 자체를 C++가 만든 것은 아닙니다.

## 컴파일러와 인터프리터의 차이

컴파일러는 코드를 다른 표현으로 변환하는 프로그램입니다. 변환 결과는 기계어일 수도 있습니다. 바이트코드처럼 중간 실행 형식이 될 수도 있습니다.

인터프리터는 코드나 중간 표현을 해석하며 실행합니다. 실제 언어 구현은 컴파일과 해석을 함께 쓰기도 합니다. 언어를 빠른 컴파일형과 느린 해석형으로만 나누면 부정확합니다.

| 실행 관련 개념 | 역할 | 대표 사례 |
| --- | --- | --- |
| 사전 컴파일 | 실행 전에 대상 코드를 생성 | C·Rust의 일반적인 실행 파일 빌드 |
| 바이트코드 | 실행 환경이 처리하는 중간 명령 형식 | Java 바이트코드, CPython 바이트코드 |
| 인터프리터 | 코드나 중간 명령을 해석하며 실행 | CPython의 바이트코드 실행 |
| JIT 컴파일 | 실행 중 필요한 코드를 기계어로 변환 | 여러 JVM과 JavaScript 엔진 |
| 런타임 | 프로그램 실행에 필요한 기능 제공 | JVM, Node.js |

CPython은 널리 쓰이는 Python 구현체입니다. 소스 코드를 바이트코드로 컴파일해 실행합니다. Python을 매번 소스 한 줄씩 번역하는 언어로만 설명하면 틀립니다.

Java의 JVM은 바이트코드를 실행하는 환경입니다. 이 구조는 운영체제가 달라도 코드를 실행하는 데 도움이 됩니다. 실제 호환성은 JVM 버전과 외부 라이브러리의 영향도 받습니다.

## 웹의 화면과 서버는 무엇이 다른가요?

프론트엔드는 사용자가 접하는 화면과 상호작용을 담당합니다. 백엔드는 서버에서 요청을 처리합니다. 데이터베이스는 필요한 데이터를 저장하고 조회하는 역할을 합니다.

HTML은 문서 구조를 표현하는 마크업 언어입니다. CSS는 화면의 스타일과 배치를 지정합니다. JavaScript는 조건 판단과 사용자 동작 처리를 구현합니다.

| 이름 | 분류 | 주된 역할 |
| --- | --- | --- |
| HTML | 마크업 언어 | 제목, 문단, 입력창 등 문서 구조 |
| CSS | 스타일시트 언어 | 색상, 간격, 화면 배치 |
| JavaScript | 프로그래밍 언어 | 브라우저 상호작용과 서버 처리 |
| TypeScript | JavaScript에 타입 체계를 더한 언어 | 실행 전 오류 확인과 코드 관리 |
| React | 사용자 인터페이스 라이브러리 | 화면을 재사용 가능한 구성요소로 작성 |
| Node.js | JavaScript 런타임 | 브라우저 밖에서 JavaScript 실행 |
| Next.js | React 기반 프레임워크 | 웹앱의 페이지 구성과 서버 기능 |
| PHP | 프로그래밍 언어 | 서버에서 동적인 웹 응답 생성 |
| SQL | 데이터베이스 언어 | 데이터 조회·추가·수정·삭제 |

React, Node.js, Next.js는 같은 종류의 도구가 아닙니다. 라이브러리는 필요한 기능을 가져다 쓰는 코드 모음입니다. 프레임워크는 애플리케이션 구성 방식까지 제공합니다. 런타임은 코드가 실행되는 환경입니다.

## 목적별 언어 비교

언어는 만들 결과물과 기존 실행 환경을 기준으로 고르세요. 아래 표는 각 언어의 대표적인 검토 출발점입니다. 하나의 언어가 표에 적힌 작업만 수행하는 것은 아닙니다.

| 만들려는 결과물 | 먼저 검토할 언어 | 선택 전에 확인할 점 |
| --- | --- | --- |
| 브라우저에서 사용하는 웹앱 | JavaScript·TypeScript | HTML·CSS 기초와 화면 구성 도구 |
| 파일 정리·업무 자동화 | Python | 입력 파일 형식과 배포 환경 |
| 데이터 분석·AI 모델 활용 | Python | 필요한 분석·모델 라이브러리 |
| 네트워크 서버·운영 도구 | Go | 동시 처리 구조와 기존 시스템 연동 |
| JVM 기반 업무 시스템 | Java·Kotlin | 기존 코드와 라이브러리 호환성 |
| iOS 중심 앱 | Swift | Apple 개발 도구와 플랫폼 기능 |
| Android 중심 앱 | Kotlin | Android 개발 도구와 기존 앱 구조 |
| 메모리 제어가 필요한 시스템 | C·C++·Rust | 성능 요구와 안전성 검증 역량 |
| CPU·GPU 연산 최적화 | Mojo | 지원 하드웨어와 필요한 연산 기능 |
| 관계형 데이터 처리 | SQL | 데이터베이스 제품별 문법 차이 |

Python의 활용도는 라이브러리 생태계와도 관련이 있습니다. NumPy는 속도를 위해 컴파일된 코드를 사용합니다. Python으로 작성한 모든 계산이 Python 코드만으로 실행되지는 않습니다.

Go는 동시성 지원을 언어 설계에 포함합니다. 동시성은 여러 작업을 함께 진행하도록 구성하는 개념입니다. 병렬성은 여러 작업이 실제로 동시에 실행되는 상태입니다. 동시성 코드를 썼다고 계산 속도가 자동으로 빨라지지는 않습니다.

## TypeScript·Rust·Mojo의 차이

TypeScript, Rust, Mojo는 해결하려는 문제가 다릅니다. TypeScript는 JavaScript 코드의 타입 확인을 돕습니다. Rust는 메모리 관리에 강한 규칙을 둡니다. Mojo는 고성능 연산과 하드웨어 활용을 겨냥합니다.

| 비교 기준 | TypeScript | Rust | Mojo |
| --- | --- | --- | --- |
| 핵심 관심사 | 타입 검사와 코드 관리 | 메모리 안전성과 시스템 제어 | CPU·GPU 고성능 연산 |
| 대표 활용 | 웹앱·서버 애플리케이션 | 시스템 도구·성능 중심 구성요소 | AI 기반 시설·계산 커널 |
| 먼저 이해할 개념 | JavaScript와 데이터 타입 | 소유권·빌림·수명 | 타입·메모리·병렬 연산 |
| 별도로 확인할 부분 | 외부 입력과 업무 규칙 | unsafe 코드와 논리 오류 | Python 연동과 하드웨어 지원 |

### TypeScript의 타입 검사

TypeScript는 JavaScript에 정적 타입 검사를 더합니다. 타입을 잘못 사용한 코드를 실행 전에 찾는 데 도움이 됩니다. 타입 추론을 통해 일부 선언은 자동으로 판단합니다.

모든 변수에 타입을 직접 적을 필요는 없습니다. 타입 주석은 일반적인 JavaScript 변환 과정에서 제거됩니다. 타입 선언만으로 실행 중 입력 검사가 생기지는 않습니다.

### Rust의 소유권과 메모리 안전성

소유권은 값의 메모리를 누가 관리하는지 정하는 규칙입니다. 빌림은 소유권을 옮기지 않고 값을 참조하는 방식입니다. 컴파일러는 관련 규칙을 검사해 메모리 오류를 예방합니다.

Rust의 안전성 보장은 올바른 구현이라는 전제를 가집니다. unsafe 코드에서는 일부 안전 조건을 작성자가 책임집니다. 계산식이나 접근 권한의 오류까지 언어가 자동으로 막지는 않습니다.

### Mojo와 Python의 관계

Mojo는 Python과 닮은 문법을 사용하는 별도의 언어입니다. CPU와 GPU의 고성능 코드 작성을 지원합니다. Python 코드와 연결하는 상호운용 기능도 제공합니다.

기존 Python 코드를 그대로 옮겨도 된다고 가정하면 안 됩니다. 필요한 기능은 설치할 Mojo 버전의 문서에서 확인하세요. GPU를 사용하려면 지원 장치와 드라이버 조건도 맞아야 합니다.

## 언어 설명에서 흔한 실수

짧은 언어 소개에서는 적용 조건이 빠지기 쉽습니다. 역사적 사실과 현재 기능도 구분해야 합니다. 아래 항목은 언어를 선택할 때 판단을 흐릴 수 있는 오해입니다.

| 흔한 설명 | 정확하게 이해할 내용 |
| --- | --- |
| JavaScript는 Java의 웹 버전 | 서로 다른 언어 |
| HTML과 CSS가 모두 1991년에 등장 | CSS1의 W3C 권고는 1996년 12월 17일 |
| Kotlin은 Google이 만든 언어 | 개발 주체는 JetBrains, Google은 Android에서 지원 |
| C 코드는 다시 컴파일하면 어디서나 실행 | 운영체제·하드웨어 의존 부분은 수정 가능성 존재 |
| Python은 현재 인기 순위 1위 | 조사 기관·시점·집계 방식이 있어야 판단 가능 |
| Rust를 쓰면 모든 보안 문제 해결 | 메모리 안전성과 접근 권한 검증은 다른 문제 |
| Mojo를 쓰면 모든 Python 작업이 빨라짐 | 작업·구현·하드웨어에 따른 측정 필요 |
| 벌레 사건에서 bug라는 말이 탄생 | 해당 사건은 이미 쓰이던 용어가 널리 알려진 사례 |

벌레가 발견된 유명한 기록은 1947년 Harvard Mark II의 사례입니다. Smithsonian은 이 사건이 관련 용어의 대중화에 기여했다고 설명합니다. ENIAC의 사례나 용어의 최초 탄생으로 소개하면 부정확합니다.

## 성능 수치는 어떻게 읽어야 하나요?

성능 수치는 측정한 작업에 한정해서 해석해야 합니다. 컴파일 시간과 완성된 앱의 실행 속도는 다른 지표입니다. 개발 도구가 빨라졌다고 웹페이지도 같은 비율로 빨라지지는 않습니다.

Microsoft는 TypeScript 도구의 네이티브 전환을 발표했습니다. 2025년 3월 11일 발표에는 프로젝트별 측정값이 있습니다. 아래는 그 발표의 VS Code 코드베이스 사례입니다.

| 측정 대상 | 기존 구현 | 네이티브 구현 | 발표된 속도 향상 |
| --- | --- | --- | --- |
| VS Code 코드베이스의 TypeScript 컴파일 처리 | 77.8초 | 7.5초 | 10.4배 |

발표 조건에서 처리 시간은 **7.5초**로 줄었습니다. 차이를 계산하면 한 번의 처리에 70.3초가 줄어든 사례입니다. 모든 프로젝트에서 같은 결과가 나온다는 뜻은 아닙니다.

Python과 C의 속도 비교에도 같은 원칙을 적용하세요. 동일한 입력과 알고리즘으로 실행했는지 확인해야 합니다. 컴파일 옵션과 사용 라이브러리도 비교 조건입니다. 실행 환경이 없는 숫자는 일반적인 속도 배율로 쓰기 어렵습니다.

## 타입 검사와 외부 입력 검증

타입 검사를 통과해도 외부 데이터의 내용은 따로 확인해야 합니다. AI 생성 코드를 검토할 때는 이 차이를 자주 놓칩니다. 타입 선언은 프로그램이 기대하는 값의 형태를 표현합니다.

수량을 숫자 타입으로 선언한 웹앱을 생각해 보세요. 외부 API가 실제로는 문자열을 보낼 수도 있습니다. 타입 이름을 붙이거나 타입 단언을 해도 값은 검증되지 않습니다. 실행 중 데이터를 검사하는 코드가 필요합니다.

| 확인 단계 | 확인할 내용 | 통과해도 남는 문제 |
| --- | --- | --- |
| 타입 검사 | 코드 내부의 타입 사용 | 외부에서 실제로 들어오는 값 |
| 입력 검증 | 데이터 형식과 허용 범위 | 사용자에게 허용된 작업인지 |
| 권한 검사 | 요청자의 접근 권한 | 업무 규칙에 맞는 결과인지 |
| 기능 테스트 | 예상 입력에 대한 실제 결과 | 테스트하지 않은 조건 |

이 표는 타입 제거와 메모리 안전성의 범위를 적용한 검토 틀입니다. 언어가 보장하는 부분과 서비스가 확인할 부분을 나눈 것입니다. AI에는 각 단계의 검증을 구분해 요청하세요.

## AI에게 기능을 설명하는 방법

기능 요청에는 입력과 기대 결과를 함께 적으세요. 프로그램 이름만 정하면 동작 조건이 빠지기 쉽습니다. 기존 프로젝트가 있다면 사용 중인 언어와 버전도 전달하세요.

1. 사용할 환경을 적으세요.
2. 처리할 입력의 형태를 설명하세요.
3. 정상 입력에 대한 결과를 정하세요.
4. 빈 값과 잘못된 입력의 처리 방법을 정하세요.
5. 변경 이유와 확인 방법을 함께 요청하세요.

다음은 요구사항을 나누는 프롬프트 예시입니다. 실제 파일 내용은 프로젝트에 맞게 바꾸세요. 생성 결과는 직접 실행해 확인해야 합니다.

```text
기존 프로젝트의 언어와 실행 환경을 먼저 확인하세요.
CSV 파일에서 제목이 있는 행을 읽어 목록으로 보여 주세요.
필수 열이 없으면 오류 메시지를 표시하세요.
제목이 비어 있는 행은 별도로 안내하세요.
외부 입력 검증과 화면 표시 코드를 구분하세요.
기존 의존성으로 구현 가능한지 먼저 확인하세요.
변경한 부분과 테스트 방법을 설명하세요.
```

오류가 나면 재현 조건을 함께 전달하세요. 오류 메시지에는 발생 위치를 좁힐 단서가 있습니다. GitHub의 Copilot 문서도 생성 코드의 검토를 요구합니다. 코드를 채택하기 전에는 실행 결과를 확인하는 과정이 필요합니다.

## 입문 학습과 교육 선택 기준

입문 학습은 만들려는 작업에 맞춰 좁게 시작할 수 있습니다. 웹 개발이라면 화면 구조와 동작을 먼저 연결해 보세요. 자동화라면 파일 입력과 결과 저장부터 확인하는 편이 좋습니다.

1. 만들 결과물에 맞는 언어를 하나 고르세요.
2. 변수·타입·조건문·반복문·함수를 익히세요.
3. 작은 기능을 작성하고 실행 결과를 비교하세요.
4. 잘못된 입력을 넣어 실패 동작을 확인하세요.
5. 코드를 수정한 이유를 자신의 말로 설명해 보세요.

교육 과정은 결과 화면 외에 검증 내용을 확인하세요. 오류를 재현하고 고치는 실습이 있는지 볼 수 있습니다. 사용하는 버전과 실행 환경이 명시되어 있는지도 확인할 항목입니다.

- 코드 설명: 생성한 함수의 입력과 출력을 설명하는 과정
- 오류 대응: 오류 메시지를 읽고 원인을 좁히는 실습
- 데이터 검증: 외부 입력과 실패 조건을 처리하는 예제
- 재현성: 같은 환경에서 다시 실행할 수 있는 안내

언어의 정의는 각 프로젝트의 공식 문서에서 확인할 수 있습니다. TypeScript Handbook에는 타입 제거에 대한 설명이 있습니다. Rust 공식 책은 소유권과 unsafe를 나누어 설명합니다. Mojo Manual에서는 언어 기능과 Python 연동 범위를 확인하세요.

## FAQ

### 바이브코딩을 시작하기 전에 모든 언어를 배워야 하나요?
모든 언어를 배울 필요는 없습니다. 만들 결과물에 맞는 언어를 먼저 고르세요. 변수·타입·함수와 실행 위치를 이해하면 요청을 구체화할 수 있습니다.

### 웹 개발은 JavaScript와 Python 중 무엇부터 시작하나요?
브라우저 화면의 동작을 만들려면 JavaScript가 출발점입니다. HTML과 CSS의 역할도 함께 익히세요. Python은 파일 자동화와 데이터 처리의 출발점으로 검토할 수 있습니다.

### TypeScript를 쓰면 JavaScript를 몰라도 되나요?
TypeScript의 실행 동작을 이해하려면 JavaScript 기초가 필요합니다. TypeScript는 JavaScript에 타입 체계를 더합니다. 타입 검사와 실제 실행은 구분해서 이해하세요.

### TypeScript는 모든 변수에 타입을 적어야 하나요?
타입 추론이 가능한 곳에서는 직접 적지 않아도 됩니다. 도구가 할당된 값과 문맥을 바탕으로 타입을 판단합니다. 명시적인 타입이 필요한지는 코드의 역할에 따라 정하세요.

### React와 Node.js도 프로그래밍 언어인가요?
React는 사용자 인터페이스 라이브러리입니다. Node.js는 JavaScript 실행 환경입니다. Next.js는 React 기반 프레임워크로 분류합니다.

### Python은 소스 코드를 한 줄씩 번역해서 실행하나요?
대표 구현체인 CPython은 소스 코드를 바이트코드로 컴파일합니다. 이후 바이트코드를 실행합니다. 소스를 한 줄씩 번역한다는 설명만으로는 이 과정을 설명하기 어렵습니다.

### Rust를 사용하면 보안 검토가 필요 없나요?
Rust의 메모리 안전성은 서비스 전체의 안전성을 뜻하지 않습니다. 접근 권한과 업무 규칙은 따로 확인해야 합니다. unsafe 코드의 안전 조건도 검토 대상입니다.

### Mojo는 Python의 새 버전인가요?
Mojo는 Python과 닮은 문법을 가진 별도의 언어입니다. Python 연동 기능을 제공합니다. 기존 코드의 호환성은 사용할 버전의 공식 문서에서 확인하세요.

### Mojo를 사용하려면 GPU가 꼭 필요한가요?
Mojo는 CPU용 코드도 작성할 수 있습니다. GPU가 모든 프로그램의 필수 조건은 아닙니다. GPU 기능을 사용한다면 장치와 드라이버 지원 범위를 확인하세요.

### Go의 동시성은 병렬 처리와 같은 뜻인가요?
동시성은 여러 작업을 함께 진행하도록 구성하는 개념입니다. 병렬성은 여러 작업이 실제로 동시에 실행되는 상태입니다. 동시성만으로 실행 속도 향상을 보장하지는 않습니다.

### Kotlin은 Google이 개발했나요?
Kotlin의 개발 주체는 JetBrains입니다. Google은 Android 개발에서 Kotlin을 지원합니다. 언어를 만든 주체와 플랫폼에서 지원하는 주체를 구분해야 합니다.

### TypeScript 컴파일러가 빨라지면 앱도 같은 비율로 빨라지나요?
컴파일 시간과 앱의 실행 시간은 다른 지표입니다. Microsoft의 성능 사례는 개발 도구의 처리 시간에 관한 것입니다. 앱의 응답 속도는 별도로 측정해야 합니다.

### AI가 만든 코드의 타입 검사가 통과하면 완성인가요?
타입 검사만으로 기능 완성을 판단할 수는 없습니다. 외부 입력과 접근 권한을 확인해야 합니다. 정상 조건과 실패 조건에서 기대한 결과가 나오는지 테스트하세요.

### 바이브코딩 교육은 어떤 기준으로 고르나요?
생성한 코드를 설명하고 수정하는 실습이 있는지 확인하세요. 오류 재현과 입력 검증을 다루는지도 볼 수 있습니다. 사용 버전과 실행 환경이 명시된 과정은 재현 조건을 확인하기 쉽습니다.

## Sources

- [TypeScript 공식 문서: TypeScript for JavaScript Programmers](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html)
- [TypeScript Handbook: The Basics, 타입 검사와 타입 제거](https://www.typescriptlang.org/docs/handbook/2/basic-types)
- [The Rust Programming Language: What Is Ownership?](https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html)
- [The Rust Programming Language: Unsafe Rust](https://doc.rust-lang.org/book/ch20-01-unsafe-rust.html)
- [Mojo Manual: 언어 개요와 Python 연동](https://docs.modular.com/mojo/manual/)
- [Mojo System Requirements: CPU·GPU 지원 조건](https://docs.modular.com/mojo/requirements/)
- [Python 공식 용어집: 바이트코드와 실행 관련 개념](https://docs.python.org/3/glossary.html)
- [NumPy 2.0 Manual: Building from source](https://numpy.org/doc/2.0/building/index.html)
- [MDN: What is JavaScript?](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/What_is_JavaScript)
- [Node.js 공식 문서: Introduction to Node.js](https://nodejs.org/learn/getting-started/introduction-to-nodejs)
- [React 공식 문서: 사용자 인터페이스 라이브러리](https://react.dev/)
- [Next.js 공식 문서](https://nextjs.org/docs)
- [PHP Manual: Introduction](https://www.php.net/manual/en/introduction.php)
- [Go 공식 FAQ: 설계 목적과 실행 특성](https://go.dev/doc/faq)
- [Go 공식 블로그: Concurrency is not parallelism](https://go.dev/blog/waza-talk)
- [Kotlin 공식 FAQ: 개발 주체와 대상 플랫폼](https://kotlinlang.org/docs/faq.html)
- [Android Developers: Kotlin and Android](https://developer.android.com/kotlin)
- [Swift.org: About Swift](https://www.swift.org/about/)
- [Oracle Java Tutorials: About the Java Technology](https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html)
- [IBM History: Fortran](https://www.ibm.com/history/fortran)
- [John McCarthy: LISP prehistory](https://www-formal.stanford.edu/jmc/history/lisp/node2.html)
- [Howard Bromberg: The COBOL Conclusion, Datamation 1967년 3월](https://bitsavers.computerhistory.org/magazines/Datamation/196703.pdf)
- [Dennis Ritchie: The Development of the C Language](https://www.nokia.com/bell-labs/about/dennis-m-ritchie/chist.html)
- [Bjarne Stroustrup FAQ: C++와 객체지향](https://www.stroustrup.com/bs_faq.html)
- [IBM: What Is Structured Query Language?](https://www.ibm.com/think/topics/structured-query-language)
- [W3C: Cascading Style Sheets, level 1 publication history](https://www.w3.org/standards/history/CSS1/)
- [Smithsonian National Museum of American History: Log Book With Computer Bug](https://americanhistory.si.edu/collections/object/nmah_334663)
- [Microsoft: A 10x Faster TypeScript, 2025년 3월 11일](https://devblogs.microsoft.com/typescript/typescript-native-port/)
- [GitHub Docs: Copilot inline suggestions의 한계와 검증 책임](https://docs.github.com/en/copilot/responsible-use/inline-suggestions)

## Images

![실습 교실에서 중년 남성이 노트북을 사용하고 옆의 여성이 탁자 위 스마트폰을 가리키고 있다.](https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzQ0NjEsInB1ciI6ImJsb2JfaWQifX0=--aa435b9d954b7e3cf19dca343a0d0fc5333fe68f/ai-73cc4d9e.webp)
![서버실에서 CPU 방열판과 GPU 카드가 드러난 서버 내부를 살펴보는 여성](https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzQ0NjcsInB1ciI6ImJsb2JfaWQifX0=--0a47db349b5b04ebfcd192a40d156aec0886d68c/ai-3af1935f.webp)
![브라우저·서버 흐름, 웹 언어의 역할, 언어별 주의점과 생성 코드 검증 절차를 정리한 인포그래픽](https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzQ0NzMsInB1ciI6ImJsb2JfaWQifX0=--47192b2aea313b116670ff123c0e9547fdd1490d/ai-e3494410.webp)