언어 설계의 절충
읽기 쉽고, 쓰기 쉽고, 안전하고, 빠른 언어는 왜 없을까?
절충 ① 자바
안전하게 하면 느려집니다
자바는 배열의 칸을 쓸 때마다 번호가 범위 안인지 검사합니다. 신뢰성을 얻고 실행 비용을 내줍니다. 이렇게 하나를 얻으려 다른 하나를 내주는 것이 절충(trade-off)입니다.
배열의 크기와 번호는 예시입니다.
절충 ② APL
짧게 쓰면 읽기 어렵습니다
APL은 강력한 연산자와 새 기호가 많아 복잡한 계산을 아주 짧게 씁니다. 작성 용이성을 얻고 가독성을 내줍니다.
예시 코드입니다. APL의 +/ 는 '모두 더한다'는 뜻입니다.
절충 ③ C++
자유로우면 위험합니다
C++의 포인터는 메모리 어디든 가리킬 수 있어 강력하고 유연합니다. 그 대신 엉뚱한 칸을 가리켜도 막아 주지 않습니다. 유연성을 얻고 신뢰성을 내줍니다.
포인터는 값이 든 메모리 칸의 위치를 담는 값입니다. 칸의 배치는 예시입니다.
그래서
언어마다 고른 쪽이 다릅니다
기준끼리 부딪치기 때문에 모든 것을 다 잘하는 언어는 없습니다. 무엇을 얻고 무엇을 내줄지는 언어를 설계하는 사람이 정합니다. 언어가 많은 또 하나의 이유입니다.
다음 편