가지가지 나뭇가지
85
2020-10-06 11:45:16
18
1616

c포인터공부하다가 파이썬 공부해보니 느낀 점.


포프님의 언매니지드, 매니지드 영상을 보고 c를 붙잡았는데 이중 포인터까지 공부하다가 얇은 파이썬책 한번 1회독 해보니 왜 언매니지드 언어부터 해야하는지 뼈저리게 느꼈네요.. 파이썬 책 구석에 숨겨놓고 바로 c언어 책 폈습니다..  ps. OOP개념은 무조건 자바로 잡는걸로.. 

포프님의 언매니지드 영상 보시고 c하시는분들 중에 왜 내가 언매니지드 언어를 배워야하는지 이유도 모르고 공부하시는 분들 있으면 c언어 포인터까지 배우고 파이썬책 조금 보시면 공부해야할 이유를 느낄 수 있을 것 같아요.. 
0
  • 댓글 18

  • yuzu
    32
    2020-10-06 12:12:07

    C언어 풀코스는 어떤가요? 실습과 과제 어떤지 궁금합니다.

  • sike
    269
    2020-10-06 12:15:27

    c,c++ 개발자로서 포인터는 진짜 개 편안, 획기적이라고 생각하는데 ㅋㅋ

    반대로 자바언어로 잠깐 프로그램 개발한적 있는데 unsigned 없다는거보고 잠깐 당황..

    PHP는 한술더떠서 signed데이터형도 없고 알아서 캐스팅해줘서 한번 더 당황..

  • 그래안그래
    306
    2020-10-06 12:17:23

    개인적으로 왜배워야하는지 알려주실수있을까요?

    무엇을 느끼셨나요?

  • fender
    19k
    2020-10-06 12:39:46

    전 C나 포인터는 백만년 전에 잠깐 배우고 잊어 버린 후에 다시 쓸 기회가 없어서 그런지, 요새 파이썬을 하고 있지만 언매니지드를 해야겠다 보단 파이썬이 거지 같다는 생각만 강하게 들더군요.

  • 가지가지 나뭇가지
    85
    2020-10-06 12:43:22

    @그래안그래 저도 한창 배우고있는 비전공자라 그런지 논리정연하게 말을 못하겠네요 ㅜㅜ 그냥 느낌이 그래서요.. ㅜㅜ 


    @fender 언매니지드 매니지드 언어관해서 써주신 댓글 정말 잘봤어요.!!!!

  • 하마
    6k
    2020-10-06 13:07:34 작성 2020-10-06 19:33:00 수정됨

    글쎄요. 파이썬만 한 누구는 님이 포인터랑 로레벨 반복 공부하는 시간에
    (특히나 C++의 무지막지한 스펙) 다른 생산성 있는 학습 및 경험을 통해서
    그 방면으로는 님 보다 훨씬 앞서가겠지요.


    삶은 트레이드오프. 집중과 선택입니다
    굳이 두개를 할 필요 없어요 ㅎㅎ

    (로레벨 공부하려면 컴파일러 책 보셈)

  • 토론잼
    62
    2020-10-06 13:43:36

    언어는 도구일 뿐입니다. 용도에 맞게 사용하시면 됩니다.

    운전을 업으로 삼는 F1레이서나, 택시기사는 각각 스틱차와 오토차를 운전합니다.

    스틱차가 매니지먼트 언어라면 오토차는 언매니지먼트 언어죠.

    스틱차로 기어비를 타이트하게 사용할 수도 있겠지만 택시 하면서 굳이 그래야하나요?

  • 심심한사부
    1k
    2020-10-06 14:02:37

     오래간만에 들어보는 포인터....




  • 페코옹
    643
    2020-10-06 15:00:12

    언어는 툴이죠 뭐

    툴로 뭘 만드는지가 중요하지

    c고 파이썬이고 뭐가 중요합니까..

  • 페코옹
    643
    2020-10-06 15:02:16
    c로 포인터에 이중포인터 공부할 시간에

    파이썬으로 문법 후다닥떼고 pandas공부하고 tensrflow 공부할래요 전~
  • 마르세유1
    1k
    2020-10-06 15:06:46

    파이썬은 파이썬일뿐.. c언어로 해야할일을 파이썬관점으로 보면 안될거같습니다..

    복잡한 식이나 수학적 로직을 간편하게 구현할수있는것이 장점인 언어에 c언어처럼 프로그래머에게 모든 권한을 줘버리는건 장점을 살리지 못하는 모순적인것이니까요..

    파이썬을보실땐 같은 기능을 얼마나 빠르게, 간단하게 구현할수있는지를 보면서 언어에 특징을 익히시는게 좋을것같습니다..

    비슷하게 오키에서 c언어가 대차게 까이는 이유가, 웹이나 서버파트에서 종사하는분들이 c언어보고 생산성이 낮다느니 왜배우냐느니 어렵다느니 언매니지드는 안된다느니 라면서 까지만

    c언어는 임베디드프로그래밍을 위한 언어이지 큰규모의 서비스 제공하거나 유지보수를 오래하기 위해 만들어진 언어가 아닌데도 본인들의 해온일을 바탕으로만 까기 바쁜것도 잘못된 관점으로 언어를 보는것 같습니다..

  • fender
    19k
    2020-10-06 15:19:14 작성 2020-10-06 15:19:43 수정됨

    C언어를 깔 이유는 전혀 없습니다. C는 아직까지 쟁쟁하게 현역으로 쓰이는 언어이고 해당 분야에선, 입지도 확고한 편이니까요.

    오키에서 C에 관한 이야기가 종종 떡밥으로 등장하는 건 거의 예외없이 C가 C를 적용할 만한 분야를 넘어서 어떤 '근본적'인 무언가를 깨닫게 한다던지, 그래서 분야와 상관없이 꼭 배워야지 고급 개발자가 될 수 있다던지 하는 부류의 주장들 때문입니다.

    물론 그런 이야기를 하다보면 반대로 C의 생산성을 비판하거나 하는 경우가 있지만, 그런 맥락을 떠나서 무턱대고 C보다 다른 고수준 언어가 우월하다던가 하는 식의 이야기는 거의 안 나오는 게 사실입니다.

    애초에 "C를 하려면 고수준 언어부터 배워라"라던가 "C를 아무리 잘해도 객체지향 모르면 제대로 된 개발자가 아니다" 같은 이야기를 하는 사람은 거의 없으니까요.

  • John Suhr
    3k
    2020-10-06 18:01:47

    저는 최근에 golang을 하면서 포인터가 있으면 확실히 효율적인 코딩을 할 수 있겠구나 하고 느꼈습니다.

  • linuxer
    3k
    2020-10-07 00:56:29

    fender님께//  파이썬을 전혀 안해봐서 펜더님의 고견이 궁금합니다.

    파이썬이 혹시 어떤 불편한 점이 있는지 알려주시면 감사하겠습니다^^

  • fender
    19k
    2020-10-07 03:47:37 작성 2020-10-07 03:57:39 수정됨

    linuxer // 우선 파이썬도 C와 마찬가지로 훌륭하게 쓰일 수 있는 영역이 있다는 전제로 이야기하고 싶습니다.

    오픈소스 생태계도 좋고 특히 리스트 같은 데이터 조작이 간편하고 대체로 간단한 스크립트나 프로그램을 짜는데는 꽤 편리합니다. 아마 입문용이나 개발 자체가 주가 아닌 분야에서 널리 쓰이는 것도 비슷한 이유가 아닐까 싶습니다.

    문제는 이걸 범용 언어로 복잡한 개발에 활용하는 경우인데, 이제까지 써 본 경험으로는 불편한 점이 한 두가지가 아니었습니다.

    우선 동적 언어의 단점을 고스란히 가지고 있습니다. 동적 언어는 일반적으로 간단한 것을 만들 때 장점이 부각되고 코드가 복잡해질수록 단점이 도드라지는데, 파이썬도 예외가 아닙니다.

    정적 타이핑을 선택적으로 지원하고 있고 MyPy 같은 관련 모듈도 있지만 처음부터 정적 언어로 설계한 경우에 비해 꽤 불완전하고 어색합니다. 제너릭 같은 건 매우 괴랄한 모양이고 람다 같은 건 제대로 타입 추론도 되지 않습니다. MyPy가 있어서 도움이 되는 느낌보다 MyPy와 싸우는 느낌이 들 때도 많고, 때에 따라선 타입 정보를 틀리게 써도 오류가 발생하지 않습니다.

    그리고 파이썬 코드는 클래스를 선언하는 순서에 영향을 받습니다. 역시 __future__ 같은 모듈이나 꼼수로 일정부분 해소는 가능하지만 그렇지 않은 경우도 있고, 그런 문제가 없는 언어를 쓰다가 이런 문제로 클래스 추가할 때 마다 import 순서를 바꾸고 (그래서 다른 언어처럼 IDE에서 import 구문 자동 정리를 하면 코드가 망가질 수도 있씁니다) 클래스나 import문을 이리저리 옮기다 보면 이게 뭐하는 짓인지 회의가 듭니다.

    그리고 람다나 함수형 지원이 매우 불편합니다. C#을 쓰면서 스칼라에 비해 람다 문법이 장황해서 불만이었는데 파이썬을 써보니 C#이 그리웠습니다. 람다를 쓰려면 매번 "lambda"라고 정확하게 입력해야 하고 인자를 deconstruct하는 기능은 있다가 없어졌고, 심지어 타입 추론도 제대로 동작하지 않습니다.

    함수형을 지원하는 모듈이 없는 것은 아니지만 메서드 체이닝 방식이 아니라 문법도 매우 장황해질 수 있고 기능이 많지도 않습니다.

    그리고 당연한 것들이 때로는 말도 안되게 복잡해집니다. 객체지향을 표방하고 있는데 setter를 오버라이드 하기 위해선 꼼수를 동원해야 한다거나, 메서드 오버로딩을 하려면 역시 별도의 데코레이터를 동원해야 한다거나, 그나마 생성자 오버로딩 같은 건 지원하지 않는 등의 문제도 있습니다.

    있어야 할 것이 없어서 불편한 경우도 있는데, 접근 제어자가 존재하지 않아 내부에서만 쓰는 메서드 같은 걸 컨벤션에 의존해서 처리하지만 protected나 internal 같은 개념을 표현할 수 없는 건 대책이 없습니다. 상수 같은 기본 개념도 언어가 자체적으로 지원하는 것이 아니라 API를 통해 나중에 덧대어 붙인 느낌입니다.

    그 밖에 소소하게 불편한 건 셀 수 없이 많은데, 메서드 반환형에 셀프 타입을 쓸 수 없다거나, 3항 연산자 문법이 쓸데없이 장황하다거나 패턴 매칭이나 스위치 구문도 아직 지원하지 않는다거나 제너릭에 고계도 유형 표현이 안된다거나 예외 객체가 자체적으로 스택 정보를 포함하고 있지 않다거나 다 기억하기 힘들 정도입니다.

    때로는 파이썬이 권장하는 방식("The Pythonic Way")이 의문이 들 때가 있습니다. 대표적으로 'EAFP 원칙' 같은 건 전 안티패턴에 가깝다고 생각합니다.

    이런 이유로 어쩔 수 없이 파이썬을 사용하고 있고 아마 앞으로 최소 몇 년은 그럴 것 같지만 할 수만 있다면 다른 언어로 바꾸고 싶은 생각이 자주 들더군요.

  • 프루스트
    25
    2020-10-07 10:04:30 작성 2020-10-07 16:06:29 수정됨

    @마르세유1  // 임베디드엔지니어를 목표로 c/c++ 을 공부하는 입장에서 한줄기 희망같은 말씀이시네요.ㅠ

    대부분의 정보들이 JAVA 기준이다보니, 프로그래밍을 바라보는 시각이 오히려 더 흔들릴 때도 있거든요.

    C/C++이 불친절하고, 내용도 많고, 어렵기까지하다보니 OKKY와서 정보 구할때보면,

    내가 낳은 자식이 사고친것마냥 괜히 자괴감들고 이 길이 맞는건지 의문이 들곤합니다.

    그래도 이런 글보면서 다시한번 마음 다잡고 공부해야겠습니다!

  • linuxer
    3k
    2020-10-07 13:26:53 작성 2020-10-07 13:30:04 수정됨

    fender님// 정말 감사합니다^^

    파이썬이 역시 예상대로 ㅋㅋ 

    그래서 제가 스크립트 언어를 싫어합니다^^


    js도 타입이 지정되지 않아서 프로그램규모가 커질 수록 개판되지 않나요?

  • linuxer
    3k
    2020-10-07 13:31:34

    프루스트 //C++이 국내에서는 수요가 아주 작지요 그게 문제^^

    그런데 해외에서도 수요가 자바보다 작다는게 문제 같아요

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