Cognita Sapiens [847641] · MS 2018 (수정됨) · 쪽지

2024-12-20 13:50:12
조회수 1,609

생성형 AI를 활용한 메타인지 키우기 4편

게시글 주소: https://cuttingedge.orbi.kr/00070715428





 저는 C언어 등에 대해서 쌩초보이지만 프로그래밍에 대해서는 어느 정도 이론이나 개념들, 추상화라던지 모듈화라던지 병렬 처리 등의 개념은 알고 있습니다. 공대생 필수 교양으로 '컴퓨팅 사고력'을 들은 적이 있었던 덕분이죠.




 실제 실습은 굉장히 단순한 프레지였던가 어린이들 교육용으로 개발된 매우 쉽고 직관적이고 단순한 코딩 프로그램으로 구현했었는데, 꽤 재미가 있었습니다. 




 특히 재미있었던 것이, 현실에서는 의자 2개가 있고 거기에 사람이 각각 앉아있을 때, 서로 자리를 교환하는 것은 굳이 불편하게 의자가 하나 더 있을 필요가 없잖아요? 그냥 서로 동시에 일어나서 동시에 앉으면 되잖아요?




 컴공과 관련된 유머가 있는데, 컴공과 학생들은 서로 자리를 교체하려면 반드시 의자가 3개가 있어야 한다는 농담이 있습니다. 이게 무슨 말이냐면, 예컨데 C언어에서 변수 A와 B에 각각 어떤 값들이 저장되어 있는데, 서로 자리를 교체하려면 임시 변수 temp 같은 것을 하나 만들어서, 둘 중 하나를 복사해서 저장한 다음, A와 B의 값을 어느 하나의 값으로 복사한 뒤에, 뒤늦게 다시 temp에 저장한 값을 A나 B에 넣어야 한다는 것이죠.




 간단히 말하자면 

A = 10;

B = 20;

Temp = 0;


일때 우선


A = 10;

Temp = A(10);

B = 20;


으로 한 다음 


A = B(20); 으로 A에 B의 값 20이 저장됨

Temp = A(10); 으로 A의 값은 Temp로 피신하고 있음

B = 20; 으로 B는 값을 유지하고 있음


최종적으로


B = Temp(10);


