행복한 프로그래밍

  1. “비트는 색깔도 무게도 없다. 그러나 빛의 속도로 여행한다. 그것은 정보의 DNA를 구성하는 가장 작은 원자적 요소다. 비트는 켜진 상태거나 꺼진 상태, 참이거나 거짓, 위 아니면 아래, 안 아니면 바ㅏㅌ, 흑이거나 백, 이들 둘 가운데 한 가지 상태로 존재한다.” - Being Digital 중

  2. 다시 말해서 사람들이 사용하는 4G라는 표현은 40억을 의미하기 때문에 실제로는 뒤에 붙어 있는 294,967,295라는 엄청난 수를 생략하고 있는 것이다. 294,967,295가 거의 3억에 가까운 수라는 사실을 생각해본다면 3억쯤을 우습게 알고 생략하는 프로그래머들의 배짱은 엄청난 것처럼 들린다.(그렇지만 이것이 돈의 액수를 의미한다면 뒤에 붙은 수를 이렇게 생략할 사람은 없을 것이다. 아마 맨 끝의 -1까지 정확하게 계산 할 것이다.)

  3. […] 심지어 1954년에 열린 회의에서 포트란(FORTRAN) 언어의 창시자인 존 베커스(John Baekus)가 새로운 언어의 필요성에 대해서 열변을 토하자 심드렁한 표정으로 이렇게 얘기했다고 한다. “아니, 기계어가 있는데 무엇 때문에 그런 언어를 만들려고 합니까?” - 존 폰 노이만이…

  4. […] 하지만 가장 중요한 메시지의 시작부분에는 1부터 10까지의 수를 이진수로 헤아려 나가는 방법이 적혀 있다. 우리가 M13 성단의 벗들에게 건네게 될 첫 마디는 다른 것이 아니라 바로 ‘이진수’인 것이다.

  5. “컴파일러를 작성하는 것은 프로그래밍 언어, 컴퓨터 아키텍처, 언어 이론, 알고리즘, 그리고 소프트웨어 공학의 문제로 확장된다.”

  6. 이 얘기는 ‘포트란 버그(Fortran bug)’라는 이름으로 널리 알려져 있는 얘기다. 1963년에 미 항공우주국이 마리너 1호에서 사용했던 궤도 계산 프로그램을 달 탐사선인 아폴로호에서 사용하기 위해서 테스트하던 중 포트란 언어로 작성되어 있는 프로그램 안에서 다음과 같은 버그를 발견 […]

  7. 자신이 선택한 프로그래밍 언어의 특성을 살리지 못하는 경우의 예를 들자면 C++나 자바와 같은 객체 지향 언어를 가지고서 C 언어로 작성할 만한 절차적인(procedural) 코드를 작성하는 경우가 대표적이다.

  8. 복잡성 문제를 연구하는 학자들에게 가장 어려운 질문 중의 하나는 바로 “NP에 속하는 문제들이 궁긍적으로 모두 다항식, 즉 쉬운 알고리즘을 이용해서 해결될 수 있을까?”라는 질문이다. 만약 그렇다면 NP에 속한 문제나 P에 속한 문제가 모두 종국에서 다항식으로 표현되기 때문에 “P=NP”라는 등식이 성립하게 될 것이다. 하지만 NP에 속하는 문제가 모두 다항식으로 해결될 수 있을지 여부를 파악하거나 증명하는 것이 너무나 어렵기 때문에 이 등식은 아직은 완전하게 입증되지 않은 어려운 명제 중의 하나로 통하고 있다.

  9. 한편, “NP-hard”라고 불리는 문제들은 세일즈맨의 여행 문제처럼 모든 경우의 수를 전부 확인해보는 방법 이외에는 정확한 답을 구할 수 있는 뾰족한 수가 없는 문제들을 뜻한다. 어떤 문제가 NP에 속하면서, 즉 다항식으로 표현될 수 있는지 여부가 알려지지 않았으면서 동시에 NP-hard에 속한다면, 즉 ‘무식한 힘’의 방법말고 다른 절묘한 알고리즘이 알려져 있지 않다면 그 문제는 ‘NP 완전(NP complete)문제’라고 부른다.

Written on March 21, 2012