C언어는 정말 최고의 언어인가요?

geneven의 이미지

파이썬이나 펄, 이 외에도 여러 언어들이 모두 C로 만들어진것으로 알고 있습니다. 유닉스 역시 C로 만들어져 있고요..

C언어는 앞으로 대체가 안될 정도로 훌륭한 언어인가요? 그 동안 C를 대체할 만한 언어는 개발되지 않았나요? 무엇때문에 C언어가 다른언어에 자리를 내주지 않고 이렇게 장기간 최고의 언어로 자리매김 할수 있었던건가요??

제가 저희학교 교수님께 새로 입학하는 신입생들에게 C대신 파이썬을 먼저 가르치는게 좋겠다고 했더니 코방귀를 끼시더군요.. :oops: :oops:

댓글

Genie의 이미지

C언어가 가지는 장점은 아무래도 저급언어의 효율성과 고급언어의
생산성을 어느정도 적절히 잘 섞어있는게 아닌가 하는 생각이 듭니다.
그래서 아직도 효율성이 중시되는 부분에서는 다른 언어가 대체하기
힘든게 아닌가 하는 생각이 듭니다.

또한 C언어의 장점으로 들수 있는 것은 대부분의 환경에서 사용할 수
있다는 점 입니다. 아주 열악한 임베디드 시스템의 경우도 C컴파일러가
존재한다는 것을 보면 그런 점을 알 수 있습니다. 따라서 이런 부분도
C가 인기를 얻는 이유중에 하나가 될 수 있다고 생각합니다.

또한 주로 사용되는 운영체제로 꼽히는 윈도우즈역시 C로 작성되어서,
API가 C의 함수를 기준으로 하고 있습니다. 이러한 점도 C가 없어지지
못하는 이유가 될 것 같습니다.

ihavnoid의 이미지

'최고의 언어'라고 표현하는 것은 좀 무리이지만.... '상당히 좋은 언어'라는 표현은 적절할 것 같습니다.....

이하는... 그냥 제 나름대로의 생각을 정리한 것입니다.

음.. 일단 C는... high-level언어의 장점과 low-level언어의 장점을 적절히 균형있게 갖고있다고 생각합니다. 분명 기계어보다 짜기 쉽고 코드를 보면 동작이 매우 명확하게 잘 보입니다. 거꾸로, 기계어처럼 힘들지도 않고, 기계어로 할 수 있는 많은 동작을 (뛰어난 컴파일러가 있다는 전제하에) 그대로 할 수 있습니다.

이런 성격을 갖고 있기 때문에, C는 임베디드, OS, 수학연산 등등 많은 분야에 쓰입니다. 정말로 많은 application이 C로 만들어지죠. 글쎄요. GUI를 이용하는 쪽에서는 C++로 많이 만들지만, 결국 core engine이 C인 경우도 많죠?

그러나, 항상 적합하다는 얘기는 아닙니다. 예를 들어, 웹프로그래밍 같은 것은 굳이 C로 할 필요가 없겠죠. 오히려 할 경우에는 디버깅이 무쟈게 복잡할 것으로 생각이 됩니다... -_-;; C의 막강한 기능을 이용하여 '그래도 좀 더 힘들게' 프로그래밍을 하는 것보다는, 그냥 쉽게쉽게 프로그래밍하는 대신 그 하부 엔진들을 좀 더 좋게 만드는 쪽이 나을테니깐요.

그리고, C를 대체하고자 하는 언어는 예전에도 그렇고 요즘에도 계속해서 나오는 것으로 알고 있습니다. 구체적인 언어들은 잘 기억이 안 나고... 제가 배운 언어가 그렇게 많지도 않고 그래서... 뭐라고 하기는 그렇지만... 단지 그 '대중성'이라는 면에서 C를 따라갈 수 없겠죠.

저는 많은 언어를 써 보지는 못했습니다. 어셈, C++, Java, php, jsp(이것도 언어라고 할 수 있을란지는 모르겠지만) 정도를 더 써봤을텐데요...

Java의 경우에는 라이브러리의 성격상 시스템프로그래밍이나 임베디드쪽에 적합하지 않을 뿐만 아니라, bytecode를 생성하는 컴파일러는 많아도 native code를 생성하는 컴파일러는 뛰어난 게 별로 없는 것 같고요...
(그래도 java는 참 괜찮은 언어라 생각됩니다. 좋은 성능과 쉬운 코딩의 아주 적절한 균형을 맞춘 듯 합니다.)

C++의 경우에는, 너무 복잡하고 무겁다는 생각이 들더군요. C에 OOP extension을 억지로(???) 갖다가 붙이려고 해 놓은 것 같아서 별로 안 좋아합니다...

php의 경우에는... 뭐 용도가 제한되어있으니 논외로 합시다... 그냥 사용할 수 있는 PHP는 없을까 하는 생각이 들긴 했지만, 만들어지더라도 별다른 메리트는 없을 것 같군요.

Consider the ravens: for they neither sow nor reap; which neither have storehouse nor barn; and God feedeth them: how much more are ye better than the fowls?
Luke 12:24

vacancy의 이미지

현재 C언어의 위치는
이전 어셈블리어가 위치하던 정도가 되지 않았나 싶네요.
물론, 어셈블리어에 비하면 훨씬 코딩이 편하지만요.

언어 자체가 사실 단순해서 컴파일하기 좋은 구조기도 하고요.
임베디드에서는 RISC 칩들이 많으니
어셈블리어로 코딩하는게 장난이 아닌 일이기도 하고 -_-;
( x86 어셈블리 코딩은 정말 편한 편이죠. -_- )

이런 저런 이유들로 인해 C가 꾸준히 유지되는 것 같습니다.
무엇보다, 풍부한 기존 코드들이 있다는 강점도 있고요.

다만, '최고의 언어'라는 수식은 좀 맞지 않는 느낌이 드네요.

maylinux의 이미지

제가 생각하기에는.. 최고라고 불리울수 있는 언어임에는 맞는것 같습니다.
(최고라는것 쉽게 말을 할수 없지만..)

최고라고는 말할수 없습니다.. 서로 장단점이 있기 때문이지여

그렇지만.. 최고라고 불리울수 있는 유일한 언어라고 생각합니다.

아바타 제작기간~~ 무려 5초!!!

alfalf의 이미지

통상적으로 최고 빠른 언어: C
통상적으로 OOP가 최고 잘 구현된 언어: Java
통상적으로 소스코드 가독성이 최고 좋은 언어: Python
통상적으로 웹 프로그래밍이 최고 쉬운 언어: PHP
등등...

써놓고 보니 문법이 잘 안맞네요. ㅋㅋ
어쨌든 이렇식으로 부분별로 생각하는 것이 좋지 않을까요?

자신이 좋아 하는 언어가 위에 없다거나 자신이 생각하는 각부분 최고 언어와 다르다고 딴지걸지 않으시겠죠? ㅎㅎ

xyhan의 이미지

C-> C++ ->API ->MFC..
예전에 제가 배운 공부 순서입니다..
물런.. 전MFC는 하지 않았지만..

일단 C++을 이해하면 다른 대부분의 언어를
이해하고 사용하는데 별 무리가 없습니다..
C++ 프로그래머가 자바를 하는 것과
자바 프로그래머가 C++하는것은 많은
차이가 날껍니다.

C 언어는 프로그래머의
기본이라고 생각합니다. 파이썬은 쉽고, 간결하지만..
프로그래밍의 기준이 될수는 없습니다..
일단 아무것도 모르는 상태라면...
C를 배우는게 좋치 않을까.. 생각합니다.

============================================================

선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-

============================================================

hermit의 이미지

C 언어가 좋은 언어인 것에는 분명합니다만...

어떤 언어가 최고로 좋다. 혹은, 어떤 언어보다 낫다. 이런 논쟁은 무의미한 것이 아닌 가 싶습니다.

위에서도 말씀하셨듯. 용도와 개발 환경 등에 따른 언어 선택이 더욱 의미가 있을 것 같네요. ^^

하지만 개발자들 사이에 이런 건 좀 있는 것 같습니다. 자기가 쓰는 언어가 제일 좋은 것이라고 예를 들어서 php, asp, jsp 등이 있으면 자기가 쓰는 게 제일 좋다고 또는.. c++, java 등을 비교할 때도 자기가 쓰는 게 좋은 거라고.. 좀 우기는 성향 그런 게 있는 것 같습니다.

특히, 보다 어려운(자질구레한 처리를 해줘야하는) 언어를 쓸 때는 괜히 으쓱해하는 것도 있는 것 같구요. 개발자들 사이에 그런 것들이 좀 있을 뿐이지. 어떤 언어든지 다 장단점이 있지 않을까요? ^^;; 물론, C언어와 Java를 배우면 좋죠~

2006년 1월 28일만 보고 산다 -_-;

lsj0713의 이미지

위에 어떤 분이 C가 어셈블리의 자리를 대신하고 있다고 하는데, 이말에 저도 동감하는 바입니다.

현 시점에서 C의 장점은 언어 자체의 compact함과 이식성입니다. 언어 자체가 (요새 나오는 새로운 언어들에 비해) compact하고 요구사항 또한 적습니다. 새로운 CPU가 나왔다고 했을때 타 언어에 비해 빠른 시간 내에 그 CPU에 맞는 C 컴파일러를 제작할 수 있습니다. C언어가 탄생한 환경부터가 매우 열악한 환경이었고(PDP-7인가 11이었던 걸로 기억합니다) 아직까지도 표준을 정의할때는 이러한 열악한 환경에 대한 고려를 빼놓지 않고 있습니다. 그걸과 소형 온칩 마이크로콘트롤러에서부터 초대형 슈퍼컴퓨터에 이르기까지 C언어가 활약할 수 있는 것입니다.

또한 잘 정의된 표준과 그로 인한 이식성은, 프로그래머로 하여금 중복투자를 줄이게 해 줍니다. 예전에 BASIC 사용하던 시절 기억하십니까? 표준이 있었는지 없었는지는 모르겠지만 온갖 업체에서 만든 각각의 BASIC이 난립했었고 그결과 어느 특정 BASIC에서 쌓은 지식들이 다른 BASIC에서는 전혀 소용이 없는 지경에까지 이르렀습니다. 그에 비하면 C의 표준은 아직까지 확고한 영향력을 행사하고 있으며, C 표준 위원회도 꾸준한 활동을 보이고 있습니다.

지금까지 나온 각종 기반 자료에 의한 강점도 빼놓을 수 없겠지요. 가장 널리 쓰였고 아직도 굉장히 널리 쓰이고 있는 언어이기 때문에 자료도 많고 라이브러리나 예제코드도 구하기 쉽습니다.

하지만, 약점도 많습니다. 빈약한 string 처리 지원이라던가 최근의 추세인 oop에 대한 지원 등등은 분명한 약점입니다. 또한 효율적인 동작을 우선으로 했기 때문에 코드가 '깔끔함'과는 거리가 멀어지는 단점도 있습니다. CPU 파워가 이미 약간의 비효율적인 코드를 용납해줄 수 있을만큼 발전한 지금 시점에서 새로운 언어들에 비해 코드생산성이 떨어진다는 것은 아주 치명적인 약점이지요.

위에분들이 말씀하신대로 C언어가 최고냐 아니냐 하는 질문은 무의미합니다. 컴퓨터가 쓰이는 분야가 워낙에 넓기 때문이죠. 컴퓨터는 단지 도구일 뿐이며, 프로그램을 작성할때도 각자 용도에 맞는 언어를 선택하면 되는 것입니다. 프로그래머라면 마땅히, 자신이 일하고 있는 분야에 알맞는 도구를 사용할 수 있는 능력을 갖춰야 하겠습니다. 도구에 집착하는 것은 바보나 하는 짓입니다.

