날코딩

IDE는 장식일 뿐

프로그램 개발자들의 은어. 프로그래밍에 도움이 되는 개발도구를 거의 사용하지 않고 오직 텍스트 에디터로만 프로그래밍을 만드는 행위를 말한다. '날'자가 들어갔다고 해서 날로 먹는 코딩이란 의미가 아니다 반대말통합 개발 환경을 포괄하는 WYSIWYG.

주로 웹개발 하는쪽에서 날코딩을 하는 사람들이 많은데, 웹개발의 특성상 수많은 언어들을 사용하게 된다. HTML, CSS, JavaScript는 기본에 PHP, JSP, ASP등의 서버 사이드 스크립트와 각종 템플릿 문법, 거기다 DB쿼리를 위한 SQL, 데이터 교환 포맷으로는 XMLJSON을 사용한다. 이게 현업 레벨의 웹 개발에서 요구하는 사실상의 최소다. 이걸 전부 다 통합적으로 지원하는 IDE이클립스정도를 제외하면 거의 없고 그나마도 저것들이 한 파일 안에 다 섞여 있는 경우가 많아 IDE도 헷갈려한다. 이런 상황이니 그냥 텍스트 에디터를 써 버리는 것이다.

어느정도 프로그래밍에 익숙해지면 개발툴보다 날코딩이 더 빠르고 편해서 이쪽을 택하는 경우도 있다. Java의 경우 UI를 만들때 적당한 개발툴이 없다보니 역시 날코딩으로 UI를 만든다.사실 넷빈즈에서 지원해준다. 고로 넷빈즈를 사용하자 이클립스 플러그인으로 비주얼 스튜디오처럼 UI를 그릴수 있도록 해주는 물건도 있지만 쓰기 불편하고 비주얼 스튜디오에 비하면 불친절하거나 귀찮은 부분들이 많다. 더불어 개인이나 서드 파티에서 만드는 플러그인이라 불안정한 요소도 있고 하여 조금 익숙해지고 나면 코드를 직접 타이핑쳐서 해결하는 경우가 많다.

이러한 요소들 외에도 개발툴에서 제공하는 UI 기능을 사용할 때 자동으로 생성해주는 코드가 거지같아서 마음에 안든다는 이유, 개발툴에서 제공하는 소스코드 자동 들여쓰기가 마음에 안든다는 이유 등으로 개발툴은 대충 클래스나 사용할 메소드 틀을 잡는데 쓰거나 아예 컴파일 돌릴 때만 쓰고, 코드 작성은 날코딩하는게 더 편하다는 이유로 텍스트 에디터만 고집하는 사람들도 제법 있다. 코드 작성은 vim/Emacs으로, 컴파일은 gcc와 Makefile로, 디버깅은 로그 찍거나 gdb로 하는 경우가 일반적.

메모장은 말 그대로 텍스트를 메모하는 용도이기 때문에 날코딩을 하기에 좋은 툴은 아니다. 그 때문에 변수나 메소드 등에 색깔을 넣어 예쁘게 꾸며주고, 함수의 영역을 표현해주거나 여는 괄호와 닫는 괄호 등의 위치를 파악할 수 있게 알려주는 텍스트 에디터들을 애용한다. 대표적으로 윈도우 환경에서는 EditPlus나 UltraEdit 등이 있다. 만약 비주얼 스튜디오를 사용한다면 Visual Assist라는 탁월한 도구를 사용할수 있다. 물론 이런 거 쓸 상황이 안되면 닥치고 메모장

Notepad++(메모장++) 이라는 오픈소스 에디터도 있다. 이름이 메모장같다고 기능도 메모장같을거라 생각하지 마라. 유닉스 환경에서는 vimEmacs라는 탁월한 에디터계의 2강이 있다. 리눅스 데스크톱 환경에서는 저것보다 더 좋은 에디터를 쓸 수 있다. 맥 환경에서는 XCODE라는 종결자가 있고. 그리고 상용 프로그램인 서브라임 텍스트도 있다.

대학교에서 컴퓨터공학을 배울 때 본의 아니게 개발툴없이 날코딩을 하게 되는 경우가 있다. 바로 유닉스를 배울 때 쓰는 vi 에디터. 윈도우즈 환경의 다양한 개발툴에만 적응되어 있는 사람들은 십중팔구 버벅거리거나 헤맨다. [1] 물론 요즘은 세상이 좋아져서 유닉스 환경에서도 쓸 수 있는 좋은 IDE가 나와있기는 하지만, 별 수 없이 vi 에디터를 써야 할 상황 역시 굉장히 많다. 게다가 익숙해지면 CLI 환경에서 쓰는 에디터 중 vim만큼 강력한 것도 없다. Emacs는 인터프리터니 제외 너무 익숙해진 나머지 윈도우에다가 gVIM을 깔아서 쓰기도 한다.

Emacs는 날코딩인것 같지만 그렇지도 않기도 하다.
vim도 빔덕후들이 덕지덕지 플러그인 붙여놓은거 보면 이게 에디턴지 IDE인지 구분할 수 없다

마지막으로, 프로그래밍을 배우는 사람은 날코딩에서 시작해야 한다. IDE기능에 의존하다보면 나중에 코드에 문제가 생겼을 때 디버깅을 못 한다. 최악의 경우에는 원래대로 되돌리지도 못한다! Java같은 경우에는 날코딩으로 짜면 프로그래머의 생산성이 열 배 정도 저하되긴 하지만(기본적으로 언어가 너무 장황하다) 입문서 하나 졸업할 때까지만이라도 그냥 텍스트 에디터를 사용해 코딩해봐야 한다. C/Unix 환경은 전통적으로 vimemacs 같은 에디터로 코딩하고 빌드 스크립트 짜는 동네고, Python은 간결한 언어라 날코딩을 해도 크게 생산성이 떨어지지 않아서 현업에서도 vim으로 프로덕션 코드를 짜는 사람도 있다. 이 경우 오타 대비로 pylint 세팅은 기본적으로 갖고 있다.
  1. vi에디터와 일반적인 윈도우에서의 키보드 기능은 대단히 상이하다.