쉬운 언어는 나쁘다?


실제로 그런 사람을 만나보지는 못했지만, 프갤에 있다보면 가끔씩 이런 이야기를 듣습니다.

"C#은 악마의 언어다."

"쉬운 언어가 실력을 떨어뜨린다"


보통 이런 이야기를 하는사람들은 어떤 언어를 배울지 물어보면서 자기 선배들에게 이런 이야기를 들었다고 하더군요.

쉬운 프로그래밍 언어가 실력을 떨어뜨린다?
제가 생각하기에, 이런 말들을 하는 이유는, 프로그래밍 언어가 '왜' 존재하는가에 대한 기본적인 이해가 없어서 그런 것이라고 생각합니다.

프로그램이란? 어떤 문제를 해결하기 위한 방책입니다.

그렇다면 프로그래밍 언어란?
바로 이 문제를 표현하기 위한 '도구' 이지요.
어떠한 목표를 달성하기 위한 도구이지, 그 목표 자체가 아니라는 말입니다.

최초의 언어는 무척이나 어려웠지만, 원하는 목표를 이룰 수 있었습니다.
기계어를 이용하여 하드웨어와 소통할 수 있었지요. 하지만, 사람이 사용하기에는 너무 불편했습니다.
그래서 이를 쉽게 하기위해 어셈블리어가 탄생했습니다.

시간이 흘러 목표의 수준은 점점 높아져 갔고, 이에 따라 도구(언어)도 진화했습니다.
문제를 구조적으로 표현하기 위해 구조적 프로그래밍이 생겼고, C를 비롯하여 다양한 언어들이 나타났습니다.

오늘날 프로그래머가 처리해야 하는 문제들은 상당히 구체적이지만, 또한 상당히 추상적입니다.
과거에 비해 문제들은 점점 복잡해졌고 어떻게든 이를 단순하게 추상화시킬 필요가 있었습니다.
이러한 일련의 상황들 속에서 C++이 등장했고, Java가 등장했고, C#이 태어난 것입니다. 다시 말해, 송곳에서 드릴로, 삽에서 굴착기로 진화해 나가고 있다는 뜻입니다.
"복잡하고 추상적인 문제의 해결을 위하여" 굳이 복잡하고 쓰기 어려운 언어를 사용해서 문제의 본질에서 벗어나서는 안 될 것입니다.

"드릴은 악마의 도구다."
"쓰기 쉬운 망치가 목수 실력을 떨어뜨린다."

말도 안되는 소리입니다.

동일한 문제를 해결할 수 있다면, 좋은 프로그램은 복잡하고 긴 프로그램이 아니라, 가장 간결하고 읽기 쉬운 프로그램입니다.

by Rei | 2009/03/07 21:03 | 전산질 | 트랙백 | 덧글(15)

트랙백 주소 : http://reino.egloos.com/tb/1329886
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 천하귀남 at 2009/03/07 21:27
백번지당하신 말씀입니다. ^^

Commented by vell at 2009/03/07 22:00
쉬운 언어가 실력을 떨어트리는 것은 아니죠
실제로 굉장한 실력을 가진 사람들이 펄이나 파이썬등의
간단하고 쓰기 쉬운 언어를 선호하니까요
하지만 쉬운 언어'만' 고집하는 것은 이해도를 떨어트린다고는 생각합니다
평생 c#이나 자바만 한 사람은 그 세계안에서 갖혀 살테니까요.
아마 저런 말들이 다 이런 의미로 하는 것이라 생각합니다.
Commented by Rei at 2009/03/07 22:19
vell//물론, 저도 쉬운 언어만을 사용해야 한다는 주장은 아닙니다. 각각의 문제에는 거기에 부합하는 언어가 존재하겠지요..