송지석의 이미지

아주 많은 CPU가 C 컴파일러'만' 지원합니다. DSP도 그렇죠. API들이 다 C로 되어있고 컴파일러도 C가 기본입니다.

C는 절대 없어지지 않을 것 같네요.. 임베디드에 쓸 수 있는 언어가 High level에서는 잘 없지요.

C, C++ 정도가 될까요? Java는 도저히 무리고.. 극악이라 불리는 포인터가 오히려 쓸 곳을 많게 해주는 것 같네요. 메모리를 직접 어드레스 할 수 있으니.. OS도 C로 만들어지고.. 제가 아는 게 많진 않지만 최소한 *NIX 계열은 C, 윈도도 코어는 C, VXWorks 같은 realtime OS도 C, UCOS같은 작은 규모 임베디드에서도 C... 온통 C죠.

제생각에 시스템 프로그래밍, OS 등에서는 C가 지존이고 앞으로도 이변이 없는 한 그럴 것 같네요. 수많은 CPU들이 C를 지원하고, 컴파일러도 그에 맞춰져있으니까요.

UI나 웹같은 곳에선 C가 좀 부적합한 면이 많지만.. 그래도 대안이 없는 경우가 있으니 그런쪽은 C가 쓰이겠지요. GNU 프로젝트도 C가 많고.. GUI도 C로 된 라이브러리가 많고(쓸모가 많을 듯.. C밖에 안되는 임베디드에서요.) 기존에 만들었던 엄청난 코드들...

개인적으로 코딩과 디버깅에서 JAVA가 참 좋다고 생각 하지만.. 임베디드와 시스템쪽엔 도저히 쓰기 힘들 것 같습니다.

만약 MS가 C#을 엄청 드라이브 한다면, 그래서 여러 CPU에 C#이 컴파일돼서 돌아갈 수 있고 라이브러리도 가져다 쓸 수 있는 게 많다면 C#도 쓸만할 것 같습니다. 그러나 아직은.. 요원하죠.

netkid의 이미지

학습 초기에는 감동..
그러나 점점.. 속았다라는 생각이 들더군요.
뒤로 갈수록 개념 파악이 어려워지더군요. 자바나 C#보다 언어의 추상화(전산용어 아님)가 심해서 그런것 같더군요.
그렇지만 파이썬의 문법적 특성을 통해 많은것을 배웠고, 또한 개발효율성이 높다는 것은 전적으로 인정 해야 하는 할 것 같습니다.
제가 보기에는 C가 젤 쉽습니다.(이 세상에 젤쉬운 언어란 갠적인 생각)
만약 C의 포인터 땜에 어렵다고 생각하시는 분이 있다면, 그래서 포인터을 정확히 이해하지 못한다면, JAVA, C#, PYTHON 같이 레퍼런스나 객체 타입을 가지는 언어는 더욱 이해하지 못했다고 봐야 할 것 같습니다만...
레퍼런스 타입이나, 객체 타입은 알고보면 포인터 타입과 90% 같다고 봐야 한다고 생각 합니다.
그래서, C는 다른 언어를 배우고 이해하기 위해 알아야할 필수 언어라고 봅니다.

ihavnoid의 이미지

제 생각에는, python으로 가르칠 경우 '언어가 무엇이냐'는 것을 배울 수 있겠지만, 반대로 C로 가르칠 경우에는 '컴퓨터가 무엇이냐'를 배울 수 있게 될 것 같습니다.

사실 컴퓨터가 어떻게 동작하는지 가장 확실하게 아는 방법은 어찌보면 '어셈'을 짜 보는 것일 것 같습니다. 그렇지만 그러려면 필연적으로 x86어셈을 해야겠고, 제가 많이 해보지는 않아서 모르겠지만, 그거를 신입생에게 가르친다는 것은.... 음...... -_-;;

제가 python을 잘 안해봐서 모르겠지만....
상당히 많은 양의 '편의성'이 주어진다고 기억합니다...
range 무한대인 숫자라던지, string이라던지....

그런거만 쓰다보면, 나중에 컴퓨터를 이해할 때 왜 32-bit integer을 꼭 쓰고 있는지, 왜 string에 string을 덧붙이는 것이 처음부터 string을 그냥 만드는 것보다 비효율적인지, 등등... 이런 것들을 이해하는 데에 상당한 애로사항이 생기지 않을까 하는 생각입니다.

C로 string append하는 것 한번만 짜보면 그 내면의 복잡한 operation을 이해할 수 있을 듯 생각됩니다.

python이나 java로 언어를 배운다면 이해하기 힘들겠죠. java로 예를 들면, 복잡한 StringBuffer 같은걸로 하는 것보다 그냥 String에 덧셈 때리는 쪽이 더 편하고 간단해 보일테니깐요. 그 내면의 엄청나게 복잡한 연산은 생각 안하고.

물론 C로는 OOP를 배우기 매우x1000 힘들다는 문제가 있겠지만요.. :)

Consider the ravens: for they neither sow nor reap; which neither have storehouse nor barn; and God feedeth them: how much more are ye better than the fowls?
Luke 12:24

netkid의 이미지

C로 OOP를 배우기는 어렵지만, OOP를 확실하게 이해하는 좋은 방법으로 C로 OOP기법을 적용하여 프로그램을 짜보는 것 일것 같습니다.

byteme의 이미지

C가 가지는 가장 중요한 위치는 아직 기계가 못 따라왔다는거 아닐까요?

여기저기서 항상 읽는 바로는 왠만큼 복잡한 프로그램의 경우 어셈블리어로 아무리 사람이 잘 짠다해도 C코드를 어셈블리어로 바꿔놓는 컴파일러를 따라갈 수 없다고 하더군요.

결국 기계가 대신 해주지 못하는 일 중 가장 low-level하기 때문에 그 인기를 아직까지 누리고 있지 않나 하는데요..

시간이 더 지나 C코드 마저 기계가 사람보다 더 잘 만들게 된다면 그 인기는 다른 언어의 소유가 될수도 있겠죠.. 그게 자바일수도 있고.. c++일수도 있고.. c#일수도 있고.. (심지어 Perl이나 Python일수도!!! )

maddie의 이미지

개인적으로 언어의 우수성이라고 하는 것은 목적에 따라 다르다고 생각합니다.
C가 위대한 언어로 취급받는건 거의 모든것을 그렇저렇 다 할 수 있다는 것이 이유일 것같습니다.
C만 알아도 하고 싶은 건 될 수 있다라는 것이 그것을 위대한 언어로 만들었다는 생각입니다. 물론 전통과 역사가 그렇게 만든 것일 수도 있지요.

솔직히 저는 C를 잘 모르지만...
그래서 꼭 C를 해보고 싶습니다.

머...php나 python의 편의성에 익숙해져서 아직까지는 별 필요를 못느낍니다만은...ㅡ..ㅡ

힘없는자의 슬픔

vacancy의 이미지

개인적으로 프로그래밍 시작하시는 분들께는
C 안하시고 Java나 C#, 혹은 C++을 바로 시작하시는 걸
권해드리고 싶네요.

C가 나올때야 고급 언어가 별로 없었어서
C가 고급 언어 취급을 받았지만,
지금은 C는 Low Level에서 사용되는 정도가 좋다고 봅니다.

물론 혼자 작은 프로그램을 짠다면야 뭐 상관이 없겠지만,
여럿이 프로그래밍을 한다거나, 대규모 프로그램을 짠다면,
C에서는 확실히 불편한게 많이 있죠.
특히 OOP가 지원되지 않는다는 건 요즘 추세와 걸맞지 않고요.
물론 function마다 인자 하나씩 더 써주고, call-back function을 쫙 깔면
OOP 흉내는 낼 수 있겠습니다만
그건 OOP를 아는 사람들이 C로 짜야만하는 상황에서 하는 것이고,
C에서 그런 방법으로 OOP를 배우는 건 혼란만 가중될것 같네요.
배보다 배꼽이 클 수도 있고요.
게다가

간다(사람);

.. 과 ..

사람.간다;

.. 는 코딩 방법만이 아니라 사고방식 자체가 다르지 않은지 ..

