제목 | C++을 어떻게.. | 추천 | 0 | IP 주소 | 118.37.xxx.212 |
---|---|---|---|---|---|
글쓴이 | JKR | 날짜 | 2020.01.12 16:58 | 조회 수 | 956 |
이번에 컴공으로 대학에 입학하게 되었습니다. 선배들이 입학 전에 C++을 공부하면 도움이 많이 된다고 합니다. 저는 아두이노, 스크레치, 라즈베리파이 정도만 다뤄봤습니다. 그러니까 뭐 거의 노베죠.. C++을 어느 책으로 어떻게 공부하면 좋을까요?ㅠㅠ C를 먼저 하고 해야될까요?.. 웬지 재학or졸업 선배도 여기 계실수도 있을것 같은데.. 도와주세요ㅠㅠ!!
JKR 님의 최근 글
|
댓글 27
-
iAmK
2020.01.12 17:32 [*.236.xxx.86]
저는 프로그래밍 처음 접하신다면 python 먼저 하시는거 추천드립니다! -
JKR
2020.01.12 21:27 [*.62.xxx.202]
그러면 그거부터 해야겠군요.. -
under_mg
2020.01.14 13:38 [*.35.xxx.61]
파이썬을 왜 먼저 해야하는건가요???? ㅎ 파이썬도 좋은 언어지만,,, 먼저 C를 하는게 더 좋다고 생각합니다만,,, 아니/.. 생각이 아니고 확신합니다. -
Bastard
2020.01.12 17:59 [*.121.xxx.84]
C언어를 먼저 습득하신 후, C++을 배우시는것을 추천드립니다. 책도 좋지만 유튜브 강의를 들으면서 스스로 공부하시는 것이 실력향상에 큰 도움이 되실겁니다. -
JKR
2020.01.12 21:27 [*.62.xxx.202]
의견 감사합니다! -
나무나무
2020.01.12 18:18 [*.39.xxx.76]
c 의 한계를 벗어날려고 만든것이 c++ 인것으로 아니 c를 먼저하는것이 좋겠죠 하면서도 애초에 객체지향이니 java 를 시작해버리시는게 나을거 같다는 생각도 듭니다. 프로그램밍이 첫 시작이라면 python 도 시작으로 좋을겁니다. -
JKR
2020.01.12 21:28 [*.62.xxx.202]
파이썬을 먼저 해봐야겠네요 -
나무나무
2020.01.12 23:34 [*.213.xxx.165]
제일 좋은건 1~4 까지 혹은 2 까지의 커리큘럼에 있는 언어의 예습일것 같습니다 -
ISUNGPHONE
2020.01.12 19:38 [*.150.xxx.187]
저도 C언어 먼저 배우고 C++ 하나씩 공부하는 게 좋을 것 같아요 -
JKR
2020.01.12 21:28 [*.62.xxx.202]
의견 감사합니다! -
meri
2020.01.12 20:42 [*.47.xxx.104]
C랑 java를 먼저 익혀서 이해하면 나머지 언어들 배우는데 도움이 많이 됩니다. -
JKR
2020.01.12 21:28 [*.62.xxx.202]
할게 많네요.. -
GOTTOMS
2020.01.13 03:34 [*.47.xxx.39]
혹시 노마드 코더라고 유튜버 아시나요? 거기에 있던 영상중에 어떤 언어를 배워야 하는지에 대해서 올려둔 영상이 있어요 -
JKR
2020.01.13 19:38 [*.37.xxx.212]
한번 찾아보겠습니다. 감사합니다! -
분할정복
2020.01.13 07:58 [*.214.xxx.233]
파이썬도 좋은 언어지만.. 전공자라면 1학년때 C/C++ 공부하는걸 추천드립니다
제가 학부생일땐 열혈강의 시리즈가 도움 많이 되었던 것 같습니다 -
JKR
2020.01.13 19:39 [*.37.xxx.212]
그런가요? 의견 감사합니다! -
거신cms
2020.01.13 14:48 [*.185.xxx.163]
아두이노, 라즈베리파이를 다룰 줄 안다면 c는 어느정도 알고 있는거 같은데요. c++이든 파이썬이든 자바든 뭐든 하나 잡아서 하면 될거 같습니다. 선배들이 어디 선배들인진 모르겠지만 입학하신 학교의 선배들이 조언한거라면 그냥 c++ 공부하는게 좋습니다. 선배들이 그렇게 말하는건 학교에서 어쨌든 c++을 많이 할테니까요. -
JKR
2020.01.13 19:40 [*.37.xxx.212]
학교 선배들의 조언입니다. 의견 감사합니다! -
raikarin
2020.01.13 15:19 [*.48.xxx.81]
전공자라면 c부터 해야합니다.
왜냐면 학교 과제들이 c를 요구하는 경우가 대단히 많아요.
c++을 배웠다고 하더라도, c와 c++은 기본적으로 제공하는 라이브러리가 다릅니다. -
JKR
2020.01.13 19:41 [*.37.xxx.212]
오 그런건 몰랐네요. c랑 c++이랑 많이 다른가요? -
raikarin
2020.01.14 01:05 [*.116.xxx.85]
좀 차이가 있습니다.
라이브러리 사용부터 시작해서(이게 가장 큽니다. 라이브러리 나중에 배우시겠지만, 진짜 필요한 기능의 대부분은 라이브러리에서 갖다 쓰면 그만입니다)
객체지향 등등 여러 점이 c와 c++이 차이가 있습니다.
단, 자바는 크게 필요없습니다. 전공에서 자바 쓸일은 진짜 거의 없다고 보시면 됩니다. -
under_mg
2020.01.14 14:00 [*.35.xxx.61]
라이브러리란 그냥 각 언어가 특정 기능들을 묶어서 만들어 놓은거 뿐인데..
그 라이브러리가 다르다는건 라이브러리 api들의 이름만 다르거나 기능에서 조금의 차이가 나는거죠.
나중에 언어를 여러개 배우다 보면 라이브러리가 다르다??
라이브러리는 언어마다 당연히 다른거라 비교 하는 요소들로 거론하기에 적합하지 않습니다.
예를 들어 스트링을 복사하는 기능을 하는 라이브러리는 함수명만 다르게요 세상 모든 언어에 존재합니다..
그리고 C, C++중 무었을 먼저 하느냐를 결정 하는 문제에서 C를 추천하는 이유는,,
C라는 언어 하나 자체만으로도 상당히 깊이가 있고 심오하고, C의 많은 부분을 차용해서 만든 언어가 C++이기 때문입니다.
그래서 체계상 C++을 먼저 하기가 맞지않고 힘이들죠. -
raikarin
2020.02.07 16:23 [*.48.xxx.81]
그건 전혀 아닙니다만;
전공자인데 심오하다는 소리를 들으니까 황당하네요 ㅋㅋㅋㅋㅋㅋ
C는 C++보다 기본적으로 제공하는 기능(이런 것들도 기본 라이브러리입니다)이 더 적고 불편한 대신
C++ 보다 더 빠릅니다. 세대적으로 C는 3세대 언어고 C++은 4세대 언어니까요
(세대가 높을 수록 실제 컴퓨팅 환경에서 컴퓨터가 작동하는 속도는 느려지고 세대가 낮을 수록 빠릅니다)
일례로 불변수는 원칙적으로 아직 C언어에 기본 라이브러리에 포함되어 있지 않아서
stdbool.h를 선언 해줘야 사용할 수 있는데
C++은 선언하지 않더라도 기본적으로 bool 변수를 제공하고 있죠.
이런 사소한 것들이 차이가 있다고 말하는 겁니다.
또한 C에서 많은 부분을 차용해서 만든게 C++이 아니고요
C는 초창기 3세대 언어인데 프로그래밍 체계가 발전됨에 따라 C에는 지원하지 않는 기능들에 대해 요구사항이 있어서
C를 발전시켜 만든 언어가 C++입니다. 뭘 차용하긴 차용을 해요 둘 다 같은 C 계통 언어인데.
C로부터 C++이 태어난거지 C에서 뭘 갖다가 만든게 C++이 아닙니다; -
under_mg
2020.02.25 10:19 [*.35.xxx.61]
현시대 프로그래밍에서 자바가 차지하는 영역이 얼마나 큰데 미래를 봐야죠.
대학에서 조교나 하다가 끝날것도 아닌데..
그리고 차용이라는 단어 자체를 모르시나요??
그냥 "c++ c언어 차용" 이라고 딱 저 키워드로 구글 네이버 다음 검색만 해보세요^^;;;
c++이 c의 기본 문법을 토대로 객체지향개념을 접목 시킨 언어라는건..
프로그래밍 전공자 아니라도 우리회사 엔지니어도 알던데..
전공자라니 놀랍네요...ㅎ -
raikarin
2020.03.11 14:56 [*.48.xxx.81]
예? 자바가 차지하는 영역이 얼마나 크다니.. 황당하네요 진짜 ;;
소프트웨어 프로그래밍 등 상위레벨 프로그래밍에서는 c++을 더욱 선호하고
학과 교수님 등 모든 분들이 개발자로 먹고 사려면 기본이 c++이라고 하시는 마당인데...
심지어 c를 더 선호하는 경우도 있습니다(시스템 개발 쪽은 더 하위레벨 언어를 선호합니다. 최적화를 위해서요)
멀리 갈 것도 없고, 윈도우 같은 운영체제는 기본적으로 대부분 C로 개발되며, C++을 간혹 차용하기도 하고요
게임 업계에서도 C++이 기본이지 자바를 기본으로 하지 않습니다.
대학에서 조교나 해야만 C나 C++를 파고든다... 신선한 발상에 놀랍습니다 진짜;
차용이라는 개념에 대해서 말씀하시니 이야기 드립니다만
차용은 "빌려 쓰는 개념"입니다. C++은 C의 기능을 빌려다 쓴게 아니라
기본적인 c의 개념하에 객체 지향 등 최신의 개발 동향에 따라 필요한 요소들을 추가해서 발전시킨 언어입니다.
차용이라는 단어가 맞으려면 c에서 있는 함수 이름이라던가 개념들을 가져다 쓰되, 특정 형태가 아예 다르거나 해야해요.
많은 부분이 유사하거나 거의 문법 상의 차이가 없다면 이때는 차용이라는 단어가 아니라 확장, 발전, 개선 등의 용어가 더 적합하죠.
전공자 아니시면.. 비꼬기 이전에 자신이 정확한 개념을 알고 있는가부터 생각을 하세요;
+ 또 검색하라고 토를 다실까봐 위키피디아의 C 검색해서 나오는 항목을 게시합니다.
"C는 1972년 켄 톰슨과 데니스 리치가 벨 연구소에서 일할 당시 새로 개발된 유닉스 운영 체제에서 사용하기 위해 개발한 프로그래밍 언어이다. 켄 톰슨은 BCPL언어를 필요에 맞추어 개조해서 "B"언어(언어를 개발한 벨 연구소의 B를 따서)라 명명했고, 데니스 리치가 이것을 개선하여 C 언어가 탄생했다. 유닉스 시스템의 바탕 프로그램은 모두 C로 작성되었고, 수많은 운영 체제의 커널 또한 C로 만들어졌다. 오늘날 많이 쓰이는 C++는 C에서 객체 지향형 언어로 발전된 것이다. 또 다른 다양한 최신 언어들도 그 뿌리를 C에 두고 있다." -
under_mg
2020.03.23 18:14 [*.35.xxx.61]
자바가 차지하는 영역이 크다는 말에 황당하다는 첫 문장보고 ..
내가 이 인간이랑 왜 대화를 하고 있지?? 이런 생각을 해보네요 ㅎㅎㅎ
4년 연속 유망 프로그래밍 언어 1위는 자바입니다. 유망뿐만아니라 퍼센트 비율까지도...
그리고 웹은 자바스크립트, 파이썬, html.... 이것도 찾아봐요 ^^;;;
웹 시스템 합친 전체 랭킹에서도 C++은 이미 파이썬에서 밀렸구요. C도 파이썬에게 밀렸다는 보고도 많습니다.
뭐 자바에게는 이미 완전 발렸구요ㅎㅎ
그렇다고 파이썬, 자바가 c보다 더 좋은 언어냐구요? 아니죠.. 시대의 흐름을 C, C++이 못따라가고 있는것뿐...
절대적인것은 아니지만 IT에서는 나중에 나온것들이 더 좋을 확률이 높죠.
그리고 결정적으로 미국의 상위 대학에서는 프로그래밍을 가르칠때 기본으로하는 언어가 파이썬이 1위, 2위는 자바, 3위는 C입니다.
C는 원하지 않으면 아예 정규 과정에도 들어가 있지 않아요.. 물론...모르시겠지만 ㅋㅋ
당신이 말하는 그 교수들은?? 미국의 상위 컴퓨터 사이언스 학부를 개 똥같이 개 무시해버리는 건가요?? ㅋㅋ
네?? 그런거냐구요... 이거 설명 부탁드려도 될까요??? 그것도 허접한 학교들이 아니고 상위 컴퓨터사이언스 학부라구요...
MIT, yale, stanford등등...... 이런대학이.. 아예 C과정도 없습니다.
미국의 고등학교의 C는 이미 2003년에 Java로 대체 되었구요..
https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext
위 url가서 미국의 대학에서 C를 가르치는 학부가 몇개인지 처 보고 오세요^^;;;
2014년 자료라고 태클을 건다면... 2020년 지금은 더 처참합니다 ㅎ
단지 첫 글에서 c를 먼저 해야 한다고 했던건 c++를 배운다는 가정하에 말한거죠..
물론 저도 C, C++ 이 두언어로 90프로 이상 먹고 살고 있지만, C, C++은 하위 레벨단에서 성능적인 이슈 이외 나머지는 크게 매리트가 없죠.
그리고 결정적으로 시대흐름을 못따라갑니다. golang, kotlin이 왜 떠오르고 있는지 찾아보세요.
전공자?? 웃음만 나오는데. 전공 + 개발13년 입니다.
그리고 대학 조교해야 c, c++를 판다고 누가 그랬나요?? 대학조교 정도는 c, c++정도만 해도 나름 괜찮다는 얘기였는데..
나머진 당신 상상력인가요??
전공 부심 그만 부려요. 역겨우니까.^^;;
그리고 학과 교수님들.. 그 박사학위 20-30년전에 받은 사람들이 개발자로 c, c++를 기본으로 해야 먹고 산다고 했다구요??ㅋㅋ
세상에 개발자중 50프로 이상이 C, C++안해보고 개발일하고 있습니다.
위에서 말한 미국 학생들은 다 굶어 뒤지겠네요??? 미국이 선도해나가는 시장이.. 이 프로그래밍 분야 아닌가요??ㅎㅎ
실무라고는 좆도 모르는 교수말 그만 듣고,, 세상으로 나오세요ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
그리고 차용을 해서 확장을 했다고 보통 말을하죠??
차용은 확장의 범주안에 들어갑니다..
차용이 아니고 확장이죠~ 라고 한 부분에서 덕분에 잘 웃었어요.
차용은 다른 무언가(C언어)에서 특정한 뭔가(언어의문법)를 빌려다가 쓰는것..을 말합니다.
이미 c, c++ 문법상 같은 부분이 얼마나 많은데..차용의 뜻을 진짜 모르나...ㅎㅎ
거기에 객차지향 개념을 더해 개발한 언어 = C++
이건 국어인데 차용 확장 두 단어만 찾아보세요^^;;;;
더 털리기 싫으면 그만 앵겨요.
존심은 부려야겠는데 실력은 조또 없고...
그럴때 헛소리라는걸 하는겁니다. -
raikarin
2020.03.29 21:24 [*.116.xxx.85]
휴.. 길게 적어주셨는데 뭐 반박하고 싶은 것은 없고 몇가지만 적어두겠습니다.
1. 저는 분명히
"시스템, 소프트웨어 이하의 로우레벨의 개발로 내려가면 c, c++이 더 중요하기 때문에 학과 내에서도 아직 c나 c++을 중시한다"
는 내용으로 말했습니다.
말씀하신 것처럼 단순히 소프트웨어, 모바일, 웹 어플리케이션 개발분야로만 한정하면 자바가 월등히 앞섭니다.
이걸 부정하고 싶진 않아요. 굳이 자료가 없어도 알고 있는 내용이구요.
그런데 자바로 시스템을 개발하고 있는 경우가 거의 없어요. 뭐 13년이나 되셨다니 말 안해도 아시리라 봅니다.
그나마 현존하는 시스템 중에서 자바를 사용하는게 안드로이드 시스템인데,
안드로이드도 자바를 대체하기 위해 코틀란을 만들어 적용하고 있다는 건 알고 있습니다.
저 같은 경우는 취업 준비 할때 우대사항을 확인할 때 대부분 c나 c++ 능력을 우대하는 경우는 봤어도
자바를 우대하는 경우는 거의 본 적이 없습니다.(실제로 2018~2019에 취준했으니 제가 찾아본 내용입니다)
물론 이 역시 제가 준비하는 개발환경이나 개발종류가 자바보다는 c나 c++을 훨씬 많이 사용하기 때문이겠죠.
2. 전 미국 대학을 나온 적도 없고, 한국에서 대학을 나온 사람입니다.
제가 말하는 것은 당연히 한국 대학 내에서의 상태를 말할 뿐이지 미국에서 어떻게 하고 있는지 관심은 없어요.
제가 겪어온 환경에서 저도 그렇구나 하고 배워왔고, 그것에 대해 말한 것을 두고 미국 대학을 언급하는 것은 올바르지 않다고 보네요.
만약 댓 다신 분이 미국에서 대학을 나오셨다면, 그건 한 수 배우겠습니다. 제가 모르는 거니까요.
물론 아니라면.. 굳이 미국 대학을 언급하실 필요가 있나 생각합니다.
3. 자료상으로 태클은 전혀 걸게 없네요 읽어보았는데 제가 미국에서 그러는거까지 알아야 하나.. 싶긴 하지만
틀린 내용은 없으므로 굳이 아니다 맞다 할게 없습니다.
4. 그럼에도 c와 c++이 왜 주된 언어라고 말했느냐 하는 것은 제가 배운 대부분의 전공학과의 교육방침이
시스템 프로그래밍을 할 줄 아는 인재 육성에 포커스가 맞춰져 있기 때문입니다. 저 역시 그 바탕으로 공부해왔구요.
그러니 그런 입장을 이해하고 받아들이면 당연히 c나 c++은 반드시 필요하다. 라고 여겨질 수 밖에 없다고 봅니다.
댓 다신 분 역시 그렇게 먹고 살고 계시다고 하고..
또한 뭐 일단 가장 중요한 세계에서 가장 큰 영향력을 미치는 상업 OS 2개인 MS windows와 apple의 macOS가 아직까지는
objective-C또는 c#, c++을 주된 프로그래밍 언어로 채택하고 있는 이상은 아예 버릴 수 없는 언어가 될 겁니다.
이후 OS 흐름이나 모바일 컴퓨팅 환경이 급변하면 어떤 언어가 더 우위에 설지는 알 수 없게 되겠지만요.
그럼에도 구세대 유물이지만 배우고는 넘어가야할 언어가 c나 c++이 아닐까 싶습니다.
뭐 먼 훗날에는 우리가 그냥 스쳐지나가는 정도인 언어로 전락할 수 있겠죠. 미래는 전혀 알 수 없을 테니까요.
그런 단락에서 전 아직까지 c, c++은 배워야 하는 언어로 보고 있어서 그리 댓글들을 달았던 것뿐입니다.
게다가 정작 제가 취준할 때 자바는 구경도 해본 적이 없어요. 제가 목표하는 분야는 자바할 줄 안다고 뽑는 회사는 듣도보도 못한게 크고..
파이썬은 우대하는 것은 봤습니다.
5. 모두 국어 사전 찾아보고 말씀드린겁니다.
차용과 확장은 일단 아예 다릅니다.
차용은 어떠한 A에 일부나 전부를 가져오는 것이지만(여기서 차용의 뜻에는 차용할 대상 외에 뭔가를 더해야 한다는 개념은 없습니다)
확장은 어떠한 A는 전부 포함하고, A에 뭔가가 더해져야 합니다.
즉, 차용은 어떤 집합 A의 부분 집합 또는 A 집합 전체만을 의미하며,
확장은 A 집합 전체를 포함하면서 A 집합에는 속하지 않는 것이 있는 집합 B의 개념이 됩니다.
그런 점에서 본다면,
c에서 되는게 c++에서 전부 되지만, c++만의 기능은 없다 -> 차용
c에서 되는게 c++에서 안되는 것도 있지만, c++ 만의 기능이 있다 -> 차용(확장은 이때 안됩니다. 안되는게 있어선 확장이 아니니까요)
c에서 되는게 c++에서 전부 되고, c++만의 기능도 있다 -> 확장
간단한 예로 확장팩이라는 개념이 있죠.
확장팩이 이전 기능 중 안되는 기능은 있는데 붙이는 이름이 아니라, 이전 기능은 전부 되면서 새로운 기능이 있는 무언가를 지칭합니다.
물론 아주 넓은 범주로 보면 차용과 확장이라는 용어 자체가 좀 모호한 면이 있습니다만,
차용은 확장한다는 내용을 처음부터 담는 것은 아닙니다.
차용하면서 확장했습니다고 한다면 당연히 차용과 동시에 확장까지 했다고 볼 수 있지만
차용했습니다에서 멈추면 확장은 했는지 안했는지 알 수 없는 거에요.
그래서 저는 그 두 모호한 표현을 배제하고 "발전"이라고 한거구요.
전 진짜 c를 완전 해체하진 않아봐서 모르겠는데
c에서 되는 기능이 c++에서 안되는 건 본 적이 없는데, c는 되고 c++은 안되는 기능이 있나요?
그럼 차용이 맞습니다.(확장이라면 c의 기능이 c++에서 모두 되야하므로)
그런데 아니다 c에서 되는 건 c++에선 모두 된다. 그럼 차용에서 멈추면 안됩니다. 확장을 붙이던가, 발전을 붙여야 하죠.
최초에 댓 다신 분은 "차용"만 쓰셨었죠? 전 그래서 아니라고 한겁니다.
더 다투고 싶지 않고
댓 다신 분의 말도 구구절절 옳은 부분이 많습니다.
제가 말한 뉘앙스는 자바가 무조건 나쁘다는게 아니었는데 그렇게 들렸다면 죄송합니다.
전 제가 바라보고 있는 방향(학과 영향이 큽니다만)만 보고 있어 섣불리 판단한게 있는거 같네요.
물론 뭐 그럼에도 아니라고 생각이 드는건 오해를 불러올 수 있는 부분을 배제하고 싶어 글이 길어졌습니다.
또 의문이나 제 의견이 잘못됬다고 여겨지신다면 글을 남겨주세요.