C언어와 자바 함께 공부하면서

corone의 이미지

학생입니다
너무 궁금한 게 있어서 질문드립니다

일단 C언어는 어느 정도 했습니다
이미 학생이라고 말씀드렸기 때문에 어느 정도 했다는 말이 무슨 뜻인지 고수님들은 아실 겁니다
정말로 많이 해서 잘한다는 뜻이 아니라
그저 기초 문법은 웬만큼 이제 조금 알았다' 정도??

그래도 나름 열심히 해서 현재 학생으로써는 문법이나 코딩은 어느 정도 많이 알게 되었습니다
이 '어느 정도' 알게 되었다는 것이 문제인데
고수님들처럼 정말로 C언어를 마스터한 것도 아니고
아니면 실무 경험이 있는 것도 아니고
그저 문법정도만 배우고 공부하고 알고 있는 것인데

학생이기 때문에 이제 Java를 시작하게 되었습니다
그런데 이 Java라는 놈이 C언어와 매우 비슷하여 처음에는 쉽게쉽게 진도가 나가고 아주 좋았는데
점점 (혹은 이전에도 가끔) C언어와 똑같으면서도 아주 조금씩 다른 부분이 있더니
점점 아예 많이 달라지더군요

처음부터 아예 전혀 달랐다면 모르겠는데
비슷하면서 조금씩 다르니까 이게 조금씩 헷갈리기 시작합니다
처음에는 '아 이런 점이 C언어와 다르구나'하면서 비교하면서 하니까 오히려 잘됐는데
지금은 정말 뒤죽박죽이어서

다르긴 다른데 C언어가 그랬는지 자바가 그랬는지 헷갈리고
점점 나중에는 그랬는지 안그랬는지도 모르겠고

C언어를 완벽히 마스터하고 Java를 시작했다면
C언어가 튼튼히 박혀 있어서
비교도 잘되고 차이점도 확실히 알겠지만
C언어도 어설프게 알고 Java도 어설프게 하다 보니까
정말 헷갈립니다

제 생각에..
한국인은 한국어를 완전 마스터했으니까 영어를 시작해도
(영어를 잘하진 못하더라도 어쨌든) 한국어와 영어를 헷갈릴 리는 없겠지만

독어를 조금 배운 한국인이 불어를 시작하면
독어와 불어를 헷갈리지 않을까 하는 생각이 드네요
그러면 독어도 제대로 못하고 불어도 제대로 못하니까요

그래서 C언어를 완전히 마스터하지도 않고 Java를 시작하면
헷갈려서 C언어도 못하고 Java도 못할 것 같아 걱정입니다

그렇다고 학생이기 때문에 Java 그만두고 C언어만 계속 할 수도 없고 (이 사정 아시죠?)

글이 너무 길어져서 읽기 버거워 지셨을 거 같은데
한마디로 다시 말해서 고수님들은 지금 어떠신지 그리고 어떠셨는지 궁금합니다
그리고 어떻게 해야 할지 조언 부탁드립니다

고수님 아니시더라도 조언을 부탁드려요

인터넷 상이라고 해서 예의를 갖춘 '따뜻한 위로'보다는
옆에 있는 후배, 동생이라고 생각하는 '냉정하고 따끔한' 충고를 더 바랍니다
저는 정말 심각합니다..

추가 설명으로..
제가 말씀드리고 있는 부분은 C언어와 Java의 개념적인 부분이 아닌(개념은 많이 다르다고 생각하기 때문에)
문법적인 부분입니다
문법적인 부분이라서 결국 별 거 아닐 수도 있는데
Java에서 코딩하다보면 뜻밖의 에러들이 생기고
아무리 봐도 에러를 찾지도 못하고
알고 보면 "아 이런 거 Java에서는 안되지.."하고 고치는데 (C언어에서는 되는거)
이게 정말 헷갈려서 나중에는 Java에서 되는지 안되는지도 모르겠고
무의식중에 코딩하다보면 자꾸 틀리고
많은 어려움을 겪고 있습니다

powerson의 이미지

음.. 저의 경험담에 비추어 말씀드리자면 그냥 학교 공부는 학교 공부대로 하시고, 앞으로 하고자 하시는 분야에 대해서 계속 공부하시면 될 거 같습니다. 잘 이해가 안되실텐데, 앞으로 하고자 하시는 분야를 계속 공부하시다 보면, 해당 분야에서 자주 쓰이는 언어가 있을 것입니다. 그 공부는 꾸준히 하시고, 학교에서 배워야할 언어도 따로 시간을 내서 공부하시라고 말씀드리고 싶습니다. 배우신 언어를 다 쓰지는 않지만, 그나마 이렇게라도 여러 언어를 접해본다면, 현재 머리속에서는 혼동이 올 수도 있겠지만, 나중에 실무에서 한번이라도 이미 접해본 언어를 가지고 코딩해야 하는 상황이 올때 처음 접해본 것보다는 훨씬 수월하실 거라 생각됩니다.

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

익명 사용자의 이미지

QQ를 가진 당신의 국가 잡담을 물?
나는 남한의 사람을 I 한국사람 교사로 일하도록 요구하고 싶다.
나는 무슨이 기초 없다.
좋은 기도의 어느 사람이 저를 잡아 당길 수 있는가?
QQ를 관련시킨다: 759421204.
뒤에 오는 것 나 자신 웹사이트이다: http://hi.baidu.com/jenny6896

semmal의 이미지

문법을 보시지 말구 의미와 그렇게 만든 이유를 아셔야 합니다.