C는 C가 필요한 고유의 영역에서 쓰이는 게 좋은 것 같습니다.
뭐 '뭐든지 다 할수 있다'라는 말도
사실 이젠 대부분의 언어에 적용되는 말이기도 하고요.
( 뭐 VM에서 돌아가는 Java나 C#에서 하드웨어 조작해봐라 식만 아니면 )

ColdHeart의 이미지

물리학을 전공한 사람중 하나 입니다.
세상에 최고란 것이 존재할까요?
다른 쪽에서 한번 본다면...
언어란 자기의 생각이나 논리를 표현해서 원하는 결과를 얻는 것이라고 생각합니다.
무엇을 하려하는가에 따라 언어는 달라 져야겠죠.
중요한 것은 (개발 입장에서) 쉽게, (사용 입장에서)쉽게 하는 것이라고 봅니다.

고도리의 이미지

간단하게 한마디만요...

C를 먼저 배운 사람은 다른 언어 습득이 쉬워지는 것 같습니다.
핵심으로 파고 들기도 쉽고요...(물론 asm쪽도 그나마 쉽게 볼 수 있고요.)

아직까지 java쪽이나 다른쪽에서 C로 건너오는 경우는 못봤지만...^^

제 경험상 요즘의 상당히 쉬운언어(?)로 공부한 사람이 C 쪽 프로그래머로
살아 남는 걸 본적이 별로 없습니다.....

조금하다가 그만 두더라고요...--;(프로그램 하기 넘 짜증나나?)

하여간, 그냥 경험상 한 얘기이니 돌 던지지 마세용...^^

서명.....음, 서명이라...

아싸!!! Three Go!

익명 사용자의 이미지

모든 경우에 최고는 아니지만
어떤 경우에는 최고라 할 수 있지요...
그 어떤 경우가 아직까지는 중요한 분야에 광범위하게 넓다는 거죠...
(시스템과 연관된 분야는 전부 라고 할 수 있죠... 펄, 파이선, 자바, php 등.. 이런 언어를 사용할 수 있도록 도와주는건 C니까요..)
앞으로도 오랫동안 C 프로그래머가 굶어죽을 일은 없을것 같습니다.

쿨링팬의 이미지

단순함속에 오묘함이 녹아있고.
쓸수록 모르는게 많다는...그래서 흥미롭다는... :o

전 C를 좋아합니다.

아래는 제 연구실벽에 붙여서 아주 가끔 보고 있는 C Reference Card입니다.

http://miranda.ce.pusan.ac.kr/~isyoon/C_Ref_Card_1.jpg

http://miranda.ce.pusan.ac.kr/~isyoon/C_Ref_Card_2.jpg

wsmrdo의 이미지

왠지 궁금하다는... ^^;
괜잖으시면 메일로 보내주세요.~~

김경태의 이미지

문자 그대로 <모든 분야에서 최고>라는 것은 언어의 정의 자체가 특정한 목적
에 맞게 설계되어 있음을 고려하여 보더라도, 또한 세상의 이치가 모든 분야에
서 최고 일 수 없음을 생각했을 때도 역시나 가능한 명제는 아닌 듯 싶습니다.

그러나....

그럼에도 불구하고 OS를 구현할정도의 System Acess능력과 함께 하면 할
수록 끝을 알수 없는 응용범위, 그리고 들어가면 들어갈수록 오묘해 지는 코딩
의 유연성, 심오하고 깊은 내용을 보여주는 이미 구현된 C Code 등을 종합 고
려해보면 적어도 아직까지는 또 앞으로도 당분간은 C언어만한 언어가 다시 등장
하기는 힘들 것으로 사료됩니다.

저의 예를 들자면, C로 C++의 Class 개념을 응용하여 structure의 멤버로
Array of pointer to function을 선언하고 이를 초기화하여 이 Array의 인덱
스를 이용하여 function call을 구현한 경우가 있었습니다.

그리고 이것을 다시 원용하여 C++코드에서 Virtual Base Class를 선언하고
이의 하위 Class instance를 상위의 Virtual Base Class Instance를 가르
키는 pointer에 할당하여 이것을 이용하여 for 문을 이용한 member function
call을 구현한 경우가 있습니다.

이것은 C, C++의 언어 영역은 다르지만 코딩스타일이 언어 영역을 넘어서서
유연하게 적용가능한 실례가 되겠고, C Coding에 능숙했을때 얼마나 쉽게 다
른 언어에 능통할 수 있는지에 대한 명확한 증거가 될 수 있다고 봅니다.

심지어 VB를 이해하는 데에도 C를 이해했을 때와 그렇지 못할때의 차이는 엄청
난 것으로 기억하고 있습니다.

이렇듯 C언어는 모든 저급 언어와 고급 언어 공히 가장 필수적인 학습코스에 포
함될 만한 언어의 고전이면서 실제적으로 봐도 그 응용범위가 무궁무진한 고급
프로그래밍의 원천이라고 봐도 무방하다고 봅니다.

저는 이런 의미에서 C언어를 <최고라고 해도 무방한 언어>로 자신있게추천하고 싶습니다.

thedee의 이미지

geneven wrote:
파이썬이나 펄, 이 외에도 여러 언어들이 모두 C로 만들어진것으로 알고 있습니다. 유닉스 역시 C로 만들어져 있고요..

C언어는 앞으로 대체가 안될 정도로 훌륭한 언어인가요? 그 동안 C를 대체할 만한 언어는 개발되지 않았나요? 무엇때문에 C언어가 다른언어에 자리를 내주지 않고 이렇게 장기간 최고의 언어로 자리매김 할수 있었던건가요??

C 언어란 궁극적으로 포터블한 어셈이라는 의견에 동의합니다.
그뿐이죠...-.-
이게 유일한 장점이라면 유일한 장점이고, 최고의 장점이라면 최고의
장점이죠.

송지석의 이미지

thedee wrote:
geneven wrote:
파이썬이나 펄, 이 외에도 여러 언어들이 모두 C로 만들어진것으로 알고 있습니다. 유닉스 역시 C로 만들어져 있고요..

C언어는 앞으로 대체가 안될 정도로 훌륭한 언어인가요? 그 동안 C를 대체할 만한 언어는 개발되지 않았나요? 무엇때문에 C언어가 다른언어에 자리를 내주지 않고 이렇게 장기간 최고의 언어로 자리매김 할수 있었던건가요??

C 언어란 궁극적으로 포터블한 어셈이라는 의견에 동의합니다.
그뿐이죠...-.-
이게 유일한 장점이라면 유일한 장점이고, 최고의 장점이라면 최고의
장점이죠.

C에 대해 상당히 부정적인 의견을 가지신 것 같군요..

그러나 다만 포터블한 어셈이었다면 왜 다른 포터블한 어셈이 나와서 C를 뒤엎지 못하는 것일까요?

thedee의 이미지

송지석 wrote:

C에 대해 상당히 부정적인 의견을 가지신 것 같군요..

그러나 다만 포터블한 어셈이었다면 왜 다른 포터블한 어셈이 나와서 C를 뒤엎지 못하는 것일까요?

제가 좀 반골이라서 남들 다 좋다 하면 딴 소리하는 경향이 있는 거
같습니다...(양해를~)

그러나 C의 장점 중 포터블한 어셈이라는 거 빼고 장점으로
내세울 수 있는 것이 있나요? 포터블한 어셈을 구현하기 위해 채택한
요소들 외에 C에서 어떤 장점을 찾을 수 있죠?(단점은 말고^^)

그리고 다른 포터블 어셈이 왜 C를 대체하지 못하느냐는 질문에 대한
저의 답은, 그것은 언어 외적인 요인이 작용하기 때문이라는 것입니다.
예컨대 C는 유닉스 운영 체제의 구현 언어였고 여러 대학들에 공짜로
코드가 라이센스되었고, 여러 인프라들의 구현 언어가 되었기 때문이라는
거죠...

OOP 언어로 스몰토크가 아닌 자바가 이처럼 인기가 있는 것에도,
자바나 스몰토크의 언어적 경쟁력 외에 정치적인 요소가 크게 작용
하고 있다고 생각합니다. 배후에 있는 썬이라는 회사, 브라우저
전쟁, c\c++ 계열의 코딩 스타일을 채용한 휴먼 팩터...
그러나 이런 요소들은 언어 자체의 경쟁력과는 별개인 듯 싶습니다.
즉, 그렇다고 자바가 최고의 OOP 언어인 것은 아니죠.

사실 제가 불만인 것은 C라는 언어가 언어적 다양성을 해치고 있다는
생각 때문입니다.

예를 들면 현재의 주류 언어는 c\c++\java\c#...
이렇게 가는 거 같습니다. 객체지향으로 가되, c의 유산을 안고 가는
거죠. 그러나 c의 유산에서 자유로운, 예컨대 스몰토크라는 언어를 보면
참으로 새로운 사고, 새로운 공기, 새로운 맛을 느끼게 해 줍니다.
자바가 스몰토크처럼 될 수 있었지만, 그놈의 c 컴패터블 때문에 언어가
아주 망가져 버렸다고 봅니다(아후~ 과격하다^^).

또 , 어떤 분들은 c로 oop를 시뮬해 보는 것이 oop를 이해하는데
큰 도움이 되는 거처럼 말씀하십니다. 저의 의견으로는 이거 아무 해당
사항 없는 얘기입니다. c를 제대로 사용한다는 것은 oop를 지원하는
언어의 컴파일러를 만드는 것이지 c로 oop를 시뮬하는 것이 아니라고
생각합니다(물론 gtk 같은 프로젝트에서 그렇게 하는데에는 어쩔 수 없는
사정이 있는 거구요...).
이러한 관점에서 보면 c는 새로운 패러다임을 학습하는데 장애가 되는
셈입니다.(물론 c를 통한 oop 학습이라는 아이디어를 진지하게 고려
하시는 분은 거의 없으리라 생각하지만...)

이러 저런 이유들 때문에 저는 c를 싫어합니다~

violino의 이미지

잘 아시고 계시겠지만, 스몰톡은 OOP 개념을 만들어낸 최초의 언어이죠.
근데 요즘 넘 안쓰다보니 오히려 스몰톡에서 "새로운" 사고/공기/맛을 느낀다고 하시니
그 표현이 재미있어서 한마디 남깁니다.

C 가 정치적인 요인으로 성공했단 말에 동의합니다.
C 언어의 개발과정을 들어보면 그 당시 AT&T Bell 연구소에서
운영체제(UNIX), 언어(C)와 네트웍(TCP/IP)이 모두 커다란 프로젝에 포함되었던 것 같아요.
그래서 이 세가지는 뗄래야 뗄 수가 없죠.
AT&T란 회사의 성격을 보면 이해가 가기도 하죠.

파스칼 쓸땐 디스켓 한장 들고 다니면 개발환경이 다 해결되었는데,
C 는 디스켓 한장에 안들어가는 무거운 언어라 불편했던 생각이 나네요.
격세지감입니다. C 가 가벼운 언어로 취급받는 시기가 올 줄이야.. 하하.

thedee의 이미지

첨언하자면...

c를 했었기 때문에 c++이나 Java에 금방 능숙해 질 수 있었다는 말은
좀처럼 듣기 힘든 말입니다.(물론 신택스에는 금방 익숙해지겠죠. 두어 시간이면 충분하리라~)
오히려 c를 오래 했었기 때문에 c++이나 Java도 c처럼 짜게 되고 만다는
얘기는 흔히 듣는 얘기구요.
역으로 c++이나 Java를 하고 나니 c를 더 잘 이해하고 제대로
구사하게 되는 거 같더라는 얘기도 자주 듣는 얘기죠.

(제 동생도 파스칼을 배우고 나서야 c를 이해할 수 있었다고
씩씩대더군요^^)

vacancy의 이미지

C를 portable한 assembly language로 보는 건
결코 폄하하는 이야기라고 생각되지 않는데요.
있는 그대로의 이야기가 아닌가 합니다.
이런 사실은 C 코드를 Hand-compile 해보시면 압니다.
다른 여타 언어의 코드도 한번 해보시고요.

그리고 C를 하면 다른 언어를 이해하기 쉬운건 사실입니다.
그런데 Pascal을 해도 다른 언어를 이해하기 쉽고,
Basic, Cobol, Fortran을 해도 다른 언어를 이해하기 쉬워지죠.
( 안하는 것 보다는 -_-; )

은빛연어의 이미지

쿨링팬 wrote:
단순함속에 오묘함이 녹아있고.
쓸수록 모르는게 많다는...그래서 흥미롭다는... :o

니들이 C맛을 알어~~~~~~~~~~~~?
아는 분도 계시는군요~~ ^^*
tohdol의 이미지

지저분함의 미학이란거죠

codebank의 이미지

각자 사용하는곳에 따라서 달라지질 않을까 싶네요.
하지만 제가 볼때는 최고의 언어는 아니라고 생각합니다.
위에 많은 분들이 말했듯이 많은 플렛폼에서 기본적으로 적용해야할 정도로
그 쓰임세는 상당하지만 언어자체는 완전히 암호문 수준이라고 말해도 될정도
라고 생각합니다.
물론 이런 암호문을 15년동안 계속만지고 있는 제 자신이 이상하기도 하지만... :-)
사실 C를 배우기전에 파스칼을 먼저배웠죠.
하지만 친구의 꼬임에 넘어가서 C를 배우고 아직도 이걸로 밥벌어먹고 사는거
보면 대견하기도 합니다.
아~ 각설하고...
어쨌든 응용분야가 넓을뿐이지 최고의 언어는 아니라는게 제생각입니다.
그러면 최고의 언어는 어떤언어인가... 과연 그런게있을까요?
어차피 개인적으로야 최고를 따질 수있지만 일단 두사람이상이 되면 최고의
언어는 각자가 가장 즐겨쓰는 언어가 아닐까하는 생각입니다.

------------------------------
좋은 하루 되세요.

logout의 이미지

시스템 프로그래밍에서 C를 대체할만한 언어가 과연 몇이나 있을까요? 이것만 해도 C의 가치를 보여주는 예가 아닐까요?

"I conduct to live,
I live to compose."
--- Gustav Mahler

Scarecrow의 이미지

thedee wrote:

C 언어란 궁극적으로 포터블한 어셈이라는 의견에 동의합니다.
그뿐이죠...-.-
이게 유일한 장점이라면 유일한 장점이고, 최고의 장점이라면 최고의
장점이죠.

그뿐인 것은 아니죠.
C언어는 구조적입니다. :wink:

vacancy의 이미지

요즘은 어셈블러도 많이 좋아져서,
어셈블리 프로그래밍도 꽤 구조적으로 할 수 있죠.
하드웨어들도 많은 걸 지원하고 있고요.

