Choose a default theme

You can change your theme from the menu

프로그래밍 언어

Parent category

Category nameModifiedArticles
컴퓨터 과학과 프로그래밍0

Subcategories

No items have been published yet.

Articles

TypeScript는 JavaScript에 정적 타입 검사와 타입 표현을 더한다. 이 문서는 타입 추론·유니온·제네릭·객체 모델을 실제 예제로 설명하고, 컴파일 오류 수정과 외부 주문 데이터 검증을 통해 타입 검사와 런타임 검증의 역할을 구분한다. TypeScript는 JavaScript 코드에 정적 타입 정보를 붙이고 실행 전에 여러 종류의 불일치를 찾아내는 언어와 도구 체계다. 함수가 숫자를 받는다고 선언했는데 문자열을 전

0

JavaScript는 웹 브라우저와 서버 등에서 사용되는 프로그래밍 언어다. 이 문서는 값과 타입 변환, 객체와 클로저, 비동기 실행, 화면과 데이터 경계를 예제로 설명하고, 고객별 주문 합계 기능을 구현하고 검증하는 과정까지 다룬다. JavaScript는 웹 페이지의 동작뿐 아니라 서버와 여러 실행 환경에서 사용하는 범용 프로그래밍 언어다. ECMAScript는 핵심 언어 규칙을 정의하고, 브라우저나 Node.js 같은 호스

0

SQL은 관계형 데이터베이스의 구조와 데이터를 조회·변경하는 언어다. 이 문서는 고객과 주문 예제를 통해 조회·조인·집계·트랜잭션의 결과를 추적하고, NULL·중복·동시성·실행 계획에서 자주 생기는 오류와 해결 방법을 설명한다. SQL은 관계형 데이터베이스에서 자료 구조를 정의하고 데이터를 조회·변경하며 접근과 트랜잭션을 다루는 언어다. 테이블에서 필요한 행과 열을 고르고, 여러 테이블의 관계를 연결하고, 그룹별 합계나 순위를

0

Python은 간결한 문법과 풍부한 라이브러리를 갖춘 범용 프로그래밍 언어다. 이 문서는 값과 객체의 관계부터 함수·예외·파일 처리·실전 CSV 집계까지, 특징이 실제 코드에서 어떻게 작동하고 어떤 실수를 주의해야 하는지 설명한다. Python은 자동화·데이터 처리·웹 서버·과학 계산 등 다양한 작업에 쓰이는 범용 프로그래밍 언어다. 읽기 쉬운 문법, 표준 라이브러리, 확장 패키지가 널리 활용되지만, “코드가 짧다”는 설명만으

0

Rust는 소유권·빌림·타입 검사를 통해 메모리 안전성과 실행 성능을 함께 추구하는 프로그래밍 언어다. 이 문서는 주요 특징이 실제 코드에서 어떻게 작동하는지, 컴파일 오류를 어떻게 해석하고 수정하는지, 어떤 비용과 제약을 고려해야 하는지를 예제와 함께 설명한다. Rust는 실행 성능과 메모리 안전성을 함께 다루는 정적 타입 프로그래밍 언어다. 운영체제와 가까운 저수준 구성 요소부터 서버, 명령줄 도구, 다른 언어에서 호출할

0

JavaScript 제너레이터는 실행을 멈추었다가 재개하면서 값을 순차적으로 내보내는 함수 형태이다. function*로 정의하고 yield로 값을 전달한다. 호출하면 제너레이터 객체를 얻으며 next가 실행을 진행해 value와 done 정보를 반환한다. 숫자 구간이나 계산 과정을 필요할 때 한 단계씩 생성해 소비할 수 있다. 여러 번 호출해 만든 객체는 각각 독립된 실행 상태를 가진다. 제너레이터 자체가 비동기 입출력을 자

0

