C++ 언어에 대한 유감

프로그래밍/C++ 2008/03/05 21:52
참으로 신기하게도 그 수많은 언어들 중에 C++만 유독 공격(?)을 당한다는 것은
이상한 일이라 생각된다.

수많은 개발자 커뮤니티에 심심치 않게 올라오는 C++에 대한 글은 수년 전이나
지금이나 변하지 않고 있다.

그때마다 C++에 대한 많은 이야기가 다시 반복되곤 한다.

그런데 왜 하필 C++인가? C++이전에도 그리고 C++이후에도 나온 언어는
많다. C#이라든지 JAVA라든지 Python이라든지 또는 이전의 C라든지 PASCAL이라든지

하지만 그 언어에 대한 이야기는 거의 이슈가 되지 못한다. 다른 언어들이
사용하는 개발자가 적어서 ?! 아니다.  C++개발자는 엄밀히 따지면 결코 JAVA나
C개발자 보다 많지 않다.

그런데 왜 C++ 이나 STL이야기만 하면 이슈가 되는가?

이것을 보면 어떤것을 느낄 수 있는가 하면 초창기부터 지금까지 C++에
대한 C++옹호자와 비옹호자의 폭팔적인 반응이 이 논쟁을 끝내지 않게 하는 것 같다.

사실 C++ 뿐만 아니라 , 다른 언어들에 대한 이야기들은 한번쯤 이야기되곤
하지만 그 이야기들은 이슈화가 되지 못한다. 아니 이슈화가 된다고 하더라도
C++에 관한 이야기 만큼  반응이 일어나지 않는다.

그렇다면 왜 C++만 유달리 그러한 반응이 일어나는가?

이것이 참 궁금한 것중에 하나이다. C++도 그냥 프로그래머가 사용하는 하나의
언어일 뿐인데 유달리 이 언어에 대해서는 모든 글이 다 논쟁이 되는 것일까.

반대적 입장에서보면 이러한 이슈를 만들어낸다는 것은 그 만큼
C++이 거대하고 많은 기간동안 엄청나게 변해왔고 난해하기 때문이 아닐까?

누구나 어떤 프로그래머 언어든지 언어가 완벽한 언어라고 생각하지 않는다.
그런데도 불구하고 대부분의 커뮤니티에서
C++에 대한 결점을 이야기 하는 것은 마치 불을 들고 기름에 뛰어드는것과
같다. 이것은 정말 신기한 현상이다.

왜냐면 우리 프로그래머는 그때 그때 언어를 선택해왔고 앞으로도 그럴것이다.

예를 들어 나는 처음 배운언어는 BASIC이었다. 그리고 이내 COBOL과
FORTRAN을 배웠으며 FORTRAN같은 경우는 FORTRAN4에서 FORTRAN77로
넘어왔다. 왜냐면 FORTRAN4보다 FORTRAN77이 훨씬 더 편리해졌기
때문이었다. 여러가지로 편리해졌기 때문에 옮겨왔다 FORTRAN77로는
프로그래밍 알바를 할정도로 프로그램을 작성하였었다.
그리고 PASCAL을 접했으며 파스칼에 매료된 나는 당연히 한참동안 PASCAL
프로그래밍을 하였다. C를 접한 이후에도 한참동안 파스칼을 애용했다.
실제로 초장기에는 볼랜드사의 컴파일러씨리즈 Turbo Pascal은 C보다
훨씬 성능이 좋았고 버젼도 높았었다. Turbo Pascal 4.5 는 정말 좋은
컴파일러 였다.

C는 파스칼과 엄청나게 비슷한 언어면서도 간결했다. 그러면서도 그당시에
상당한 복잡하게 느껴지는 그런풍의 언어로 기억하고 있었다.
파스칼에서 C로 옮겨가게 된 이유는 C의 좀더 low-level적인 접근성
때문이었다. 더 정확히 말하면 Unix가 C로 작성되었기 때문이었고 그런연유로
유닉스의 많은 황금같은 소스들이 C로 작성되었고 엄청난 라이브러리를
보고 나서였다.  절차적 방법론 입장에서보면 Pascal은 결코 C에 뒤쳐지는 언어가
아니지만 , 이러한 제반환경 운영체제와 엄청난 라이브러리 그리고 개발자
이런것때문에 C를 공부하고 C를 하게 되었다.

AI를 하면서 LISP를 배웠다. 데이타베이스를 하면서 SQL 4GL
군대를 가면서 미X에서 만든 XX엔진을 수정하기 위해서 다시 COBOL과
데이타베이스를 공부하였고 그리고 C++은 후배들의 프로그래밍언어 과정에 C가 빠지고
C++이 들어갔었고
C를 제외한 C++의 순수부분은 후배들과 같이 들으면서 공부하기 시작했다.

WEB이 나오면서 HTML과 자바 자바스크립트
파워빌더를 배우면서 파워빌더용스크립트 ASP JSP

WEB 초창기에 C와 C++을 모두 쓰면서 CGI를 만들기도 했을때 Perl이 나왔고
그이후로 PHP같은 강력한 스크립트 언어들이 나왔다. 그것역시 필요에 의해서
공부하게 되었다. 그 이후로도 Python , Lua , Luby , D 관심있는 언어들은
취미로 공부하게 되고 필요에 의한것은 그 편리함에 자연스럽게 쓰게 되었다.

왜냐면 프로그래밍 언어도 컴퓨터기종이나 운영체제나 우리가 쓰는 프로그램처럼
선택하는 것이기 때문이다.

