2021년 12월 20일 월요일

[리뷰] 자바스크립트 디자인 패턴

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788960778856

객체지향 프로그래밍

GoF패턴을 자바스크립트로 설명한다. 그렇기에 '이게 뭐야? 뭐 이런거에 이름을 붙여서까지 해서 사용해야해?' 라는 생각이 들게 만든다. 자바를 사용한 사람에게는 꽤나 중요한 패턴들이지만, 자바스크립트로 그 패턴을 어거지로 표현하려다보니 색다르면서 몇몇 패턴들은 자바스크립트에서는 쓰지 않겠다 라는 생각을 했다.

함수형 프로그래밍

GoF 패턴을 설명한 후, 함수형 프로그래밍을 간단하게 소개한다. 확실히 자바스크립트의 특성상 함수형 프로그래밍이 좀 더 깔끔하다는 느낌이 든다.

이후 패턴들

이후 설명하는 모델 뷰 패턴, 웹 패턴은 별로였다. 사실 GoF 설명 이후부터는 대충 페이지 크기를 부풀리기용처럼 보일정도다.

하지만 가장 마지막에 고급패턴이라고 써있는 내용은 꽤나 재밌었다.

괜찮은 책이지만 다른 명저에 비해서는 우선순위가 적은 책이라고 할 수 있다. 이 책을 보기 전에 GoF의 디자인패턴을 보지 않았다면 그 책부터 보는 것이 좋겠다.

2021년 12월 5일 일요일

기술 덜어내기

항상 덜어내야 한다고 생각했다.

가볍게 살아야 한다고 생각했다.

무언가 잘 안될 때, 항상 무엇을 더 버려야 하지? 라고 생각했다. 잠자는 시간을 버려야 하는걸까. 좋아하는 음식을 먹기를 버려야 하는 걸까? 나의 어떤 생각이 잘못되고 버려야 할까? 혹은 내가 항상 옳다고 생각했던 신념을 버려야 하는 걸까?

계속 버리다보면 거울 속에 보이는 초라한 몸뚱아리 넘어 정직한 나를 보게 된다.

덜어내기 전에

그 동안 많은 기술들을 습득하려했다.

알고리즘, 디자인패턴을 넘어서 유펭린의 집합론, OOP, 여러 고수들의 에세이, 철학, 소설, FP, 리스프, Clojure, 매크로, 유다시티의 로보틱스/블록체인 강의, nodejs와 express, golang ...

언어의 문법을 익히는 것은 너무 쉽다.

중요한 것은 왜 새로 만들어져야 하는가 라고 생각한다. IT만큼 새로운 것이 급격하게 만들어지고 사그러지는 곳은 드물다. (CoffeeScript 잘 지내니?)

go 언어에서 덜어내기

go는 그런면에서 지루한 언어이면서 새롭다. go는 심플함을 위해 신기능들을 넣지 않으려고 노력한다.

오늘 내가 이 글을 적는 가장 결정적인 동기는 바로 golang에 대한 세미나를 듣던 중 go언어 개발자의 인상깊은 Q&A답변을 들어서이다.

So what's been the biggest challenge in Go?

I'd say that, for me at least, the biggest challenge is keeping it simple.

It's always so easy to add another feature. And you can see so clearly how useful it would be to have this new facility in the language. But if we add every new facility in the language, then we get something so complicated that it's very difficult to use, like some existing languages today.

And I'd say the biggest challenge has been to say no.

언어를 만들면서 가장 힘들었던 것은 언어를 심플하게 만들기 위해 no를 말하는 것이 가장 힘든 허들이라는 점이었다는 것이다.

메인스트림의 언어들은 너도나도 할 것 없이 새로운 기능들을 추가한다. 옆 언어에서 쓰는 문법들을 추가하고 '우리도 이거 있어요~' 라고 판매한다. 이해한다. 그들이 어떻게 잘 사용하는지는 모르겠고, 모든 사람이 좋아할만한 모든 기술을 추가하는 것이다. 쓰고 안쓰고는 당신의 마음이다. 좋은 코드를 만드는 것은 오로지 당신의 선택이 좌우하는 것이다 라고 말하는 것 같다.

더글라스 크록포드의 덜어내기

더글라스 크록포드는 그의 서적 [javascript : The Good Parts] 나 최근 서적에도 소개하듯이, 좋은 기능만을 쓰고 좋지 않은 기능은 기본문법에 추가되었더라도 쓰지말라고 말한다. 쓰지 않는 것은 용기가 필요하다. 덜어내는 것은 참으로 힘들다.

추가하는 것은 때때로 힙해보이고, 여러 경험을 얻을 수 있을 것이다.

덜어내는 것은 힙하지도 않고, 경험을 얻지도 못한다. 덜어내는 것은 이미 경험한 자들 그리고 정확한 믿음이 있는 사람들의 것이다.

더 나은 코드란 무엇일까?

나의 덜어내기

나에게 더 나은 코드란, 더욱 담백하고, 덜어내고 덜어내서, 이해가 쉬운 별거 아닌 것처럼 보이는 코드이다. (사실 별거지만...)

이기능 저기능을 넣어서 오히려 복잡해보인다면 큰 문제가 있을 것이다.

최소한 새로운 기술, 범용함수 또는 매크로를 넣었다면 보기에는 쉬워보여야 한다.

별거 아닌 것처럼 보여서 '별거 아니네 이것만 고치면 되겠구만' 라고 고치고 지나갈 수 있는 코드이길 바란다.

2021년 12월 3일 금요일

Clojure를 하다가 Node.js/Express 만져보면서 느낀점.

Javascript는 참으로 특이한 언어이다. 문서를 보지 않아도 대충 보고 쓸 수 있을 정도로 직관적이다. 당연히 공식문서를 우선적으로 읽고 차근차근 문법을 익히고 개발을 진행하겠지만, 이상하게도 자바스크립트를 만질 때는 공식문서를 보지 않고, 기존 코드를 보더니 '음... 이렇게 돌아가는 거군?' 하면서 간단한 코드를 짤 수 있게 되었다. '물론 null이 Object라던가 하는 문제는 그 이후에 하나씩 알아가는 거고'

Node.js/Express를 현업에서 쓰진 않았지만 어떻게 사용하는지 궁금했다.

해서 Udacity강의를 들어보고 아래 유튜브를 보았다.


고백하자면 Clojure의 웹개발과 아주 비슷하다는 느낌을 받았다. 유튜브 강의에서 나오는 몇몇 기능은 개선을 하면 좀 더 멋지게(생산성있게) 개발할 수 있겠다는 생각도 했다.