Proxy는 JavaScript 객체의 속성 읽기·쓰기 같은 기본 동작을 가로채어 정의할 수 있는 기능이다. 대상 객체와 handler를 연결하고 get이나 set 같은 트랩으로 동작을 조정한다. Reflect를 이용해 원래 의미의 연산을 위임할 수 있다. 설정 객체에 값을 쓸 때 범위를 검증하거나 속성을 읽은 사실을 추적하는 도구를 만들 수 있다. 프록시를 통해 접근한 경우에 동작이 적용된다. 객체가 지켜야 하는 불변 조건을

0

BigInt는 JavaScript에서 Number의 안전한 정수 범위를 넘는 정수 계산을 표현하는 원시 타입이다. 정수 리터럴 뒤에 n을 붙이거나 BigInt로 변환한다. 정수 연산을 제공하지만 소수 표현을 위한 타입은 아니며 Number와 구분된다. 9007199254740993n처럼 큰 식별자나 카운터를 정확한 정수로 보관할 수 있다. 나눗셈 결과의 소수 부분은 유지되지 않는다. Number와 섞은 산술 연산은 명시적인 변

0

Symbol은 JavaScript의 원시 값 타입으로, 서로 구별되는 식별자나 객체 속성 키를 표현할 수 있다. Symbol()은 고유한 값을 만들며 설명 문자열이 같아도 별개의 값이다. Symbol.for는 공용 레지스트리를 이용하고 잘 알려진 심벌은 언어의 동작 규약에 연결된다. 라이브러리가 객체에 내부 표시를 추가할 때 일반 문자열 키와 이름이 충돌할 가능성을 줄이는 데 사용할 수 있다. 심벌 속성은 강제적인 비밀 저장소

0

WeakMap은 키를 약하게 참조하여 객체와 관련된 부가 정보를 연결하는 JavaScript 컬렉션이다. 키가 다른 곳에서 더 이상 도달 가능하지 않다면 WeakMap에 들어 있다는 이유만으로 살아남도록 강제하지 않는다. 키 목록 전체를 열거하는 기능은 제공하지 않는다. DOM 노드나 객체에 외부 메타데이터를 연결하되 그 객체의 수명을 불필요하게 늘리고 싶지 않을 때 활용할 수 있다. 가비지 컬렉션 시점을 관찰하거나 특정 시간

0

Set은 중복 없는 값을 저장하는 JavaScript 내장 컬렉션이다. 값의 존재 여부와 삽입 순서에 따른 순회를 지원한다. add로 값을 추가하고 has로 존재 여부를 검사한다. 같은 값의 재추가는 원소 수를 늘리지 않으며 객체는 참조 정체성으로 구별한다. 숫자 배열을 new Set으로 변환하면 반복된 숫자를 하나씩만 남길 수 있다. 이미 처리한 식별자를 기록하는 데도 쓸 수 있다. 내용이 같은 객체 두 개가 자동으로 중복

0

Map은 JavaScript에서 키와 값의 대응을 저장하는 내장 컬렉션이다. 키로 문자열뿐 아니라 객체 등 다양한 값을 사용할 수 있다. set, get, has, delete로 항목을 관리하고 삽입 순서에 따라 순회한다. 객체 키는 내용의 구조가 아니라 객체 정체성을 기준으로 비교한다. 사용자 객체마다 처리 상태를 저장할 때 그 객체 자체를 키로 사용할 수 있다. 같은 모양의 새 객체는 기존 키와 다른 것으로 취급된다. 일반

0

JavaScript 모듈은 import와 export로 코드의 의존성과 공개 항목을 명시하는 단위이다. 모듈은 자체 범위를 가지며 내보낸 값만 다른 모듈에서 명시적으로 가져올 수 있다. 브라우저와 서버 런타임은 로딩 경로와 설정에서 차이가 있다. 날짜 변환 함수를 한 파일에서 export하고 화면 처리 모듈에서 import해 중복 구현을 줄일 수 있다. 브라우저에서는 모듈 스크립트로 로딩한다. 파일 확장자만 바꿨다고 모든 환경

0

