페북에 대충 쓴 글이라 앞뒤도 안 맞고 빠뜨린 내용도 많다. 그래도 다 쓰고 나니 날리기 아쉬워서 남김.
우리는 모두 컴퓨터를 공부하면서 많이 배운 사람일수록 새로운 것을 익히고 고안해 내는 데 익숙해져야 한다고 배운다. 그러나 현실에서는 컴퓨터 자체를 적게 배운 사람이 개발 일선에서 많은 소프트웨어를 만들고, 나아가 다른 분야를 더 배운 사람이 새로운 분야로 컴퓨터 기술을 진출시키는 경향이 있다. 고졸이 일선에서 지휘를 하고 대학원생이 알고리즘과 같은 설계를 하는 경우가 다반사이다. 이것은 일종의 역설이다.
물론 제대로 만든 소프트웨어, 신개념의 소프트웨어는 분명히 과학의 산물이다. 부동 소수점 표기가 그랬고, 수많은 알고리즘이 있었고, 시대를 풍미한 인공지능들이 있었다. 오늘날 현대적인 고성능의 CPU 구조가 그렇고, 구글의 검색엔진이 그렇고, 프로그램 자동 검증 도구가 그렇다. 이 외에도 인류의 컴퓨터 과학을 진보시키고 컴퓨터 기술을 발전시키는 수많은 사례가 있다.
그러나 우리는 컴퓨터 과학을 발전시킨 것이 당대 컴퓨터 기술자들의 요구와 무관하지 않았음을 알아야 한다. 소프트웨어는 가능성의 도구이다. 여느 과학과 기술, 사회의 관계가 그렇다만, 특히 소프트웨어는 지금도 그 가능성을 놀라운 속도로 실현하고 있다. 어떤 인문학적 상상력, 어떤 기술적 상상력과도 소프트웨어는 결합될 수 있다. 그리고 이 선구적인 경계에서는 소프트웨어 과학자와 기술자 모두의 역할이 중요하다.
결론은, 모두가 과학자인 동시에 기술자일 것을 요구받고 있다는 것... 그래서 나는 아직도 내가 대학에서 컴퓨터 과학을 하는지 컴퓨터 공학을 하는지 잘 모르겠다. 뻘글임.