엑스코드야 이러지마

요새 나를 괴롭히고 있는 악마들에 대해 좀 투덜거려야겠다.

프로그래밍 언어에 대한 인상은 표준, 문법, 패러다임, 기본 라이브러리, 커뮤니티 등 여러가지에 영향을 받는다. 아직 잘 모르는 언어를 배울 때에는 내가 알고 있는 추상화 개념이 어떻게 표현되어 있는가, 내가 모르는 어떤 추상화를 가지고 있는가, 어떤 플랫폼에서 동작하는가 등을 주로 본다. … …

나는 지금까지 프로그래밍 언어에 대한 평가에 “에디터” 를 넣은 적이 없다. 코드를 편집하는 에디터는 프로그래밍 언어와는 별개의 것이라고 생각해왔기 때문이다. 그런데 요새 Xcode 위에서 swift 코드를 계속 만지다 보니 지배적인 IDE 도 프로그래밍 언어에 대한 인상에 영향을 주겠거니 싶은 생각이 든다. 특히 부정적인 쪽으로 그렇다. 정확히는 평가의 대상이 “언어” 만 되어서는 의미가 없고, “언어의 구현체”가 되어야 실질적인 의미를 가지겠다는 쪽으로 넘어가고 있다.

IDE는 코드의 편집과 실행, 디버깅을 할 수 있는 환경이다. Swift는 현재 Xcode 를 벗어나면 거의 의미없는 물건이다. 기본 라이브러리를 가볍게 가져가고, 상당수의 기능을 기존 objc 라이브러리의 바인딩으로 해결했는데, 그래서 기존 objc 에서 사용하던 프레임웍라이브러리의 상당수를 그대로 쓸 수 있는 반면 다른 플랫폼에는 제대로 쓸만한 구현체가 나타나기 힘들어 보인다. 말하자면 Xcode가 환경을 독점하고 있는 상황이다. (터미널에서 코드를 만들 수도 있긴 하지만) 그런데 …

  1. 자동완성 혹은 문법 강조를 위한 연산 중 Xcode 가 크래시 - 하루에 수회 이상
  2. 내가 오늘 걸은 걸음수보다 Source kit 크래시가 더 많음
  3. Swift 컴파일러가 segmentation fault 내고 죽음
  4. Xcode 가 멀쩡히 에디터에서 수정하고 있는 파일이 없다며 팝업을 무한히 띄우며 종료도 안해줌 - Cmd+Q 에 버팀
  5. 런타임 에러가 났을때 디버거가 에러난 위치를 제대로 못찾고 엉뚱한 라인을 가리킴
  6. Bridging header가 objc 인터페이스 가져오다가 정의안된 타입이 나오면 에러 안내고 조용히 건너뜀

이것 외에도 정작 필요해서 쓰고 싶은 모듈 일부는 바인딩이 매우 어려운 상황이라거나-NSDictionary를 스위프트에서 서브클래싱 해보신분?- AnyObject의 향연이 펼쳐지며 이게 typed language 라는 사실을 잊게 된다거나, 사실상 exclamation(!)이 거의 대부분 타입에 다 붙고 만다거나 하는 사소한 문제들이 있다. 디버거(lldb)에서 변수 값 찍어보기(p)도 매우 제한적이다.

그래도 objc만으로 작업을 하는 것 보다는 나을거라는 생각에는 변함이 없지만 - objc 로만 할 수 있는건 objc로 해서 가져다 쓰면 되니까 - 아직 갈 길이 멀어 보인다. 세상에 나온지 얼마 안된 언어를 본격적으로 접하면서 이런 이유로 - 구현상의 버그, 특정 패턴을 표현하기 힘듬, 성능, 라이브러리 빈약 등이 아니라 IDE 로 이렇게 시달리는건 처음이다.


내가 그나마 가장 손에 익은 언어는 C++ 과 파이썬이다. 그래서 이 반동으로 http://kivy.org/ 를 보고 있다. 회사에선 못쓰겠지만 그냥 혼자 놀땐 뭘로 하건 무슨 상관이람. 파이썬 사랑해. ㅠㅜ

Comments