하지만, 쉬운 언어를 고집하는것이 "이해도" 를 떨어뜨린다고 생각하지는 않습니다.
오히려 언어를 이해하려는 노력 없이 문제를 이해하는데 더 빨리 접근할 수 있지 않을까요?
Commented by 가이우스 at 2009/03/07 22:44
쉬운언어라도 병맛 설계면 난감하죠 그런데 c#(이라 쓰고 씨삽 이라 읽는)과
자바를 제대로 쓴다고 할 때 쉽다고만은 말못하겠던데요.
물론 단순히 쓰는 것은 c보다 쉬울지모르겠지만 본격적으로 자세히 쓰려면
역시 어느정도 기초를 쌓여야 쉽다고들 하더군요. 적어도 클래스 개념도 제대로
안잡힌 사람이 쉬워염~ 하고 접할 수준은 아니라고 생각
Commented by Sikuru at 2009/03/08 00:12
C와 C# 둘다 해보면, C# 이 그렇게 쉬운 언어만은 아니던데요...
간단히 쓰기엔 쉬울지 몰라도 이거도 파고들면 밑도끝도 없던데 말이에요...
Commented by 천하귀남 at 2009/03/08 00:30
기본적으로 언어의 방향 자체가 쉬워질수 밖에는 없습니다.
개발해야되는 양은 늘어나는데 이걸 복잡한 구닥다리 언어로만 개발하는건 무리가 있습니다. 그러니 간편하고 직관적인 언어와 엄청나게 다양한 기능을 가진 프레임웍이 계속 등장하는건 당연합니다.
대장간에서 탱크를 만들려면 평생이 걸려도 만들지 말지한 법입니다.
Commented by NoSyu at 2009/03/08 00:32
반갑습니다. 밸리를 타고 왔습니다.
C++ 실습 시간을 담당한 조교와 얘기를 나누던 중 해당 Lab에서는 C#을 사용하기에 자신도 그것을 주로 쓴다고 했습니다.
이제 취업을 위해 면접을 보러 다녔는데 '주로 쓰는 언어가 무엇입니까?' 라는 질문에 'C#입니다.' 라고 하자 '피식'거림을 당했다고 하더군요.
밖에 나가서는 'C를 잘합니다.'라고 해야지 무시 당하지 않는다면서 좌절하던 모습을 보며 'C#이 왜 그리 무시 당할까?' 고민하였습니다.
아직 배워본 적이 없기에 말하기 힘들다는 점이 아쉽네요.;;;;

쉬운 언어가 실력을 떨어뜨린다라...
Perl로 이글루스 백업 프로그램을 만들면서 조금 느꼈습니다.
제가 원하는 기능은 CPAN에서 검색하면 대부분 나왔기에 Component based SE가 되는 것같아 기분이 오묘하더군요.;;;
즉, KnowHOW가 아니라 KnowWhere를 요구하는 듯하여 실력이 KnowHOW를 강조하는 것이라면 확실히 무뎌지게 하는 것이 아닌가도 싶었습니다.

결론은 적절한 문제에 적절한 언어로 적절하게 프로그래밍하여 적절하게 결과물을 기한 안에 내놓자..인 듯...;;;
Commented by 오린간 at 2009/03/08 01:02
저는 박사과정에 학생입니다.
c랑 c++과 c#과 java를 모두 하는데요,
모두 한다는 말은 실제로 4가지 다 사용해서 개발해본 경험이 있다는 겁니다.

까고 말해서 c#이 짱 좋습니다만

솔직히 왜 c#안쓰냐면
주위에서 안쓰니가 제가 못씁니다.

그런대 제가 혼자서 만드는 프로그램이면 c#을 우선적으로 꼽고요
게임만들때(종종 만듬)는 c++ 쓰죠.

사람들은 마소를 싫어하고 java가 뭐 오픈소스다 퍼블릭이다 라이센스가 어쩌고
이러는데 ...오픈이라는거도 좀 웃겨요. 라이브러리라면 어느 언어쪽에든
오픈소스로 다 있더군요.

단지 리눅스에서 c#으로 된게 .......문제니까 좀 그렇지만.
그렇다고 java는 머 도대체가 구조가 자기멋대로인거 같아서 쓰다보면 캐짜증 ㄱ-

결국 돈되는 프로젝트는 c++로 짜는 중입니다. orz

요약하면 다 할줄알면 된다 이거................아이고 ;ㅁ;
Commented by 승네군 at 2009/03/08 02:44
...c# 훨씬 어려울거 같은데.. 아닌가요? 거 뭐냐... 문법에 쓰이는 단어들(...)도 상당히 많아졌구요. 게다가 c#이니 자바니 하는거 (제대로)하려면 디자인 패턴이니 뭐니도 알아야 하고... 머리가 터져나갈거 같은데요.. 안그런가요?

