안녕하세요.
콤퓨타 학원에 원장을 하고 있는 이프로입니다. 헤헴 ^^
이전 프로그래밍 파트의 글에서 잠시 이야기를 했었는데요.
프로그래밍(코딩)을 대기만성형으로 성장해나가려면 정말 정말 기초가 튼튼 하여야 한다고 생각합니다.
이 기초의 기반이 되는 것들 중에 한가지는 전산에 대한 기초적인 이해가 되지 않을까 합니다.
그래서 이 프로그래밍 기초 파트에서는 직접적으로 코딩을 설명드리는 파트가 아니고 전산에 대한 설명 특히 프로그래밍을 배울때 꼭 필요로 하는 부분들을 설명해보려고 합니다.
그렇다면 전산에 대한 기초? 어떤것들이 있을까요?
전산 학계론 같은 거찬한것들은 넘어가겠습니다. 저도 잘모르니까요 ^^ㅣ
하지만 코딩에 필요한 전산 기초들이 있을건데요.
예를 들어 자료형, 변수, 함수, 조건, 반복, 클래스, 오브젝트, 인스턴스 등등등.
정말 다양한것들이 있을건데요.
이런 부분들은 현실세계의 있을법한 것도 비유를 들어서 설명해보려고 합니다.
그럼 다음 글에서 다양한 프로그래밍에 기초 지식들을 이야기 해보도록 하겠습니다.
이렇게 끝을 내려고 했는데 좀 더 이야기 하고 싶은 것들이 생겨서 추가로 적어 봅니다.
우리가 프로그래밍을 하는 이유가 뭘까요?
컴퓨터라고 한정 지어서 이야기 해보겠습니다. 물론 다른 기계장치들도 컴퓨터와 크게 다를사는 없다고 생각합니다.
기계장치마다 OS(운영체제가)가 다르고 그에 따라 작동방식 코딩에 사용한 언어등이 달라질뿐
프로그래밍이라는 본질은 달라지지가 않지요.
그럼 컴퓨터에 프로그래밍을 하는 이유가 뭘까요?
컴퓨터를 이용해서 무언가 일을 시키고 싶어서 일겁니다.
기존에 없는 다르게 동작해서 나 이거나 또다른 누군가에게 도움이 되는 일(동작)을 시키고 싶어서 일거에요.
그렇다면 컴퓨터가 내가 생각하는데로 동작을 시키게 한다면 어떻게 해야할까요?
정말 많은 것들이 필요하겠지요?
눈을 감고 한번 생각해보겠습니다. 저도 지금 한번 눈을 감고 생각을 곰곰히 해보겠습니다.
(내가 컴퓨터에게 일을 시키기 위해서는 어떻게 해야 할까????)
자~ 저는 지금 생각을 멈췄습니다. 컴퓨터에게 어떤일을 시키고 싶었고 그걸 시키기 위해서 무엇이 필요할지 어느정도 생각을 했기 때문입니다.
저는 특정 폴더에 파일들이 있는데 그중 가장 큰 파일 하나만 남기고 모두 지워주는 일을 시키고 싶어졌습니다.
일을 시키기 위해서 무엇이 필요할지 생각이였는데 갑자기 하고 싶은 걸 이야기 한다는게 좀 이상하신가요?
왜냐 하면 어떤 일을 시키고 싶어야 그일을 시키기 위해서는 무엇이 필요한지 명확해지기 때문이라고 생각했습니다.
자 그럼 제가 이일을 시키려면 어떻게 하지 의문을 가지면서 가장먼저 떠오른 것은 제 뇌가 가지고 있는 생각을 그대로 뽑아서 컴퓨터에 이식시키면 모든 것이 끝난다고 생각했습니다.
제 나름대로 나이스한 방법이라 생각했습니다.
하지만 현실적으로는 불가능하조. 논리적이지 않습니다.
그렇다면 제 뇌가 가지고 있는 생각대로 동작하게 컴퓨터에게 알려줘야 할 건데요.
컴퓨터가 아니라 옆에 있는 친구에게 부탁해서 그일을 시키다고 생각해보았습니다.
전 한국사람이니 한국말로 그 친구에게 할려고하는 걸 설명하겠조.
폴더의 파일 리스트를 보고 제일 용량이 큰거빼고 모두 삭제 해달라고 이야기해주면 될겁니다.
그럼 그친구는 생각을 하겠조. 가장 큰파일을 어떻게 찾을 것인가
1. 두개의 파일을 비교해서 반복한다.
첫번째파일과 두번째 파일을 용량을 비교해보고 작은 파일을 삭제할 것입니다.
두번째 파일이 용량이 작았다면 두번째 파일을 삭제하고 다시 첫번째 파일과 세번째 파일을 비교해서 작은 파일을 삭제 할 것입니다.
이 작업을 파일이 하나가 남을때까지 반복을 할 것입니다.
2. 용량 정렬 후 삭제
해당 폴더의 파일들 용량을 내림차순 즉 큰것부터 작은 순으로 보이게 정렬 한 후 첫번째 파일을 제외한 모든 파일 모두 제거 할 것입니다.
3. 저에게 하기 싫다고 한다. (^^; 컴퓨터 최고)
이 방법은 친구가 생각한 것일수도 있지만 제가 생각하여 친구에게 직접 알려줄수 있겠지요.
그럼 다시 컴퓨터로 돌아와 컴퓨터에게 일을 시키기 위해서 친구때 이야기한 두가지중 한가지를 선택해서 일을 시킬수 있을 것입니다.
컴퓨터는 방법을 생각해 낼수 없으니 내가 직접 방법을 찾아 컴퓨터가 그렇게 동작하도록 설명을 해주면 될 것입니다.
(AI 이야기는 하지 않겠습니다. 지금은 프로그래밍 기초를 이야기 하고 있으니까요)
1번 방법을 선택했다고 생각하고 컴퓨터에게 설명을 해줘야 하지만 컴퓨터는 한국말을 하지 못합니다.
그래서 우리는 흔히 이야기를 하는 C, C++, 파이썬, C#, JAVA등등 다양한 언어를 사용하게 됩니다.
그럼 이런 언어가 없었을때에는 컴퓨터에게 어떻게 일을 시켰을까요?
컴퓨터가 이해할수 있는 말은 0과1뿐인 2진수만 이해할수 있습니다.
그래서 옛날 사람들은 컴퓨터가 이해하는 2진수로 프로그래밍을 했는데 정말정말 어려웠다고 합니다.
저같은 사람은 프로그래머 못했을 거에요.
그래서 컴퓨터가 알아듣기 쉬운 방법보다는 사람이 이해하기 쉬운 형태로 코딩을 한 후에 일을 시킬때에는 컴퓨터가 알아들을수 있게 빠꾸면 쉽겠조.
그래서 우리가 사용하기 쉬운 고급 프로그래밍 언어가 생성됐을 겁니다.
(프로그래밍 언어 탄생 이유는 순전히 저만의 혼자 상상으로 말들어낸 이야기 입니다. 하지만 논리적으로 타당하다고 생각합니다. 틀린부분도 있겠지만요)
그럼 우리가 좀 더 알아듣기 쉬운, 예를 들어 파이썬을 사용해서 컴퓨터에게 어떻게 해야하는지를 설명해준다고 생각해봅시다.
1번 방법을 선택했으니 그 방법대로 순서를 세세하게 나열해보겠습니다.
(1) 첫번째 파일과 두번째 파일을 가져온다. 용량이 작은 파일을 삭제한다.
(2) (1)번에서 삭제되지 않은 파일과 그 다음 파일을 가져와 비교하고 작은 파일을 삭제한다.
(3) (1)~(2)를 반복하는데 살아남은 파일은 계속 비교를 할수 있도록 해야하고 아직 비교하지 않은 파일을 계속 반복하며 비교한다.
(4) 더이상 비교할 파일이 없으면 일을 끝낸다.
제가 친구에게 일을 시키더라도 이렇게 시킬거 같고 컴퓨터에게도 일을 시키려면 이렇게 설명을 해야 하지 않을까 싶습니다.
(1)~(4) 하나하나 전산 상식으로 이야기를 해보겠습니다.
(1) 두개의 파일을 가져와야 하는데요. 그래야 두개파일의 용량을 비교 할수 있을 테니까요.
두개의 파일을 가져오려면 변수라는 걸 이용해야합니다.
그 이후 파일의 내용을 가지고 있는 변수에 비교 연산자를 이용해. 두개의 용량을 비교 할수 있습니다.
(2)번 부분은 1번과 비슷하지만 파일을 삭제하는 명령어를 알아야 합니다.
(이건 생각해보니 설명하기가 정말 어려줘지내요. 일단 이건 패스하겠습니다.)
(3)번 부분은 (1),(2)행위를 반복을 해야하니 컴퓨터가 반복을 할수 있는 반복문을 아용해야 합니다.
말이 좀 어려우신가요?
이 부분에서 제가 이야기 드리고 싶은 부분은 컴퓨터에게 일을 시키기 위해서는 내가 상상하는 모든 것들이 이미 준비되어 있습니다.
컴퓨터 스스로 생각하게 하는 것 빼고는 말이조.(상식적인 수준에서 말씀드리는 것입니다.)
내가 상상하는 걸 어떻게 코딩으로 해야하는지를 찾으시면됩니다.
요즘에 프로그래밍 교육은 프로그래밍을 해야하니 프로그래밍 언어를 배우는 것 같은 생각이 듭니다.
제가 중요하게 생각하는 것은 프로그래밍 언어를 배우는 것이 우선이 아니고
내가 컴퓨터에게 일을 시키려고 하는데 어떻게 시킬 것인지를 생각하는 것이 먼저라 생각합니다.
프로그래밍 인문책들을 보면 if, for, class 등등 신기한 것들이 많은데요.
결국 이건 사람들이 컴퓨터에게 일을 시키려고 하는데 효과적으로 하기 위해서 생겨난 것들이라고 저는 생각합니다.
그래서 내가 컴퓨터에게 일을 시키려고 한때 이런게 필요한데 저런게 필요한데 처림 상상을 할 것인데요.
우리가 상상하는 것들은 이미 똑똑한 분들이 이미 준비를 해주셨다는 것입니다.
우리는 그걸 사용하는 방법을 찾고 그대로 사용하면 되는 것이지요.
마지막 결론을 말씀드리자면
프로그래밍 언어를 배우고자 목을 매기 이전에 내가 컴퓨터에게 일을 어떤게 시켜야 할까를 고민하시고
결과가 나오면 그걸 어떻게 프로그래밍 언어로 연결 할지를 고민하는 것이 프로그래밍 실력을 빠르게 향상시키는지에 대한 중요한 키포인트가 되지 않을까 개인적으로 생각해봅니다.
글이 너무 길어져 죄송합니다. ㅜㅜ
이글은 여기까지 입니다.
여러분들의 관심과 사랑이 있다면 좀 더 좀은 컨텐츠를 제공해줄 수 있을거 같습니다.
많은 관심과 사랑 부탁드립니다.
감사합니다.
그럼 콤빠~
'프로그래밍 기초' 카테고리의 다른 글
02. 프로그래밍에 필요한 전산지식 5탄 - 함수 (0) | 2023.12.29 |
---|---|
02. 프로그래밍에 필요한 전산지식 4탄 - 제어문 (0) | 2023.12.28 |
02. 프로그래밍에 필요한 전산지식 3탄 - 연산자 (0) | 2023.12.27 |
02. 프로그래밍에 필요한 전산지식 2탄 - 상수와 변수 (0) | 2023.12.26 |
02. 프로그래밍에 필요한 전산지식 1탄 - 자료형 (0) | 2023.12.21 |