async와 await는 Promise 기반 비동기 처리를 순차적인 코드 형태로 표현하는 JavaScript 문법이다. async 함수는 Promise를 반환하고 await는 그 결과가 준비될 때까지 해당 함수의 진행을 중단한다. 일반적인 try와 catch로 거부된 결과를 다룰 수 있다. async 함수 안에서 await fetch(url)로 응답을 기다리고 이어서 본문을 처리할 수 있다. 독립적인 요청은 함께 시작한 뒤 결

0

Promise는 비동기 작업의 미래 결과 또는 실패를 표현하는 JavaScript 객체이다. 대기, 이행, 거부 상태를 구분한다. then과 catch로 후속 처리를 연결하면 새 Promise가 만들어진다. 처리기의 반환값이나 발생한 예외가 다음 Promise의 결과에 영향을 준다. 서버 응답을 받은 뒤 내용을 변환하고 실패 시 오류 메시지를 보여 주는 흐름을 연결할 수 있다. 후속 작업도 Promise를 반환하면 완료 시점을

0

Java 리플렉션은 실행 중 클래스와 객체의 필드·메서드·생성자 정보를 조사하고 허용된 동작을 수행하는 기능이다. Class와 java.lang.reflect의 API로 로딩된 타입 정보를 얻는다. 프레임워크나 디버거가 컴파일 시 구체적인 클래스를 모르는 상황에 활용할 수 있다. 직렬화 도구가 객체의 필드를 조사하거나 설정에 지정된 클래스의 생성자를 찾아 인스턴스를 만드는 데 사용할 수 있다. 캡슐화와 모듈 접근 제한을 무조건

0

Optional은 값이 있거나 없다는 상태를 표현하는 Java 컨테이너 타입이다. 결과가 없을 수 있는 메서드 반환값에 주로 사용한다. 값이 있으면 변환하거나 소비하고 없으면 기본값을 선택하는 API를 제공한다. Optional 객체 자체를 null로 두지 않는 것이 계약을 명확하게 한다. 사용자 검색 결과를 Optional<User>로 반환하면 호출자가 없는 경우를 orElseGet이나 다른 분기로 처리할 수 있다. 존재 확

0

Java Stream API는 데이터 원소에 필터·변환·집계 연산을 연결하는 처리 API이다. 스트림 자체는 원소를 보관하는 컬렉션이 아니다. 소스에서 시작해 중간 연산을 연결하고 최종 연산으로 결과를 얻는다. 많은 중간 연산은 지연 평가되며 순차 또는 병렬 처리 방식이 있다. 주문 목록에서 완료된 주문만 filter하고 금액으로 변환한 뒤 합계를 계산하는 흐름을 하나의 파이프라인으로 표현할 수 있다. 스트림은 재사용 가능한

0

Java 예외 처리는 실행 중 정상 흐름을 벗어난 상황을 예외 객체와 처리기로 전달하는 방식이다. 예외가 발생하면 호출 스택에서 대응하는 처리기를 찾는다. try와 catch로 처리 범위를 정하고 호출자가 처리하도록 예외를 전달할 수도 있다. 파일 읽기에 실패했을 때 원인 예외를 보존하면서 사용자에게 설명할 메시지로 바꿀 수 있다. 복구 가능한 오류와 프로그램 결함을 구분해 대응한다. 예외를 잡고 아무 동작도 하지 않으면 실패

0

Java 인터페이스는 객체가 제공할 동작의 계약을 타입으로 표현하는 언어 요소이다. 구현 클래스를 특정하지 않고 코드를 연결할 수 있다. 클래스는 인터페이스를 구현하고 호출자는 인터페이스 타입을 통해 메서드를 사용한다. 현대 Java의 인터페이스는 추상 메서드 외에도 정해진 종류의 구현 메서드를 가질 수 있다. 저장 기능을 Repository 인터페이스로 표현하면 메모리 구현과 데이터베이스 구현을 호출 코드와 분리해 교체할 수

