neun
134
2020-09-12 01:04:15 작성 2020-09-12 01:05:30 수정됨
23
1249

개~발~선~배~님~들~


현재 프론트엔드 개발 어린이입니다

실은 풀스텍쪽으로 관심이 많은데

제가 비전공자다보니 가장 기초언어인 C 언어쪽에 관심 생기더라고요 

전공이신분들은 이미 1학년때 배웠겠죠?

이 모든것들의 기반이 된건 C언어 아닙니까!!! 물론 그 전에 언어가 더 있었지만...

아무래도 프론트 주력으로 html, css, 자스, 리액트, node 등등을 위주로 해서..

그냥 전체적으로 굴러가는..? 뭔가 이 프로그래밍의 역사!!!!를 알고 싶어서요!

그래서 C 기초 플러스라는 책을 사서 보려고 했더니 이게 미친듯이 두껍고 예제 위주인 것 같더라고요 ㅎ

그리고 간간히 지금 있는거나 잘하세요 라는 댓글을 좀 보고선 마상을 살짝 받았습니다

ㅋㅋㅋㅋㅋㅋㅋ공부는 아니고 그냥 흥미 자극으로 가볍게 알고 싶은건데ㅠㅠㅠ


혹시 그냥 가볍게 읽을만한 책 추천해주실 수 있을까요!

덩달아 잡지식 정도로 공부도 되면 좋습니다 하하




