읽게 된 이유
인터넷 서핑 중, 문득 책 제목이 눈에 띄어 찾아보게 되었다.
코딩을.. 지탱하는 기술이라고?
코알못인 나에게는 너무나도 매력적인 제목이었다.
알라딘에 갔더니 있어서 바로 구입해서 보게 되었다.
책의 초반에는 프로그래밍의 역사와 발전 과정을 기록하고 있고,
중후반 부분에는 코딩에서 익히 논의되곤 하는 큰 이슈들을 주제로 삼아 단원들을 구성했다.
그래서 분명 이로움은 있었지만.. 너무 포괄적인 주제들을 다루기도 하고, 이를 너무 간단히 구성(책 분량 상 어쩔 수는 없었던 것 같긴 하다..)했지 않았나 하는 아쉬움은 남는다.
읽으면서 보다 인상적으로 남았던 부분들을 내 생각과 함께 정리해본다.
함수
-
함수는 반복적으로 사용되는 코드의 집합에 이름을 붙여 해당 코드를 사용하도록 하는 것이다. 이름 붙여진 함수는 런타임의 스택에 쌓여 있다가, 실행 시 힙 메모리로 호출되어 사용된다.
=> 여기서 전에 V8 엔진이나 JVM의 Stack 부분에 함수들이 쌓여 있었던 모습들을 떠올리게 되었다.
-
재귀호출에 대한 내용도 있었다. 이전에 재귀 호출에 대해 기록했던 게시물도 사실 있긴 하다^^ 그 때는 피보나치 수열에나 사용할 수 있다고 썼었는데, 여기서는 [1, [2, 3], 4] 과 같은 내포된 리스트를 처리할 때도 재귀호출을 사용할 수 있음을 알려주었다.
에러 처리
- 실행 중이던 프로그램이 중간에 실패했을 때, 이를 위한 예외 처리가 필요하다. 언어 별로 다른 예외 처리 방식을 사용하는데, C는 실패 시 반환 값을 미리 설정하여 그 값이 반환되었을 경우 실패 시의 코드를 통해 처리하며, Java, JavaScript 등의 언어는 예외 발생시 바로 예외를 받아 처리하도록 한다. 그리고 여기에는 goto문의 방식이 사용된다고 한다. Java는 예외의 이름을 명시하여 '예외 검사'의 방식으로 예외를 처리하는 방법을 제시했으나, 이는 긍적정으로 수용되지는 않는다.(수반되는 비용이 많기 때문)
이름과 스코프
- 프로그램들이 점점 복잡해지면서, 사람이 이해하기 쉬운 프로그래밍을 위해 변수명이 사용되었다. 그리고 이 변수 명의 유효 범위를 어떻게 설정할 것인지에 대해 2가지의 방법이 제시되었다.
1.동적 스코프
일단의 코드 영역이 실행되는 동안 사용되는 변수의 값을 마음대로 사용하고, 완료되었을 경우 원래의 변수값으로 해당 변수의 값을 재설정한다.
2.정적 스코프
실행되는 코드의 영역이 하나의 묶음이 된다. 어떤 변수가 제시되었을 때 먼저 해당 변수 묶음 안에서 찾고, 없을 경우 전역에 가서 변수를 찾게 하는 방식이다. 해당 코드의 영역이 하나의 변수 저장 공간이 되는 것이다. python 등의 언어가 이러한 방식을 사용한다. 선언한 변수의 위치를 통해, 스코프가 설정이 된다.
- 한편, 현대에는 코드 상에서 scope 찾기가 쉽지 않은 동적 스코프를 잘 채택하지 않고, 정적 스코프를 많이 사용한다. 그러나 여전히 동적 스코프의 개념은 사용되고 있는데, 예를 들어 try-catch 구문에서 에러 발생 후 바로 catch로 넘어가는 부분이나, 객체 지향의 접근 지시자 개념이나, 크게 보면 클래스의 경우가 그 일부라고 볼 수 있다.
형
- 컴퓨터가 비트로 값을 표현하고, 값의 종류를 나타내기 위해 추가 데이터를 붙였는데 이것이 바로 '형(Type)'이다.
- 데이터는 2, 8, 10, 16진수 등으로 표현되며(현재는 거의 2진수), 소수점이 붙은 수를 표현하기 위해 부동 소수점이 사용된다.
- 형을 인수로 형을 만드는 구조체, 제네릭, 템플릿 등의 방식이 생겨났다.
- 사용자 정의형으로 클래스->인터페이스 등의 발전이 있었다.
이외에도 많은 인사이트들이 있었으나, 기대했던 것에 비해선 아쉬움이 남는다..^^
이제 다른 책 읽어야지!