풀스택 웹🌐 개발자 지망생 🧑🏽💻
➕ 인공지능 관심 🤖
Categories
-
┣
▶ COMPUTER_SCIENCE
📂: 7 -
┣
▶ WEB
📂: 3 -
┣
▶ ETC
📂: 3-
┃
┣
ETCS
📄: 10 -
┃
┣
SUBBRAIN 개발기
📄: 5 -
┃
┗
YOS 개발기
📄: 1
-
┃
┣
-
┗
▶ AI
📂: 9-
┣
AITOOLS
📄: 3 -
┣
CV
📄: 2 -
┣
DEEP_LEARNING
📄: 1 -
┣
DATA_VIS
📄: 2 -
┣
GRAPH
📄: 1 -
┣
LIGHTWEIGHT
📄: 1 -
┣
MATH
📄: 1 -
┣
NLP
📄: 3 -
┗
STRUCTURED_DATA
📄: 2
-
┣
어떻게 코딩할 것인가
어떻게 코딩할 것인가?
🗣️
quote
Edx 강의 How to Code 시리즈를 정리한 내용입니다.
- 좋은 프로그램이란?
- 잘 테스트된 여러 조각의 유기적인 작은 프로그램으로 이루어져 있으며 쉽게 추가, 수정 할 수 있으며, 원하는 목적을 잘 수행하는 프로그램
- 좋은 프로그램을 만들기 어려운 이유
- 프로그램의 목적을 정의하기 모호하거나 계속 바뀌는 경우가 많음
- 어려운 문제 하나를 쉬운 문제 여러개로 정확히 나누기 힘듦
“좋은 프로그래밍 설계란, 애매모호하고 어설프게 나누어진 문제들을 잘 구성된 하나의 솔루션으로 바꾸는 과정이다.”
어떻게 코딩할 것인가-함수 설계
어떻게 코딩할 것인가-캡슐화
어떻게 코딩할 것인가-데이터 설계
어떻게 코딩할 것인가-세계 설계
스페이스 인베이더-세계 설계 예시 프로젝트
기타 팁
- 같은 인자값을 이용하는 함수의 경우, 오직 재귀함수인 경우에만 변수를 이용하자.
- 컴파일러가 알아서 동일한 결과를 변수로 바꿔준다.
- 람다식은 아래 두 조건이 충족될 경우에만 사용하여야 가독성에 영향을 주지 않음
- 해당 함수 코드가 그 곳이외에는 사용되지 않음
- 함수의 바디(로직)이 함수 이름을 짓는것보다 명확해 보일 때
- 꼬리 재귀(Tail recursion) 사용하기 : 재귀 함수의 결과값에 추가적인 연산을 하지말자!
- 재귀 함수의 결과값에 추가적인 연산을 하기 위해 스택 메모리에 결과값과 그에 대한 연산을 저장하게 된다.
- 이는 엄청난 메모리와 성능 낭비를 야기시킨다.
-
꼬리 재귀는 [[어떻게 코딩할 것인가-함수 설계#축적자(Accumulator) 축적자]]같은 추가적인 인자와 전처리를 통해 생성할 수 있다.
🧾️
꼬리 재귀 예시
(define (sum lon)
(cond [(empty? lon) 0]
[else
(+ (first lon) (sum (rest lon)))]))
;; 축적자를 통한 꼬리재귀 버전의 합 함수, 성능상 유리
(define (sum_tail lon0)
(local [(define (sum lon acc)
(cond [(empty? lon) acc]
[else
(sum (rest lon) (+ acc (first lon)))])]
(sum lon0 0)))
⚠️
단! 파이썬 컴파일러의 경우 꼬리재귀 함수의 최적화 과정을 디버깅의 용이성을 위해 지원하지 않으므로 의미없다!
_articles/computer_science/OSSU/PL/HowToCode/어떻게 코딩할 것인가.md