신뢰성과 비용

프로그램이 틀리지 않게, 언어가 도울 수 있을까?

신뢰성 ① 타입 검사

안 맞는 값은 미리 걸러 냅니다

신뢰성(reliability)은 프로그램이 정해진 대로 정확히 동작하는 정도입니다. 값의 종류가 맞는지 확인하는 타입 검사(type checking)가 잘못된 계산을 막습니다.

예시입니다. 검사는 실행 전에 하기도 하고 실행 중에 하기도 합니다.

신뢰성 ② 예외 처리

오류가 나도 멈추지 않게

실행 중에 생긴 오류를 가로채 조치하게 해 주는 기능이 예외 처리(exception handling)입니다. 없으면 프로그램이 그 자리에서 끝납니다.

0으로 나누기는 예시입니다. 13강에서 자세히 다룹니다.

신뢰성 ③ 앨리어싱

한 칸에 이름이 둘

같은 메모리 칸을 가리키는 길이 둘 이상인 것이 앨리어싱(aliasing)입니다. q로 값을 바꾸면 p로 읽는 값도 바뀌어, 코드만 봐서는 알기 어렵습니다.

예시입니다. 메모리는 값을 담는 칸이 줄지어 있는 곳입니다.

읽기·쓰기와 신뢰성

돌아서 적으면 오류가 늡니다

언어가 생각한 방법을 그대로 적게 해 주지 않으면 돌아가는 방법으로 써야 하고, 그만큼 틀릴 곳이 늘어납니다. 가독성과 작성 용이성도 신뢰성에 영향을 줍니다.

네 번째 기준, 비용

만든 뒤에 드는 것이 큽니다

비용(cost)은 프로그램의 한살이 전체에서 따집니다. 내놓은 뒤에 고치고 바꾸는 유지보수 비용이 가장 큰 경우가 많습니다.

컴파일은 프로그램을 기계가 알아듣는 말로 번역하는 일입니다. 8편에서 다룹니다.

그 밖의 기준

기준이 셋 더 있습니다

표준을 잘 따르는 언어일수록 다른 환경으로 옮기기 쉽습니다. 정의가 모호하면 같은 코드가 환경마다 다르게 동작할 수 있습니다.

다음 편

그럼 기준을 다 채운 언어를 만들면 되지 않을까요?

5편다 잘하는 언어는 왜 없을까? 1강 목록