0
  • 댓글 23

  • 팩트폭행범
    1k
    2020-09-12 01:22:35

    헛짓거리하지말고 다른거나하세요


    c해봐야 님 포인터 나올때 접어요


    -6
  • neun
    134
    2020-09-12 01:46:53

    팩트폭행범

    오.. 이상한 악플러 한명있다고 하던대 이 사람인가보군요

    계정 새로 판게 이건가??

  • HBGB
    180
    2020-09-12 01:59:00 작성 2020-09-12 02:37:11 수정됨

    저도 님과 같은 케이스로 c/c++ 공부했는데요

    c/c++ 공부하고 나니까 다른 개발언어에 대해 이해가 더 됐어요

    포인터 개념은 c가 아니라 어떤 언어에도 적용이 되는 부분이에요


    c책은 제가 본건 2권인데 다른 언어 배운 초보자 기준으로

    - c언어 정복 리얼교과서 : 중간 정도 난이도

    - 독하게 시작하는 c 프로그래밍 : 약간 빡세지만 국내 책중에서 제일 좋다고 생각하는 책


    그외 열혈 시리즈 많이 보시는 것 같아요

  • 팩트폭행범
    1k
    2020-09-12 02:58:55

    c언어를 흥미자극으로?

    c언어만큼 노잼이고 퍼포먼스 안나오는게 없어요

    악플이라니라 ㄹㅇ현실을 말해주는거임

  • fender
    19k
    2020-09-12 08:03:42 작성 2020-09-12 08:07:29 수정됨

    "C 언어가 모든 것의 기본이다"라는 건, 매우 흔한 오해이지만 틀린 이야기입니다.

    C 언어를 배우신 다면 다룰 수 있는 범위는 넓어지겠지만 예로 드신 리액트나 노드 등을 깊게 이해하는데는 거의 도움이 되지 못합니다.

    요즘 시대에 프로그래밍 분야를 막론하고 통용되는 근본 원리 같은 건 찾기 쉽지 않고, 설사 그런 게 있더라도 그게 C 언어는 아닐 겁니다.

    그래서 C 언어 그 자체, 혹은 하드웨어 제어 같은 분야에 흥미가 있는 경우가 아니라, 리액트 같은 고수준 기술의 심화 학습을 위해 배우는 건 추천하지 않습니다.


  • 곰개발ㅈ ㅏ
    369
    2020-09-12 09:09:11

    가볍게 이정도 책 추천합니다. 그리고 C언어를 배워두는 건 나쁘지 않습니다. 

    https://book.naver.com/bookdb/book_detail.nhn?bid=9220094

  • CharliePark
    54
    2020-09-12 10:01:28

    C기초 플러스, KNK, K&R.. C  분야의 최고 명저들이지만, 입문서로는 조금 쉽지 않은 면이 있습니다.


    책으로는 C 언어 콘서트(천인국 저), 독하게 시작하는 C 프로그래밍


    강의로는 따배씨, 생활코딩 추천드립니다


    그러나, 원서를 보실 수 있다면 KNK (C Programming : A Modern Approach) 하나만 봐도 충분합니다

  • 마르세유1
    1k
    2020-09-12 13:22:29

    C언어가 모든 언어의 기본인건 아니지만, 어플리케이션 프로그래밍의 태생적인 존재는 맞는거같아요.

    프로그래밍을 잘하고싶으시면 공부하시면 도움이 되겠는데 풀스택개발자가 되고싶다는거면 안하셔도 될거같네요..

  • 그래안그래
    263
    2020-09-12 13:39:56

    열혈 씨플플 바이블과같죵

  • fender
    19k
    2020-09-12 13:48:55 작성 2020-09-12 13:49:56 수정됨

    흔히 "C가 프로그래밍의 근본이다"라고 말하는 경우, 주장의 골자는 이렇습니다:

    • 어차피 모든 프로그램은 가상머신이건 운영체제건 C에서 구동됨.
    • 그래서 프로그래밍의 근본을 배우려면 C를 해야 함.
    • 그런데 웹 같은 응용 분야는 그 만큼 깊게 공부안해도 되니 C가 필요없음.


    얼핏 보면 그럴 듯해보이는 이야기지만 저건 20년 전 쯤에 통용되던 이야기일 뿐이고, 지금은 전혀 현실과 맞지 않는 편견입니다.

    C는 여전히 생태계에서 중요한 영역을 담당하는 언어이지만, 지금 시점에서 다양한 언어의 기초를 탄탄하게 다지고 싶다면 오히려 C에서 시작하는 건 손해입니다.

    그래서 전 하드웨어나 운영체제에 관심이 있는 경우가 아니라면 반드시 C를 배울 필요는 없다고 보고, 특히 막연히 어떤 '프로그램의 근본' 같은 걸 알고 싶어서 공부하는 건 더욱 추천하지 않습니다.

  • neun
    134
    2020-09-12 14:19:56 작성 2020-09-12 14:23:55 수정됨

    HBGB 

    감사합니다!


    팩트폭행범

    현실 말해줬다고 지 뽕에 취한것 같은데...

    누가 C언어 재밌다고했나...? 

    언어능력 개딸리는데 왜 여기있지

    새로운 언어에 흥미를 갖는건 모든 개발자의 기본 아닌가

    여지껏 활동기록 보니까 진짜 좀 안타깝네.. 떼잉 쯧 ㅠㅠㅠ


    fender

    제가 살짝 본문을 오해있게 썻나봅니다ㅠㅠㅠ

    지금 배우는거에 보탬이 되기위해서 C언어를 보려는게 아닙니다 ㅎㅎ...

    그냥 제가 현재 하고 있는거 외에 프로그래밍쪽 모든 언어를 두루두루 이해하고 싶은 마음뿐이에요

    답변 감사합니다!


    곰개발ㅈ ㅏ

    감사합니다!


    CharliePark

    티스토리 어떤글 보니까 원서를 강력 추천하시고 국내 책은 최대한 피하라고 하시더라고요ㅠㅠ

    근데 언어 장벽이 어마무시해서... 감사합니다!


    마르세유1

    더 나아가서 자스 벗어나서 자바라든가 파이썬쪽 해보고 싶더라고요 물론 먼먼먼 이야기지만!

    그래서 근본적인 지식 있음 좋을것 같아서요 하하 감사합니다!


    그래안그래 

    확실히 다들 열혈 많이 추천해주시네요 감사합니다!

  • 그래안그래
    263
    2020-09-12 15:31:31

    태그어떻게하는지알려주실분

  • 프초딩3
    2020-09-12 16:32:37

    @fender

    c언어가 근본이나 필수로 배울 필요가 없다에는 동의하지만 공부해서 손해라고 하는 부분에서는 동의하기가 많이 힘드네요.

    언어라고 하는 관점에서 다른 언어와 장단을 비교하고, memory management나 compile이나 linking등의 원리들을 같이 습득할 수 있다면 깊이는 아니더라도 짧지만 어느정도 시간을 투자하는 것이 나쁘지 않다고 봅니다.

    컴퓨터 구조나 논리 회로를 공부하는 것이 꼭 나쁜것이 아닌 만큼 전반적인 이해를 위해서는 도움이 되겠죠.

    코볼같은 정말 사라져 버린 언어이면 모를까, C언어 공부에 대한 것이 손해일 것만은 없을 듯 합니다. 그것이 왜 캡슐화, 상속, 다형성과 같은 다른 OO들의 개념들이 빛을 발하게 되는지 깨달을 수도 있고요. 


  • fender
    19k
    2020-09-12 17:28:51

    프초딩3// 오해를 피하기 위해 부연 설명이 필요할 듯 합니다. 당연히 공부해서 나쁜 건 없습니다. 하지만 같은 시간을 투자했을 때 비효율적인 경우는 있습니다.

    전 개발에 입문할 때 대략적인 분야를 우선 정하고 해당 분야에서 널리 쓰이는 언어를 먼저 보는 것이 가장 좋다고 생각하지만, 만일 분야와 상관없이 하나의 언어를 골라야 한다면 고수준의 다중 패러다임 언어를 고르는 것이 최선이라고 봅니다.

    이유는, 프로그래밍 언어에서 가장 중요하고 배우기 어려운 것은 패러다임이기 때문입니다. 문법 같은 건 경험이 쌓이면 잠깐만 봐도 금방 배워서 쓸 수 있지만, 새로운 패러다임을 익히는 건 보통 몇 년 정도는 이론과 실습을 병행해야 익숙해질 수 있는 내용입니다.

    C의 경우 '패러다임'이라고 할만한 건 명령형/절차지향적인 접근, 그리고 넓게 해석하면 포인터에 대한 이해 정도인데, 양 쪽 모두 실무에서 널리 쓰이는 고수준 언어에선 중요도가 크게 떨어지는 내용입니다.

    (참고로 C로 객체지향을 흉내내는 방법이 없는 건 아닙니다만, 일반적이지도, 완벽하지도 않습니다.)

    특히 경험이 부족한 개발자들의 경우 한 가지 패러다임에 익숙해지면 다른 언어를 배울 때 해당 틀에 갇혀서 새로운 개념을 이미 알고 있는 내용에 억지로 끼워 맞추려는 경향을 흔하게 보이는데, C를 오래하다가 고수준 언어를 배우는 분들의 경우도 구문 단위의 최적화에 집착을 한다던지 객체 지향의 개념을 모두 메모리로 이해하려 한다던지 하는 문제를 보이기도 합니다.

    반면에 자바, C#, 코틀린, 파이썬 같은 여러 패러다임을 지원하는 언어를 먼저 배우면 객체지향이나 함수형 프로그래밍 같이 실무에서 널리 쓰이고 유행하는 개발 방식을 미리 접해볼 수 있고, 또한 다른 고수준 언어와도 비슷한 개념이 많아서 분야를 정하고 실무에 사용할 언어를 배울 때도 도움을 받을 수 있습니다.

    아마도 해외에서 입문 언어로 C보단 파이썬 같은 언어를 가르치는 것도 비슷한 이유일 것이라고 짐작합니다. 참고로 미국의 경우 대학의 입문 과정에서 가장 많이 쓰는 언어는 이미 20년 전에 C/C++을 밀어내고 자바가 차지했으며, 대략 10년 쯤 전부터 다시 그 자리를 파이썬이 밀어낸 상황입니다.

    그런 점을 종합하면, 특히 아직 하나의 언어도 제대로 익숙하게 다루지 못하는 입문자라면 임베디드 등 C/C++이 필요한 분야를 지향하는 것이 아닌 한, C 언어를 우선 배우는 건 효율적인 선택은 아니라고 봅니다.

    물론 효율이나 그런 거 안 따지고 그냥 관심가고 재미있는 걸 하겠다면 당연히 C를 배우는 것도 좋습니다. 하지만 특별히 저수준 분야 지향이 아니고 C나 하드웨어에 관심이 없는데 막연하게 C를 배워야지 무언가 심오하고 근본적인 걸 깨달을 수 있을 것 같다는 생각에 시작한다면 그건 좋은 선택이 아님을 지적하고 싶을 뿐입니다.

  • neun
    134
    2020-09-12 22:05:34 작성 2020-09-12 22:05:47 수정됨

    그래안그래

    전 그냥 이름 복붙해넣는데 다른 방법이 있을수도..?


    프초딩3 

    감사합니다!

    fender

    오.. 새로운 사실을 알아가네요! 많은 도움이 되었어요 감사합니다!!

  • 프초딩3
    2020-09-12 23:54:17 작성 2020-09-12 23:55:54 수정됨

    @fender

    제가 이야기 하고 싶었던 것은 c언어의 공부가 나쁜 영향을 미칠 일은 없다는 것입니다. 어차피 주력으로 해야할 언어는 따로 있겠지요. 본문의 글처럼요.

    하지만 개발자라는 직업의 입장에서 배움의 효율성도 강조할 수 있지만 말랑말랑한 사고를 위해서 다른 언어를 공부해 보는 것이 그리 해가 될 이유는 없어 보입니다.

    한가지의 답을 바라보고 가는 것과 여러 시행착오를 통해서 깨닫고, 스스로 장점을 얻어 갈 수도 있는 것이지요. 세상은 빠르게 변화하지만 c책 읽으면서 따라하고 1주일 정도의 시간 정도를 투자하는 것 조차 손해일 수는 없다고 생각합니다.

    예를 들어 머리를 식히기 위해 고전 소설을 읽듯이요.

  • fender
    19k
    2020-09-13 07:41:38 작성 2020-09-13 07:43:30 수정됨

    프초딩3// 위에서 적었듯이 효율의 문제입니다. 비유를 하자면 운동을 해서 나쁠 영향을 미칠일은 없지요? 그리고 대부분의 운동을 위해선 근육 단련이 기본이죠? 근데 그 두 가지를 바탕으로 프로야구 투수 지망생에게 보디 빌딩을 시키면 그게 좋은 영향만을 줄까요?

    그리고 "말랑말랑한 사고"라고 하셨지만, 제 개인적 경험으로는 위에도 적었듯 C언어를 오래 한 사람들이 객체지향 언어로 넘어왔을 때 반대로 사고가 굳어서 적응 못하는 경우는 수도 없이 보았습니다.

    공통적인 특징이, 그런 분들은 무얼 짜보라고 하면 타입의 계층 관례라던가 그런 큰 구조를 보는 게 아니라 배열을 어떻게 하고 조건문을 어떻게 쓰고 그런 구문 단위의 구현이나 최적화에 집착을 하고, 클래스를 구조체 이상으로 이해하지 않습니다.

    개중에는 라이브러리나 프레임워크를 쓰는 데 거부감을 보이고 파싱이나 로깅 등 간단한 기능을 죄다 직접 만들어 쓰겠다고 덤비는 경우도 있습니다.

    다시 강조하지만, 언어를 배울 때 가장 어렵고 중요한 건 패러다임이고, 기술 간에는 상승효과라는 것이 존재한다는 것입니다.

    예를들어 웹 분야에서 자바를 먼저 배운 사람이 타입 스크립트를 배우면 좋은 시너지가 되겠지만 C를 배운다면 아마 본업과 관계없는 취미 이상으로 사용하긴 어렵습니다. 물론 반대로 C++로 게임 클라이언트 만드는 사람이 자바를 배워도 마찬가지 이야기가 되겠죠.

    패러다임 측면에서도, 자바/C# 같은 멀티 패러다임 언어로 시작하면 파이썬 같은 다른 객체지향 언어를 배우거나 요즘 유행하는 함수형 프로그래밍을 배우는데도 어느 정도 도움이 됩니다. 둘 다 객체지향을 잘 지원하면서도 자바의 스트림이나 C#의 LINQ 같이 함수형 요소도 지원을 하고 있으니까요.

    반면에 C는 어떤가요? 대표적인 패러다임 두 가지 중 어느 쪽이 건 겹치는 부분이 있나요?

    "그래도 C를 배워서 나쁠 건 없다"라는 말씀을 하시지만, 전 질문을 "왜 하필 C 언어를 배워야 하는가"로 바꾸어 보셨으면 좋겠습니다.

    요즘 C 언어는 C언어가 꼭 필요한 분야를 하기 위해 쓰는 언어이지 다른 무엇의 근본이 되거나 보다 심오한 이해를 위해 배우는 언어가 아닙니다.

    말씀대로 개발에 대한 "말랑말랑한 사고력"을 키우고 싶다면, 차라리 해스켈을 해보는 게 열 배는 도움이 될 것 같습니다.

    C를 오래하고 다른 언어로 넘어가면 모든 언어를 C 처럼 짜는 습관이 들겠지만, 아마 해스켈을 배우고 다른 언어를 보면 '폴리모피즘'이라던가 '인터페이스' 같은 완전히 이해했다고 생각했던 개념들이 새롭게 보일 것입니다.

  • 프초딩3
    2020-09-13 09:23:09 작성 2020-09-13 09:33:02 수정됨

    @fender

    약간 평행선을 달리면서 이야기 하는 느낌이네요.

    저도 거듭 말씀드리지만 제 말의 요지는 c언어를 심오하게 생각하거나, 근본이라서 무조건 해야 한다거나, c언어를 오래 공부하라는 의미가 아닙니다.

    위에 c언어를 오래 한사람의 경험을 이야기 해주셨지만, 글쓴분은 흥미로 가볍게 공부하고자 하는 마음으로 보입니다.

    그래서 제 의견은 위에서 언급했듯이 1주일 정도 공부해 보는 것이 손해는 아니라는 생각입니다. 

    c언어를 오래한 사람이 가진 경험은 이해가지만, 그것이 이 논점을 일반화 시킬만큼 커버하지는 않는다고 봅니다. 글쓴이는 프로그래밍을 배우는 입장이고 그 상황에서 1주일 정도의 시간이 효율이나 장기간 공부하거나 c를 쓴 사람의 예까지 가지고 와서 할정도의 일인가 해서요.

    왜 하필 c언어를 짧게라도 배우는 것이 도움되는가에 제 답은 이미 위에 해 놓았습니다. 혹시몰라 다시 붙여 놓았습니다. 



    언어라고 하는 관점에서 다른 언어와 장단을 비교하고, memory management나 compile이나 linking등의 원리들을 같이 습득할 수 있다면 깊이는 아니더라도 짧지만 어느정도 시간을 투자하는 것이 나쁘지 않다고 봅니다.

    컴퓨터 구조나 논리 회로를 공부하는 것이 꼭 나쁜것이 아닌 만큼 전반적인 이해를 위해서는 도움이 되겠죠.

    코볼같은 정말 사라져 버린 언어이면 모를까, C언어 공부에 대한 것이 손해일 것만은 없을 듯 합니다. 그것이 왜 캡슐화, 상속, 다형성과 같은 다른 OO들의 개념들이 빛을 발하게 되는지 깨달을 수도 있고요. 



    전 무조건 효율만을 찾아서 공부하는 것을 별로 좋아하지 않습니다. 일반적인 중고등 대학공부도 마찬가지죠. 일단 조금이라도 알아보고 얻을 건 얻고 이것이 아니다 싶으면 본인이 깨달아서 그만 하면 될 일입니다.

    국영수가 중요하다고 그것만 하는 것이 어떤 일에 도움이 되지 않듯이, 기술적인 호기심에 약간 돌아가더라도 스스로 깨닫고 자기 길을 찾아가는 것이 더 의미 있다고 생각합니다.


  • fender
    19k
    2020-09-13 09:44:19

    프초딩3 // 제가 볼 땐 프초딩님이 제 주장을 오해하시거나 전제를 놓치신 것 같습니다. 전 "C는 절대 공부하지 말라" 같은 이야기를 한 것도 아니고, 말씀처럼 효율을 따지지 않을 거면 공부해도 나쁘지 않다는 생각까지 분명히 밝혔습니다:

    물론 효율이나 그런 거 안 따지고 그냥 관심가고 재미있는 걸 하겠다면 당연히 C를 배우는 것도 좋습니다. 

    그리고 애초에 원문을 쓴 분은 본인이 프론트엔드를 주력으로 하는 입문 단계의 개발자라는 전제로 C언어가 "이 모든것들의 기반"이고 "가장 기초"이기 때문에, "전체적으로 굴러가는 모습"을 배우기 위해 C를 공부하고 싶다고 말씀하셨습니다.

    그래서 취미로 하는 거면 모를까 프론트엔드를 주력으로 하는 입장에서 C언어를 그런 '기반 기술'로 이해하는 건 바람직하지 않다는 우려를 나타낸 것 뿐입니다.

    그 이야기를 "C언어 공부하면 안좋다" 정도로 받아 들이신 게 아니라면 "호기심에 하는 거면 배워도 좋다"는 주장으로 제 의견을 지속적으로 반박하실 이유는 없다고 생각합니다.

  • 프초딩3
    2020-09-13 09:59:28 작성 2020-09-13 09:59:52 수정됨

    @fender

    제가 처음에 반박한 내용에서 우려했던 점은 c언어를 공부하는 것이 손해라는 것에 동의하지 않은 것 뿐입니다. 그 표현이 어떤 선택을 해야할 사람에게는 하지 말아야 할 것으로 오해를 살 수 있으니까요. 



  • 힘내라마소
    1k
    2020-09-14 13:32:43 작성 2020-09-14 13:33:11 수정됨

    저도 fender 분의 말씀에 동의합니다.

    흥미나 배움의 이유가 특별히 있는게 아닌 이상 C로 시작하는건 좋지 않다고 봐요.

    저도 C로 시작한 사람이 다른 언어 배울 때 객체지향이란 개념 자체를 이해하지 못하는 분들 많이 봤거든요.

    요즘 많이 쓰는 언어를 먼저 배우고 그 언어가 익숙해져서 내가 사용하고 있던 함수나 클래스들이 어떻게 구현됐는가, 더 낮은 단계에서 어떤 방식으로 동작되는가를 볼 때 C를 공부하며 참고용으로 배우는게 낫다고 봅니다.


    배워서 나쁠건 없지만 아기가 걸을 때 어떤 근육을 어떻게 수축/이완시켜서 걸어야 한다 배우면서 걷진 않잖아요.

    학문이 다 그렇듯 패러다임이 바뀌고 점점 세분화가 되면서 예전 공부 방식이 슬슬 통용되지 않는 시대가 온 것 같습니다.

  • ISA
    3k
    2020-09-14 14:48:44

    C를 배울 이유는 os나 자료구조, 네트워크를 공부하는 거와 비슷하지 않나 싶습니다

    가비지 컬렉션이 없는 강타입의 자료구조 포인터로 메모리를 제어한다.

    흥미 위주로 배운 입장에서 그렇게 어려운건 없었던거 같긴 하지만 프론트만 하신다. 했을때 그게 프론트랑 그렇게 연관 있냐는 솔직히 애매하죠.

    그냥 컴퓨터는 어떻게 동작하고 내가 하는 것들이 어떤식으로 동작하는지 궁금하니 참조하자 라거나

    베이직한 고수준 언어를 통해서 다른 언어들을 이해할 만한 기반은 만들 정도는 된거 같습니다. 그냥 입문책 하나 뗀게 다지만.. 아직도 n진수는 안 익숙하네요

  • neun
    134
    2020-09-15 13:34:18

    fender 

    프초딩3

    ISA


    와우 다들 필력에서 엄청난 경험치가 느껴집니다...ㅎㅎㅎㅎㅎ 제가 제대로 명시를 안했던게 c,c#,c++ 를 포함해서 했던 말이었습니다 제대로 썼어야했는데 하하... c# 아님 c++ 이 그나마 효율적인 공부가 가능하시다는 말이겠죠...? 제가 정처기 공부하면서 컴퓨터를 이해하는데 많은 도움이 되었다고 생각해서 배우려고 했던 거였습니다! 

  • 로그인을 하시면 댓글 을 등록할 수 있습니다.