프로그래머는 필요에 의해서 언어를 공부하고 또 그렇게 되가는 것이 자연스러운
것이다. 천년만년 C++만 쓰지는 않을테니 말이다.

모든 언어가 다 그렇듯이 장단점이 있는 것인데 유독 C++에 대해서는
단점을 말하기가 어려운 커뮤니티의 현상은 일반적인 인터넷의 커뮤니티의
폐쇄그룹의 현상을 보이고 있다.
(나는 이것을 팬클럽현상과 비슷하다고 생각한다.)

모두 여러가지 언어를 사용하고 있고 C나 C# JAVA Python에 대한 단점에
대한 이야기는 가능하나 , C++에 대한 단점에 대한 이야기는 수년이 지난 지금에도
조심스러워야 되는 개발자 커뮤니티의 분위기에 대해서 유감이다.

다시 말하면 조엘 온 소프트웨어에서도 '반지의제왕 팬사이트'에 관련된 글에 언급되었듯이
('우리는 모든 의견에 열려있습니다' 라는 문구에 어떤 의견 하나를 올리면
그것으로 그 커뮤니티가 강화되고 다른이견을 같는 사람은 추방되는 커뮤니티현상.)

마치 'C++에 대한 광팬이 존재하는 것 같은' 반응은 과거 C이외의 다른 언어가 나오고
C의 단점이 지적되자 C의 광팬들이 반응하는 그것과 별 다를게  없다고 생각된다.

프로그래머가 언어를 선택한다. 라는 단순한 명제를 이해한다면
이러한 것은 한번쯤 스스로 반성해 볼 필요가 있다고 생각된다.

PS.
십수년전 이야기지만 , 통신동호회에서 내가 겪었던 실제상황이다.

Basic부터 시작한 프로그래밍 그래서 basic에 대한 애착이 나름대로있다.
하지만 basic은 엄청난 언어적 단점이 존재한다. 다른 언어를 보다보면 느낄수
있다. 그러던 어느날 개발자동호회 오프에서 이야기를 하다 우연히
basic에 단점에 대해서 이야기를하게 되었다.
마침 앞에 계신분들은 운이 나쁘게도 베이직만 사용하던분들 !!.

베이직이 무엇이 나쁜지를 ...  한참 역관광을 당해야 했다. (나도 베이직 좋아하는데;;)



이유는 간단한다. 프로그래머라고 생각하지 않고 베이직 프로그래머라고
생각하기 때문이다. 그래서 자신이 쓰고 있는 베이직에 대한 이야기를
공격으로 받아들이는 것이다.

PS.2 자신이 사용하는 것에 대한 어떤 믿음이 생긴후에는 미신과 종교가
탄생한다. 한때 윈도우즈와 유닉스진영의 개발자가 정말 피 터지게 다투었던
개발자들의 광신적 행위는 결국 다른쪽을 인정하지 않는 태도에서 기인한다.

경계를 벗어나면 그 어느쪽도 자유롭다라는 것을 미처 모르고 있기 때문이고
자신도 미처 생각하지 못한 신앙이 생겼다는 것이다.

편가르기와 이데올르기의 피해는 항상 그것과 전혀 무관한 사람들을 포함하여
스스로의 자신에게  돌아온다는 것이다.

하나의 원에 금을 그어놓고 이쪽이나 저쪽에 서서 그중 둘중 하나가 옳다고
힘을 쏟는 것보다는 경계를 허물어 보는 것이 올바른 길이 아니겠는가.

하지만 이것도 하나의 작은 이야기 일뿐이다.
top

Trackback Address :: http://xevious7.com/trackback/313

  1. jacking 2008/03/06 16:18 MODIFY/DELETE REPLY

    동감합니다.

    다만 C++의 단점을 말하는 분들이 C++ 언어의 사상에 대해서 좀 이해한 후 이야기 하면 좋지 않을까 생각합니다.
    원래 C++ 이 OOP를 위해서 만들어진 언어가 아닌데 OOP 전용 언어 인것으로 생각하고 OOP에 부적합 하다고 하는 것은 좀 부적절 하지 않나 생각됩니다.

    • xevious7 2008/03/06 16:33 MODIFY/DELETE

      네 저도 무턱대고 단점을 말하는 사람은 옹호하는 사람보다
      더 나쁜 것이라고 생각합니다.

      지금의 C++은 다중패러다임 언어이지만
      원래의 C++은 C에 OOP를 추가하기 위해 개발된것입니다.
      하지만 지금 입장에서 OOP로 C++을 이야기 한다는것은
      한참 잘못된 것이라고 생각됩니다.

      문제라면 , C++도 하나의 언어이고
      런링커브가 길다라는 것 하나만으로 단점이 존재하는데
      그외에 단점이 있는데도 이러한 단점을 인정하지 않는
      C++맹신과 같은 생각이 문제라고 생각합니다.

      C시절에도 Basic시절에도 이러한 맹신이 존재했었지요.

      제가 지적하는 것은 이러한 맹신입니다.

      언어 하나만 더 써보아도 '프로그래머가 언어를 선택한다는
      사실을 알수 있을텐데 말입니다.'

      처음부터 그것을 알수 없기에 어쩌면 반복되는것도
      자연스러울수 있지만 ,GPG같은 경우 C++로 처음
      프로그래밍하는 분들이 많아서인지 특히 비회원분들의
      답글은 무조건적인 옹호가 많은 것 같습니다.

Write a comment