As programming environments grow in power, and languages become more abstract, the Lisp style of programming is gradually replacing the old plan-and-implement model. - Paul graham 



조금 의역을 하자면
(하드웨어 스펙들이 점점 좋아져서 언어별의 속도차이가 별로 티가 안나는) 프로그래밍 환경이 되어가면 갈 수록 , (프로그래밍) 언어들은 점점 더 추상적이 되어 가고 (조금 더 고수준의 언어가 되어 가고) 리습 스타일의 프로그래밍 방법들이 (Bottom-up 프로그래밍 스타일을 말하는 것 같습니다) 옛날 방식의 '계획을 세우고 구현을 하는' 모델을 점차적으로 대체할 것입니다. 

굳이 리습 스타일이라고 표현을 한 이유는 저 문구가 나온 책이 Ansi Common Lisp 이였기 때문이고요, 확실하게 예전의 워터폴 (Waterfall) 이라고 알려진 '요구사항 정의 - 분석 - 기획 - 설계 - 개발 - 테스트' 의 형식을 취하는 개발 방법론들은 점점 더 옛날 방식이 되어 가고 있습니다. 

게다가 하드웨어 스펙들이 점점 좋아지니, 자바나 노드제이에스(Node.js) 나 속도의 차를 일반 사용자는 잘 느끼지 못하는 단계에 이르다 보면 개발하기 빠른 언어로 프로젝트를 개발하는 것이 가장 좋겠지요. (빠른 하드웨어 시대에 가장 큰 병목은 개발자의 개발 속도 입니다) 

그런 의미에서 공감이 되는 글이라고 할 수 있습니다. (이 사람은 이걸 90년대 초반에 예견했네요 ㅎㅎ) 


 
요즘 Protocol 을 사용해서 (defprotocol) 무엇인가 만들어 보는 중인데, 알 수 없는 이상한 버그가 종종 발생합니다. 분명히 돌아가는 코드인데, 코드를 살짝 변경했는데, method 를 찾을 수 없다는 에러. 답답해서 별 짓을 다 해봤지만 원인을 알 수가 없었는데, 우연히 발견한 방법으로 에러를 추정할 수가 있었습니다. 

target/ 디렉토리 안에 들어있는 class 파일들을 캐싱하다가 definition 을 못 찾는 것으로 추정됩니다. 뻔하게 돌아가야 하는데 안 돌아간다면 project 디렉토리에서

$ lein clean



한 번 실행해 주고 다시 컴파일을 해 준다면 정상적으로 돌아 갈 것입니다. (이 걸 몰라서 몇 주째 고생했음 ㅜ.ㅜ)

ps.
 명령을 실행하기 전에 clojure  연결은 다 끊어 주셔야 합니다. 
 

+ Recent posts