파이썬 뭘로 배웠어요?
튜토리얼 정도 수준은 배웠는데
코드읽는게 안되네요...;;
파이썬 뭘로 배웠어요?
튜토리얼 정도 수준은 배웠는데
코드읽는게 안되네요...;;
어떤 코드가 안 읽히시는데요?
전 다른 언어를 먼저 접하고 파이썬을 뒤에 접해서, 간단한 코드 읽는데는 별 문제 없었어요.
파이썬의 특이한 문법 (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 |
123557 | [블라인드 처리되었습니다.]11 | 살벌한 백송 | 2018.05.07 |
123556 | 순버2 | 친근한 백목련 | 2018.05.07 |
123555 | 순버 | 친근한 백목련 | 2018.05.07 |
123554 | 메가박스 학생증 할인 모바일로도 되나요 ?2 | 화려한 괭이밥 | 2018.05.07 |
123553 | 정보전산원 오늘 여나요1 | 아픈 지리오리방풀 | 2018.05.07 |
123552 | 중국여행 가보신분 계신가요7 | 세련된 왕고들빼기 | 2018.05.07 |
123551 | 칭다오 여행 가려고 하는데2 | 착한 부처손 | 2018.05.07 |
123550 | [레알피누] 내일 예비군 버스오나요? | 때리고싶은 목련 | 2018.05.07 |
123549 | 내 스누피 커피우유 들고간 사람 보세요49 | 착실한 둥굴레 | 2018.05.07 |
123548 | 투자론 ㅇㅊㅈ 교수님 과제2 | 겸손한 튤립 | 2018.05.07 |
123547 | 부산대 근처 괜찮은 정형외과1 | 짜릿한 떡신갈나무 | 2018.05.07 |
123546 | 휴학이랑 졸업유예 중 뭐가 더 낫나요?2 | 건방진 초피나무 | 2018.05.07 |
123545 | ㅋㅋ10 | 살벌한 백송 | 2018.05.07 |
123544 | [레알피누] .21 | 난폭한 붉은토끼풀 | 2018.05.07 |
123543 | 경암헬스 카드분실했는데요 ㅜ.ㅜ1 | 참혹한 갓 | 2018.05.07 |
123542 | .9 | 끔찍한 꽃며느리밥풀 | 2018.05.07 |
123541 | 오늘 대체휴일인데 수업하나요??7 | 억쎈 갈풀 | 2018.05.07 |
123540 | 과행사 불참사유 뭐있나요(금요일 저녁)20 | 행복한 층꽃나무 | 2018.05.07 |
123539 | 과행사 불참사유 뭐있나요(금요일 저녁)7 | 행복한 층꽃나무 | 2018.05.07 |
컴공성님들 저좀 도와주세요22 | 무좀걸린 누리장나무 | 2018.05.07 |
댓글 달기