오늘은 조금 이슈와 되는 이야기에 대해 해보자한다.
지금 프론트엔드의 개발환경은 바야흐로 대 타입스크립트의 시대이다. 고품질의 프레임워크 중 일부는 타입스크립트를
강제하며 기업들의 요구사항에도 타입스크립트의 사용 경험을 요구하는곳이 늘고있다.
실제로 몇번의 타입스크립트 사용도 해보았다. 이것이 제공하는 이점은 이미 인터넷에 널리고 널렸지만
오늘은 반대의 사례를 한번 보고 왜 그런일이 일어났는지를 고찰해보자
Turbo8의 타입스크립트 드랍
Turbo8에 대해 생소하다는 사람이 있겠지만 뒤의 말이 핵심이다 Turbo8의 개발자 DAVID HEINEMEIER HANSSON
이라는 사람이 타입 스크립트를 드랍하고 모두 javascript로 통일하겠단다.
문제는 이 사람이 나름의 커리어를 가진 사람이라는것이다.
루비온 레일즈의 프레임워크 개발자 창시자 중 한명이다(이하 데이비드). 이런 인지도 있는자가 왜 그런짓을 한것일까?
추가적으로 레딧과 포럼에서는 그의 행동이 오픈소스에 기여한 개발자들을 무시하는 처사라 비난하고 있으며
그가 타입스크립트의 어떤 부분이 싫은지 명확하게 설명하지 않고 있다며 그를 비꼬고 있다
(덤으로 turbo8의 PR창은 난리났다. 이런식으로 기여자들을 무시하는 처사는 처음이다 바보같은 짓이다.
이렇게 할꺼였으면 TSDoc을 활용해 타입에 대한 가이드라도 있어야했다. 등등..
재미있는건 옹호하는댓글도 상당수있으며 잘된 결정이라 해주는 사람도 있다.
시간이 있으면 보러가보자)
화자는 그러한 부분을 제하고 그가 블로그에 남긴 글들과 그리고 실제 개발자들이 느끼는 부분
그리고 화자의 사견을 덧붙여 글을 작성하도록 하겠다.
(아래 내용은 데이비드의 블로그 내용 중 일부를 한글로 번역하여 가져왔다)
타입 스크립트는 쉬운 일을 어렵게 만듭니다. 어려움이 닥치면 아무거나(any)라고 하게 되죠
그런건 사양하겠습니다.
데이비드의 타입스크립트에 관한 글들 중 가장 인상적인 부분이자 타입스크립트를 사용하며 느낀 첫부분인것 같다.
타입스크립트의 분명한 단점이다. 그의 관점은 짧고 간결해야할 작성을 타입을 명시하고 정하는 행위가 어려운
일이라 표현하고 있다. 이것은 틀린말이 아니다. 물론 누군가는 그렇게 어려운 일이 아니라는 논리를 펼치겠지만
우린 그가 루비 온 레일즈라는 프로그래밍 역사에 기록될 뛰어난 프레임워크의 개발자 중 한명이라는 사실을
기억해야한다. 권위에 기대는것이 아니라 그렇게 생각하는 이유는 다음 문단을 보며 알수있다.
우리가 브라우저에 실행되는것이 Typescript가 아니라 Javascript를 실행한다는 사실을 받아드려야합니다.
그렇기 때문에 어떠한 도구나 타이핑 없이 코드를 쓸수있다는 그 상황이 축복인것입니다.
그의 논지는 웹에서 작동되는 언어는 타입스크립트가 아니라 자바스크립트이며 그러한 사실을 인정하고 그것이
흔히들 이야기하는 스펙임을 깔고 가야한다는것이다. 그는 실제로 타입스크립트를 제거하는 코드가 담긴
형상을 turbo8로 병합하면서 코드의 간결성,직관성이 훨씬 좋아졌다는 코멘트로 남겼다.
포럼에서 타입스크립트를 싫어하는 이유를 정리해보았다.
1. 코드를 짜는 시간보다 TS 완벽한 타입체크를 하는데 더 많은 시간들 들여야한다.
2. 지원하지않는 외부 라이브러리들이 존재한다.
3. 자바스크립트는 애초에 C++,java 같은 강타입 언어들의 패러다임을 벗어나고자 나온 약타입언어다. 그렇기에
일정 부분 유연성을 주어야한다.
4. TS는 coffescript,backbone 같은것처럼 언젠간 없어지겠지만 JS는 그렇지않다.
5. 브라우저의 디버깅이 훨씬 더 어렵다.
6. 빌드 프로세스가 복잡해진다.
7. 새로운 개발자나 후임자가 배우기 어렵다.
아래는 레딧에서 타입스크립트에 관한 글중 최고 표를 받은 댓글 내용 중 일부이다.
Q1. 타입스크립트를 좋아하시나요 싫어하시나요?
A1. 나는 그 언어를 싫어한다. 나쁘진 않지만 필요하지 않을뿐이다. 대규모의 프로젝트를 진행할때도
오류추적이 그렇게 복잡했던적이 없다. 정작 그 언어가 가진 단점은 코드를 읽기 어렵게해
평생 직장을 얻게 해주는것뿐이다.
Q2. 순수한 자바스크립트를 선호하는 그 이유는 무엇입니까?
A2. 일반 JS는 읽기가 매우 쉽습니다. 대부분의 문서와 도구는 일반 JS에 다 포함되어있습니다
코드를 작성하고 웹에서 즉각적으로 결과를 확인하는 디버깅으로 충분합니다.
Q3. 타입스크립트를 사용하면 생산성이 떨어지나요?
A3. 명백합니다 느려집니다. 타입스크립트와 싸우는 시간이 더욱 더 늘어날것입니다. 모두가 타입스크립트의
생산성을 찬양하지만 실상은 그렇지 않습니다. 이상하게 타입스크립트의 생산성을 이야기할땐
초기설정와 중간설정(작은 단위의 임포트,인터페이스 추상화)의 시간을 빼고 코드를 치고
디버깅 하는 시간만 거론합니다
그러면서 자바스크립트의 생산성을 이야기할땐 마치 디버깅을 하게 되면 세상의 종말이 올것이라
디버깅에 큰일이 날것처럼 이야기합니다. 실상은 그렇지 않습니다.
모든 프로그램은 잠재적인 위험을 가지고 있습니다.
화자는 타입스크립트를 신봉하지도 그렇다고 부정하지도 않는다.
다만 일부 부정적인 의견과 긍정적인 의견을 모두 받아드린 편이다.
해줄수있는 말은 취업을 원한다면 배워야한다는것이다.