TIL(Today I learn) 기록일 : 2022.06.24
오늘 읽은 범위 : 1장 프로그래밍
- 프로그래밍을 시작하기에 앞서, 구현하고 싶은 것에 대한 명세서를
명확히 정의할 필요가 있다. - 사람이 읽을 수 있고, 기계어로 명령을 전달할 수 있는 수단(번역기) 중에는
컴파일러와 인터프리터가 있다. - 코드는 결국, 해결방안을 구체적으로 명시한 서류이다. 따라서
문법에 부합함과 동시에, 원하는 바를 정확히 수행하여야 의미가 있다.
p | text |
---|---|
2 | 해결 과제를 작은 단위로 분해하고 패턴화해서 추출하며, 프로그래밍 내에서 사용될 모든 개념은 평가 가능하도록 정의해야 한다. |
3 | 사람이 이해할 수 있는 약속된 구문으로 구성된 "프로그래밍 언어"를 사용해 프로그램을 작성한 후, 그것을 컴퓨터가 이해할 수 있는 일종의 기계어로 변환하는 일종의 번역기를 이용하는 것이다. |
"프로그래머는 반 정도 컴퓨터화 되어있다"
<기획자와 프로그래머가 좋아하는 디자이너> 라는 글에서 발견한 문장이다.
프로그래머가 하루에도 장시간 컴퓨터 앞에서 일하다 보니,
어느 정도 컴퓨터와 같은 방식으로 사고하게 되었다는 말이다.
또한, 동시에 다른 디자이너들한테 건네는 충고의 말에는 이렇게 적혀 있었다.
가령, {가전제품 디자인}을 전달한다고 해보자. {진공 청소기}를 만들고 있다.
디자이너: "키가 작은 여성도 간단히 사용할 수 있을 만큼 작았으면 좋겠어요.
몸체는 세련되고 엘레강스하게, 그리고 흡입구에는 포인트를 넣어주세요."
프로그래머: "...네?"
이런 식으로 말하면 굉장히 불편하고, 곤란해 한다며,
구체적인 정의를 내리라 충고한다.
"높이는 1.2m 였으면 좋겠어요. 몸체는 #fefefe에서 #fff로 변하도록
gradient를 넣어주세요. 그리고 흡입구는 몸체보다 진한 다크 그레이로 해주시면 됩니다."
이 글을 읽고 한참을 공감하며 웃었다.
나 또한 두 번째 글을 읽으며 알 수 없는 편안함을 느꼈기 때문이다.
외국어를 공부하고 습득하다 보면 그 나라의 사람들처럼 사고방식이
어느 정도 바뀌는 것처럼, 컴퓨터와 한참을 의사소통 하면서
컴퓨터의 사고방식을 습득하는 듯하다.
인터프리터와 컴파일러는 둘 다 인간이 쓰는 언어에 가까운
프로그래밍 언어를 (2진수를 쓰는) 컴퓨터 언어로 번역해 준다는
공통된 특징을 가지고 있다.
하지만, 정확히는 서로 다른 과정을 거쳐 코드를 실행한다.
인터프리터: 프로그래밍 코드(if else...)를 '한 줄씩 즉시
머신코드로 변경' 후 '실시간으로 실행'한다.
때문에 자신이 쓴 코드의 결과를 즉시 확인할 수 있으므로,
개발 속도가 빨라진다.
&& 더하여, 실행 시 중간 번역 시간이 발생하므로,
실행 속도가 "비교적" 느려진다.
(자바스크립트와 파이썬이 이 경우에 해당된다.)
-------------------------------------------------------
컴파일러: 이미 완성된 '전체' 프로그래밍 코드를 '실행 전'에
'미리 머신코드로 변경'한 후에 열어 실행한다.
때문에, 실행 시 중간 번역 시간이 불필요해 지므로,
실행 속도가 빨라진다.
&& 더하여, 수정된 코드의 결과를 확인하기 위해
컴파일 과정을 '다시' 거친 후에 비로소 실행할 수 있기 때문에
개발 속도가 느려진다.
(C와 자바가 이 경우에 해당된다.)