난 파이썬이 내 첫 언어였다.
개좢밥시절에는 타입이 있는 c, java에서 타입이 주는 이점을 못랐기 때문에 그것이 거추장스럽고 불편하게만 느껴졌다. 타입이 주는 이점과 안정성에 대해서 깊게 생각해본 적이 없는 것 같다.
지금도 좢밥이긴 마찬가지지만, 개좢밥은 면했다고 자위하고 있는 지금 시점에서 다시 이걸 생각해보자면... 지금은 오히려 타입이 있는 것이 편하고 맘이 놓인다. 이렇게 생각하게 된 이유에 대해 생각해봤는데 크게 봐서는 아래 두가지 인 듯 싶다.
1. Control flow 레벨에서 IDE 도움을 받을 수 있다.
2. 컴파일 타임에 문제를 인식할 수 있다.
자동완성이야 뭐 네임스페이스만 읽을 수 있으면, 파이썬에서도 잘 되는 것 같다. 그런데, 플로우를 읽어서 reachable한 코드인지 아닌지 등을 판단해주는 건 타입이 있는 언어에서만 가능할 것이라고 생각한다. 나도 이 부분은 자세한 디테일은 모르니까 아는 사람 있으면 댓달아주면 땡큐.
두번째는 컴파일 타임에 문제를 알 수 있다는 점인데, js나 python같은 언어는 이런게 built-in이 아니다. 30분 동안 데이터를 읽어서 돌아가야하는 코든데, 30분 후에 데이터를 다 읽고 오타나서 틀린 경우들이 IDE를 쓰면서도 간간히 발생한다. 코드가 돌기 전에 컴파일러랑 싸우는 거랑 코드가 돌고나서 고치는 거랑은 천지차이라는 생각이 든다.
인터프리터 기반 언어의 디버깅도 경험하다보면 그것만의 짬과 기술이 있다는 것을 배우게 된다. 이것도 뭐 하다보면 늘긴하는 거 같긴하다. 근데... 결론적으로 코딩의 편의성 측면에서는 타입이 있는 것이 훨 편하다고 생각한다.
개좢밥시절에는 타입이 있는 c, java에서 타입이 주는 이점을 못랐기 때문에 그것이 거추장스럽고 불편하게만 느껴졌다. 타입이 주는 이점과 안정성에 대해서 깊게 생각해본 적이 없는 것 같다.
지금도 좢밥이긴 마찬가지지만, 개좢밥은 면했다고 자위하고 있는 지금 시점에서 다시 이걸 생각해보자면... 지금은 오히려 타입이 있는 것이 편하고 맘이 놓인다. 이렇게 생각하게 된 이유에 대해 생각해봤는데 크게 봐서는 아래 두가지 인 듯 싶다.
1. Control flow 레벨에서 IDE 도움을 받을 수 있다.
2. 컴파일 타임에 문제를 인식할 수 있다.
자동완성이야 뭐 네임스페이스만 읽을 수 있으면, 파이썬에서도 잘 되는 것 같다. 그런데, 플로우를 읽어서 reachable한 코드인지 아닌지 등을 판단해주는 건 타입이 있는 언어에서만 가능할 것이라고 생각한다. 나도 이 부분은 자세한 디테일은 모르니까 아는 사람 있으면 댓달아주면 땡큐.
두번째는 컴파일 타임에 문제를 알 수 있다는 점인데, js나 python같은 언어는 이런게 built-in이 아니다. 30분 동안 데이터를 읽어서 돌아가야하는 코든데, 30분 후에 데이터를 다 읽고 오타나서 틀린 경우들이 IDE를 쓰면서도 간간히 발생한다. 코드가 돌기 전에 컴파일러랑 싸우는 거랑 코드가 돌고나서 고치는 거랑은 천지차이라는 생각이 든다.
인터프리터 기반 언어의 디버깅도 경험하다보면 그것만의 짬과 기술이 있다는 것을 배우게 된다. 이것도 뭐 하다보면 늘긴하는 거 같긴하다. 근데... 결론적으로 코딩의 편의성 측면에서는 타입이 있는 것이 훨 편하다고 생각한다.
난 타입 없는게 편하더라
타입없으면 코드읽기 개힘들거 같은데
정적타입이 버그 줄이는데 도움을 주지 않는다는거 이미 결론난거나 마찬가지. github 통계보니 오히려 정적타입 언어들만 버그가 졸라 많음. 특히 자바.
IDE로 다양한 도움을 받을 수 있는건 정적타입. 간결, 생산성, 흥미유지는 동적타입이라고 밥마틴과 마틴 파울러가 그렇게 말함.. 버그를 원천적으로 줄이는건 TDD고, 타입별 통계에선 버그가 훨씬 적게 나오는건 동적타입. 읽기 힘들다는건 primitive에 익숙해서 그럼. 객체수준에서 추론하는건 거기서 거기.