파이썬 뭘로 배웠어요?
튜토리얼 정도 수준은 배웠는데
코드읽는게 안되네요...;;
어떤 코드가 안 읽히시는데요?
전 다른 언어를 먼저 접하고 파이썬을 뒤에 접해서, 간단한 코드 읽는데는 별 문제 없었어요.
파이썬의 특이한 문법 (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 |
| 123634 | 무슨 5월인데 이래 춥노11 | 착한 더덕 | 2018.05.08 |
| 123633 | 어버이날 괜찮은 식당3 | 착한 브라질아부틸론 | 2018.05.08 |
| 123632 | [레알피누] 근처 세탁소나 빨래방 좋은 곳 있나용??3 | 뚱뚱한 대왕참나무 | 2018.05.08 |
| 123631 | .14 | 섹시한 개옻나무 | 2018.05.08 |
| 123630 | 학교근처에 카네이션 한송이씩 살수잇는 곳 어디잇을까요??2 | 활달한 숙은노루오줌 | 2018.05.08 |
| 123629 | 학생증 재발급 질문6 | 침울한 꼭두서니 | 2018.05.08 |
| 123628 | 부모님 믿고 오만하게 구는 여동생...19 | 우아한 수련 | 2018.05.08 |
| 123627 | 휴대폰 간단한 구매팁19 | 근육질 당단풍 | 2018.05.08 |
| 123626 | 남자분들!!! 셔츠 사이즈 질문요~5 | 냉정한 산비장이 | 2018.05.08 |
| 123625 | 형법각론2 | 밝은 참오동 | 2018.05.08 |
| 123624 | 윤성민교수님 계량경제학3 | 미운 금송 | 2018.05.08 |
| 123623 | 남성비하 드라마 제목 밥 잘사주는 예쁜 누나11 | 뛰어난 곤달비 | 2018.05.08 |
| 123622 | 일물실 결석 두번이면 C각인가요?4 | 즐거운 굴피나무 | 2018.05.08 |
| 123621 | 4번출구 휴대폰5 | 고상한 물배추 | 2018.05.08 |
| 123620 | 어흥~4 | 한심한 골풀 | 2018.05.08 |
| 123619 | 자유관 완공되면 통학생도 들어갈 수 있을까요?9 | 난폭한 산딸기 | 2018.05.08 |
| 123618 | -3 | 거대한 해국 | 2018.05.08 |
| 123617 | 오늘 학교 수업하나요2 | 난폭한 동부 | 2018.05.08 |
| 123616 | 오늘 9시 정책학원론 ㄱㅎㅇ 교수님2 | 슬픈 산비장이 | 2018.05.08 |
| 123615 | 부산대역에서 순버털때8 | 병걸린 라일락 | 2018.05.08 |
댓글 달기