생각하는 지능

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

함수를 알아야 합니다.

프로그래밍을 하려면 함수를 꼭 알아야합니다
중학교때부터 줄기차게 배워온 함수를 기억하나요?
함수의 목적은 하나입니다.
하나 또는 여러가지 정보를 함수에넣어주면 내가 원하는 정보를 만들어줍니다 
그럴려고 함수를 만드는겁니다
예를 들어서 입력되는 정보를 모두 더하는 함수가 있다고 하면 정보를 1을 넣고 2를 넣고 3을 넣으면 함수는 6을 만들어냅니다.
이 함수는 간단합니다.
그래서.
조금 더 어려운 함수를 보여드립니다.
숫자 1과 영어 'A' 와 'C' 그리고 숫자 3을 넣어줍니다
그럼 결과를 CA31로 만들어주길 바랍니다.
규칙은 숫자는 입력받은 순서대로 뒤에서 앞으로 배치하고
문자도 먼저 입력 받은 순서대로 뒤에서 앞으로  배치하는 규칙으로 함수를 만드는 겁니다.
(1)입력받은 값을 보고 숫자와 문자를 분리하고
(2)문자도 숫자도 입력받은 순서대로 뒤에서 배치해야겠죠
(3)마지막으로 문자는 앞에 배치하고 숫자는 문자 뒤에 배치합니다
그리고 1,2,3의 각각의 과정은 함수를 사용해서 해결하는것을 원칙이라고 합시다. 
(1)문자 숫자구분하는 기능을 가진 함수
(2)먼저 입력받은값을 뒤로 배치하는 함수
(3)문자 먼저 숫자는 그 뒤에 배치하는 함수
이렇게 3가지를 써서 하나의 함수를 만드는거죠

에이전트를 위해서 함수를 알아야 한다고 하는데 어떤 관계가 있을까요.
먼저 사람을 예로 들어보죠.
사람은 눈에 보이는 것과 들리는 소리를 합쳐서 무슨 상황인지 판단합니다.
현재시각과 자동차가 달려가는 속력을 가지고 사람은 대충 얼마 후에 도착하겠구나 하고 예측합니다.
사람이 시각정보와 음성정보를 입력받고 상황에 대한 판단을 하는거죠
에이전트도 같습니다. 
물이 쏟아졌음에 집중하기 위해서는 카메라로 보고 마이크로 소리를 듣는거죠 
그 정보로 상황을 판단하겠죠
사람의 오감과 같이 에이전트도 여러가지 수집장치로 부터 정보를 수집하여 이용합니다.
에이전트는 사소한것까지 전부 함수로 만들어서 정보를 줘야합니다. 
감지기에 의해서 수집하거나 다른 함수에 의해서 수집되는 모든 정보를 다시 함수를 통해서 새로운 값을 만들어냅니다. 

지금까지 배운내용들을 생각해보면 우리는 원리나 작동과정에 대한 매커니즘을 머리로 이해하고 있는 단계입니다. 기초로써 어떻게 구성되었는지 개념을 잡고 있는 단계이죠.
개념을 잡고나면 실제 어떻게 만드는지 매칭을 시키는 단계가 필요하겠죠. 
머리로 문제를 형식화해야한다고 알고 있으면 실제 프로그램 코딩하는것으로 행동해야 에이전트가 만들어집니다. 
그리고 프로그램 코딩할 때 함수가 필요하다는 것을 인식하게 될것입니다. 

함수라는게 목적은 정말 단순하죠 
입력정보를 가공해서 출력값을 만드는거죠. 
함수를 작동시킬때 어떤 방식으로 작동하는
함수를 만들어내는지가 가장 어렵다고 생각하면됩니다.
함수의 결과값이 같다고 하더라도 함수의 내부구조는 전혀 다를수 있습니다. 
그리고 앞에서 배운 에이전트의 구조를 생각해보시죠.
검색을 통한 해결방법도 있고 목표를 세워서 해결해나가는 방식이 있죠. 가장 효용성이 높은 행동을 하게 만드는 방식도 있죠. 단순히 이러한 방식들이 있다는 것을 이해할것이 아니라 이러한 방식을 알았다면 어떤 함수를 사용하고 어떤 방법으로 그러한 작동을 시킬것인가에 주목해야합니다. 
가장 먼저 목표 기반 에이전트를 가지고 설명할 것입니다. 목표기반이므로 목표를 세우는 함수가 필요하고 해답을 위해 검색하는 함수도 필요할 것입니다.
프로그램 언어에 대한 기반지식이 없다면 집중해서 보시면 됩니다. 이 모듈에서는 전체를 다 알려드리지 못하지만 그래도 큰 틀은 이해할 수 있을 겁니다.
물론 단순히 이론상 이해하는 것보다 더 어렵습니다. 
하나의 함수 안에 여러개의 함수가 나오고 그 순서도 굉장히 중요합니다. 그리고 각각의 함수가 무슨 용도인지 이해해야합니다. 
참고로 함수와 같은 기능을 하지만 그 규모가 훨씬 큰 녀석도 있는데 이를 클래스라고 합니다. 정확한 개념은 나중에 배워볼께요.
아무튼 다음 토픽에서 나오는 코딩을 보면서 조금이나마 이해하려면 함수는 알아야 됩니다.

댓글

댓글 본문
작성자
비밀번호
버전 관리
Braden
현재 버전
선택 버전
graphittie 자세히 보기