현업 개발자고 부업으로 성인 상대로 코딩 튜터링도 하고있음.
해외에 살고있고, 대상은 주로 한국인, 중국인.
C언어 가르쳐보면 보통 애들이 벽 느끼는게 세군데임.
1. 이중루프(별찍기)
2. 포인터
3. 재귀
이것들에서 막혔을때 코딩 내 적성 아닌가 생각들을 하는데
결론부터 말하면 내 의견은 1, 3에서 막히면 코딩에 재능 없는거고, 2에서 막히는건 큰 문제가 없다.
일단 별찍기가 이해 안되는건 진짜 순수하게 지능의 문제다
평균지능만 되면 한번에 이해는 안되어도 반복하다보면 체화는 된다.
여기서 너무 심하게 막힌다면 그냥 코딩 접는게 낫다.
포인터는 남들보다 습득력이 좀 떨어지면 그냥 남들보다 더 많이 연습하면 되는거라
여기서 막히는건 큰 문제가 안된다고 생각함.
솔찍히 별찍기가 이해가 되는 지능이라면 포인터 설명을 듣고 이해가 안되는 애들은 없을거다.
그걸 쓰려면 막막하거나 헷갈리는거지. 그게 포인터 문법 자체가 직관적이지가 않아서 그래.
그냥 연습하면 된다. 전혀 문제되지 않는다.
재귀에서 막히는건 지능 + 수학이다.
재귀가 죽어도 이해안되는 애들은 중등수학이 제대로 안된거라 답이 없다.
그냥 자바 스프링 배워서 백엔드 툴키디 하는데는 문제 없을지 몰라도,
기본적인 자료구조 알고리즘도 공부 못한다.
앞으로는 그런애들이 설 자리가 딱히 없을거기때문에 그냥 코딩 접는게 빠르다.
아니면 중학교 수학부터 다시 공부하든가.
참고로 자바 스프링 끄적거리는 틀닦 현업들도 태반은 재귀 이해못함.
재귀를 반복문으로 생각하는애들은 재귀를 이해못한거임.
포인터이해못하는거는 듣는사람의 지능보다 가르쳐주는사람의 능력부족이 대부분임
포인터는 설명자체는 간단해서 뭐 가르치는 능력이고 나발이고 할 게 없음. 재귀가 가르치는 사람 능력이 중요하지
ㅇㅇ 그건 니생각이고 듣는사람이 이해못했으면 대부분 니 능력부족이라는거
아니 포인터는 단 한번도 설명을 이해못하는 사람을 못봄. 그 개념자체는 너무 간단해서 다 이해한다고. 설명할 것도 딱히 없고. 그런데 그걸 실제로 내가 쓰는건 그 문법자체가 직관성이 떨어져서, 연습이 필요하다니까? 그 설명을 이해못할 애면 애초에 포인터까지 가기 전에 다 나가떨어짐.
무조건 한 쪽 탓이겠냐 가르치는 사람이랑 배우는 사람 합이 맞아야지 근데 나는 배우는 사람의 책임이 더 크다 생각함 배우는 사람 입장에선 강사 말고 유튜브 웹 책 등 정보 들어올 구멍은 많거든
스타강사한테 배운다고 sky가는거 아니잖아
ㄴㄴ 선생탓이 대부분임
병신인가 ? 포인터말하는건디
니 경험으로 일반화하는게 병신인거 같은데
내 생각이니까 내 경험대로말하지 병신아
@무말랑 둘 다 경험적얘기인데 선생이 학생 가르치는거랑 학생이 선생에게 포인터 배우는거랑 비교하면 누가 데이터가 많겠냐ㅋㅋㅋ 니가 다수의 선생한테서 포인터 이해 못하면 니가 병신인 가능성이 높아지는 거지
그건 니 생각이고 ㅇㅇ
재귀 쓸 일이 많나 트리 구조일 때 말고 생각이 안남
보통은 비선형 자료구조 아니면 루프로 풀어쓰긴 하지. 근데 비선형 자료구조가 필수니까. 그리고 재귀가 이해가 안될정도면 중등수학이 아예 안되어있단 소리라 재귀 말고 다른데서도 많이 막힐거다.
거의 대부분 ADT는 그래프의 일종인데, 코테때 DFS 포함해서 재귀가 자주쓰임. 함수형코딩? 재귀에 대한 이해도 없으면 제대로 못씀. 그냥 클래스대신 함수써놓고, 자스, 자바 map같은 신태틱슈거 써놓고 함수형으로 한다고 하겠지. 당연히 재귀의 기능 자체가 반복으로도 100% 구현 가능하지만 개념 자체를 이해 못하면 프로그래밍의 많은 개념 자체를 이해하기 힘듬. 당장 재귀를 이해 못하면 스택도 제대로 이해 못하고 있다는 말임.
포인터는 내가 봤을 때 메모리 제한걸어두고 간단한 프로그램 짜보라고 시키면 빨리 습득함. 물건을 가지고 다닌다는 개념도 없는 사람한테 도라에몽 가방을 이해하게 만드는거라
진짜 만약 포인터가 너무너무너무 이해가 안간다고 하면, 메모리 주소 표준출력으로 찍거나 디버거로 확인해가면서 해보면 됨 ㅋㅋㅋ 포인터는 어떻게든 이해시켜줄 자신 있는데 재귀 이해안되는건 튜터 설명이 제대로라는 가정하에 어떻게 해 줄 방법이 없다
아 근데 이걸 C가 아닌 파이썬으로 이해시킨다?? 머리좋은 명문대 공대생이면 오케이. 머리나쁘면 절대 이해못함
@ㅇㅇ(101.53) 언어 얘기가 나와서 말하는건데, 난 공대생 조차도 아니었는데 첫 언어 자스로 이해가능했음. 메모리포인터는 GC 언어에서도 추상적으로는 이해해야함 (니가 말하는 이해의 범주가 포인터를 사용한다의 개념이 아니라면). 이걸 이해 못했다는건 변수가 어떻게 동작하는지를 이해 못한거임.
이거 이해 못하면 JS, 자바 이런 언어들도 못쓰는거 맞음. 나도 JS로 시작해서 이걸 먼저 이해했고, 그 뒤에 C를배웠을때 포인터는 자연스러웠음. 다만 내 요지는 머리가 나쁘다면 C로 명시적으로 배우는게 오히려 더 쉽다는거
@ㅇㅇ(101.53) C나 Go같이(반쪽짜리긴하지만) 실제로 사용할 수 있는 예시가 있는 애들이 훨씬 좋긴하지.
재귀는 중등수학이냐 뭐냐의 문제가 아님. 그냥 수학적 사고력 자체가 없는거야. 재귀를 이해 못한다는건 좀 과장하면 IF를 이해못하는거임.
그걸 중등수학에서 다 배우잖아
@ㅇㅇ(101.53) 아니 배우고 안배우고의 문제가 아니라니까. 이걸 노력끝에도 이해못한다면 그건 교육의 문제가 아니라 머가리의 문제임. 추상화 된걸 풀어서 해석하는 능력이 없는거야. 참고로 내 글들 다시 읽어보이니까 졸라 재수없어서 하는말이지만 재귀를 한번에 이해해야한다라는 얘기가 아님. 재귀자체가 이해하는데에 시간이 걸리는게 당연하고, 보통 백트래킹 관련된거 하다가 많이 깨우침.
아아 그건 맞지. 일단 지능이 떨어지면 추상화된걸 푸는 능력이 없는거 맞음. 그런데 지능이 떨어지지 않는다는 가정하에 그게 중등교육 거치면서 훈련이 되지 않으면 수학적 사고력도 길러지지 않는다는거지. 중등교육에서 굳이 수학 배우는게 그런 능력 기르려는거 아님?
@ㅇㅇ(101.53) 교과과정의 의도같은건 난 잘 모르겠다. 중딩때 미국에 있기도 했고 쳐놀고 애초에 한국식으로 표현하자면 문과였어서. 졸라 부끄럽지만 recursion이란 말 자체를 난 대학때 프로그래밍 배우면서 이해를 못했고 나중에 시퀀스 보니까 아 이런거 했었지... 정도로 생각했어서. 어쨋든 난 먼저 배웠던 내용들이 재귀라는것을 이해하는데에 전혀 도움되지 않았기 때문에 경험에 의해 하는말임.
@ㅇㅇ(121.169) 아 미국에있었으면 모를텐데 중등교육이라는건 중학교 고등학교 포함한 개념임. 고등교육은 학부부터고. 그리고 중등교육에서 재귀와 관련된 개념이라면 Sequence나 Mathematical Induction같은거 배우잖아. 이게 재귀랑 연결되는 개념들이니까
@ㅇㅇ(101.53) 말꼬투리 잡는것 같아서 더이상 이거갖고 얘기는 안하겠음. 마지막으로 하고 싶은 말은 재귀에 사전 개념이 있던 없던, 재귀라는 개념 자체가 일상생활에서 생소해서 그렇지, 애기때 처음 덧샘 배우는것처럼 재귀에 대한 시간투자와 사고하려는 시도를 한다면 프로그래밍을 하면 안되는 사람이 아닌이상 반드시 이해할 수 있는 개념이라고 생각했을 뿐임.
거기에 동의해. 그래서 이거 이해안되면 프로그래밍을 하면 안되는 사람이라는 글이었음.
포인터는 c로 배우기보단 cs 전반적으로 공부히면서 추상화개념들 보다보면 이해쉬운듯
논리력 vs 컴구. 논리력 반대는 언어인데 그래서 아스퍼거들이 논리력이 조음.
이래서 어셈을 알아야한다 재귀를 이해를 못한다고?
그 재귀를 그렇게 시퀀셜로 접근하면 재귀를 이해못한거라고. 어셈이 왜나와 어셈이.
왜 이해를 못한거임 재귀란게 스택 새로 쌓고 함수 시작점으로 카운터 옮기는건데
그건 재귀의 개념이 아니라 재귀의 구현임. 재귀 자체는 고수준의 개념이잖아.
자료구조를 배우면 포인터, 재귀 다 알 수 있으니 얼마나 좋아! 자료구조를 하자! - dc App
그냥 니가 가르치는 실력이 부족한거임 재귀는 원래 다들 어려워하는게 정상임 그리고 이런 애들도 직접 스택 구현시킨 후 push&pop 반복문 돌리는 방식으로 재귀적인 알고리즘들(백트래킹, tree preorder inorder postorder traversal, dp, 하노이 등등) 구현시키면 결국에는 대부분 재귀함수 잘 이해함.