10 languages
Hello World
첫 프로그램과 진입점이 언어마다 어떻게 다른지 비교합니다.
STATIC COMPARISON LIBRARY
비교 주제마다 독립 HTML 페이지와 각 언어의 상세 학습 문서 링크를 제공합니다.
같은 기능을 여러 언어로 나란히 놓으면 가장 짧은 코드가 눈에 먼저 들어옵니다. 그러나 짧다는 것은 무언가가 생략되었다는 뜻이기도 합니다. 어떤 언어는 실패 가능성을 타입에 새겨 넣어 코드가 길어지고, 어떤 언어는 실패를 예외로 던져 호출부를 깨끗하게 유지합니다. 길이는 그 설계 판단의 결과일 뿐 품질의 지표가 아닙니다.
비교 문서를 읽을 때 유용한 질문은 이것입니다. 이 언어는 무엇을 강제하고, 무엇을 개발자에게 맡기는가. 널 가능성을 컴파일러가 막는지, 정수 오버플로가 조용히 감기는지, 컬렉션이 복사되는지 공유되는지. 이런 항목들이 실제로 버그를 만드는 지점이고, 문법의 겉모습보다 훨씬 오래 남습니다.
같은 일을 서로 다른 언어로 써 보면, 각 언어가 무엇을 중요하게 여기는지가 드러납니다. 파일을 하나 읽는 코드만 비교해도 어떤 언어는 실패 가능성을 타입에 새겨 넣고, 어떤 언어는 예외로 던지며, 어떤 언어는 그냥 널을 돌려줍니다. 문법의 차이처럼 보이는 것이 사실은 설계 철학의 차이인 경우가 많습니다.
이 비교 문서들은 두 가지 상황에서 특히 쓸모가 있습니다. 첫째, 이미 아는 언어를 발판 삼아 새 언어를 배울 때입니다. 익숙한 개념이 새 언어에서 어떤 모양으로 나타나는지 보면 학습 시간이 크게 줄어듭니다. 둘째, 팀에서 언어를 고를 때입니다. 추상적인 장단점 목록보다 실제 코드를 나란히 놓고 보는 편이 논의를 빨리 끝냅니다.
다만 비교표를 우열표로 읽지는 마십시오. 짧게 써지는 코드가 항상 좋은 코드는 아니고, 장황해 보이는 코드가 실은 실패 경로를 빠짐없이 드러내고 있는 경우도 많습니다. 각 언어의 자세한 맥락은 심층 가이드에서 확인하실 수 있습니다.
10 languages
첫 프로그램과 진입점이 언어마다 어떻게 다른지 비교합니다.
10 languages
변수 선언과 타입 표기, 가변성 기본값을 비교합니다.
10 languages
문자열 불변성과 유니코드 인덱싱, 결합 비용을 비교합니다.
10 languages
if가 문인 언어와 식인 언어, 패턴 매칭의 완전성 검사를 비교합니다.
10 languages
인덱스 루프와 범위 루프, 순회 중 수정의 함정을 비교합니다.
10 languages
함수 선언과 인자 전달, 반환 방식을 비교합니다.
10 languages
람다와 클로저가 무엇을 캡처하는지 비교합니다.
10 languages
클래스와 구조체, 생성자 문법을 비교합니다.
10 languages
명시적 구현과 구조적 타이핑, 상속 대신 합성을 비교합니다.
10 languages
타입 소거와 단형화, 제약 조건 표기를 비교합니다.
10 languages
리스트가 대입 시 복사되는지 공유되는지 비교합니다.
10 languages
맵의 순회 순서 보장과 키 접근 방식을 비교합니다.
10 languages
예외를 던지는 언어와 결과로 돌려주는 언어를 비교합니다.
10 languages
무엇이 실제로 동시 실행되는지 비교합니다.
10 languages
파일 읽기·쓰기와 인코딩 지정 방식을 비교합니다.
10 languages
직렬화에 사전 선언이 필요한지 비교합니다.
10 languages
HTTP 요청의 기본 타임아웃과 오류 처리를 비교합니다.
10 languages
테스트 러너 내장 여부와 목 객체 전략을 비교합니다.
언어를 옮길 때 발목을 잡는 것은 낯선 개념이 아니라 이름만 다르고 동작이 미묘하게 다른 개념입니다. 리스트, 배열, 슬라이스, 벡터는 대충 같은 것처럼 보이지만 대입할 때 복사되는지 공유되는지가 갈리고, 그 차이가 그대로 버그가 됩니다. 맵과 딕셔너리와 객체도 마찬가지입니다. 순회 순서를 보장하는 쪽과 보장하지 않는 쪽이 섞여 있습니다.
그래서 비교 문서를 볼 때는 코드의 모양보다 이 코드가 무엇을 보장하는가를 확인하는 편이 낫습니다. 실패했을 때 값이 무엇으로 돌아오는지, 원본이 바뀌는지, 예외가 어디까지 전파되는지가 실제로 옮겨 쓸 수 있는 지식입니다.
이미 한 언어를 아는 상태라면 기초 문법 항목은 건너뛰어도 됩니다. 대신 에러 처리와 비동기부터 보십시오. 두 영역이 언어 간 차이가 가장 크고, 습관을 그대로 가져갔을 때 사고가 나는 지점입니다. 반대로 프로그래밍 자체가 처음이라면 Hello World와 변수부터 순서대로 따라가는 편이 낫습니다.
각 항목의 자세한 설명과 더 많은 예제는 심층 가이드에, 언어별 실무 맥락은 실무 관점 언어 선택에 정리해 두었습니다.