그리고 C는 구조적인 걸 특별히 염두에 두고 만들었다고 보긴
좀 어렵지 않나 싶네요.
Pascal 등에 비해 그런 면은 많이 부족하지 않은가 싶고요.

C가 시스템 프로그래밍에는 적합하다고 생각합니다만,
점점 프로그램 규모가 커지는 현재로선
주위 사람들에게 권하기 좋은 언어는 아닌것 같네요.
유지 보수를 위해선 확실히 OO가 지원되는 편이 좋은 것 같다는 생각입니다.
( 스크립트 같은 건 논외로 하고요. -_- )

cedar의 이미지

vacancy wrote:

요즘은 어셈블러도 많이 좋아져서,
어셈블리 프로그래밍도 꽤 구조적으로 할 수 있죠.

구조적 프로그래밍 뿐만 아니라 객체 지향 프로그래밍을 할 수 있는
어셈블러도 있습니다.
윈도에서는 대표적으로 볼랜드의 TASM/BASM이 있죠.

vacancy wrote:

그리고 C는 구조적인 걸 특별히 염두에 두고 만들었다고 보긴
좀 어렵지 않나 싶네요.
Pascal 등에 비해 그런 면은 많이 부족하지 않은가 싶고요.

글쎄요, C언어 자체가 파스칼의 영향을 많이 받았고,
여러가지 유사점이 많습니다.
심지어 파스칼 소스를 C 소스로 변환해주는
p2c 란 프로그램도 있을 정도니까요.
구조적 프로그래밍 관점에서 엄밀히 보자면 파스칼이 C보다 우수하지만,
실무의 코딩 측면에서는 C가 더 편리하지요.

그건 그렇고,
리눅스와 윈도가
BeOS나 AtheOS처럼 커널 자체가 C++로 만들어져서
시스템 프로그래밍을 C++로 할 수 있다면 얼마나 좋을까요.

knight4u의 이미지

원론으로 돌아가보죠.
과연 최고란 무엇일까요 :?:

인간은 본성적으로 최고 라는 말을 좋아하더군요.

누가 1등이냐?
하지만, 돈많이 번다고 1등이다. 대통령 한다고 1등이라 라고는 할 수 없겠죠?

C & C++ 은 확실히 속도가 빠른 언어입니다. 다른 언어를 배우기 위한 단단한 초석이 될 수도 있습니다.
JAVA는 다중플랫폼을 잘 지원하는 언어죠.
Basic 은 배우기 쉬운 언어입니다.
파이썬 - 여러 언어를 가져다 쓰기 쉽다는군요. ( 안해봐서.. 쿨럭 )
bash쉘 스크립트 - 언어라고 해야할지는 모르겠지만 확실히 Linux에선 강합니다.
파스칼 - 지금은 델파이,카일릭스 라는 이름으로 windows // xwindow 프로그램에서 강세를 보이더군요.

제가 모르는 많은 언어도 있을 것입니다만 제가 공부해본 결과는..
최고를 따지기는 보다는 적당한 조합으로 최고를 만들자라는 것이 .. 저의 생각입니다.
예를 들어.. C로 속도가 중요한 core 를 만들고 빠른 개발이 필요한 곳에 스크립트언어(VB/shell script)를 이용하면 효율성이 높은 더군요.

당신을 위한 수호기사 Knight4u™

서지훈의 이미지

C보다 나은 언어가 과연 있을련지?
속도랑 코딩 방법이랑 전반적인걸 살펴보면은 C에 견줄만한건 없지 않나 싶으네요.
과연 어떤 언어가 C에 도전을...?

도전은 계속되어야 하겠지만...
현재의 나와있는 언어 중에선 최고일듯...

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

mastercho의 이미지

C의 모든 기능을 다 쓸수 있고 , 그외 객체지향 제레닉 프로그래밍까지

해주는 C++이 최고 아닌가여? --;

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

select99의 이미지

다합쳐두었다고 최고는 아닙니다.

최고란 최고의 요소를 가장많이 가지고 불필요한것이 최소로가져야 최고라고 할수있죠...

프로그래밍도 마찬가지죠.. 이것저것 다넣었다고 최고의 함수 혹은 라이브러리가되는걸까요..
불필요한것을 최소로프로그래밍하는것이 가장 좋은 프로그램임은 알고 계시지 않나요?

서지훈의 이미지

흠... 그럼... C는 있으나 마나인가요? -_-ㅋ
과연 C가 C++의 subset 아라는?
그럼... C로 만들어진 다른 언어들도 C의 모든 기능을 다 가진 셈이면...
더 이상 C의 설 자리는 도데체 어디이란 말인가?
흠...-_-ㅋ

위의 제 글도 좀 억지 스럽지만...
이런 결론도 억지 스럽지 않을지?

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

zedai1972의 이미지

윈도우 프로그래밍, c++,mfc , 자바 두루 써봤는데요.
각기 장단점이 있는거 같아요.

물론 위의 툴들은 컴퓨터 학원에서 약 1년간 공부 하면서 습득한 것이고,
학원 수료와 동시에 unix / linux 기반에서 c를 통한 시스템 프로그래밍을
시작했습니다. 첨엔 c++, mfc을 하다 unix, linux에서 c로 시스템 프로그래밍
하는 분들이 멋있어 보여서 *^^*;

어떤 언어가 더 우월하냐?란 질문에는 음 .. 씨....라고 말하고 싶은데..
그럼 시비가 걸릴거 같구 ^^;

현재저의 일에 자부심을 가지고 있습니다. 그리고 일을 하면 할 수록 자꾸
매료되는 새로운 분야도 많구 ^^; 그 모든게 c만으로도 가능하다는게
놀라울 뿐이죠 ^^;

\\(^^ )^^)// **

vacancy의 이미지

C 의 설 곳은
다른 고급 언어가 사용되기 어려운 곳이겠죠.

C++/C#/Java 등의 컴파일러가 존재하지 않는 플랫폼이나
Low Level Programming 같은 곳요.

익명 사용자의 이미지

C언어보다는 Assembly가 저는 최고의 언어라고 말하고 싶습니다.

어떤 언어든지 결국은 역어셈블 될수 있고
모든 구조는 어셈블리를 알면 꽤뚫어볼수 있습니다.
그리고 빠릅니다. 크기도 작게 만들수 있고요.

전 처음부터 어셈블리를 공부했었고 그 다음에 C->Basic ->Pascal ->QBasic->C++ -> Java

이런순이었는데

아무리 생각해봐도 어셈블리가 가장 강력한 힘을 발휘하는 듯합니다.

물론 단점도 있지만 분명 제 생각으로는 "어렵다" 라는 말은 잘못된거라고
생각합니다. 오히려 쉽다는게 제 주장입니다.

어려운것이 아니라 코드가 늘어진다 라는 표현이 적절할거 같습니다.
C는 간결로 대표되지만 어셈은 세부묘사로 대표되지 않을까요?

그냥 표현이 늘어지는 것 뿐이지 어셈이 어렵다는 예기는
머리에서 코드를 생성하는데 길게 보지 못하는사람들의 예기가 아닐까요?
길게 보지 못하고 짜는 사람은 보나마나 C로 짜도 똑같습니다.

혹시 제 생각에 반대하신다면 저에게 도전장을 던지세요.
어떤 프로그램 하나 만들어서 (얼마든지 복잡해도 됨)
저의 어셈에 의한 결과물과 비교해보시면 그걸로 저의 답변은 끝입니다.

분명 C언어도 강력합니다. 하지만 어셈보다는 한수 아래.

*** 딴지나 도전 환영 ***[/code]

charsyam의 이미지

minzkn wrote:
C언어보다는 Assembly가 저는 최고의 언어라고 말하고 싶습니다.

어떤 언어든지 결국은 역어셈블 될수 있고
모든 구조는 어셈블리를 알면 꽤뚫어볼수 있습니다.
그리고 빠릅니다. 크기도 작게 만들수 있고요.

전 처음부터 어셈블리를 공부했었고 그 다음에 C->Basic ->Pascal ->QBasic->C++ -> Java

이런순이었는데

아무리 생각해봐도 어셈블리가 가장 강력한 힘을 발휘하는 듯합니다.

물론 단점도 있지만 분명 제 생각으로는 "어렵다" 라는 말은 잘못된거라고
생각합니다. 오히려 쉽다는게 제 주장입니다.

어려운것이 아니라 코드가 늘어진다 라는 표현이 적절할거 같습니다.
C는 간결로 대표되지만 어셈은 세부묘사로 대표되지 않을까요?

그냥 표현이 늘어지는 것 뿐이지 어셈이 어렵다는 예기는
머리에서 코드를 생성하는데 길게 보지 못하는사람들의 예기가 아닐까요?
길게 보지 못하고 짜는 사람은 보나마나 C로 짜도 똑같습니다.

혹시 제 생각에 반대하신다면 저에게 도전장을 던지세요.
어떤 프로그램 하나 만들어서 (얼마든지 복잡해도 됨)
저의 어셈에 의한 결과물과 비교해보시면 그걸로 저의 답변은 끝입니다.

분명 C언어도 강력합니다. 하지만 어셈보다는 한수 아래.

*** 딴지나 도전 환영 ***[/code]

딴지는 아니구요. 일반적인 C 나 C++ 컴파일러의 최적화에 대해서는

어떻게 생각하시나요? 듣기로는, 최적화 시키지 않은 어셈으로 짜는 것

보다는 현재의 컴파일러의 최적화 기능이 더 낳은 속도를 낸다고

들었습니다. 그리고, 그런식으로 최적화를 해서 어셈 코드를 짜는 것과

그냥 단순하게 C 컴파일러를 이용해서 코드를 작성하는 것의 생산성에

대해서는 어떻게 생각하시나요?

저는 언어간의 우열이라는 것은 없다고 생각합니다. 어떤 프로젝트에

따라서 유용한 언어와 유용하지 못한 언어가 있다고 생각할 뿐입니다.

보통, C의 경우 제가 생각하는 대 부분의 경우에 유용하더군요. 물론

그렇지 않은 경우도 많습니다. 어셈이 훨씬 유용한 경우도 많죠.

(개인적으로, 어셈을 제대로 배워두는 것은 상당히 좋다고 생각합니다.

전, 어셈을 잘 못하긴 하지만, 디버깅이나, 디스어셈시에, 꼭 제대로 배워

야 된다는 생각이 들더군요. ^^ )

그럼 고운 하루되세요.

=========================
CharSyam ^^ --- 고운 하루
=========================

lsj0713의 이미지

minzkn wrote:
C언어보다는 Assembly가 저는 최고의 언어라고 말하고 싶습니다.

어떤 언어든지 결국은 역어셈블 될수 있고
모든 구조는 어셈블리를 알면 꽤뚫어볼수 있습니다.
그리고 빠릅니다. 크기도 작게 만들수 있고요.

전 처음부터 어셈블리를 공부했었고 그 다음에 C->Basic ->Pascal ->QBasic->C++ -> Java

이런순이었는데

아무리 생각해봐도 어셈블리가 가장 강력한 힘을 발휘하는 듯합니다.

물론 단점도 있지만 분명 제 생각으로는 "어렵다" 라는 말은 잘못된거라고
생각합니다. 오히려 쉽다는게 제 주장입니다.

어려운것이 아니라 코드가 늘어진다 라는 표현이 적절할거 같습니다.
C는 간결로 대표되지만 어셈은 세부묘사로 대표되지 않을까요?

