프로그래밍 언어 선택에 대한 고민입니다. C vs JAVA
글쓴이: tyolee83 / 작성시간: 화, 2005/05/10 - 9:48오전
컴퓨터 전공 3학년입니다.
이제 정말 마음잡고
알고리즘 기초부터 차근차근 다져 보려고
공부를 시작했습니다.
그런데 현재 상태가 C와 자바를 그냥 어느정도
(콘솔만 한줄 알고 GUI는 손도 못댑니다;;)
하는 정도 입니다.
그런데 이제 주력으로 삼을 언어를 하나 정해야 할것 같은데
여기저기 물어봐도 딱히 해답이 안나오네요
워낙 개인적인 문제라 그런걸까요?
자바가 편하기는 해 보이는데, 좀 더 세부적인 접근을 하자면
C도 해야하고, 둘다 하자니 벅차고... -_-
어찌해야 할지 고민입니다.
해답은 아니더라도 고수님들의 조언좀 부탁드립니다.
Forums:
공부하실때는 자바 나중에 생업(?)에 뛰어드신면 C를 추천드립니다
공부하실때는 자바
나중에 생업(?)에 뛰어드신면 C를 추천드립니다 8)
---------------------------------------
blog : http://myohan.egloos.com
전쟁의 서막을 알리는 북소리가 들려온다.
전쟁의 서막을 알리는 북소리가 들려온다.
大逆戰
자바를 추천합니다
OOP가 메인스트림으로 진행되는 트렌드상 자바가 더 좋을겁니다.
C#도 나쁘진 않지만, 다양한 플랫폼을 지원하지 못한다는게 좀 커서요.
C는 분명히 low level의 "기반"이 되는 언어지만(예전엔 어셈이였습니다만) 이걸로 제대로된 큰 프로그램을 짠다는 것은 매우 어려운 일입니다. 대략 2만 LoC까지는 유용하게 사용되지만 그 이상의 프로그램을 작성하는 것은 경험 많은 프로그래머에게도 큰 도전이 됩니다.
C++는 매우 강력한 언어입니다. 하지만 너무 강력한게 문제가 되는 경우가 많습니다. 실제로 최근의 경향을 보면 C++을 사용하느니 차라리 C를 사용하는 프로젝트가 늘고 있는 추세고요. 유명한 말이 있습니다. "소프트웨어 엔지니어링은 복잡성을 제어하기 위해 있는 것이지 복잡성을 늘리기 위해 있는 것이 아니다"
그러나 험난한 과정을 거치고 나서 구루수준이 되었을때 대단히 강력한 언어가 된다는 것은 매우 큰 매력으로 작용하지요.
Java는 최근 몇년간 퍼포먼스 문제를 해결하기도 했고(최근의 일련의 벤치마크결과들을 분석해보면 JDK 1.4나 1.5에서 구동되는 프로그램은 보면 Intel, MS C/C++ Compiler로 컴파일된 C/C++ 프로그램보다는 조금 느리거나 동급이고, GCC C/C++ 컴파일러로 컴파일된 프로그램보다는 상당히 빠른 상태입니다)
강력한 분산환경인 J2EE등으로 상업적으로 매우 가치 있는 언어입니다.
또한 J2ME로 핸드폰이나 PDA등에서도 적극적으로 사용되고 있죠.
언어적으로로 C를 하셨다면 문법은 쉽게 해결할수 있고, 대단히 많은 자료나 문서를 가지고 있습니다.
한국에서는 좀 별로입니다만, Smalltalk도 추천 대상입니다. Smalltalk가 큰 인기를 얻지 못했던 이유인 성능 문제도 이제는 많이 해결되서 원조 OOP 언어인 Smalltalk도 좋습니다만, 국내에서 많이 사용되지 않는다는 문제가 있습니다.
그리고 C/C++, Java, C# 같은 메인 언어 말고도
자신이 필요한 문제를 빨리 풀수 있게 해주는 스크립트 언어도 하나 배워두시는게 도움이 될 겁니다.
python, groovy, perl, ruby등이 대상이 되겠죠.
이것들 말고도 Lisp나 heksell등의 "문제를 다른 방식으로 푸는" 언어들도 익혀 두시는게 도움이 됩니다. 하나의 문제를 다양항 방식으로 바라보는 눈을 가지는 것은 매우 큰 도움으로 작용합니다.
언어는 항상 목적에 따라 선택되어져야 합니다.알고리즘을 배우시기를
언어는 항상 목적에 따라 선택되어져야 합니다.
알고리즘을 배우시기를 원하다면 제 입장에서는 파이썬이나 루비를 추천하겠습니다. 언어를 배우고 익숙해지는 시간이 금방이기 때문에 알고리즘 자체가 아닌 언어 때문에 머리 아프실 일이 없습니다. 자바 같은 경우에는 메모리 관리를 해 주기 때문에 그 쪽으로 신경 쓸 필요는 없지만, 형에 대해서 신경을 써야 하기 때문에 좀더 시간이 걸릴 것이고, C는 알고리즘 자체보다 메모리 관리에 더 집중하시게 될 것입니다.
그러나 배우시는 과정에서 현대 컴퓨터가 어떻게 돌아가는 지도 배우고 싶다면 C 를 적극 추천합니다. C는 포터블한 어셈블리어라고 생각하면 될정도로, 낮은 수준의 언어이기 때문에 컴퓨터가 돌아가는 방식을 잘 파악할 수 있습니다.(대표적으로 선형적인 기억공간을 어떻게 할당해서 쓸 것인가...)
사실 알고리즘을 배우기 원하신다면, 언어는 머든 상관 없습니다. 어셈블리나 씨로 배우면 시간이 많이 걸리겠지만, 보너스로 컴퓨터 전번에 대한 감을 익힐 수 있을 것이고, 파이썬 같은 고수준 언어를 쓴다면 고급 언어가 얼마나 문제 해결에 집중할 수 있게 만들어 주는 지 체험할 수 있을 겁니다.
그냥 어떤 언어가 이름이 예뻐서 고른다고 해도 별 문제 없을듯 ^^
Funge 같은 언어나 섀익스피어 언어(..) 같은 걸로 시작하면 좀 문제가 있겠습니다만 ... ;;
근데 무슨 C++ 을 할까 자바를 할까도 아니고C 랑 자바 중에서 갈
근데 무슨 C++ 을 할까 자바를 할까도 아니고
C 랑 자바 중에서 갈등을 하시나요.
컴공 3학년이면 C 로 웬만한 자료구조도 짜봤을테고
포인터도 이해하실테고
간단한 C 코드를 어셈블하면 어떻게 나올지도 아실텐데요
그리고 자바를 한다고 해도,
Eclipse 같은 appl 을 만들고 싶은건지
J2EE 를 하고 싶은건지에 따라
많이 달라지지 않을까요?
개념없는 초딩들은 좋은 말로 할때 DC나 웃대가서 놀아라. 응?
- 취미생활 - C나 java나 VC나 그냥 주변에 많은 도움을 받을
- 취미생활 -
C나 java나 VC나 그냥 주변에 많은 도움을 받을 수 있고, 쉽게 접근이 가능하고 자신의 생활과 밀접한 것을 선택하시면 됩니다.
어떤거든 상관없이 마음 편히 사용하실 언어 말이죠.
- 실무를 염두에 둔 경우 -
다 하세요.
실무에는 이거저거 다 씁니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
[quote="서지훈"]다 하세요.실무에는 이거저거 다 씁니다
공감에 1표. ^^
Running in the 90's
http://spbear.com
[quote="서지훈"]- 취미생활 - C나 java나 VC나 그냥
서지훈, I totally agree with you.
[quote]공부하실때는 자바나중에 생업(?)에 뛰어드신면 C를
시장의 요구는 자바가 압도적으로 많답니다.
C도 그렇고 JAVA도 그렇고 현업에서 모두 많이 쓰이고 있는 언어 입니
C도 그렇고 JAVA도 그렇고 현업에서 모두 많이 쓰이고 있는 언어 입니다.
어느것을 선택해도 선택에 대해 나름대로 장단점이 있습니다.
현업에서는 JAVA 수요가 많은 것이 사실입니다만,
C도 아직까지 많이 쓰이고 있습니다.
특히 임베디드 분야에서는 C가 아직까지 압도적 입니다.
사람마다 학습 방법이 다르겠습니다만,
막연하게 알고리즘이나 자료구조 같은 것을 공부하는 것 보다는
쉽게 스스로 개발을 먼저 해 보는 것이 중요하다고 생각 합니다.
왜 알고리즘이 중요한지, 자료구조를 공부해야 하는지 스스로 느끼게 되거든요.
막연하게 디자인 패턴 공부한다고 해도 이해도 되지 않고,
머리속만 복잡해 지더라구요.
C나 JAVA 어느 것을 선택하셔도 나중에 후회 하실 일은 없을 겁니다.
그런 고민보다 어떤 것을 어떻게 만들어 볼까.. 를 고민 하시는것이
좋겠네요.
그리고 한가지 더..
C든 JAVA든 하실때는 한가지씩 하세요.
현업에서는 이것저것 다 해야 합니다.
깊이 있게 볼 수 있는 시간이 없어요.
학생이실때, 공부 할 수 있을 때 한가지씩만 하세요.
C 조금, JAVA 조금
이것 조금, 저것 조금... 최악의 경우 입니다. ^^
[quote="preisner"]C든 JAVA든 하실때는 한가지씩 하세요
저도 진로때문에 고민이 이만저만이 아닌데..
C 혹은 JAVA 한가지만 알고 웹용(php,jsp 등)도 이나 스크립트 언어같은건 몰라도 취업에 문제가 없나요??
물론 자료구조, 알고리즘 등이 바탕에 깔려 있을 때요..
To be or not to be.
That is the question.
[quote="philossh"]저도 진로때문에 고민이 이만저만이 아
취업 문제 때문에 그러시리라 생각은 했었습니다만,
제가 인사 담당이 아니라서 정확한 말씀을 드리기는 어렵겠네요.
실무진 입장으로 말씀 드린다면
신입이라고 해도 학생때 해본 프로젝트 결과물을 상당히 중요하게 봅니다.
이력서 보면 이것저것 다 할 줄 안다고 많이 써 놓습니다만,
아무리 학생때 잘했어도 실무에서는 많이 다르거 든요.
결국 제일 확실하게 가능성과 현재 능력을 알 수 있는 방법은
학생때의 프로젝트 결과물 입니다.(음.. 현실적으로 최선은.)
이것두 잘하고 저것도 잘하는 신입?
그건 신입이 아니잖아요.
신입을 채용한다면 경력이 아닌 이상에야 가능성을 보게 되는 거죠.
그래서 제가
쉽게 스스로 만들 수 있는 것 부터 시작해 보라는 말씀을 드린거구요.
반복하면서 수정하고, 새로운 기술도 적용해 보고,
자료구조도 바꿔서 테스트 해보고...
친구들과 함께 하는 것도 좋겠죠.
졸업 할 때쯤 되면 나름대로 완성도 있는 결과물이 나오겠지요?
C나 JAVA가 중요한게 아닙니다.
만약 만들어 보고 싶으신 프로그램이 셋톱박스에 들어가는 브라우저라면 C나 C++을 공부하셔야 겠지요.
웹쪽에 관심이 있으시다면 jsp로 만들어 보시는게 좋겠구요.
셋톱박스 개발하는 회사에서 PHP,JSP 잘하는 신입이 필요하겠습니까?
웹에이전시에서 C로 CGI 개발할 신입이 필요하겠습니까?
하지만 학생때 부족하겠지만 embedded linux 기반
브라우저를 개발해 보았었다면 셋톱박스 업체에서 이력서를 아주 열심히 검토해 보겠지요.
고민의 방향이
C나 JAVA 어느것을 해야 좋을까? 가 아니고
이런 프로그램을 만들어 보려고 하는데 어느 언어, 어떤 플랫폼으로 만들어야 할까?
가 되어야 원하시는 결과가 나올 수 있겠습니다.
kldp에 오시는 분들이 요즘의 흐름에 대해 누구보다 잘 알고 계시므로 도움을 주실 수 있을겁니다.
목표는 구체적이고 현실적이어야 실현될 수 있습니다.
그럼 많이 고민 하세요. ^^
우섭 취업을 급하게 생각하신다면..
제가 생각할때는... 프로그램이라면 모두 다 해야지..
주력 프로그램 이런거 없는거 같아요....
우선 그래도... 취업이 급하시다면...
정 취업하시기 전까지 하나만 할시간이라고 하시면...
C 를 하시는게.. 조금이라도 더 도움이 되지 않을까.. 하는.. 생각을 해봅니다. ^^
Can You See 1% of chance??
So that is MY WAY !!!
저 같으면 닷넷을 추천해 드리고 싶군요.
저 같으면 닷넷을 추천해 드리고 싶습니다.
[quote="philossh"][quote="preisner"]C든 J
웹용으로 JSP를 익힌다기보다.. 웹에 적용되는 기술들을 이해하고 익히는 게 더 중요합니다. HTTP 프로토콜에 대한 이해와 브라우저에서 사용하는 객체의 성질, 특성등을 이해하시면 훨씬 도움이 됩니다. php냐 asp냐 jsp냐는 별 의미없습니다.
알고리즘 공부하시는데... 언어는 별로 고르지 않으셔도 됩니다.
알고리즘 공부하시는데...
언어는 별로 고르지 않으셔도 됩니다.
하지만 대학 졸업 전에 asm, C, OOP언어 한개. 는 잘 할 수 있으면 좋겠죠.
회사에서는. 취직한 다음에 시키는거 해야됩니다. :twisted:
사용 언어로 회사 골랐다는 소리는 못 들어본거 같은데 ㅡ.ㅡ
-------------------------
The universe is run by the complex interweaving of three elements: matter, energy, and enlightened self-interest.
- G'kar, Babylon 5
[quote="philossh"][quote="preisner"]C든 J
솔직히 C나 JAVA 하나만 제대로 할줄 알아도 취직에는 별다른 어려움이 없습니다.
세상에 모든 언어를 다 할 수 있는 사람은 없으니깐요.
문제는 하나의 언어를 얼마나 이해하고, 프로그램을 얼마나 이해를 하느냐 입니다.
코더와 프로그래머의 차이는 여기에서 벌어집니다.
코더는 자기가 사용하든 언어 이외에서는 전혀 한 발자국도 나아 갈 수가 없고, 프로그래머의 경우는 어떤 언어가 좀 더 프로그램에 도움이 될까를 고민합니다.
전혀 모르는 언어도 프로젝트 시작하면서 좀 배우면 웬만큼은 지장없이 하게됩니다.
세상에 널린게 자료인데...ㅡㅡㅋ
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
고민이란게..
고민이란게..
원래 그런거 같습니다.
아직은 학생이시니까. 이걸 할까 저걸 할까 고민하시지 마시구요
C, C++은 어떤 방식의 언어이고, 어떤곳에서 주로 쓰이는지. 특징은 뭔지.
JAVA는 왜 EJB가 엄청나게 확산되고 있는지, 특징이 뭔지 등등
을 먼저 확인해보시고, 그중에 이게 재밌겠다. 하는것을 먼저 하세여. 어짜피 현업에 나가시면 둘다 하실 줄 알아야 하지만.
둘중에 하나를 제대로 해놓으면 다른 언어 배우기는 쉬우니까여 ^^
다른 분들 답변 하시는것도 참조하시고, JAVA와 MFC, C++, GCC등의 세상돌아가는 것이나 이런 정보를 찾아보시면 맘에 드는게 나올거 같네여 ^^
참고로, 둘중에 어느게 더 좋다 나쁘다 라고 말 할 수는 없습니다. 둘다 광범위하게 사용할 수 있지만. 현실에서 많이 사용되는 부분은 서로 다르니까여 ^^
열정!! ^^
문제가 주어졌을 때 자신있게 코딩을 할 수 없다면, C를 가지고 더 프로
문제가 주어졌을 때 자신있게 코딩을 할 수 없다면, C를 가지고 더 프로그래밍을 하시고, 코딩은 자신이 있는데 프로그램 전체 구조를 잘 잡고 싶은 공부를 하는거라면 자바를 가지고 공부하세요.
----
I paint objects as I think them, not as I see them.
atie's minipage
플랫폼, 언어의 장벽에서 벗어나도록 노력하세요.
플랫폼, 언어의 장벽에서 벗어나도록 노력하세요.
될수 있으면 다 해보세요. c, java 뿐만아니라 ^^학생때는 깊이
될수 있으면 다 해보세요. c, java 뿐만아니라 ^^
학생때는 깊이가 아닌 넓은 지식을 쌓는게 좋을 것 같구요.
학생때 깊이 파고드는건 한계가 있다고 생각듭니다.
넓은 지식은 나중에 사회에 나가서 어떠한 환경에 접했을때,
문제를 분석하고, 이해하는 시간을 줄여 줍니다.
언어는 단순히 도구일 뿐입니다.
개발은 언어의 사용능력보다는 프로토콜 설계, 네트웍의 이해, OS의 환경 이해
등 부수적인 능력이 더 중요합니다.
학생이시라면, 일단 수업은 빠삭하게.. 어느 한 부분에 치우치지 마시고,
객관성을 가지세요.
저는 주력은 c 지만, mfc, java, basic, asp, php, html 다 할줄 압니다. 비록 기초적인 수준이지만, 이것은 c 만 하는 사람과는 엄청난 차입니다. 다른 것들의 특징을 안다는 것은 그만큼 설계를 더 잘할수 있고, 분석이 빠릅니다. 그리고 문제점을 파악하는 시간을 단축할수 있습니다. 전체적인 분석이 가능하지요. 또한 linux환경을 접하게 된다면, 하드웨어도 하게 될지도 모릅니다.
학생이시라닌까.. 난 이게 좋다라고 단정 내리지 마세요. 경험을 해 보아야 선택을 잘 할수 있습니다.
T 자형으로, 하나는 깊이 파고 나머지는 두루 섭렵하는게 좋을것 같네요.
T 자형으로, 하나는 깊이 파고 나머지는 두루 섭렵하는게 좋을것 같네요. 또 일하다 보면 자연스럽게 그렇게 되기도 하구요. 언어 별거 아니라고 하시는 분도 계시지만, "어떤문제라도 이걸로 자신있다!" 라는 언어가 하나쯤은 있어야 한다고 봅니다. 이걸 고르는건 취향문제라고 생각이 되구요.
대학초반(과연 초반이 언제쯤일까요..=_=)에는 필드에 대한 관심보다는
대학초반(과연 초반이 언제쯤일까요..=_=)에는 필드에 대한 관심보다는 프로그래밍전반적인거나 소프트웨어 엔지니어링 등등 고전에 속하는 지식을 습득하는게 장기적으로 봐서는 더 큰 이득이 아닐까 합니다. 많이 안다는 건 사고의 틀이 넓어지는데 필요요소인거 같습니다. (제가 대학때 이걸 실패했었거든요..(과연 이것만 실패했을까용?ㅎㅎㅎ T_T))
필드에서는 개발자가 언어나 플랫폼에 대한 선택이 생각외로 크지 않는 거 같습니다. 더 좋은 방법이나 플랫폼이 있어도.. 여러가지 이유때문에 사용하지 못하는 적이 많더군요.
비천한 지식으로 예를 든다는 것이 우숩지만.
자바 서블릿 스팩은 Request/Response 형태의 통신에 대한 프레임워크라 볼수가 있지요.. 응답/요청에 대한 통신에 대한 구현이 서블릿 스타일으로만 할 필요도 없고.. 다른 더 참신한 방식도 존재 할수 있겠지요.. 오히려 학생때에는 이건 메타피지컬한 학습이 중요하지 않을까 합니다.
하지만 리눅스 시스템 프로그래머로 나아 가실건지.. 아니면 자바/웹/엔터프라이즈 시장으로 가실건지에 따라 언어 선택은 다르시겠지요?
좀 말도 안되는 잘난척을 한다면..-_-;
과학이 세상을 이해하는 눈(법칙)이라면 기술은 그 법칙으로 문제를 해결하는 거라면 언어 선택은 기술에 속하는 것이 아닐지.. (물론 프로그래밍 언어 학자들에게는 언어에 대한 것이 과학이 되겠네요..)
흠. 제가 봐도 이해 안되는 답글이었습니다.ㅎㅎ;
[quote="myohan"]공부하실때는 자바 나중에 생업(?)에
차라리 말을 배우는게 유리할듯..ㅎ
----------------------------------------------------------------------------
댓글 달기