본문 바로가기

Python 배우기

[외계어 배우기] 들어가기 전에

 

     우선, 분명히 짚고 넘어가야 하는 것들이 있습니다. 이 글은 (이전에 쓴 것과 앞으로 쓸 것들 모두) 수업 후 복습을 하며 정리하는 내용이기 때문에 단어 하나하나 정확히 기억하지 못해 쌤이 가르쳐주고자 하는 것과 조금은 다르게 정리할 수도 있다는 점입니다. 또한 복습하다보면 기억의 왜곡이나 나의 생각들(보라색으로 표기)이 반영될 수 있다 보니 틀린 내용이 있을 수도 있습니다. 
     가급적 ChatGPT에게 물어서 틀리지 않으려 노력하겠으나 그럼에도 부족한 부분이 많다 보니 틀린 내용이 보이면 너그럽고 다정하게 지적해 주기 바랍니다. 혹 글 작성 후에라도 틀린 부분을 알게 된다면 꼭 내용 중에 수정한 내용을 알 수 있도록 표기해 두겠습니다. 

 

학습교재 [코딩 테스트로 시작하는 파이썬 프로그래밍(다니엘 진가로 저), 영진닷컴]

 

이 수업을 관통하는 몇 가지 키워드가 있는데, 현재까지 쌤이 강조한 몇 가지 중 하나는 "완벽히 내 것으로 만들어야지만 (내가 아는 것에 대해 자세히) 설명할 수 있다"는 것이었다. 명확히 알고 있어야지만 쌤이 나에게 하듯 내가 알아들을 수 있는 말로 쉽게 설명할 수 있는 것이다. 너무나 당연한 말이지만, 어쩌면 너무 간과하기 쉬운 부분이었다. 여기서 '명확히 안다'는 것은 굉장히 디테일한 것을 의미한다.

 

우리는 이 학습을 함께 책을 한줄한줄 읽는 것으로 시작했다. 따라서 나의 학습과 복습은 이 교재를 읽으며 완벽히 이해할 때까지 외우고, 한 문장 한 문장을 내 것으로 만들어 자세하고 쉽게 설명할 수 있는 경지에 이르는 것을 첫 번째 목표로 하고 있다. (프로그래밍 언어는 '언어'이다. 학습할 때 기초 수학이나 다른 어떤 지식이 도움이 될지 모르지만, 그러나 역시 '언어'이다. 잊지 말자!)

 

덧, 수업시간 동안 나도 모르게 '당연'하게 생각하는 것들을 버리는 과정이 필요하다. 알고 있다고 생각한 것들을 모두 의심하고 다시 한번 보자. 내가 정말 명확히 알고 있는가?

 

쌤은 나에게 Description의 중요성을 강조하며, 서술 연습에 대해 이야기해 주었다. 하여, 이 책의 앞부분(들어가기 전에)에 대해 내가 이해한(?) 것들을 서술해 보려고 한다. 아직은 완벽히 내 것으로 만들지 못해 누구나 알아들을 수 있을 정도로 쉽게 설명하지 못하지만, 나름 정리는 해볼 수 있을 것 같다.

 

들어가기 전에

1. 작업을 하거나 문제를 해결하기 위해 컴퓨터 사용

2. 워드프로세서나 스프레드시트, 혹은 이미지 편집기는 컴퓨터를 이용한 프로그램

3. 이 책의 목표는 내가 필요한 프로그램을 만드는 방법을 배우는 것 - 나는 그저 외국어를 배우 듯 새로운 언어를 배우고 싶은 것

4. 내 생각(명령)을 컴퓨터에 전달하기 위해 프로그래밍 언어(번역기)를 배워야 함

5. 명령을 하려면 프로그래밍 언어로 코드를 작성해야 함

6. 코드를 작성할 때는 코드에 대한 규칙을 정의하고, 내가 정한 코드의 규칙에 따라 컴퓨터가 어떻게 해야 할지도 알려줘야 함

7. 프로그래밍 언어를 배운다는 것은 기존 사고방식의 변화와 새로운 사고방식의 배움도 의미할 수 있음

 

이 책의 대상

1. 문제를 해결하기 위해 컴퓨터 프로그램을 사용하고자 하는 모든 사람 - 왜 꼭 문제를 해결해야 하는 것인가, 문제를 해결할 때 프로그램을 사용하면 무엇이 더 좋은가

2. 컴퓨터 프로그램을 작성하는 법(코드를 작성하는 법, 프로그램을 만드는 법)을 배우고 싶은 모든 사람 - 왜 파이썬이어야 할까?

3. 파이썬 프로그래밍 언어를 들어 보고 파이썬으로 코드를 작성하는 법을 배우고 싶은 사람

5. 파이썬에 대해 들어본 적 없지만 프로그래밍 언어를 배우고 싶은 사람

6. 이 책은 프로그래밍을 위한 사고방식을 알려줌

7. 입문 수준에서는 프로그래머가 생각하는 방식이 특정 언어와 깊이 연관되어 있지 않음

8. Java나 Go 같은 언어를 배우는 데 관심이 있는 사람. 파이썬 학습의 부산물이 다른 프로그래밍 언어를 공부할 때도 유용하기 때문... - 파이썬을 잘 사용하게 되면 다른 언어 배울 때 쉬워지나?

 

왜 파이썬을 배울까?