그냥 표현이 늘어지는 것 뿐이지 어셈이 어렵다는 예기는
머리에서 코드를 생성하는데 길게 보지 못하는사람들의 예기가 아닐까요?
길게 보지 못하고 짜는 사람은 보나마나 C로 짜도 똑같습니다.

혹시 제 생각에 반대하신다면 저에게 도전장을 던지세요.
어떤 프로그램 하나 만들어서 (얼마든지 복잡해도 됨)
저의 어셈에 의한 결과물과 비교해보시면 그걸로 저의 답변은 끝입니다.

분명 C언어도 강력합니다. 하지만 어셈보다는 한수 아래.

*** 딴지나 도전 환영 ***[/code]

마감 맞추기 위해 1분 1초가 아까운 상황에서 어셈 붙들고 신선놀음 하고 있을 수 있을까요?

어셈은 기종마다 다른 명령어와 구조를 가지고 있는데, 한 수십종의 컴퓨터에서 프로그래밍 해야 된다면 그거 일일이 다 배우고 있을 건가요?

어셈으로 열나게 만들어놨는데 그거 다른 기종에 옮겨야 될 상황이 생기면 어떻게 하죠?

그리고 요새는 CPU가 구조가 복잡해져서 웬만한 코드는 컴파일러에서 최적화해 주는 코드가 더 빠릅니다.

저같으면 어셈 붙들고 삽질하느니 다른 고급언어로 편하게 짜고 남는시간에 빈번히 사용되는 부분만 죽어라 최적화하겠습니다.

전웅의 이미지

위의 lsj0713 님 의견에 한표~ :)

프로그래밍 언어는 주어진 문제를 해결하기 위한 하나의 도구일 뿐입니다.
분명 특정 언어에 대한 개인적인 선호는 있을 수 있습니다. 하지만, 주어진
상황과 현실적인 조건, 문제의 성격 등에 의해서 특정 언어가 최선의 선택
이 될 수는 있어도, 그와 같은 외부적 조건을 무시한 객관적인 기준에서의
절대적 평가가 이루어질 수 는 없다고 생각합니다.

모든 문제를 모든 경우에 최적의 방법으로 해결할 수 있는 하나의 언어는
존재하지 않습니다.

그럼...

--
Jun, Woong (woong at gmail.com)
http://www.woong.org

fender의 이미지

minzkn wrote:

혹시 제 생각에 반대하신다면 저에게 도전장을 던지세요.
어떤 프로그램 하나 만들어서 (얼마든지 복잡해도 됨)
저의 어셈에 의한 결과물과 비교해보시면 그걸로 저의 답변은 끝입니다.

분명 C언어도 강력합니다. 하지만 어셈보다는 한수 아래.

*** 딴지나 도전 환영 ***[/code]

서버 10여대에 클러스터링/로드밸런싱할 수 있는 온라인 쇼핑몰을 만들어보세요. 물론 데이터베이스를 백엔드로 해서 분산 트랜잭션 처리가 되야 합니다. 사용자 인증은 외부의 LDAP 서버로 하는게 좋겠군요. 단, 작성하는데 넉넉하게 2개월 드리겠습니다 :)

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

익명 사용자의 이미지

10여대에 클러스터링/로드밸런싱 하는 라이브러리 구입해서 쓰면금방됩니다.
입맛에 맞게 외주로 주문해도되죠..
어차피 자바도 라이브러리 쓴다는 가정하에 말씀하신거죠?
혹시 자바도 생짜로 짜서 저걸금방짜신다는건 아니죠?

또한 다른언어는 자바처럼 어처구니 없는 짓? 을하지 않아도 충분히 속도가 잘나는경우가 대부분입니다.
문제는 나처럼 동일하게 따라 해봐라가 아니고 동일한결과물을 만드는게 중요하겠죠?
동일한 스트레스 테스트를 견딜 서버를 만들수 있냐 없냐를 따져야죠..
실제로 자바의 이런저런 개념으로 짰다해도.. 조금효율적으로 짠 C보다 훨씬 속도안나오더군요..

闖의 이미지

흐흐 엄청난 도전이군요.......

어셈블리의 파워를 확인하려면 2개월정도를 기다려야되는건가요..

어셈블리의 강력함을 보려주려고 그런 일을 하지는 못하겠죠.

확실한건 아무리 c언어가 최적화가 잘되어도 어셈을 따라갈 수는 없다고 생각합니다만

코드의 효율성과 관리의 용이성은 분리되어야겠죠.

한정된 자원을 가지고 최대의 최고의 효율을 내는건 어셈일겁니다.

문제는 IT업계라는게 한정된 자원을 효율적으로 쓰는데는 별 관심이

없다는데 문제가 되는거죠.

IT업계가 수제품처럼 예술적으로 만들어서 비싸게 팔수 있는 시장이 아니니까요

강력함만 따질때는 저는 어셈에 한표........

시스템프로그래밍영역까지 포함하는 빠른 개발과 관리에서는 C언어에 한표....

longman6의 이미지

저와 제 동생.. 둘다 남자입니다.
티비보면서 서로 이렇케 우겨댑니다.
저는 효리가 이쁘다. 동생은 유진이가 이쁘다.. ^-^
사실 "누가 더 이쁘다.", "누가 최고로 이쁘다"란 주장 혹은 질문은 애초의
질문 혹은 주장 자체의 설정부터 틀렸다고 생각합니다.
사람들 각각마다 이쁘다는 기준이 제각각이고, 취향이 틀리다는 사실을 무시한
질문/주장이지요. 물론 특정 시대, 특정 지역마다의 공통적인 취향은 있지만,
그것을 획일적으로 모든 개개인에게 적용시키려는 태도는 대단히 위험하다고 생각됩니다.

마찬가지로 어떤 언어가 최고다라는 주장/질문도 어떤 전제를 무시해버린 주장/질문이 아닌가
생각됩니다.
개발 환경, 개발 목적, 혹은 개발자 마다 각각 상황들을 무시한 질문이거든요.

위에서 어떤 분이 말한 것 처럼 웹프로그램을 성능이 좋다는 이유로 C로 구현할려고 하면
수시로 바뀌는 기획자들의 변덕(?)에 맞춰 개발하려면 수시로 코딩, 디버깅, 배포의 악순환을 겪다
보면.. 흐흐 개발자는... 그래서 ASP, JSP, PHP등의 소위 xSP가 웹 프로그램의 주류로 자리잡게 된게
아닌가 생각됩니다.

지금 사무실 건너편 책상의 사람들( 저희 회사 사람들이 아님니다만은)은 그 사람들은 주로 오라클에
파워빌더를 가지고, 기간계 업무 프로그램을 개발, 유지 보수 하고 있습니다.
물론 그사람들도 소켓 송수신 담당 하는 프로그래은 C로 구현하고 있습니다만, 모든 업무를
성능이 좋다는 이유로 C로 개발하라고 하면.. ㅎㅎㅎ 아마도.... 으~~악!! 비명을 지르며
도망 갈겁니다. ^-^
제가 알기로는 파워빌더(써보지는 않았습니다만)가 Win32에서 DB를 다루는데는. 거의 천하무적이라고
알고있습니다. (조금 과장해서요.. ^^) 그래서 저기 사람들로 파워빌더를 주로 사용하는데..
역시 한계는 있습니다. 그래서 C를 보조(?) 언어로 사용하지요..

이렇튼 상황, 목적에 따라 적합한 개발 언어는 바뀐다고 생각합니다.
"C 언어가 최고다, 최고인가?"란 식의 질문/주장은 제 생각에 군사문화 혹은 권위주위 교육의 잔재라고 생각합니다.
혹은 입시교육위주의 우리 교육이 문제라고 생각됩니다. 1등 혹은 서울대 지상주위.. ^^

무엇이 최고인가? 누가 1등인가란? 질문보다는 무엇이 이 상황에 더 적합한가?
누가 이 일을 잘할 수 있는가?란 질문으로 질문에 촛점이 바뀌어야 한다고 생각합니다.

그냥 떠들어 봤습니다. ^-^

피에쓰: 처음 질문하신 분의 교수님도 C언어가 최고라기 보다는 신입생 교육용으로 C언어가 적합하다고
생각하셔서 그랬을 겁니다. 물론 이것도 논란의 여지는 있지만요..

익명 사용자의 이미지

fender wrote:
서버 10여대에 클러스터링/로드밸런싱할 수 있는 온라인 쇼핑몰을 만들어보세요. 물론 데이터베이스를 백엔드로 해서 분산 트랜잭션 처리가 되야 합니다. 사용자 인증은 외부의 LDAP 서버로 하는게 좋겠군요. 단, 작성하는데 넉넉하게 2개월 드리겠습니다 :)

도전 고맙네요. 심심한데 잘됐네.
도전을 받기전에 다음의 조건을 갖춰주세요.

[조건]
1. 도전하신분도 처음부터 새로 같은 프로그램을 만드셔야 합니다.
2. 이미 만든거로 도전하는 것은 안됩니다.
3. 정말로 정식으로 도전하신다면 메일 주세요. 장난금지.
4. 서버 10대를 제공해주세요. (측정시)
5. 성능 측정을 위한 제 3자의 프로그램이 필요.
6. 반드시 도전자는 1인이어야 하며 외부의 도움을 받으면 벌금 1000만원!
7. 도전에 진사람의 소스는 반드시 공개해야 하며 저작권을 상실하며
이긴사람에게 저작권이 귀속됩니다.

얼마든지 받아들이죠. 정말로 도전하시겠습니까?
환영하겠습니다.
근데 그거 만들면 잘 팔립니까? 잘팔리면 팔아서 이웃돕기나 한번....
더 잘팔리는거 도전해주시면 좋을텐데...

digitie의 이미지

fender wrote:
서버 10여대에 클러스터링/로드밸런싱할 수 있는 온라인 쇼핑몰을 만들어보세요. 물론 데이터베이스를 백엔드로 해서 분산 트랜잭션 처리가 되야 합니다. 사용자 인증은 외부의 LDAP 서버로 하는게 좋겠군요. 단, 작성하는데 넉넉하게 2개월 드리겠습니다 :)

거기다 최소의 수정으로 여러 플랫폼에서 돌아갈 수 있으면 더 좋겠네요 :)

덧. 왠지 EJB가 생각나서요 :)

showmethemoney

fender의 이미지

minzkn wrote:

도전 고맙네요. 심심한데 잘됐네.
도전을 받기전에 다음의 조건을 갖춰주세요.

[조건]
1. 도전하신분도 처음부터 새로 같은 프로그램을 만드셔야 합니다.
2. 이미 만든거로 도전하는 것은 안됩니다.
3. 정말로 정식으로 도전하신다면 메일 주세요. 장난금지.
4. 서버 10대를 제공해주세요. (측정시)
5. 성능 측정을 위한 제 3자의 프로그램이 필요.
6. 반드시 도전자는 1인이어야 하며 외부의 도움을 받으면 벌금 1000만원!
7. 도전에 진사람의 소스는 반드시 공개해야 하며 저작권을 상실하며
이긴사람에게 저작권이 귀속됩니다.

얼마든지 받아들이죠. 정말로 도전하시겠습니까?
환영하겠습니다.
근데 그거 만들면 잘 팔립니까? 잘팔리면 팔아서 이웃돕기나 한번....
더 잘팔리는거 도전해주시면 좋을텐데...

흘... 진지하게 받아들이셨군요. 어쨌든 자신의 말에 책임을 지는 모습이 보기 좋습니다 :)

