본문 바로가기

프로그래밍 고찰

(12)
[책 리뷰] 유연한 소프트웨어를 만드는 설계 원칙 오버뷰 SICP 저자에 리치 히키 추천사? 이건 봐야지~ 라고 가벼운마음에 도전했는데.. 상상이상으로 어렵다.. 충격과 공포의 1장을 제쳐 두더라도, 내용이 좀 어렵다 ㅜ.ㅜ 나는 클로저를 좀 하니까.. 예시가 스킴이더라도 그냥 술술 읽을 수 있을줄 알았는데, 조금 방심하면 무슨내용인지 하나도 모르겠다. 나는 개발서적을 읽을때 빠르게 속독하는데 (의의나 가벼운 내용만 기억해둿다가, 나중에 필요한 부분만 다시 읽는편) 이책은 그러기 쉽지 않다. 이런기분은 대학교때 전공서적 읽을때 이후로 오랜만인듯 단어부터가 너무 고급지고, 예시도 뭔가 와닫지는 않는다. (아니 실제로 SICP 가 하버드 전공서적이었으니까 당연한건가?) 아직 초반부만 읽고있어서 그런가... 그나마 초반부가 내가 이미 알고있는 기술들이라 더 쉬워야되..
[고찰] 나는 왜 Interal DSL를 이해하기 그토록 어려웠는가? [Feat. 마틴 파울러] DSL 에 대한 내 이해가 틀릴 수 있음! 이 글은 정답이 아님! DSL 이 뭔지는 생략하고 외부 DSL 은 나에게 명확했다. SQL을 통한 DB 조작 , XML, JSON 을 통한 설정파일, 또는 사용자가 정의한 text 파일을 파싱해서 컨트롤하는것. 내부 DSL 은 이해가 되려고하면 안되고, 안되려고 하면 되고... 하던 느낌이었다. 왜 방해가 되었는가? 하면 크게 2가지 개념이 충돌해서 였다. kotlin / Scala / Lisp(Clojure) 에서 DSL 을 구축하기 위해 쓰는 테크닉 C# / JAVA 에서 Fluent API 를 DSL 이라고 함 "DSL" 이라는것을 구축하기 위해서, 또는 이해하기 위해서 공부하거나, 또는 "모나드" (특히 Free Monad) 등을 공부할때, 또는 Lisp..
[고찰] Why Data-Driven? "데이터는 데이터다" 이는 Clojure 에서 중요한 개념이며, 요즘 유행하는 불변 Record 를 활용한 디자인도 이러한 "데이터" 의 강점을 활용하는 디자인이라고 생각한다. 데이터의 강점을 활용하기 위하여 DSL 을 "데이터" 로 표현하는 방법이 꽤 많이 존재하는데 (Free 모나드도 그러한 특성을 조금 지니는듯..?) 데이터의 장점을 뽑자면 여러가지가 있다, 언어 독립적 (-> 디커플링적인 요소로써 활용이 가능하다) 선언적인 표현이 가능 가공할수있다! (Code as Data / Data as Code 도 Data 의 장점을 프로그래밍 언어에서 십분 활용하는 Feature 라고 생각) 물론 함수가 1급 시민인 FP 에서는 함수자체를 컨트롤할수있는 요소로써 사용할수있지만, "데이터" 그 자체가 가지는..
[고찰] 힙스터 개발자 회고 #이뭐야? :반올림이요 :#은 전처리기 지시자 이다 전처리기 지시자가 뭔데 :컴파일하기 전에 처리해야할일을 수행하는 프로그램 컴파일이 뭔데? :고급언어를 저급언어를거처 기계어로 변경하는 프로그램 고급언어가 뭔데? :인간이 이해하는 자연어와 가까운언어 저급언어는 뭔데? :어셈블리와 같이 기계어와 가까운 언어 어셈블리가뭔데 :기계어와 1대1 대응되는 언어 기계어가 뭔데? :0과1로 이루어진 언어 컴파일하면 뭐가 나오는데 :목적파일 (.obj/.su) 등이 나온다 목적파일은 실행하면되는것인가? :목적파일은 실 동작방법이 없기때문에 링킹과정을 거쳐야함 링킹이 뭔데? :링커가 목적파일과 라이브러리 파일을 연결해주는 과정 라이브러리가 뭔데? :프로그램이 참조할 일종의 모듈 여기서 목적파일이 ["Hello World..
[고찰] 확장 가능한 언어 (Extensible Programming Language) feat 모나드/메크로 분쟁이 생길수 있는 부분이기 때문에 미리 말하자면, 언어 자체에 우열을 가리고, 언어철학에 더 좋고 나쁨이 있을수는 없다. 언어는 기술에 따라가는 요소로 보는 사람도 있고, 기술보다 언어적 철학이 우선시되는 사람이 있을수도 있다. 이또한 무엇이 옳다 그르다 명확하게 할수있는 요소가 아니다. 다만, 개인적인 생각을 적어내는 포스팅 특성상, 내가 선호하는 요소를 그냥 좋다, 나쁘다로 표현하도록 하겠다. 대부분의 사람들이 선호하는 언어가 바뀌는 무렵은 내가 사용하고있는 언어가 장황하고 이해하기 어렵다고 생각할때, Simple 하면서도, 가려운 부분을 긁어주는 Feature 가 있는 언어를 만났을때 이다. 특히 그러한 언어를 처음 사용할때에는 하루종일 감탄을 하면서 시간을 보내게 된다. 이것이 특정 프로그래밍 ..
[고찰] 함수형 미신 글을 읽기에 앞서서, 나는 딱히 FP 를 잘하는것도 아니며, FP 만이 이 세상의 유일한 해결법이라고 생각하지 않는다, OOP 에 대한 모든 이해를 한 마스터도 아니다. 단지 패러다임에 관한 다른사람들의 글을 봣을때, FP의 난이도에 대한 많은 비난(...?)을 보고 느낀점을 쓴것뿐이다. 모나드, 재귀, 일급함수, 파이프, 순수함수, 수학적 함수, 불변 기타등등... 함수형 패러다임이라는것을 처음접했을때, 머리가 지끈거리는 단어들이 생각이 난다. 반면 OOP 의 경우는 우리가 친숙한 for문, if 문, while 문, 변수, 패턴, SOLID .. 우리가 친숙하고 이해할수있는 단어들만 생각이난다. 그래서 다음과 같은 결론이 나온다. OOP 는 인간이 생각하는 방식을 그대로 사용해서 배우기 쉽고 실용적인..
[고찰] 프로그래밍 통찰력 (Programming Insight) 요즈음 개발에대한 수요가 급증하고, 프론트 백 할것없이 기술 수준이 나날히 높아지고, 채용시장에서 요구하는 기술스펙이 다양해지고 있다. 취업을 대비하여 거의 모든 부트캠프들이 리엑트나 스프링을 가르치고, 이 기술이 아닌 기술을 공부하는것은 취업에 도움도 안되는것에 시간을 쏟는 멍청이. 블라인드 같은데서는 쿠버니타스정도는 백엔드의 기본 소양이고, MSA 가 아닌 아키텍쳐는 구 시대의 다루기도 힘든 레거시 코드취급에 서비스회사가 아닌 SI 업계는 배울것 하나없는 개발자의 무덤 솔직히 말해서 나는 요즘에 저런 기술 중심의 메타나, 서비스 기업에서 사용하는 기술만이 온 세상의 중심인거처럼 생각하는것이 마음에 들지 않는다. 왜냐하면 기술은 결국 취사 선택의 문제 이기 떄문이다. 그래서 그게 뭐가 그리 잘났는데? ..
[질문과 답변] 프록시 패턴이 뭐예요? / Spring 어노테이션과 Python 데코레이터 매번 카톡으로만 답해주기 아까워서 정리하는 컨텐츠 140% 뇌피셜 (뇌피셜 주도개발) [백후배] 프록시패턴좀 알려줘요 [백후배] 봐도 이해가 안되네 프록시쓰면 프록시 패턴임 [백후배] 왜 굳이 [백후배] 저런짓을해요 AOP때 쓴다고 나오네 [백후배] 근데 aop구현에 쓰는데 [백후배] aop랑 연관성이 이해가 안가요 원래꺼 기능 냅두고 샤바샤바 하고싶잖아 [백후배] 하 ㅠ 데코레이터 패턴은 뭔지아냐 [백후배] 아뇨 ㅠ 안히 AOP가 머여 관점지향프로그래밍이자너 이건 존나 거창하게 AOP 라고 지어놨는데 사실 OOP 나 FP 처럼 뭐 있는게 아니라 걍 방법론이여 [백후배] 그쵸 [백후배] 그 예시를 그거 봤거든 [백후배] 메소드 처음 끝 시간 기록해서 메소드별 실행시간 알고싶은데 [백후배] 모든 메소드에 ..