1. Beautiful is better than ugly. - 여기에서 beautiful하다는 것이 눈에 보이는 직관적인 아름다움이 아닌 '시'나 '예술작품'을 의미하는 아름다움이라는 것을 최근 알게 되었다.

2. 저자가 수년간 프로그래밍 입문을 가르치며 파이썬이 첫 번째로 배우는 프로그래밍 언어로 훌륭한 선택이라는 것을 알게 되었다고 한다.

3. 다른 언어와 비교해서 파이썬 코드는 더 구조적이고 읽기 쉽다. - 더 구조적이란 것은 어떤 의미일까? Structured의 의미를 design과 비슷한 의미로 봤을 때 짜임새가 있다거나 잘 설계되었다는 의미일까?

덧, ChatGPT와의 모든 질문은 영어로 진행되었다.

나: 이 책의 '들어가기 전에' 섹션에서 파이썬 코드가 다른 언어보다 구조적이라고 했는데, 이건 어떤 의미일까?

Chatpy: "파이썬 코드는 다른 언어보다  구조적"이라는 설명은 가독성, 단순성, 명확한 구문을 강조하는 파이썬의 특성을 가리키는 것일 수 있습니다. 이것이 실제적인 측면에서 무엇을 의미하는지 살펴보겠습니다.
- 가독성과 단순성: 파이썬은 가독성을 염두에 두고 설계되었습니다. 구문이 깔끔하고 이해하기 쉬워 특히 초보자도 쉽게 접근할 수 있습니다. 이러한 가독성은 복잡하거나 어수선한 코드를 피하고 단순성을 강조하는 '파이썬의  선(The Zen of Python)'이라는 일련의 원칙을 통해 달성됩니다.
- 들여 쓰기 및 코드 블록: 중괄호 { }를 사용하여 코드 블록을 정의하는 다른 많은 프로그래밍 언어와 달리 Python은 들여 쓰기를 사용합니다. 이를 통해 코드가 시각적으로 깔끔하고 일관된 구조를 갖출 수 있습니다. 예를 들어, 루프 또는 if 문 내의 모든 문은 루프 또는 if 줄 아래에 들여 쓰기 됩니다. 이렇게 하면 코드의 구조를 더 쉽게 확인하고 코드의 흐름을 이해할 수 있습니다.
- 상용구 코드 감소: 파이썬은 다른 많은 언어보다 간결한 경우가 많습니다. 간단한 작업을 수행하기 위해 많은 '상용구' 코드(거의 변경 없이 여러 곳에 나타나는 반복적인 코드)가 필요하지 않습니다. 예를 들어, 다른 언어에서는 여러 줄의 코드가 필요할 수 있는 반면, 한국어에서는 print("Hello, World!")라는 간단한 명령으로 한 줄의 텍스트를 인쇄할 수 있습니다.
- 동적 타이핑: 파이썬은 동적 타입이므로 변수의 유형을 명시적으로 선언할 필요가 없습니다. 이렇게 하면 코드를 더 유연하고 쉽게 작성할 수 있지만 유형 관련 오류를 피하기 위해 신중한 고려가 필요합니다.
- 표준 라이브러리 및 커뮤니티 규칙: Python은 포괄적인 표준 라이브러리와 함께 제공되며, 작업 수행 방식에 대한 강력한 커뮤니티 규칙("파이썬식(Pythonic)" 방식이라고도 함)이 있습니다. 이러한 규칙은 서로 다른 파이썬 프로젝트에서 코드를 체계적이고 일관되게 유지하는 데 도움이 됩니다.

요약하자면, 이 책에서 파이썬이 더 구조적이라고 말하는 것은 언어의 설계와 규칙이 동일한 목표를 달성하기 위해 더 장황하거나 복잡한 구문을 허용하거나 요구하는 언어와 비교할 때 일반적으로 더 체계적이고 가독성이 높으며 유지 관리가 쉬운 코드로 이어진다는 것을 의미합니다.
덧, ChatGPT에게 '더 구조적'인 것에 대해 물어봤는데 모르는 내용과 익숙하지 않은 용어가 잔뜩이라 그냥 한번 읽어보고 넘어가기로 한다.

 

4. 읽기 쉽다는 것은 거의 사람의 언어처럼 읽힌다는 것을 의미하기도 한다.

5. 파이썬에는 다른 언어에서 사용할 수 없는 데이터를 조작하거나 저장하는 강력한 도구들이 포함된다.

6. 훌륭한 교육용 언어인 동시에 많은 프로그래머들이 사용하는 언어이다.

7. 웹 애플리케이션, 게임, 시각화, 머신 러닝 소프트웨어 등을 만드는 데 파이썬을 사용하는 프로그래머들이 많다.

 

이 책에 대하여

1. 각 장은 평가 사이트에서 가져온 문제 2~3개로 구성됨

2. 코딩법을 설명하기 전, 첫 번째 문제를 제시하며 각 장을 시작

3. 문제 해결에 필요한 파이썬의 기능을 살펴보며 학습 동기부여

4. 읽으며 문제 해결 방법을 이해하지 못해도 걱정할 필요 없음

5. 문제가 무엇을 요구하는지 이해했다면 준비 완료 - 이건 모든 시험이 마찬가지이다. 문제를 정확히 이해하면 반 이상 먹고 들어간 것임

6. 후속 문제는 추가 기능을 소개하거나 첫 번째 문제에서 배운 것을 확장하기 위함임

7. 후속 문제까지 푼 후 배운 내용을 실습하기 위해 연습문제 제시

 

 

반응형