파이썬 뭘로 배웠어요?
튜토리얼 정도 수준은 배웠는데
코드읽는게 안되네요...;;
어떤 코드가 안 읽히시는데요?
전 다른 언어를 먼저 접하고 파이썬을 뒤에 접해서, 간단한 코드 읽는데는 별 문제 없었어요.
파이썬의 특이한 문법 (decorator, list comprehension 등)은 아직 익숙하지 않지만요.
변수 선언, 대입, if, for, list type, function 정도만 알아도 레퍼런스 뒤적여가면서 왠만한 코드는 읽을 수 있어요.
전 인터넷에서 찾을 수 있는 python document 외엔 읽어본 책이 없어요.
코딩을 잘 하려면 (=코드 리딩을 잘 하려면) 기본적인 문법 요소들이 결합되어 의미 단위를 이루는 케이스들을 눈도장 잘 찍고 이해해야 하죠.
한편으론 직접 작성하는 것보다 남이 짠 코드 읽는게 더 어려운 경우도 있어요. (코드가 작동하는 모습을 머리속에 떠올리면서 의도를 파악해야 하니까요.)
어떤 코드를 읽으려고 하시는지 예시를 들어주시면 좀 더 자세하게 설명드릴 수도 있는데, 일반론이라 구체적인 답변을 드리긴 어렵네요.
단순한 코딩 예제정도말고
프로젝트 이상의 프로그램 짤 때의 방법론 이런걸 알고싶어요
관습적으로 이러이러한 방법으로 설계한다 뭐 이런것들요...
누가 정리해놓은 사이트나 서적이 있으면 구매해서라도 보고싶어요
비컴공이라 정보력이 후달리네요
잘 짜여진 프로젝트의 경우, 변수이름 클래스이름 함수이름으로 대충 다 눈치를까게만듭니다.
특히 파이썬의 경우 한 파이썬 파일이나, 기초 서적에 있는 프로그램이나 다를바가 없습니다.
다른 건 쓰는 클래스나 변수가 사용자가 미리 import 시켜놓은곳에서 가져와서, 다른 방식으로 쓰인다는 겁니다. 그 이름이 쓰레기가 아닌 이상 . 예측할 수 있어야 합니다
예컨데 파이썬 기초 서적에서는 a = 1 b = 2 c = a+b 이런식이라고 할 때 (저도 파이썬이 주 언어는 아니지만 다음과 같은 건 어디에나 통용됩니다.)
프로젝트에서는 FileReader.add(filelist[a], filelist[b]) 이런식으로 표현될 뿐입니다. 그리고 그 FileReader같은 하나하나들은 사용자들이 만들었거나, 기본적으로 너무 방대해서 책에서는 직접 다루지 않습니다. 그 네이밍들을 검색해가며 감을잡으세요.
다음과 같은 것을 import 했을때 어떤 함수들이 딸려 내려오는지 나중에 가면 눈이 익게될거에요
math
as
sys
file
os
time
그 이름을 보고 프로그램이 어떻게 돌아가는지 예측하기 힘든 프로그램은 잘못 짜여진 프로그램입니다. 적어도 파이썬이라면요
규모가 큰 프로그램의 설계 방법론은 추상화(abstraction)에 근거합니다.
최근에는 함수형 패러다임도 있지만 아직까지도 실무에서는 객체지향이 많이 사용되고 있습니다. 여러 이유가 있지만 레거시에 대한 호환성 문제가 첫 번째인 것 같고, 아직 함수형 패러다임은 컴퓨터 아키텍처를 제대로 활용하지 못해 성능이 안 나오는 문제가 있기 때문이기도 합니다. ( 하지만, 간혹 실무에서 Clojure 같은 언어가 사용되기도 합니다. ) 객체 지향이란 독립적인 기능을 하는 객체를 정의하고, 정의한 객체를 선언하고, 한번 만든 객체를 계속해서 재사용하는데 핵심이 있습니다.
큰 프로그램이라고 해서 이질적인 일회성 코드들이 수 없이 포함되어 규모가 눈덩이처럼 불어난다면 결국에는 그것을 읽을 수 있는 사람도 유지보수할 수 있는 사람도 없게 됩니다.
제대로 된 프로젝트라면 큰 단위는 보다 작은 논리 단위로, 그리고 그 작은 단위들은 보다 더 작은 단위로, ...를 반복하여 코어를 이루는 바닥 계층에 이를 때까지 분할되어야 합니다. 우리가 웹 서핑을 할때 전선에 오가는 전기적 신호에 대해 신경쓸 필요가 없는 것처럼, 프로그램을 작성할 때에도 보다 높은 계층의 무언가를 설계할 때 아래에서 무슨 일이 일어나는지 신경 쓸 필요가 없어야 한다는 거죠.
예를 들자면 점을 찍는 기능을 이용해서 직선을 그리는 함수를 만들고, 직선을 그리는 함수를 이용해서 삼각형을 그리는 함수를 작성하고, ... 하는 식으로요. ( 물론 점 찍는 기능, 선 긋는 기능은 API로 제공되지만 예를 들자면요. )
하지만 좋은 설계라는 것은 열심히 생각한다고 해서 한번에 나오는 것은 아닙니다. 부수고 다시 만드는 시행착오를 겪어야 하고, 실제 실무에서 사용되는 설계들을 접해보고, 나름의 철학을 가져야 하죠. 이 부분에 있어서는 전공자들에게도 쉬운 부분은 아닙니다.
감히 조언을 드리자면 처음부터 큰 프로젝트를 설계하려고 하시기 보다는, 적당한 규모의 오픈소스 프로젝트를 가지고 놀거나 스스로 작은 프로그램을 만들면서 먼저 감을 잡으시는게 좋을 것 같습니다.
객체지향 패턴에 어느 정도 익숙해지면 웹이든, AI이든 코드를 레퍼런스 보면서 조금씩 실험하고 작성하고, 남이 만든 코드를 그대로 붙여넣는게 아니라 필요에 맞게 수정하여 사용하실 수도 있게 되실 것이고 목표하시는 바에 따라서는 그 정도만으로도 충분할 수 있습니다. 좀 더 깊게 들어가면 문제를 직접 해결하는 코어 알고리즘을 설계하고 성능을 평가하실 수 있는 수준에 이르실 수도 있겠지만요.
| 번호 | 제목 | 글쓴이 | 날짜 |
|---|---|---|---|
| 공지 | 욕설/반말시 글쓰기 권한 영구 정지10 | 저렴한 개불알꽃 | 2019.01.26 |
| 공지 | 식물원 이용규칙 (2018/09/30 최종 업데이트) - 학생회 관련 게시글, 댓글 가능17 | 흔한 달뿌리풀 | 2013.03.04 |
| 168340 | 10 | 쌀쌀한 삼지구엽초 | 2019.02.21 |
| 168339 | 10 | 부자 가지복수초 | 2014.12.15 |
| 168338 | 4 | 답답한 개비자나무 | 2016.09.07 |
| 168337 | 8 | 더러운 리아트리스 | 2020.04.06 |
| 168336 | 16 | 특별한 갈풀 | 2015.12.19 |
| 168335 | 1 | 거대한 개불알꽃 | 2017.05.23 |
| 168334 | 6 | 개구쟁이 아프리카봉선화 | 2013.12.22 |
| 168333 | 1 | 촉박한 대극 | 2017.08.15 |
| 168332 | 수석졸업여부!!!!!!!!!!!!!!1 | 더러운 하늘나리 | 2016.01.10 |
| 168331 | 어떻게푸나요7 | 즐거운 범부채 | 2018.04.18 |
| 168330 | 외모가 사람 성격에 미치는 영향이 있다고 생각하는게8 | 빠른 불두화 | 2019.03.07 |
| 168329 | .8 | 세련된 봉의꼬리 | 2018.07.07 |
| 168328 | .4 | 화려한 살구나무 | 2015.07.03 |
| 168327 | .8 | 미운 부겐빌레아 | 2017.06.18 |
| 168326 | .18 | 서운한 해바라기 | 2017.03.22 |
| 168325 | 21살 문과생 9급준비 vs 교대재수 조언부탁드려요ㅠㅠ14 | 해맑은 벋은씀바귀 | 2020.09.18 |
| 168324 | 금융권과 기업, 적성의 문제4 | 해괴한 애기부들 | 2013.03.04 |
| 168323 | 미투운동과함께 떠오른 사람33 | 못생긴 은분취 | 2018.03.24 |
| 168322 | 수료불가?3 | 촉박한 수세미오이 | 2020.02.05 |
| 168321 | 열람실에서 신발 벗기6 | 착실한 겨우살이 | 2014.05.29 |
댓글 달기