0

Java 제네릭은 클래스와 메서드가 다루는 타입을 매개변수로 표현하는 기능이다. 코드 재사용과 컴파일 시 타입 검사를 돕는다. 타입 매개변수를 통해 컬렉션 원소나 반환값의 관계를 명시한다. 적절히 사용하면 임의 Object로 처리할 때 필요한 형변환을 줄일 수 있다. List<String>은 문자열 목록이라는 의도를 표현한다. 잘못된 타입의 값을 넣는 호출을 컴파일 단계에서 발견하도록 돕는다. 제네릭의 타입 관계는 원래 클래스

0

Java 가비지 컬렉션은 더 이상 사용하지 않는 힙 메모리를 찾아 재사용하도록 하는 자동 메모리 관리 기능이다. HotSpot은 여러 수집기를 제공하며 처리량, 정지 시간, 메모리 사용량 사이의 목표가 다를 수 있다. 객체의 생존 상태를 추적하고 회수 작업을 수행한다. 대량의 임시 객체를 만드는 서버에서 GC 로그와 지연 시간을 함께 살펴보면 할당량과 수집 정책이 응답 시간에 미치는 영향을 분석할 수 있다. 도달 가능한 객체를

0

Java 바이트코드는 JVM이 해석하는 명령 형식이다. 일반적인 Java 컴파일 결과는 명령과 타입·메서드 정보를 담은 클래스 파일이다. 피연산자 스택과 지역 변수 슬롯을 사용하는 명령들이 계산과 분기, 호출을 표현한다. 실제 기계어로 실행하는 방법은 JVM 구현이 결정한다. 덧셈과 함수 호출로 작성한 소스는 이에 대응하는 JVM 명령으로 변환된다. 분석 도구로 클래스의 명령과 구조를 살펴볼 수 있다. 클래스 파일 전체를 명령

0

javac는 Java 소스 파일을 읽어 JVM에서 실행할 클래스 파일로 컴파일하는 JDK 도구이다. 소스의 문법과 타입을 검사하고 필요한 클래스 및 모듈 경로를 해석한다. 옵션으로 출력 경로와 대상 릴리스 등 컴파일 조건을 지정할 수 있다. javac -d out Hello.java로 결과를 out 디렉터리에 만들 수 있다. 그 뒤 실행 도구에 올바른 클래스 경로와 주 클래스 이름을 전달한다. 컴파일 성공이 모든 실행 오류의

0

JVM은 클래스 파일과 명령의 동작을 정의하는 Java 가상 머신이다. 구체적인 운영체제 위의 구현체가 이 명세에 맞추어 코드를 실행한다. 클래스 로딩과 실행, 메모리 영역 및 명령 동작을 규정한다. 인터프리터나 JIT 최적화 같은 내부 전략은 구현체마다 달라질 수 있다. Java뿐 아니라 JVM을 대상으로 컴파일하는 다른 언어의 클래스도 실행할 수 있다. 같은 형식의 코드가 여러 플랫폼의 구현체에서 동작하도록 설계된다. 가상

0

Python 생성기는 값을 한꺼번에 저장하지 않고 필요할 때 순서대로 내보내는 반복 처리 방식이다. yield를 포함한 함수는 호출 시 생성기 객체를 반환한다. 반복을 진행할 때 다음 yield까지 실행하며 중간의 지역 상태를 유지한다. 큰 로그를 한 줄씩 읽어 조건에 맞는 기록만 내보내면 모든 결과를 미리 리스트에 담지 않아도 된다. 소비자는 for 문으로 순회할 수 있다. 생성기는 보통 한 번 소진하면 같은 객체를 처음부터

0

unittest는 Python 표준 라이브러리에 포함된 자동 테스트 프레임워크이다. 테스트 사례와 준비·정리 절차, 실행 결과를 구조화한다. TestCase의 검증 메서드로 기대 결과를 확인하고 여러 테스트를 묶어 실행한다. setUp과 tearDown 등으로 각 사례의 환경을 관리할 수 있다. 할인 계산 함수에 정상 가격, 경계값, 잘못된 입력을 넣고 반환값이나 예외가 요구사항과 일치하는지 검사할 수 있다. 테스트가 서로의

