개발자를 미치게 하는 10가지 프로그래밍 언어

ITWorld

당연한 말이지만 소프트웨어 개발자는 프로그래밍 언어에 대한 호불호가 확고하다. 어떤 개발자가 선호하는 언어가 다른 개발자에게는 지옥인 경우도 있다. 프로그래밍을 직업으로 갖게 되면 이상한 구문, 지나친(또는 모자란) 유연성, 취약한 디버깅 기능 또는 다른 어떤 이유로 머리를 쥐어뜯게 되는 언어로 일을 해야만 하는 때가 언젠가는 온다. IT월드는 쿠오라(Quora), 스택 오버플로우(Stack Overflow), 해커 뉴스(Hacker News)와 같은 유명 포럼의 개발자 의견을 토대로 개발자들이 가장 싫어하는 10가지 언어를 선정하고 어떤 점이 프로그래머를 분노하게 하는지, 그리고 그 언어를 피하는 방법은 무엇인지 알아봤다.   editor@itworld.co.kr

10. 파이썬 특징 : 고수준의 다목적 프로그래밍 언어로 가독성을 장점으로 내세운다. 컴파일도 가능하지만 스크립팅 언어로 사용되는 경우가 많다. 공통적인 불만 : 블록 구조를 지정하는 데 대괄호나 중괄호 대신 들여쓰기를 사용, 콜론과 밑줄의 과도한 사용, 모듈/변수 이름 충돌. 평가 : “파이썬은 밑줄과 공백의 조합” - David Pollack 피하는 방법 : 구글, 야후, 나사에서 일하지 않는다.

9. 랩뷰 특징 : 랩뷰(LabVIEW: Laboratory Virtual Instrument Engineering Workbench)는 측정 및 제어 시스템에 사용되는 시각적인 데이터 흐름 프로그래밍 언어인 G를 위한 개발 환경이다. 프로그래머는 랩뷰를 사용해서 “와이어”를 통해 기능 노드를 연결하여 실행을 확인한다. 공통적인 불만 : GUI 프로그래밍 방식은 아주 단순한 작업 외의 모든 작업을 극도로 복잡하게 만든다. 평가 : “랩뷰의 추상화는 전혀 새로운 차원의 복잡성으로 귀결되며, 이는 추상화의 목적에 완전히 반하는 것이다.” - hardy263 피하는 방법 : 장비 제어(특히 실험실 장비) 또는 산업 자동화 프로그래밍 관련 직장을 피한다. 또한 아이의 레고 마인드스톰 프로젝트를 돕겠다고 나서지 않는다.

8. 자바스크립트 특징 : 넷스케이프에서 처음 개발한 인터프리트 언어로, 주로 웹 페이지에서 클라이언트 측 스크립팅 언어로 사용된다. 서버 측 웹 스크립팅과 임베디드 스크립팅 언어로도 구현됐다. 공통적인 불만 : 대/소문자 민감성, 브라우저마다 다른 구현, 디버깅 기능의 부재(파이어버그로 해결 가능), 이상한 상속 규칙. 평가 : “유별난 프로토타입 기반 상속, 모듈성의 결여, 그리고 이상한 “this” 처리 방법이 싫다.” - ladimir 피하는 방법 : 웹 개발자로 일하지 않는다.

7. Tcl 특징 : Tcl(Tool Control Language)은 임베디드 명령 언어로 개발되었지만 웹 애플리케이션, 네트워크 관리 및 테스트 자동화와 같은 분야에 사용되는 범용 스크립팅 언어로 발전했다. 공통적인 불만 : 구문이 너무 단순하다. 포인터가 없으므로 참조로 전달할 방법이 없다. 배열이 문자열로 저장된다. 목록 의미론(semantics)에 취약하고, 변수 범위 지정이 혼란스럽다. 평가 : “…오실로스코프와 파워 서플라이를 제어하는 용도로는 충분했지만, 결코 실험실 밖으로 나와서는 안 되는 언어다.” - Monica Anderson 피하는 방법 : 시스코, AOL 또는 CNET이나 기타 AOLserver 또는 OpenACS 플랫폼을 사용하는 곳에 취직하지 않는다.

6. 코볼 특징 : 1959년에 처음 설계되었으며 주로 비즈니스 애플리케이션과 정부 관리 기능을 지원하도록 만들어진 코볼(COBOL: COmmon Business-Oriented Language) 레거시 시스템은 지금도 여전히 널리 사용되고 있다. 공통적인 불만: 극히 장황한 구문(프로그래머가 아닌 사람이 읽을 수 있는 언어를 목적으로 만들어짐), 버전간 비호환성, 코볼 2002 이전에는 객체 지향 프로그래밍과 함수, 포인터를 지원하지 않음 평가 : “코볼은 아름답고 정교한 바로크 양식의, 끔찍한 언어다.” - John Pirie 피하는 방법 : 정부, 금융 서비스 또는 군대에서 일하지 않는다.