을 하면 A에는 원래 B의 값 20이, B에는 원래 A의 값이 10이 존재한다는 말입니다. 바로 A에서 B로 값을 복사해서 넣으면, 원래 B에 있던 값이 사라져버리기에 임시 변수를 하나 만들어서 하나를 옮겨두어야 한다는 개념입니다.




 꽤 웃겼는데, 생각해보니 이게 절대 바보같은 짓이 아닙니다! 생각해보니, 현실에서 자리를 교체할 때도 여전히 이러한 현상은 유효합니다. 왜냐하면 '허공'이라는 임시 공간에 사람이 떠 있어야 하잖아요 잠깐.




 아무리 빨리 앉는다고 하더라도, 두 자리에 있던 사람이 자리를 교체하려면 한 사람은 '허공'이라는 임시 공간에 서 있는 동안 다른 한 사람은 바로 자리를 교체하고 나서, 허공에 있던 사람이 빈 자리에 앉음으로써 자리를 교체할 수 있습니다. 아무리 서로 빨리 자리를 교체한다 하더라도 누군가는 '허공'이라는 임시 공간에 존재를 해야한다는 것이죠.




 이처럼 컴퓨터 세계의 원리와 규칙은 처음 보면 직관적이지 못하고 현실과 다른 것처럼 보이지만, 오히려 생각해보니 현실의 본질을 매우 깐깐하고 엄밀하게 표현하고 있었던 것입니다!









 







 앞서 자주 이야기했듯이 소프트웨어 공부는 대단히 힘들고 생소하고 어려웠지만, 실력이 상당히 늘었기도 하였으며 동시에 사고력의 발전을 확실하게 느낄 정도로 상당히 재미있고 흥미로운 과목이었습니다. 특히 코딩 문제를 푸는 것은 수업 시간에 배운 도구를 활용하여, 구체적으로 실용적인 문제를 풀 수 있게끔 생각과 고민을 오랫동안 하면서 코딩을 해야 했기에, 프로그래밍 전공 수업은 정작 프로그래밍을 빨리 하고 코딩을 정확히 하기보다는 사고력 테스트에 더 가깝다고 느꼈습니다.









 저는 위와 같이 소프트웨어 공부 중 깨달은 바를 자주 GAI에게 물어보았고, 항상 비슷하게 제 의견에 맞장구를 치고 소프트웨어 공부를 통해 체계적인 사고 방법, 엄밀하고 구체적인 설계 방법, 동일한 문제에 대한 다양한 접근 방법을 고민하는 창의성 등에 대한 발전을 스스로도 많이 느꼈습니다.




 특히 C언어에서 후반부로 가면 '배열과 포인터'라는 것을 배우는데, 배열은 쉽게 말하면 표이고 포인터는 주소를 가리키는 역할을 합니다. 이것들이 서로 유기적으로 연관된 개념이기에 배우는데, 상당히 어려워지더군요. 개념 자체는 제가 앞서 요약한 것처럼 매우 쉽지만, 이제 본격적으로 코딩 문제가 매우 긴 조건문으로 마치 비문학처럼 출제되기 시작하고, 정말 실용적으로 우리가 현실에서 쓸 법한 여러 기능들, 예컨데 아이디와 비번을 입력하고 회원가입을 하거나, 식당에 대한 정보를 입력하고 검색하는 간단한 기능을 구현한다거나, 여러 함수를 설정하여 이미지를 회전시키는 문제(회전시키는거 엄청 간단할거 같죠? 처음에 엄청나게 고민을 햇어야 했습니다 ㅋㅋ) 등을 풀기 시작했습니다.




 게다가 소프트웨어는 마치 수학처럼 앞의 진도를 제대로 소화하지 못하면 후속 진도를 완전히 이해를 못하는 매우 엄격한 과목이었기에, 복습을 한 번이라도 스킵을 해버리면 바로 문제를 못 푸는 불상사가 발생했습니다. 계속해서 개념을 누적해서 배우면서 복잡한 기능을 구현하는 것에 대해서 배우게 되고 연습을 하더라구요.




 특히 배열 부분에 들어가면서 코딩 과제가 급격히 어려워지고 복잡해지자 놀라서 이것도 GAI한테 물어보았습니다.










 근데 많이 배우고 발전이 되는만큼 너무나 빡세고 힘든 공부이더군요. 특히 흥미롭게도 제 주변에 전자공학과나 컴공과 친구들은 화학을 매우 어려워 하는데, 화학은 하드웨어입니다. 저도 하드웨어 학과 출신인데, 저는 거꾸로 소프트웨어가 너무 힘들더군요.




 개인적으로 왜 서로의 학문을 어려워할까 생각을 해보면, 하드웨어를 연구하는 화학과 열역학은 너무나도 복잡하기에 계산하고 예측하기가 힘들어서 경험적이며 누적된 데이터를 바탕으로 유추를 하고 확실하게 예상을 할 수 없고, 거꾸로 소프트웨어는 매우 정확한 논리와 알고리즘으로 결과를 예측하고 결과가 맞지 않는다면 과정에 문제가 있는 것이라는 말입니다. 이러한 서로 다른 성향이 서로의 전공을 어렵게 하는 것 아닐까 싶더군요.















 제가 왜 자꾸 이분법적으로 이 세상을 판단하려고 하냐면, 앞선 칼럼들에서 이야기했듯이 이분법은 일단 당장 뭔가를 파악하기에 상당히 쉽고 유용한 도구이기 때문입니다. 서로 대조와 차이를 비교하면서 알아내는 것이죠.




 요새 문이과 통합은 되었지만 실질적으로는 여전히 장벽이 존재한다는 말도 들었습니다. 흥미롭게도 전 예전에 문이과가 서로 싸우는 것을 보고 도저히 이해가 안되서 왜 그런지 찾아보았었는데, 왜 싸우는지 알겠더군요.




 당장 제 과외 과학 선생님도 문과 학생들이 취업을 못한다는 뉴스를 보고선 "자기들이 공부를 제대로 안했으니까 그런것 아니냐" 라고 평을 하신 것이 기억이 나는데 정확한 의미를 파악하지 못했으나 이후에 알 수 있었습니다.




 제가 2학년일 때도 문이과가 구분이 되고 분반이 되어 따로 등수를 메길 때, 이과에서 약 30등을 하던 친구가 문과로 갔는데 3등을 하는 것을 보고, 당시 이과에서 3등 안에 들던 매우 똑똑한 친구가 이 이야기를 저에게 하면서 매우 어이없다는 식으로 표정과 의견을 표출하던데 차차 이해할 수 있었습니다. 이과 입장에선 문과는 소위 공부를 못하는 학생들이나 가는 곳이고, 실제로 제가 보기에도 상대적으로 공부를 못 하는 학생들이 문과로 많이 가기도 했으며, 이후 수능 국어에 대해서도 알아보니 최상위권의 분포도 이과가 오히려 문과보다 많다고 하더군요.




 다만 제가 이과임에도 상당히 불쾌한데, 만약 문과였다면 굉장히 큰 모욕으로 받아들였을 것 같습니다. 하지만 전 문과를 마냥 비하하지 않는 것이, 서로 학문의 다른 특성 때문에 벌어진 일이라고 생각하고, 오히려 문과 최상위권은 이과 최상위권을 압도하는 상당히 극단적인 편차를 보여주더군요.




 이과는 이 수학 문제 풀 수 있느냐 없느냐, 이진법처럼 구분이 되지만 문과는 다 다르잖아요. 철학에 대해서 책을 1권만 읽은 사람도 있을 수 있고, 10권을 읽은 사람도 있고 1만권을 읽은 사람도 있겠죠. 이들의 차이를 어떻게 구분할 것이며, 또한 이게 정량적으로 많이 읽었다고 무조건 더 잘 하느냐의 문제도 아니라는 것이죠.

















 게다가 요새는 문이과가 서로를 침범하고 융합되는 경향이 매우 뚜렷합니다. 예컨데 제가 가고자 하는 신경과학 분야는 자연과학으로 분류되고 인류 최첨단 통계학, 계측 검사 도구를 활용하지만 결국 사람을 연구한다는 점에서 인문학으로도 충분히 분류가 되고, 심리학이나 언어학에서도 접근하는 다학제적인 분야입니다.




 특히 흥미로웠던 것은, 과거에는 심리학과는 무슨 문과나 가는 학과라는 인식이 팽배했었으나 신경과학과 관련된 심리학 연구실에서는 fMRI라는 도구와 고등 수학, 통계학을 활용하여 인간의 여러 행동과 뇌 활동에 대해서 매우 체계적이고 수학적이며 과학적인 연구를 진행하고 있습니다. 어차피 문이과 공부 다 해야하는 시대라는 것이죠 ㅋㅋㅋㅋ




 그래서 웃긴게 위에서 말한 것처럼 하드웨어, 화학을 공부하는 것과 소프트웨어, 코딩을 공부하는 것은 서로 크게 대조되어서 어렵고, 더 큰 범주에서 이과와 문과 공부는 서로 다른 특성과 속성이 많아서 양쪽 다 공부하는 것은 참으로 어렵습니다.









 특히 처음 제가 컴퓨터공학 공부를 꺼리게 했던 것은, 천재들을 위한 학문이라는 생각이 컸기 때문입니다. 레드불에 쩔어서 노트북에 이상한 스티커를 막 붙이고, 밤 새서 노트북만 쳐다보는 그런 천재 해커들을 위한 학문이라는 스테레오 타입이 강했었고, 그런 천재들과 경쟁해서 이길 수 있겠나 심히 걱정이 되더군요.




 그런데 GAI에게 물어보니 실제로 이런 스테레오 타입이 많이 퍼져 있으나 실제 개발자들은 매우 평범하고 일과 생활의 균형을 가지고 살면서, 보통 구글급의 천재를 요구하는 것이 아니라 평범한 직장인 개발자를 요구하며, 주로 토론과 회의를 자주 하면서 코딩의 어느 부분을 나눠서 협동을 할지 등에 대해서 이야기를 한다, 즉 사회성이 중요하다고 말해주더군요.




 웃긴게 실제로 제 친구들 중 컴공 친구들이나 조교님에게도 물어보니 실제로 저와 비슷한 걱정을 많이들 하셨다고 합니다 ㅋㅋㅋㅋ




 특히 전 스스로의 모순도 느꼈습니다. 애초에 전 모든 학문을 언어라고 말하고 소통하기 위한 도구라고 하는데, 내가 국어나 영어를 한다고 반드시 세계 1등 최고 수준을 해야할 필요는 없잖아요? 그냥 적당히 내가 필요한 수준으로만 구사하면 상당히 적은 공부를 하고 효율적으로 잘 활용해서 윤택한 삶을 살고 지적인 호기심을 충족시킬 수 있을텐데, 왜 하필 컴퓨터 프로그래밍, 프로그래밍 언어에 대해서는 그러한 극단적인 성공에 대한 압박을 받았는지 이해가 안가더군요.




 제가 글을 취미로 쓰고 교육에 대해서 사고력에 대해서 다양한 경험과 성찰을 기록하는 것도 일기처럼 축적을 하는 것이지, 왜 굳이 그걸 한국에서 1등을 하고 세계 최고 수준이 되어서 한강 작가님처럼 노벨 문학상을 받을 정도로 수려한 문체를 달성해야 의미가 있는 것은 아니었잖아요?




 그래서 여러분께도, 소프트웨어적 사유, 컴퓨팅 사고력은 앞으로 중요하고 매우 보편적으로 쓰이는 소양이자 기본적인 상식이 될 것이고, 소프트웨어 공부는 여러분의 사고력을 크게 증진시킬 것이라고 확신합니다. 어느 분야에 상관없이 꼭 공부해보시길 바랍니다 어렵지만 재미도 있습니다.