서버 10대 제공 같은 것은 현실성이 없어 보이고, 저도 같은 프로그램을 만들어야 한다면, 직업적으로 J2EE 프로그램을 짜긴 하지만 별도의 프로젝트를 위해 시간을 내기 어렵습니다. 또 5번 같은 경우는 생각보다 단순한 문제는 아닙니다. 그냥 리퀘스트 한번 처리하는데 몇 초가 걸리는 지가 아니라 scalability를 고려해야합니다.

어쨌든 진지하게 받아들이셨다면 타겟을 바꿔보는게 좋겠군요. 제가 진행하는 오픈소스 프로젝트가 2개 있습니다. 하나는 버그질라 같은 버그 트래킹 시스템이고(http://jitter.sourceforge.net), 하나는 크로스플랫폼 메일클라이언트(http://argosmail.sourceforge.net)입니다.

특히 후자의 경우는 거의 주말에만 1-2개월 쯤 작업해서 거의 처음 시작하는 거나 다름 없는 상태입니다. 불공평하다고 생각하시면 어차피 저도 풀타임으로 이 쪽에 매달리는 상황이 아니니 시간 제한은 두지 않겠습니다.

요구조건은 이렇습니다 :

(1) 윈도우즈/리눅스(GTK2/Motif)/맥OSX/Solaris(Motif)/HP-UX(Motif) 동시 지원
(2) IMAP/POP3/MBOX/MAILDIR 지원
(3) HTML 메일 보기/편집 가능
(4) 주소록 관리 기능(vcard 호환)
(5) 국제화(i18n) 및 유니코드 지원

저는 직장 일이 워낙 바빠서 약 1년 정도 후에 사용가능한 테스트 버전을 릴리즈할 계획입니다. 만들어도 팔아먹진 못하겠지만 어셈블리로 이 정도 만들면 모르긴 해도 /.에 기사 하나쯤은 딸 수 있을테니 보상이 될지 모르겠군요 :)

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

전웅의 이미지

물론, 어셈블리어로 도전하시는 분은 각 환경에 맞는 어셈블러를 선택할 수
는 있어도 프로그래밍은 from scratch 로 하셔야 하겠죠. 단 한 줄도 다른
언어의 컴파일러나 툴을 통해 얻은 machine-generated 된 어셈블리어 코드
를 포함해서는 안 되겠죠.

또한, 두 분은 라이브러리의 사용에서도 어느 정도 합의가 필요한 듯 합니
다. 어셈블리어를 사용하면서 다른 언어로 제작된 라이브러리를 사용하는
것을 어떻게 생각해야 할지 말이죠. 고급 언어의 경우 해당 언어 spec 과
함께 제공되는 라이브러리를 사용하는데 문제가 있어 보이지는 않습니다.

상황이 진지해져 가기에 한마디 떠들고 갑니다. :)

--
Jun, Woong (woong at gmail.com)
http://www.woong.org

fender의 이미지

전웅 wrote:
물론, 어셈블리어로 도전하시는 분은 각 환경에 맞는 어셈블러를 선택할 수
는 있어도 프로그래밍은 from scratch 로 하셔야 하겠죠. 단 한 줄도 다른
언어의 컴파일러나 툴을 통해 얻은 machine-generated 된 어셈블리어 코드
를 포함해서는 안 되겠죠.

또한, 두 분은 라이브러리의 사용에서도 어느 정도 합의가 필요한 듯 합니
다. 어셈블리어를 사용하면서 다른 언어로 제작된 라이브러리를 사용하는
것을 어떻게 생각해야 할지 말이죠. 고급 언어의 경우 해당 언어 spec 과
함께 제공되는 라이브러리를 사용하는데 문제가 있어 보이지는 않습니다.

상황이 진지해져 가기에 한마디 떠들고 갑니다. :)

뭐 호출할 수만 있다면 무슨 라이브러리를 써도 전 별로 반대할 생각 없습니다 :) 물론 자바의 코어만 가지고 위의 조건을 충족하는 메일클라이언트를 만드는 것도 충분히 가능하지만 이미 많은 3rd 파티 라이브러리를 썼기 때문에 어셈의 경우도 동일한 조건을 보장해줘야 겠지요.

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

익명 사용자의 이미지

전반적으로 볼때 어느언어가 유리한가를 따져야지 특정한부분에 유리하다고 그언어가 우세하다할순없죠.
예를들어 매우간단단한 로우레벨 제어프로그램을 만든다면 자바는 매우불리하겠죠?

zedai1972의 이미지

위의 글을 저도 올린적이 잇는데..

어떤 언어가 더 우월?한가 란 질문 자체가 좀 ...

그냥, 주어진 기간에 주어진 요건을 만족시킬 언어라면

어셈이든, c든 ,c++ , 이든 win32 든 mfc든 쓰면 되지 않나여?

모르면 , 책보고 하면 되구 -,-^

\\(^^ )^^)// **

전웅의 이미지

또 한가지 생각해봐야 할 사실은, minzkn 님의 도전이 어떤 의미를 갖는가
입니다.

한 가지 중요한 사실은, 이번 도전이 minzkn 님 개인의 어셈블리어 실력과
어셈블리어에 대한 애착, 또한 한 프로그래머의 인내와 노력이 주어진 환경
적 제한을 어떻게 극복할 수 있는지 등을 보여줄 수는 있지만, 문맥 없는
절대적 관점에서 어셈블리어가 최고의 언어임을 증명하는 것은 아니라는 것
입니다 - 이러한 점과 논의의 주제를 고려할 때 이 도전이 유의미할지도 의
문스럽습니다.

--
Jun, Woong (woong at gmail.com)
http://www.woong.org

just_kid의 이미지

재밌네요...

어느 언어가 더 좋은가? 특히 위에서 어셈이랑 프로젝트 한다는 것

잼나네요... 음... 보통 공항같은 메인급에서 어셈을 사용하는거로 알고

있습니다... 그런데 다른 엔터프라이즈급에서는 어셈보다는 타언어를 사용

하는것으로 알고 있습니다... 왜 그럴까요?

다 각자 환경에 따라 사용되는 것이 틀린것이 아닐까요?

아무튼 결과가 궁금해지는군요....

남들이 독특하고 참신하다고 나까지 그럴필욘없다
난 차근차근 꾸준히 한걸음씩 전진하면 되니깐...

deisys의 이미지

GURU 를 향해 달려갑시다 ;;

언어보다 사람이 먼저죠;

자고로 명필은 붓을 가리지 않는 법

자신이 할 일을 위해서 '가장 적절한 언어를 선택하고

그 언어로 가장 효율적인 코드를 만드는'

사람이 되는게 중요하지 않을까요.

( 솔직히 저는 C의 손을 들어주고 싶지만 )

fender의 이미지

deisys wrote:
GURU 를 향해 달려갑시다 ;;

언어보다 사람이 먼저죠;

자고로 명필은 붓을 가리지 않는 법

자신이 할 일을 위해서 '가장 적절한 언어를 선택하고

그 언어로 가장 효율적인 코드를 만드는'

사람이 되는게 중요하지 않을까요.

( 솔직히 저는 C의 손을 들어주고 싶지만 )

그쵸. 또 기업에서 보면 언어보다는 돈이 먼저지요 :)

분명 시스템 자원도 자원이지만 인력이나 시간 또한 기업 입장에서는 중요한 자원이지요. 어쨌든 해당 프로젝트를 최소의 비용으로 최대의 효과를 얻을 수 있는 방법을 택하는게 좋을 것 같습니다. 응답시간을 1초 앞당기는게 무엇보다 중요한 프로젝트가 있을 수 있는 반면, 유지보수와 확장성이 생명인 경우도 얼마든지 있습니다. 특히 후자의 경우 유지보수가 쉽지만 실행 성능이 느린 언어라도, 예를들어 3 men/month가 필요한 걸 1명으로 줄일 수 있다면 차라리 남은 1명분의 돈으로 서버를 업그레이드 하고 1명분의 돈을 절약하는게 훨씬 이득이 됩니다.

단, 개인적으로 프로그래머 입장에서 다양한 언어에 모두 능숙해 지기는 어렵다고 생각합니다. 물론 다양한 언어를 접하는게 시각을 넓혀주는 건 사실이지만 정말 최고 수준으로 능숙해질 수 있는 언어는 잘해야 1-2개를 넘지 않는 경우가 많은 것 같습니다.

그럼...

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

익명 사용자의 이미지

자바에대해 지나치게 환상을 가지고 계신듯하군요.
"예를들어 3 men/month가 필요한 걸 1명으로 줄일 수 있다면 차라리 남은 1명분의 돈으로 서버를 업그레이드 하고 1명분의 돈을 절약하는게 훨씬 이득이 됩니다."

이게 사실이라고는 어디에도 근거가 없습니다.. Sun의 광고를 무비판적으로 받아들이셨군요..

여테 자바로 해서 인원줄였다는소리는 어디에도 들어본적없으며 오히려 자바로 하면 더많은인력이 들어간다는게 일반적입니다..

geneven의 이미지

첫 주제올린 사람인데 글 정말 많이 올라왔네요...
음.. 내심 C언어의 대체언어에 대한 기대로 올린 글이었는데..

C언어가 개발되고 안정화된지 수십년이 된걸로 알고 있었는데,, 그 이후 수많은
시간이 흘렀음에도 불구하고 C언어를 대체할만한 노력들은 없었나요?

select99의 이미지

노력은 많이 있었다고 봅니다 하지만..
C 언어 이후 언어들이 사실 C 문법을 많이 따르는형태로 발전되었다고 봅니다.

그만큼 C언어가 끼친 영향이 큰것이겠지요..

그럼에도 딱히 C보다 낫다라는 언어는 아직 잘없는것 같군요..

jedi의 이미지

geneven wrote:
첫 주제올린 사람인데 글 정말 많이 올라왔네요...
음.. 내심 C언어의 대체언어에 대한 기대로 올린 글이었는데..

C언어가 개발되고 안정화된지 수십년이 된걸로 알고 있었는데,, 그 이후 수많은
시간이 흘렀음에도 불구하고 C언어를 대체할만한 노력들은 없었나요?

어째 수십년이 지난 구닥다리 언어가 어째서 아직도 짱먹고 있냐?
이런 뜻으로 돌리는 군요.
c의 변화를 너무 무시하지 마세요. 살아남기 위해서 변해왔고,
그 변화가 성공해서 살아 남은 거 아닐까요?
아직도 cobol쓰는곳 있고, 아직도 fortran쓴답니다.

어째튼 쓸대없는 소모적인 논쟁을 엄청하게 되는구만...

ps
죄송합니다. 소모적인 논쟁에 저도 불을 붙인 꼴이 되는듯하군요.

+++ 여기부터는 서명입니다. +++
국가 기구의 존속을 위한 최소한의 세금만을 내고, 전체 인민들이 균등한 삶을
영위할 수 있는 착취가 없는 혁명의 그날은 언제나 올 것인가!
-- 조정래, <태백산맥> 중에서, 1986년

cedar의 이미지

C언어의 대체 언어라... C의 영향을 받은 모든 언어가 C의 대체 언어 아닌가요?
C++, Objective C, Java, C# 등등 말이죠.
그 중에서도 C++이 가장 많이 쓰이고요. 이미 이전에 C가 사용되던 대부분의 분야에서 C++이 사용되고 있습니다. 사용 빈도에서 C를 압도한지는 오래되었습니다. 가장 적게 사용되는 분야는 임베디드 시스템이지만, 32비트 임베디드 시스템이라면 당근 ANSI C++를 그대로 사용할 수 있으며, 그 이하의 16비트, 8비트 시스템(예를 들어 엄청 오래된 i8051)에도 기존 C++의 서브셋에 해당하는 Embedded C++를 사용할 수 있습니다.
또한 OS 커널 자체가 C대신 C++로 만들어진 OS도 오래 전부터 있었습니다. 대표적인 예가 상용 OS인 BeOS죠. 동일한 x86 시스템에 설치했을 때, C로 만들어진 리눅스나 윈도보다 훨씬 속도가 빠릅니다. C++이 C보다 빠른 응용분야의 예 중 하나죠.