오히려 언어적으로만 보면 c가 훨씬 쉽지 않나요? (솔직히 c++은 언어적으로나 다루는걸로나 최고로 어려워보임...T^T)다만.. 메모리 관리하는게 사람 쳐돌게 해서 그렇지..T^T

어셈은 접하지 않아서 어려운듯 하기도 하고요.. (뭐, 사실 cpu적으로 사고해야 한다는게 제일 문제입니다만...T^T)

덧, 리눅스에서는 C#을 '모노'프로젝트 라는걸로 (커뮤니티가)지원해 줍니다. (그래도 꽤 잘 돌아간다고 알고 있습니다. 커뮤니티에서 XNA나 실버라이트까지 지원하려고 발버둥 치고 있죠..)
Commented by ydhoney at 2009/03/08 05:21
사용성의 문제가 아니라 일종의 초보자가 올바른 방향으로 언어를 학습하는데 있어서 "나쁘다" 는 개념으로 사용하고 있다고 생각합니다. 이를테면 무슨 언어를 하냐고 물었는데 VB를 한다 라고 하면 그냥 gui로 깨작대는거나 하지 하드웨어 분야라거나 혹은 좀 더 세세한 부분까지 컨트롤하는 로우레벨한 부분은 해 본적이 없겠지? 라고 지레짐작하게 되는거죠. 뭐 어쨌거나 그런 측면이 강하지 않나 하는 생각입니다.
Commented by ㅇㅇ at 2009/03/08 09:15
c, java, c++, c#
기본적으로 알아야 되지 않나요? 컴공과 학사정도면 저 순서로 다 배우게 되는게 당연한건데. 도구인거 맞는말이고요. 결국 코딩실력이란 도구가 문제가 아니라 도구를 잘 다루는 능력(알고리즘, 경험, 직관력, 검색력)인듯 싶네요.
Commented by 에로에로 at 2009/03/08 15:43
검색 해본뒤 소스 없어서 못짜겠다고 말하는 사람들 보면 대강 사이즈 나옴^^
Commented by 오린간 at 2009/03/08 18:04
여기서 어렵고 쉽다의 정의가 모호해서 몇몇 분들이 혼돈하시는것 같은데요,
c#이 쉽다는 것은, 배우기 쉽다는것 보다 사용하기 쉽다는 겁니다.

c#을 사용해서 gui도 간편하며 주어지는 기본라이브러리의 구조도 훌륭하며
속도도 썩 괜찮은 편이고 스레드세이프나 누수메모리로 부터 안전하게 짜는것이
쉽죠. 여러 방면에서 프로그래머를 편하게 하고 프로젝트를 안전하게 해주죠.
Commented by 친절한 라니씨 at 2009/03/08 21:27
벨리에서 들렀습니다. 저는 학부시절 교수님의 권유로 C++을 안 거치고 바로 C#으로 객체지향 개념을 익혔는데요.. 얼마전 면접을 보러 갔는데 C#을 주로 공부했다고 하니 정말로 "피식" 하더군요.
Commented by 달바람 at 2009/07/30 11:58
사용하기 쉬운 언어라는 것은 "사람"이 사용하기 쉽다는 것입니다. 실제 그 사용하기 쉬운 환경을 만들어 주기 위해서 "컴퓨터"는 열심히 일을 하죠. 사용하기 쉽지 않은 언어는 그 컴퓨터가 하는 작업을 사람이 직접해 주게 됩니다.
배우는 학생의 입장이라면 당연히 그 컴퓨터가 하는 작업이 무슨 작업인지 알아야 하고 배워야 하겠죠.
프로젝트를 진행하는 실무 입장이라면 당연히 프로젝트의 규모/유지보수/기간 등을 고려해서 가장 적합한 언어를 사용합니다.

또 적합한 예가 자동차를 예로 들어 수동을 운전할 줄 아는 사람은 자동도 잘 몰 수 있지만 자동으로 배운 사람은 수동을 모는 것은 힘들겠죠?
뭐 마트정도 왔다갔다하는 사람이라면 굳이 수동을 운전할 줄 몰라도 되겠지만,
운전으로 밥벌어 먹으려는 대리기사라면 수동으로 운전을 배워야 할까요? 자동으로 운전을 배워야 할까요? ^^

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