컴퓨팅 사고력이란 무엇인가.. #446
dev-hobin
started this conversation in
Today I Learned
Replies: 1 comment 1 reply
-
|
오우 어떤 책이에요? 궁금해요 ㅋㅋㅋ |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
"컴퓨팅의 정수" 라는 책을 읽고 중간커밋하는 글
재귀적 사고
컴퓨터에게 일을 제대로 시키려면 컴퓨터가 생각하는 방식인 재귀적 사고를 해야한다.
재귀적 사고는 부분에서 전체로 가는 순환적 사고와는 반대이므로 인간에게는 어색하며 연습이 필요하다.
컴퓨터는 인간보다 훨씬 더 큰 문제를 처리하도록 설계되어있으며 많은 문제는 거꾸로 봤을 때 더 명확해진다.
분할 정복
문제가 너무 복잡하면 문제를 하위 문제로 분할해서 푼다. 하위 문제도 복잡하다면 또 다른 하위문제로 분할해서 푼다. 이 때 재귀가 함께 활용될 수 있는데, 재귀는 분할정복의 필수 조건은 아니다. 이렇게 하위 문제로 나누어 푼 결과들이 최종적으로는 복잡한 문제의 해답으로 병합된다.
지능의 본질
컴퓨터는 현실의 문제를 정보 분류, 구성, 재구성의 정보 처리를 통한 계산 문제로 전환한다. 계산 문제로 풀 수 없는 문제는 풀 수 없다.
정보의 분류와 조합에서 빠질 수 없는 이론은 집합론이다.
집합의 특성이 명확한 경우 의사결정 트리를 활용한다. -> 이미 명확한 경계 안으로 원소를 넣는 느낌
집합의 특성이 명확하지 않은 경우 해시테이블을 활용한다. -> 모든 원소를 하나하나 매핑하고 매핑한 결과군이 집합의 경계를 나타냄
상태
특정 문제가 너무 복잡한 상황들을 가지고 있을 때는 많은 상황을 포괄하는 상태로 추출해야한다. 이때 중요한 것은 모든 경우의 수가 빠짐없이 포함되어야 한다.
책에서는 여러 복잡한 케이스를 문제 해결에 필요한 몇가지 상태로 압축하여 나타내는 예시와 객체지향에서 공통 인터페이스 추상화 예시, 이렇게 두 가지 예시를 들어서 설명한다. 책에서 말하는 상태는 소프트웨어의 상태를 의미하는 큰 개념이다.
상태의 등가성
문제를 풀 때 상태를 이용해서 풀기 힘들다면 상태의 등가적 변환이 무엇인지 생각해서 다른 표현으로 풀어보는 것이 도움이 된다. 다른 말로 정보의 등가적 변환이다. 이러한 등가성은 어려운 문제를 분류하고 해결하는데 사용된다.
상태간 인과관계
많은 상황을 몇개의 상태로 나타낸 경우, 상태간에는 인과관계가 있다. 한 상태는 일부 작업후에 다른 상태가 된다. 이러한 상태간 연결은 그래프를 구성한다. (그래프 이론의 필요성)
그래프가 너무 광대할 경우 컴퓨터를 이용하면 된다. 컴퓨터를 잘 사용하기 위한 전제는 상태의 추상화 과정과 그래프 이론 같은 다양한 고전적 인지도구를 숙달하는 것이다.
테스트와 디버깅
소프트웨어 테스트는 비정상 상태를 찾는 것이다. 디버깅은 비정상 상태를 일으킨 인과관계를 찾는것이다. 따라서 도구와 상관없이 개발자는 프로그램의 실행 상태를 추적하는 능력이 필요하다.
벽이 느껴지긴 한다.
어떤 말인지는 알겠는데 이것들을 숙달하는 구체적인 액션 아이템을 떠올리는 것도 어려운 거 같다.
이대로면 추상적으로 좋은말이 좋은말이지로 끝나는데............................ 아 더 잘하고 싶다.
Beta Was this translation helpful? Give feedback.
All reactions