PHpullh

STATIC COMPARISON LIBRARY

핵심 문법을 언어별로 비교하세요

비교 주제마다 독립 HTML 페이지와 각 언어의 상세 학습 문서 링크를 제공합니다.

비교표를 우열표로 읽지 않기

같은 기능을 여러 언어로 나란히 놓으면 가장 짧은 코드가 눈에 먼저 들어옵니다. 그러나 짧다는 것은 무언가가 생략되었다는 뜻이기도 합니다. 어떤 언어는 실패 가능성을 타입에 새겨 넣어 코드가 길어지고, 어떤 언어는 실패를 예외로 던져 호출부를 깨끗하게 유지합니다. 길이는 그 설계 판단의 결과일 뿐 품질의 지표가 아닙니다.

비교 문서를 읽을 때 유용한 질문은 이것입니다. 이 언어는 무엇을 강제하고, 무엇을 개발자에게 맡기는가. 널 가능성을 컴파일러가 막는지, 정수 오버플로가 조용히 감기는지, 컬렉션이 복사되는지 공유되는지. 이런 항목들이 실제로 버그를 만드는 지점이고, 문법의 겉모습보다 훨씬 오래 남습니다.

언어를 나란히 놓고 보면 무엇이 보이나

같은 일을 서로 다른 언어로 써 보면, 각 언어가 무엇을 중요하게 여기는지가 드러납니다. 파일을 하나 읽는 코드만 비교해도 어떤 언어는 실패 가능성을 타입에 새겨 넣고, 어떤 언어는 예외로 던지며, 어떤 언어는 그냥 널을 돌려줍니다. 문법의 차이처럼 보이는 것이 사실은 설계 철학의 차이인 경우가 많습니다.

이 비교 문서들은 두 가지 상황에서 특히 쓸모가 있습니다. 첫째, 이미 아는 언어를 발판 삼아 새 언어를 배울 때입니다. 익숙한 개념이 새 언어에서 어떤 모양으로 나타나는지 보면 학습 시간이 크게 줄어듭니다. 둘째, 팀에서 언어를 고를 때입니다. 추상적인 장단점 목록보다 실제 코드를 나란히 놓고 보는 편이 논의를 빨리 끝냅니다.

다만 비교표를 우열표로 읽지는 마십시오. 짧게 써지는 코드가 항상 좋은 코드는 아니고, 장황해 보이는 코드가 실은 실패 경로를 빠짐없이 드러내고 있는 경우도 많습니다. 각 언어의 자세한 맥락은 심층 가이드에서 확인하실 수 있습니다.

10 languages

반복문

인덱스 루프와 범위 루프, 순회 중 수정의 함정을 비교합니다.

10 languages

함수

함수 선언과 인자 전달, 반환 방식을 비교합니다.

같은 개념이 다른 이름을 쓸 때

언어를 옮길 때 발목을 잡는 것은 낯선 개념이 아니라 이름만 다르고 동작이 미묘하게 다른 개념입니다. 리스트, 배열, 슬라이스, 벡터는 대충 같은 것처럼 보이지만 대입할 때 복사되는지 공유되는지가 갈리고, 그 차이가 그대로 버그가 됩니다. 맵과 딕셔너리와 객체도 마찬가지입니다. 순회 순서를 보장하는 쪽과 보장하지 않는 쪽이 섞여 있습니다.

그래서 비교 문서를 볼 때는 코드의 모양보다 이 코드가 무엇을 보장하는가를 확인하는 편이 낫습니다. 실패했을 때 값이 무엇으로 돌아오는지, 원본이 바뀌는지, 예외가 어디까지 전파되는지가 실제로 옮겨 쓸 수 있는 지식입니다.

어디서부터 볼 것인가

이미 한 언어를 아는 상태라면 기초 문법 항목은 건너뛰어도 됩니다. 대신 에러 처리와 비동기부터 보십시오. 두 영역이 언어 간 차이가 가장 크고, 습관을 그대로 가져갔을 때 사고가 나는 지점입니다. 반대로 프로그래밍 자체가 처음이라면 Hello World와 변수부터 순서대로 따라가는 편이 낫습니다.

각 항목의 자세한 설명과 더 많은 예제는 심층 가이드에, 언어별 실무 맥락은 실무 관점 언어 선택에 정리해 두었습니다.