5. C++ 특징 : C의 확장으로 개발된 중간 수준 언어로, 객체 지향 프로그래밍을 지원한다. 지금도 가장 인기 있는 언어 중 하나이며 광범위한 시스템과 애플리케이션에 사용된다. 공통적인 불만 : 지나치게 많은 기능, 수동 메모리 관리, 느린 컴파일 속도, 프로그래머가 같은 프로그램 내에서 객체 지향과 절차적 코드 사이를 전환할 수 있다는 점. 평가 : “C++를 사용하는 모든 조직은 C++의 하위 집합만 사용한다. 제정신을 가진 사람이라면 C++의 모든 부분을 허용하는 코딩 기준을 둔다는 것은 상상할 수 없기 때문이다.” - cletus 피하는 방법: 어도비, 구글, 또는 게임 업계에서 일하지 않는다.

4. PHP 특징 : 동적으로 HTML 페이지를 생성하기 위해 서버 측 스크립팅에 주로 사용되는 인터프리트 언어다. 또한 많은 운영체제에서 독립형 스크립팅 언어로도 사용할 수 있다. 공통적인 불만 : 많은 함수에 대한 일관성 없는 명명 규칙, 보안 결함, 유니코드에 대한 네이티브 지원 결여, 프레젠테이션 코드(예: HTML, CSS)와 섞이는 경우가 많다는 점. 평가 : “PHP는 최악의 언어지만 계속 사용할 수밖에 없다.” - ojrac 피하는 방법: 웹 기반 작업을 한다면 피할 방법이 별로 없다. 그러나 우선 페이스북에서 일하지 않고 위키미디어, 워드프레스, 줌라, 드루팔과도 거리를 둔다.

3. 자바 특징 : 원래는 인터랙티브 텔레비전용으로 개발된 객체 지향 언어이며 현재 가장 널리 사용되는 프로그래밍 언어 중 하나다. 자바 코드는 바이트코드로 컴파일되며, 바이트코드는 각 플랫폼별 자바 가상 머신에 의해 인터프리트된다. 즉, 자바 프로그램은 “한 번 작성하면 어디서나 실행할 수 있다.” 공통적인 불만 : 구문이 너무 장황하다. 느리다. 함수를 전달하기가 쉽지 않다. API가 필요 이상으로 복잡하다(같은 기능을 다른 언어에서는 더 효율적으로 할 수 있음). 평가 : “가장 선호하지 않는 언어는 지나치게 투박한 자바다. 작업 하나를 완료하는 데 너무 많은 확장과 쓸데없는 노동이 필요하다.” - herb 피하는 방법 : 안드로이드 SDK를 사용하여 앱을 개발하지 않는다.

2. 펄 특징 : 고수준의 다목적 인터프리트 언어로 “스위스 군용 칼”, “인터넷의 강력 접착 테이프”로 통한다. 펄은 CGI 스크립팅부터 시스템 및 네트워크 관리에 이르기까지 모든 분야에 사용된다. 공통적인 불만 : 펄에 대한 가장 큰 비판은 작업을 수행하는 방법이 너무 많다는 것이다. 얼만큼 많은가 하면 사실상 쓰기 전용 언어라는 말이 있을 정도다. 즉, 펄 코드는 읽기가 불가능하다는 뜻이다(따라서 유지 보수도 불가능함). 평가 : “작업을 실행하는 방법이 너무 많아서 다른 사람들이 코드를 읽기가 거의 불가능하며 가장 단순한 구문조차 횡설수설처럼 보인다.” - Ian Peters-Campbell 피하는 방법 : 프로그래머가 되지 않는다.

1. 비주얼 베이직 특징 : 그래픽 사용자 인터페이스를 사용해 윈도우 애플리케이션을 개발하는 데 주로 사용되는 프로그래밍 언어이자 통합 개발 환경이다. 마이크로소프트가 초보자도 쉽게 사용할 수 있는 언어를 목적으로 만든 언어로, 그래픽과 드래그 앤 드롭, 코드 작성을 조합하여 애플리케이션을 구축한다. 공통적인 불만 : 구문이 너무 장황하고 이상하다. 실행하려면 동적 링크 라이브러리가 필요하다. 객체 지향 프로그래밍 지원이 부족하다. 1998년 이후 마이크로소프트의 공식 지원이 없다. 평가 : “어떠한 프로그래밍 규칙에도 맞지 않는 그 아리송한 구문을 이해할 수 없다.” - Checksum 피하는 방법 : 2008년 이전에 만들어진 윈도우 애플리케이션을 사용하는 회사에 취직하지 않는다.