geneven의 이미지

아 뜻이 그렇게 비춰졌나요? 그냥 궁금해서 그랬었던건데,,, 그래도 이런 토론이
정말 많은걸 알게해주지 않나요?? 그리고 이글에 대한 토론은 이쯤에서 끝내도
될까싶네요

geneven의 이미지

제가 처음 제시했던 주제는 방향자체가 잘못된것에 동의합니다.
최고를 따진다는 거 자체가 문제였던거 같습니다.

bacrika의 이미지

C는 당연 최고라고 생각 합니다. C를 사람 입장에서 보지 말고 기계 입장에서 봅시다.
기계는 로직을 따라 움직입니다.

사람 입장에서 보면 C가 어떻다라고 말하고
객체지향언어가 좀 더 구조적이고 빠르다라고 말할수도 있지만, 기계 입장에서 보면 C는 자신이 하고 싶은
일을 사람에게 설명하기도 쉽고 자신이 하는 일이
상당히 구조적이면서 효율적이기도 합니다.

기계 입장에서 컴파일러를 만든다면 c++같은건
절대 안 나왔을겁니다. 이건 완전히 사람 입장에서
생각해 만든 언어이니까요.

이는 로직chip 만드는 사람으로 하여금 C를 계속 사용하게 하는 이유이면서 모든 cpu에 C컴파일러가 존재하는 이유이기도 합니다.

컴파일은 사람과 기계가 대화하는 통역언어 입니다.
사람의 입장에서만 보지 말고 50%는 기계 입장에서
보아주자는 견해입니다.

많이 사용 된다고 하는 말이 아닙니다. 코드가 어디서 왔는가란 원천을 따져본다면 단연 C가 최고의 언어가 아닐런지요?

버그헌터의 이미지

bacrika wrote:
C는 당연 최고라고 생각 합니다. C를 사람 입장에서 보지 말고 기계 입장에서 봅시다.
기계는 로직을 따라 움직입니다.

사람 입장에서 보면 C가 어떻다라고 말하고
객체지향언어가 좀 더 구조적이고 빠르다라고 말할수도 있지만, 기계 입장에서 보면 C는 자신이 하고 싶은
일을 사람에게 설명하기도 쉽고 자신이 하는 일이
상당히 구조적이면서 효율적이기도 합니다.

기계 입장에서 컴파일러를 만든다면 c++같은건
절대 안 나왔을겁니다. 이건 완전히 사람 입장에서
생각해 만든 언어이니까요.

이는 로직chip 만드는 사람으로 하여금 C를 계속 사용하게 하는 이유이면서 모든 cpu에 C컴파일러가 존재하는 이유이기도 합니다.

컴파일은 사람과 기계가 대화하는 통역언어 입니다.
사람의 입장에서만 보지 말고 50%는 기계 입장에서
보아주자는 견해입니다.

많이 사용 된다고 하는 말이 아닙니다. 코드가 어디서 왔는가란 원천을 따져본다면 단연 C가 최고의 언어가 아닐런지요?

기계입장에서 프로그램을 개발하실려면 C언어가 아닌 어셈블러로 프로그래밍을 해야하는거 아닌가요?

세상은 변하며 시대를 거듭할수록 유행하는 프로그램언어가있습니다.

선택은 자유겠져?

fender의 이미지

bacrika wrote:
C는 당연 최고라고 생각 합니다. C를 사람 입장에서 보지 말고 기계 입장에서 봅시다.
기계는 로직을 따라 움직입니다.

사람 입장에서 보면 C가 어떻다라고 말하고
객체지향언어가 좀 더 구조적이고 빠르다라고 말할수도 있지만, 기계 입장에서 보면 C는 자신이 하고 싶은
일을 사람에게 설명하기도 쉽고 자신이 하는 일이
상당히 구조적이면서 효율적이기도 합니다.

....

컴파일은 사람과 기계가 대화하는 통역언어 입니다.
사람의 입장에서만 보지 말고 50%는 기계 입장에서
보아주자는 견해입니다.

많이 사용 된다고 하는 말이 아닙니다. 코드가 어디서 왔는가란 원천을 따져본다면 단연 C가 최고의 언어가 아닐런지요?


이렇게 보시면 됩니다...

내가 원하는 건 우리집에서 회사까지 출근을 빠르게 하는 것인데, 이를 위해 자동차를 하나 고른다고 칩시다. A사의 자동차는 운전자의 입장에서 인체공학적 설계로 편안함과 안전함을 중시했고 GPS 등 운전자에게 도움이 될만한 여러 기능을 제공합니다. 물론 계기판 보면서 기어, 핸들, 페달로 조작하는 건 일반 차와 동일합니다.

그런데 B사에서 기존의 관점을 바꿔서 운전자가 아닌 자동차 입장에서 최상의 성능을 낼 수 있는 모델을 시판했습니다. 엔진에 무리를 줄 수 있는 불필요한 편의 시설 - 카오디오나 에어백 등은 다 빼버렸고 공기 저항을 최소화하기 위해 차체를 납작하게 만들어 운전자가 바싹 엎드려서 운전을 해야 합니다. 그리고 운전자와 자동차의 인터페이스 - 즉, 핸들, 기어, 페달 등을 모두 없애 버렸습니다. 시동을 걸기 위해서 펌프를 조작해서 휘발유를 실린더에 넣고 배터리에 전선을 연결해 스파크를 튀기면 시동이 걸립니다. 액셀 대신에 연료 밸브를 조작하면 변속이 가능하고 방향 전환은 바퀴 축을 밀어주면 됩니다.

자... 과연 저는 출근을 위해 어떤 모델의 차를 구입해야 할까요? :)

운전자가 자동차 엔진을 돌리기 위해 있는게 아니라 자동차가 운전자의 빠른 이동을 돕기 위해 있는 겁니다. 마찬가지로, 남아도는 CPU와 메모리를 활용하기 위해 프로그램을 짜는게 아니라 비즈니스적 문제를 해결하기 위해 CPU와 메모리를 활용하는 프로그램을 만드는게 아닌지요?

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

익명 사용자의 이미지


비약이 매우 심하시군요..
C 와 자바의 문법상 C가 훨씬편하며 조작도 편합니다.
자바는 클레스부터 작성해야합니다. 이단 C는 없어도 됩니다.
C는 포인터라는 강력한 도구가 있습니다.물론 사용은 개인의 선택사항입니다. 자바는 없습니다. 이왜에도 더많지만.
대표적인 두가지만 비교해봤습니다.더구나 자바는 여러가지 라이브러리의 도움업이는 무용지물에가까워 필요한 환경설정에만도 매우피곤하게 합니다..
사람들은 실제로 C를 훨씬 쉽고 빠르게 배웁니다.
아무것도 모르는사람 데려와서 누가 빨리 간단한프로그램 짜게되나 시합할래요?
말씀을 거꾸로하셨다고 봅니다.

신승한의 이미지

어셈으로... :lol: :lol: :lol:
재미있겠네요..

정말 하시는거지요?
끝날대까지 어디를 지켜 봐야, 재미 있게 볼수 있을까요?

:twisted:

서지훈의 이미지

minzkn wrote:
C언어보다는 Assembly가 저는 최고의 언어라고 말하고 싶습니다.

어떤 언어든지 결국은 역어셈블 될수 있고
모든 구조는 어셈블리를 알면 꽤뚫어볼수 있습니다.
그리고 빠릅니다. 크기도 작게 만들수 있고요.

전 처음부터 어셈블리를 공부했었고 그 다음에 C->Basic ->Pascal ->QBasic->C++ -> Java

이런순이었는데

아무리 생각해봐도 어셈블리가 가장 강력한 힘을 발휘하는 듯합니다.

물론 단점도 있지만 분명 제 생각으로는 "어렵다" 라는 말은 잘못된거라고
생각합니다. 오히려 쉽다는게 제 주장입니다.

어려운것이 아니라 코드가 늘어진다 라는 표현이 적절할거 같습니다.
C는 간결로 대표되지만 어셈은 세부묘사로 대표되지 않을까요?

그냥 표현이 늘어지는 것 뿐이지 어셈이 어렵다는 예기는
머리에서 코드를 생성하는데 길게 보지 못하는사람들의 예기가 아닐까요?
길게 보지 못하고 짜는 사람은 보나마나 C로 짜도 똑같습니다.

혹시 제 생각에 반대하신다면 저에게 도전장을 던지세요.
어떤 프로그램 하나 만들어서 (얼마든지 복잡해도 됨)
저의 어셈에 의한 결과물과 비교해보시면 그걸로 저의 답변은 끝입니다.

분명 C언어도 강력합니다. 하지만 어셈보다는 한수 아래.

*** 딴지나 도전 환영 ***[/code]


역시나 어셈은 시스템을 속속들이 알고 쓰면 이보다 더 강력할 수 없겠지만...
실무에 적용을 하기엔 제약이 너무 많은것 같습니다.
일단은 시스템, OS 마다 다른 구조로 인해, 스터디 시간이 너무 길고...
만약 시간 무한대로 주고, 해보라고 하면 모를까나 그렇지 않고서야 어셈은 좀...
아주 특수한 상항에서나 쓸법한...
근데... 이게 편하고 강력 하다고 하신다면...
걍... 0, 1 로 프로그래밍을 하시는게 더 속편하실 텐데...
정말 이것보다 더 확실한 포프먼스를 낼 수 있는게 있을 려나?

0, 1이 어셈보다 한 수 위(?)... 강추~~~~

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

youlsa의 이미지

모든 도구들이 다 알맞은 용도가 있는 법이지요. 웹사이트 만드는데 C를 쓴다거나 하는건 도끼로 요리하는 것과 다름 아닙니다. 쉽고 편한 도구들 많은데 C라니요, 시대착오적인 생각이고요 말도 안됩니다.

하지만... 절대 개인 취향이라는 전제하에 한번 조심스레 써봅니다. 절대 개인취향입니다~~~ flame 전쟁하려구 쓰는게 아니예요~ ^^

C가 최고의 언어 맞습니다. ^^ 그 심플함이란... 전산학자들은 C의 구조가 파스칼에 비해 허술하다 생각할지 모르겠지만 기름 냄새 나는 엔지니어의 입장에서 보면 단연 최고입니다. 막 납땜하다가 잠시 쉬는 사이에 만든 듯한 독특한 향기가 느껴지지 않습니까? (Java의 향기가 커피향이라면 C의 향기는 인두와 땜납의 향기입니다) ^_^ 그러면서도 얼마든지 우아하게(?) 동작하는 고성능의 프로그램들을 만들수 있다는게... 유닉스의 기본철학인 단순함의 승리죠. 물론 너무 단순해서 사용자가 좀 괴로울 때도 있지만 말입니다.

알맞은 도구를 알맞은 곳에 쓰면 됩니다. ^_^

=-=-=-=-=-=-=-=-=
http://youlsa.com

doldori의 이미지