0

Python 타입 힌트는 변수와 함수의 기대 타입을 주석으로 표현하는 기능이다. 정적 분석 도구와 편집기가 코드 사용을 점검하는 데 활용한다. 함수 매개변수와 반환값, 컬렉션 원소 타입 등을 표기한다. typing 모듈은 단순 클래스 이름보다 복잡한 타입 관계를 표현하는 도구를 제공한다. def length(text: str) -> int와 같이 입력과 결과를 명시하면 호출자가 의도를 이해하고 타입 검사기가 잘못된 호출을 찾는

0

pathlib는 파일 시스템 경로를 객체로 다루는 Python 표준 라이브러리이다. 문자열 조작과 실제 파일 접근을 구분해 제공한다. PurePath 계열은 경로 계산을 하고 Path 계열은 읽기·쓰기 같은 입출력 기능도 제공한다. 실행 운영체제에 맞는 경로 규칙을 사용할 수 있다. Path('data') / 'report.txt'처럼 경로를 조합하고 read_text로 파일을 읽을 수 있다. 구분자를 직접 문자열로 이어 붙이

0

dataclass는 필드 정의를 바탕으로 초기화와 표현 등 반복적인 메서드를 생성하는 Python 기능이다. @dataclass 데코레이터는 타입 주석이 있는 필드를 읽어 __init__, __repr__, 비교 관련 메서드 등을 설정에 따라 만든다. 좌표 클래스에 x와 y 필드를 선언하면 생성자와 읽기 쉬운 객체 표현을 직접 반복 작성하지 않아도 된다. 필드 기본값도 지정할 수 있다. 타입 주석이 입력 값을 자동으로 검증하는

0

asyncio는 Python에서 async와 await 문법을 사용해 동시성 코드를 작성하도록 돕는 표준 라이브러리이다. 이벤트 루프가 준비된 작업을 실행하고 코루틴이 비동기 대기 지점에서 실행 기회를 양보한다. 네트워크 입출력, 작업 취소, 동기화 등의 API를 제공한다. 여러 서버의 응답을 기다리는 작업을 태스크로 구성하면 하나의 응답을 기다리는 동안 다른 작업이 진전될 수 있다. CPU 계산이나 동기식 입출력이 루프를 오

0

venv는 프로젝트별로 Python 패키지 설치 환경을 분리하는 표준 라이브러리 도구이다. 기존 Python 설치를 바탕으로 가상 환경을 만들고 그 환경의 실행 파일과 패키지 경로를 사용한다. 활성화는 셸이 해당 실행 파일을 쉽게 찾도록 돕는다. python -m venv .venv로 환경을 만들고 해당 환경의 Python으로 필요한 의존성을 설치하면 다른 프로젝트와 버전 충돌을 줄일 수 있다. 운영체제나 보안 권한까지 격리하

0

Python 예외 처리는 실행 중 발생한 오류나 특별한 상황을 정상 흐름과 분리해 처리하는 기능이다. try에서 실행하고 except에서 특정 예외를 처리한다. finally는 정리 작업에 쓰며 raise로 예외를 전달하거나 직접 발생시킬 수 있다. 숫자 입력을 int로 변환할 때 ValueError를 처리하면 잘못된 입력을 사용자에게 설명하고 다시 받을 수 있다. 모든 예외를 무조건 삼키면 원인과 실패 사실을 숨긴다. 예상하

0

Python 모듈은 정의와 코드를 이름 공간으로 묶어 가져올 수 있게 한 단위이다. 보통 .py 파일로 작성하지만 다른 형태의 모듈도 있다. import로 모듈을 불러오고 그 안의 함수나 값을 참조한다. 모듈의 최상위 코드는 최초 로딩 시 실행될 수 있으며 패키지는 모듈 이름을 계층적으로 구성한다. 공통 검증 함수를 validation.py에 두고 여러 실행 파일에서 import validation으로 재사용할 수 있다. 모듈