<수국비 상>

https://docs.orbi.kr/docs/7325/


 


 <수국비 하>

https://docs.orbi.kr/docs/7327/








사고력이란 무엇인가



https://orbi.kr/00064157242 - 24편 리터러시(문해력, 독해력)이란 무엇인가

https://orbi.kr/00064692514 - 25편 단순히 많은 학습 시간은 배신을 할 수 있다!

https://orbi.kr/00064934387 - 26편 대한민국은 강대국이 될 자격이 없다

https://orbi.kr/00065089413 - 27편 본질 feat. 반추 동물의 생존

https://orbi.kr/00067574982 - 28편 추론이란 무엇인가

https://orbi.kr/00067699093 - 29편 천재에게 과외 받지 마십시오

https://orbi.kr/00067722206 - 30편 중요한 것으로 마음을 가득 채우세요

https://orbi.kr/00067987848 - 31편 국어와 영어를 잘하는 법 - 중요한 것에 밑줄치고 집중하라!

https://orbi.kr/00068049459 - 32편 수동적으로 넣기만 하지 말고, 능동적으로 꺼내는 연습도 해야합니다

https://orbi.kr/00068083401 - 33편 이 세상은 '언어'로 이루어져 있지 않을까?

https://orbi.kr/00068269691 - 34편 최고를 경험하라!