우리나라에서 문법만 10년넘게 배우고도 영어 못하듯이, 프로그래밍 언어도 마찬가지 입니다.

C를 제대로 이해하려면 어셈블리어를 한번 익혀보는 것도 좋은 경험이 될 것 같습니다.

Java가 바탕을 두고 있는 OOP를 이해하려면 Smalltalk나 Ruby를 익혀보는 것을 추천합니다.

배울 때는 문법을 어떻게 쓰는가에 초점을 맞추는게 아니라, 그 언어에서 문법을 왜 그렇게 만들었는가를 생각해보는 것이 도움이 될 것 같네요.

------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

winner의 이미지

제일 큰 문제는 자주 쓰는 programming 언어를 벗어날 때의 막연한 두려움이었던 것 같습니다.
C로는 이렇게 할 수 있는데 Java는 왠지 안 될 것 같다라는 두려움 혹은 다른 방법이 있는데
찾아보기보다는 C로 회귀하고 싶은 욕구가 드는 거죠.

처음 C를 시작할 때는 되든 안되는 C를 붙잡고 늘어지다가 언어적 기능을 통해 새로운 해법을 찾을 때
C의 가능성을 알게 되면서 뭐든 C로 다 된다는 착각과 함께 C에 고착되는 역효과도 생겼던 것 같습니다.

Java를 하게 되면서 C로는 이렇게 했는데 Java는 동일하지 않다는 점이나 혹은 Java가 어떤 언어적 문제를
바라보고 그에 대해 제시하는 해법이 C와는 다르기 때문에 느꼈던 오해들... 그런 것이 새로운 언어에 대한
접근을 막는 것 같습니다.

Java의 불편하고 불합리하다고 생각되는 점들은 어떤 문제를 C와는 다른 형태로
바라보았을 때를 중요시여기다보니 만들어진 것입니다. 통상 programming 규모가 커질 때를 위한 것들이죠.
보통 학습을 할 때는 작은 programming을 반복적으로 하기 때문에 Java는 매우 이상한 언어로 보입니다.
학교에서 가르칠 때도 이러한 점들은 잘 가르쳐주지 못하거나 가르쳐준다해도 학생들로서는 그런 관점을
경험하지 못하기 때문에 잘 이해하지 못하는 것이 허다합니다.
그렇다면 그러한 점들은 신경쓰지 마시고 그냥 반복적으로 따라하시기 바랍니다.(저는 이게 잘 안되더군요.)
다양한 programming을 하게 되면서 차차 이해를 하게 되실 거라고 생각합니다.

그리고 새로운 언어에 대한 두려움은 C에 대한 이해도가 올라간다고 해도 그리 적어지지 않더군요.
오히려 늘어날 수도 있습니다... -_-!.

헷갈리기 시작한다는 것은 확실히 큰 문제입니다. 마치 유아에게 한국어와 영어를 동시에 가르칠 때 오히려
학습효과가 둘 다 떨어진다는 이야기랑 똑같다고 생각합니다. 언어는 단지 사고의 도구가 아니라
사고의 씨앗이기도 하기 때문에 그런 문제가 발생한다고 생각하는데요.
그런 때는 확실히 하나의 언어의 학습을 중단하는 것이 바람직할 수 있습니다.
다만 나름대로 하나의 언어로 익숙해졌을 때 같은 것을 다른 언어로 표현할 때의 차이점을 잘못된 것이 아닌
그냥 차이점으로 생각하고, 그 차이점이 왜 발생했는지를 이해하도록 노력한다면 보다 풍부한 언어능력이 생기실 겁니다.

어떤 전산관련책을 보실 때에도 의식적으로 Java로 기술된 책을 읽도록 노력하시기 바랍니다.
예를 들어 자료구조, 알고리듬과 같은 책을 보면 C, C++, Java 로 된 책들이 있는데 제 생각에는
Java가 언어계에서 최강자가 되기는 했지만 이 분야는 오히려 거추장스럽기 때문에 이렇게 세가지로
나오는 것 같습니다. Java를 제대로 배우고 싶으시다면 이런 부분을 신경쓰시기 바랍니다.

현 상황을 좀더 긍정적으로 바라본다면 누구나 겪는 문제로 차차 줄어들 것입니다.
그다지 걱장하시지 않아도 됩니다. 그런 현상이 계속 지속된다면 확실히 문제이지만 만일 조금씩
그런 문제가 줄어든다고 느끼고 계신다면 얼마 안가 신경쓰지 않아도 좋을만큼 사라질 것입니다.

두가지 언어를 하실 때 사고 -> 일차언어(모국어) -> 이차언어 의 형태를 취한다면 확실히 헷갈리는 일은 없을 겁니다.
하지만 이차언어가 굉장히 이상해지거나 제대로 익혀지지가 않죠.
Konglish가 발생한다든지 한국어만 써서 영어는 늘지 않는 것과 마찬가지입니다.
사고 -> 제1언어, 사고 -> 제2언어 의 이중구조는 확실히 얻어내기는 어렵고 두가지 언어를 얻어내실려면
어쩔 수 없이 부단히 노력하셔야 합니다.

skyoon의 이미지

프로그래밍 언어론 배우셨나요?

꼭 수강해보세요. 이런 고민 할 필요가 없을 겁니다.

그리고 IDE 툴은 그냥 쓰는게 아닙니다. 기본 syntax 오류로 부터 자유로울 수 있게 도움을 받죠.

eclipse를 이용하시면 자바와 C를 모두 사용하는데 불편함이 없지 않을까 합니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.