저는 최고의 언어를 따지는 것 자체가 의미가 없다고 봅니다만,
그리고 가장 좋아하는 언어가 C++이지만,
fender 님의 비유는 너무 불공평하다고 생각합니다.
(C를 그런 형편없는 차에 비유하신 거 맞죠? :lol: )
그보다는 오토와 스틱의 비교 정도라면 더 비슷할까요?
오토는 배우기 쉽다, 운전하기가 편하다,
스틱을 운전하려면 다시 배워야 한다, 가격이 비싸고 연비가 나쁘다.
스틱은 그 반대.

ps. 기계 입장에 가깝게 프로그래밍 한다는 점도 경우에 따라서는
언어를 선택하는 기준이 충분히 될 수 있다고 생각합니다.

warpdory의 이미지

못 박을 땐 망치를, 박힌 못을 뺄 땐 노루발을 쓰면 됩니다. 물론, 망치 뒤에 못 빼는 것도 같이 달린 겸용도 있습니다만, 그것은 어디까지나 편의를 위해서 달아놓은 것이지요.

C 언어가 필요한 곳에선 C 언어를, 포트란이 필요한 곳에선 포트란을, 베이식이 필요한 곳에선 베이식을, 어셈블리어나 기계어가 필요한 곳에선 또 그걸 쓰면 되는 겁니다.


---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.

fender의 이미지

doldori wrote:
저는 최고의 언어를 따지는 것 자체가 의미가 없다고 봅니다만,
그리고 가장 좋아하는 언어가 C++이지만,
fender 님의 비유는 너무 불공평하다고 생각합니다.
(C를 그런 형편없는 차에 비유하신 거 맞죠? :lol: )
그보다는 오토와 스틱의 비교 정도라면 더 비슷할까요?
오토는 배우기 쉽다, 운전하기가 편하다,
스틱을 운전하려면 다시 배워야 한다, 가격이 비싸고 연비가 나쁘다.
스틱은 그 반대.

ps. 기계 입장에 가깝게 프로그래밍 한다는 점도 경우에 따라서는
언어를 선택하는 기준이 충분히 될 수 있다고 생각합니다.


아... 좀 과장법이긴 했습니다 :) 그렇지만 저는 C언어가 형편없다고 생각하는 건 아니고, 단지 프로그래밍 언어의 좋고 나쁨을 기계 입장에서 해석하기 좋다는 기준으로 판단 하는 것의 문제점을 보여 주고 싶었을 뿐입니다.

말씀하셨듯이 기계 입장에 가깝다는게 언어 선택의 기준이 되기도 합니다만 그건 바로 해당 프로젝트의 비즈니스적인 요구사항 자체가 그런 조건을 강제하는 경우에 국한합니다. 일부 디바이스 드라이버 개발이나 그런 쪽이 좋은 예가 되겠지만... 전체 IT 쪽 프로젝트들 규모에서 그런 특수한 경우가 차지하는 비중이 그다지 크다고 보지는 않습니다.

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

익명 사용자의 이미지

펜더님 글이 전체적으로 매우 왜곡되있습니다.
전혀엉터리라고 봅니다.
IT전체적으로볼때 자바는 특정한부분 -가장만만한- '웹' 외에는 거의 없습니다.
사살 웹은 거의 스크립트 수준으로 작성될수 있습니다.
과거엔 언어수준에 껴주지 않았을정도죠..

익명 사용자의 이미지

사실 자바의 문법은 C/C++ 문법의 아류작에 불과하다고 봐야합니다.
그러나 후소작이면서 그다지 개선되거나 나아진것도 없으며 속도는 저하됬고.
그리유용하지 않거나 기존있던개념을 자신들만의 개념인양 소개함으로써
고객(프로그래머) 들을 혼란에 빠트렸죠.
안정적이지도 못하며 확장력도 떨어지죠

youlsa의 이미지

fender wrote:
일부 디바이스 드라이버 개발이나 그런 쪽이 좋은 예가 되겠지만... 전체 IT 쪽 프로젝트들 규모에서 그런 특수한 경우가 차지하는 비중이 그다지 크다고 보지는 않습니다.

글쎄요... 딴지 거는건 아니구요.... 산업규모로 볼때 무시할 정도로 작을거 같지는 않은걸요? 냉장고나 세탁기, 핸드폰, 공장 자동화 기기, 선박, 전투기 등등등... 대부분의 사람들이 자기가 속한 우물이(인더스트리) 전부인걸루 생각하며 살기는 합니다만... ^_^

=-=-=-=-=-=-=-=-=
http://youlsa.com

idoun의 이미지

요즘엔 처음 프로그래밍 시작하는 사람에게는 C++를 권해주고 싶습니다.

C로 시작한 저는 OOP개념을 얻는데 너무 힘들었었죠...

C++은 다른 언어로 갈아타기에도 좋다고 생각합니다. 자바로 넘어가는데 큰 노력이 들지 않고, PHP는 더더욱 쉽죠.

UML로 문서화 하기에도 좋고 설계도 편리하구요.
STL만으로도 커다란 가치를 지닌다고 생각합니다.

차리서의 이미지

서지훈 wrote:
역시나 어셈은 시스템을 속속들이 알고 쓰면 이보다 더 강력할 수 없겠지만...
실무에 적용을 하기엔 제약이 너무 많은것 같습니다.
일단은 시스템, OS 마다 다른 구조로 인해, 스터디 시간이 너무 길고...
만약 시간 무한대로 주고, 해보라고 하면 모를까나 그렇지 않고서야 어셈은 좀...
아주 특수한 상항에서나 쓸법한...
근데... 이게 편하고 강력 하다고 하신다면...
걍... 0, 1 로 프로그래밍을 하시는게 더 속편하실 텐데...
정말 이것보다 더 확실한 포프먼스를 낼 수 있는게 있을 려나?

hardwiring은 어떨까요? :)

--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!

futari의 이미지

저는 어셈블리와 C를 거의 동시에 시작했었습니다.

대충이라도 써본 언어가 그래도 10개는 되는거 같은데요 ㅡㅡ;;

이것 저것 써보면서 느낀건 역시나...

"용도에 맞춰, 취향에 따라" 쓰면 된다는 것입니다.

개발 속도, 수행 속도, UI의존도, 플랫폼 종속정도, 논리의 흐름, 직관성, 복잡성... 등등 지향해야 할 방향에 따라서 사용하면 된다고 생각합니다.

사실, API나 LIBRARY같은거 하나도 없이 순수한 언어로만 구현한다고 하면

숙련자의 대결은 별로 차이가 없을 것 같네요, 뭘 쓰던지 ㅡㅡ;;

그러니... '최고' 같은건 첨부터 없는거고 -_-;;;

젓가락과 포크를 놓고 뭐가 최고냐 싸우는 것과 비슷한거죠 -_-;;

싸우지 마셔용~ ㅎㅎ

-------------------------
The universe is run by the complex interweaving of three elements: matter, energy, and enlightened self-interest.
- G'kar, Babylon 5

irondog의 이미지

C언어를 어떻게 보고, 이해하고 있느냐를 통해 그사람의 프로그래밍 역량을 가늠 할 수 있을 것 같군요. ^^;

dondek의 이미지

객체 지향 언어를 하는데 C 언어의 경험은 방해만 된다는 말씀을 하시는 분들이 많이 있더군요.

남들이 그렇게들 얘기를 하니까 그럴 수도 있고, 또는 C언어를 객체지향 언어를 배우는 만큼 하지 않았을 수도 있다고 생각합니다.

경험 많으신 분들 말씀을 들어보면 저절로 무릎이 쳐집니다.

뭐가 좋다, 나쁘다라는 식의 말씀은 이 쓰레드에선 flame일 뿐 같구요, 자신이 믿는 신념은 굳건히 지켜야 함은 물론이고 더 나아가 다른이들의 신념 또한 인정하고 받아들일 줄 아는 넓은 그릇('포용력' 이라는 단어가 나중에 생각나서 괄호 붙입니다. -_-;; 역시 공돌이..)을 키워야 하지 않을까 합니다.

진리를 나의 수준으로 끌어내리지 마라.
나를 진리의 수준으로 끌어올려라. - 배꼽 중에서

dondek의 이미지

여담입니다만, 글 쓰시는 분들의 문장 구조를 보면 어떤 식의 글을 많이 쓰시는지 대충 알겠네요.

예를 들어 fender 님은 글의 단락을 구분지어서 엔터키를 치시고 그 외의 많은 분들은 중간에 많은 엔터가 들어갑니다.

SGML과 같은 문서구조화에 더 초점이 맞추어져 있는 문서 시스템을 사용하시는 분들과 일반 게시판을 사용하시는 분들의 꽤나 눈에 띄는 차이점이라서 그냥 끄적거립니다. :)

진리를 나의 수준으로 끌어내리지 마라.
나를 진리의 수준으로 끌어올려라. - 배꼽 중에서

charsyam의 이미지

자기가 제일 쉽고 잘 다루는 언어가 자신한테는 최고의 언어가 아닐까요?(아니면 그런 가능성이 있는 언어가)

고운 하루되시길...

=========================
CharSyam ^^ --- 고운 하루
=========================

lovejin0309의 이미지

최고의 언어는 눈빛입니다. ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ

랜덤여신의 이미지

dondek wrote:
여담입니다만, 글 쓰시는 분들의 문장 구조를 보면 어떤 식의 글을 많이 쓰시는지 대충 알겠네요.
예를 들어 fender 님은 글의 단락을 구분지어서 엔터키를 치시고 그 외의 많은 분들은 중간에 많은 엔터가 들어갑니다.

SGML과 같은 문서구조화에 더 초점이 맞추어져 있는 문서 시스템을 사용하시는 분들과 일반 게시판을 사용하시는 분들의 꽤나 눈에 띄는 차이점이라서 그냥 끄적거립니다. :)

저는 인용할 때에 엔터를 나름대로 지워버린답니다... :)

corba의 이미지

minzkn wrote:
C언어보다는 Assembly가 저는 최고의 언어라고 말하고 싶습니다.

어떤 언어든지 결국은 역어셈블 될수 있고
모든 구조는 어셈블리를 알면 꽤뚫어볼수 있습니다.
그리고 빠릅니다. 크기도 작게 만들수 있고요.

전 처음부터 어셈블리를 공부했었고 그 다음에 C->Basic ->Pascal ->QBasic->C++ -> Java

이런순이었는데

아무리 생각해봐도 어셈블리가 가장 강력한 힘을 발휘하는 듯합니다.

물론 단점도 있지만 분명 제 생각으로는 "어렵다" 라는 말은 잘못된거라고
생각합니다. 오히려 쉽다는게 제 주장입니다.

어려운것이 아니라 코드가 늘어진다 라는 표현이 적절할거 같습니다.
C는 간결로 대표되지만 어셈은 세부묘사로 대표되지 않을까요?

그냥 표현이 늘어지는 것 뿐이지 어셈이 어렵다는 예기는
머리에서 코드를 생성하는데 길게 보지 못하는사람들의 예기가 아닐까요?
길게 보지 못하고 짜는 사람은 보나마나 C로 짜도 똑같습니다.

혹시 제 생각에 반대하신다면 저에게 도전장을 던지세요.
어떤 프로그램 하나 만들어서 (얼마든지 복잡해도 됨)
저의 어셈에 의한 결과물과 비교해보시면 그걸로 저의 답변은 끝입니다.

분명 C언어도 강력합니다. 하지만 어셈보다는 한수 아래.

*** 딴지나 도전 환영 ***[/code]

이런 기준이라면 최고의언어는 기계어가 되겠군요 :P

페이지

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.