https://orbi.kr/00068742477 - 35편 컴퓨팅 사고력(computational thinking)!

https://orbi.kr/00068829690 - 36편 컴퓨팅 사고력2 (computational thinking)!

https://orbi.kr/00068855045 - 37편 잘 하는 것과 잘 가르치는 것

https://orbi.kr/00068881736 - 38편 사고의 틀과 각인하기

https://orbi.kr/00068895360 - 39편 장난감 총으로 훈련을 하면 실총 사격에 도움이 될까?

https://orbi.kr/00068983469 - 40편 인성도 능력이다!

https://orbi.kr/00069006817 - 41편 우리는 왜 글을 읽고 작문을 해야하는가

https://orbi.kr/00069112212 - 42편 저는 사실 여러분을 상대로 설명하는 것이 아니라 복습하는 것입니다

https://orbi.kr/00069300631 - 43편 편견은 싸고, 통찰력과 창의력은 비싸다!

https://orbi.kr/00069489882 - 44편 수능 가까워졌으니까 오랜만에 써보는 학습 칼럼 - 최종 정리

https://orbi.kr/00069687160 - 45편 지능이란 무엇인가 - 뇌가 있어야 지능이 있을까

https://orbi.kr/00069743070 - 46편 지능이란 무엇인가 2편 - 참된 지능은 무엇인가

https://orbi.kr/00070014446 - 47편 메타 인지와 지혜에 대해서

https://orbi.kr/00070093084 - 48편 모델(모형)은 세상을 해석하는 함수이다

https://orbi.kr/00070241820 - 49편 대학가면 이 2가지는 반드시 하십시오

https://orbi.kr/00070605569 - 50편 생성형 AI를 활용한 메타인지 키우기

https://orbi.kr/00070606335 - 51편 생성형 AI를 활용한 메타인지 키우기 2

https://orbi.kr/00070708326 - 52편 생성형 AI를 활용한 메타인지 키우기 3

- 53편 생성형 생성형 AI를 활용한 메타인지 키우기 4






rare-세종대왕

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.