관리 메뉴

지구별에서 - Things Old and New

프로그래밍을 새로 배우며 본문

IT

프로그래밍을 새로 배우며

샛솔 2024. 8. 8. 05:42

프로그래밍을 새로 배우며

프로그래밍이 나에게 무엇이었던가?

옛 날에 썼던 글이 생각났다.  

************************

이론물리 전공인 우리는 물리학과 건물에서 떨어진 목조 간이 건물의 방들을 연구실로 쓰고 있었다. 본 건물과 떨어져 있어 남의 눈에 뜨이지 않아 자유스럽게 행동할 수 있었다. 나는 나와 같은 지도 교수 밑에서 논문을 쓰는 미하라 노리히꼬라는 일본 3세와 함께 연구실을 나눠 쓰고 있었다.  올빼미형 인간은 몇 사람 더 있었으나 항상 올빼미는 나와 "노리"와 "에드"라는 친구였다. 우리는 밤 12시가 조금 넘으면 출출해져 한 15 분거리의 피자집에 가서 밤참을 하곤 했다. 나와 노리는 담배를 피웠고 에드는 담배를 피우지 않았다. 언젠가 에드는 내가 담배를 오른손 손가락 사이에 끼고 생맥주핏쳐를 든 포즈를 "멋있다", "클래식"이라 칭찬해주곤 했다. 에드가 먼저 박사학위를 받고 떠났고 그리고 내가 떠났다. 얼마 후 노리로부터 소식을 들었다. 에드가 히피(hippy)가 되었다고.  그리고는 얼마 지나지 않아 에드가 자살을 했다는 소식이 왔다. 

귀국하여 대학에 나가면서도 완전한 새벽형 인간이 되기 전까지는 올빼미형 인간이었다. 나는 아직도 새벽 3시에 컴퓨터를 돌리면서 내 프로그램을 점검하던 기억을 잊지 못한다. 새로운 몬테칼로 기법을 개발 중이었다. 버그하나 때문에 전전긍긍하다 마침내 그 버그를 찾아 고치고 생각했던 대로 프로그램이 실행되는 것을 확인하고 느꼈던 환희와 흥분은 30년 가까이 지난 지금 까지도 뇌리에 그냥 남아 있다. "올빼미들을 위한 씨풀풀(Late Night Guide to C++)"의 저자 Nigel Chapman 은 그의 책 서두에 아래와 같은 글귀를 남겨 놓고 있다.

Did you ever stay up late into night, working on a computer program? Not because you were getting paid to, or because you had to have demonstration ready for a marketing meeting the next morning, or because you wanted to get finished before you went on holiday, but just because you couldn't stop? Because there was something fascinating about making that program work that was just... worth saying up for?

            If you are going to program computers, it seems to me that you need that sort of excitement, because it's a pretty miserable business without it....."

 

그는 프로그래머는 올빼미형 임을 전제하고 있다. 책 제목부터가 그렇다. 밤을 꼬박 새우며 프로그램한다는 것은 단순한 돈벌이 이기 때문만은 아니라는 것이다. 아마도 많은 프로그래머는 Chapman의 말에 공감할 줄 안다. 나 역시 그랬으니까.  

프로그래밍이란 창조적 작업이다.

Tex를 만들었고 전산수학의 불휴의 명저, "The Art of Computer Programming"를 남긴 스탠퍼드의 Donald Knuth 교수도 말했다. "프로그래밍은 작곡을 하거나 시를 쓰는 것과 갈다"라고. "... preparing programs for a computer can be an aesthetic experience, much like composing poetry or music.".

그리고 누군가가 그랬다. 모든 창조 행위는 밤에 이루어진다고.

 심야의 정적은 새벽의 정적보다 좋다. 그것은 정적의 시작이요, 그래서 여유로워서 좋다. 새벽의 정적은 심야의 정적의 끝자락이요, 얼마 안 있어 종말을 고하기 때문에 조급해진다. 마치도 시험종료 타종시간이 임박한 수험생이 느끼듯.  

 

"올빼미들을 위한 씨풀풀(Late Night Guide to C++)" 표지

출처: https://boris-satsol.tistory.com/89 [지구별에서 - Things Old and New:티스토리]

************************

 

프로그래밍을 새로 배우려고 여러 권의 책을 샀다.

그리고 오늘 책 한 권을 또 샀다. 

오늘 산 책 표지

 

이런 책의 서문이나 개요를 읽다 보면 옛 생각이 많이 난다.  

저자가 프로그래밍을 시작한 것은 나와 비슷한 시기다.  

내가 대학원에 다닐 때는 컴퓨터가 아직도 활성화되기 전이었다.   앞에 적은 대학원 연구실 물리학과 annex 빌딩에 우리 동기보다 한 2,3년 선배가 있었는데 그 친구만이 컴퓨터를 썼다.

당시에는 IBM 메인 프레임이 컴센터에 있고 과학 계산 언어는 Fortran이었다. 한 번 집어넣으면 결과물이 수치로 직잭으로 접히는 책 서너 권 두께의 종이뭉터기를 받아 와서 보는 식이었다.

프로그램은 타이핑하면 펀치 카드가 나오고 그것을 기계가 읽는 식으로 입력했다.  프로세서고 메모리도 모두 지금 휴대폰 보다도 못한 것들로 추정된다. 

그런데 최근 생성형 AI가 나오면서 프로그램이 그 양상이 완전히 바뀌었다. 

이 책은 그런 이야기를 담고 있다.  코딩의 양상이 완전히 바뀐 것이다.

책의 Introduction의 일부를 베껴 오면 

***************

당연히 시간이 지남에 따라 더 강력한 기계로 업그레이드했습니다. 그 과정에서 파스칼, C, C++와 같은 언어에 익숙해졌습니다. 하지만 구문 강조 및 디버깅 기능을 제외하면 IDE는 크게 달라지지 않았습니다. 

그러다 GitHub Copilot과 ChatGPT가 등장하면서 모든 것이 극적으로 바뀌었습니다. 이 도구들을 사용해 보니 아이폰을 처음 손에 쥐었을 때처럼 완전히 판도가 바뀌는 느낌이 들었습니다. 

자연어로 ChatGPT에 코드 작성을 요청했습니다. 또는 VS Code에서 함수의 일부를 입력하면 GitHub Copilot이 코드 블록을 생성했습니다. 

종종 과녁을 맞히는 것과 같았죠. 그리고 이미지를 코드로 변환하기 위해 ChatGPT를 사용하기도 했죠. 

하지만 진정한 강점은 이러한 도구가 개발자의 지루한 작업 중 상당수를 처리할 수 있다는 것이었습니다. 정규식 문과 씨름하거나 bash 명령이나 GitHub 작업을 조합하는 데 관심이 있는 사람이 있을까요? 

확실히 저는 아닙니다. 하지만 이런 AI 프로그래밍 도구는요? 아침 식사로 그런 것들을 먹습니다. 알고 보니 이러한 AI 도구는 코딩뿐만 아니라 그 이상의 용도로도 유용했습니다. 

저는 앱 아이디어를 브레인스토밍하고, 요구사항 초안을 작성하고, 단위 테스트를 작성하는 데 ChatGPT를 사용하기 시작했습니다.

AI 지원 프로그래밍이 프로그래머에게 꼭 필요한 기술 중 하나가 될 것이라는 확신을 갖기까지 그리 오랜 시간이 걸리지 않았습니다.

***************

프로그래밍이 패러다임이 변한 것이다. 

 

Comments