0

Python 리스트 컴프리헨션은 반복과 선택 조건을 식으로 표현해 새 리스트를 만드는 문법이다. 원소를 순회하면서 변환 식을 평가하고 선택적으로 조건에 맞는 값만 포함한다. 결과를 한 번에 리스트로 만들므로 생성기 식과 메모리 사용 방식이 다르다. [x*x for x in range(5) if x%2 == 0]은 0, 4, 16을 담은 리스트를 만든다. 원래 입력 자료를 직접 수정할 필요가 없다. 중첩 반복이 많아지면 읽기 어

0

Julia는 수치 계산을 비롯한 범용 작업에 쓰이는 프로그래밍 언어이다. 동적인 사용 방식과 효율적인 코드 실행을 함께 지향한다. 다중 디스패치로 인수 타입 조합에 따라 메서드를 선택한다. 배열 연산, 패키지, 병렬 실행과 다른 언어의 함수 호출을 이용해 계산 프로그램을 구성한다. 정수와 실수 입력에 맞는 계산 메서드를 나누거나 행렬 기반 모형을 함수로 작성할 수 있다. 대화형으로 검토한 함수를 반복 실행 작업에 재사용할 수

0

R은 통계 계산과 그래픽을 위한 프로그래밍 언어이자 실행 환경이다. 데이터 처리, 통계 모형, 시각화 기능을 패키지로 확장한다. 벡터와 행렬 등의 데이터에 연산을 적용하고 통계 절차를 코드로 기록한다. 분석 과정과 그림 생성을 함께 자동화할 수 있다. 측정 자료를 읽어 요약 통계와 회귀 모형을 계산하고 결과를 그래프로 표현할 수 있다. 같은 스크립트를 다른 자료에 적용하면 분석 절차를 재사용할 수 있다. 프로그램이 실행됐다는

0

C#은 .NET 생태계에서 사용하는 범용 프로그래밍 언어이다. 객체 지향을 바탕으로 함수형 스타일과 비동기 처리 등 다양한 기능을 제공한다. 컴파일러, 런타임, 기본 라이브러리와 함께 프로그램을 구성한다. 언어 문법과 실행 플랫폼, 웹·게임 프레임워크는 역할이 서로 다르다. 서버 API의 요청 처리 코드를 작성하거나 데스크톱 앱의 이벤트를 처리할 수 있다. 컬렉션과 제네릭을 이용해 데이터 구조의 타입을 표현한다. C# 버전과

0

Dart는 여러 플랫폼의 앱 개발을 지원하는 프로그래밍 언어이다. Flutter의 기반 언어이지만 Dart와 Flutter는 동일한 제품이 아니다. 정적 타입 검사와 타입 추론, null 안전성을 제공한다. 실행 대상과 개발 단계에 맞는 컴파일 및 런타임 방식을 사용하며 비동기 작업을 표현할 수 있다. 모바일 앱의 화면 이벤트를 처리하고 비동기 네트워크 응답을 기다리는 로직을 Dart로 작성할 수 있다. 분석기와 포매터로 코드

0

Lua는 다른 프로그램 안에 내장하기 쉬운 가벼운 스크립트 언어이다. 게임 규칙, 설정, 응용 프로그램 확장 등에 쓰인다. 동적 타입과 자동 메모리 관리를 제공한다. 테이블을 중심으로 데이터를 표현하며 호스트 프로그램이 필요한 기능을 스크립트에 노출할 수 있다. 게임 엔진은 화면과 물리 연산을 맡고 Lua 스크립트가 등장 조건이나 점수 계산을 정하도록 구성할 수 있다. 같은 엔진에서 규칙만 바꾸기 쉬워진다. 내장 언어라는 사실

0