본 게시물은 대학교 학부 수업 및 참고 교재인 '이제 시작이야! 컴퓨팅 사고력으로 인공지능까지 파이썬 - 전수진, 박주연, 김수환 공저 / 연두에디션' 을 토대로 필자가 이해한 내용을 정리했습니다.
You did not choose me, but I chose you and appointed you so that you might go and bear fruit—fruit that will last—and so that whatever you ask in my name the Father will give you.
너희가 나를 택한 것이 아니요 내가 너희를 택하여 세웠나니 이는 너희로 가서 열매를 맺게 하고 또 너희 열매가 항상 있게 하여 내 이름으로 아버지께 무엇을 구하든지 다 받게 하려 함이라
John 15:16, 요한복음 15장 16절
유튜브를 보다보면 간혹 최근 내 주된 관심사와 살짝 벗어난 뜬금없는 영상이 올라올 때가 있다. 심지어 그 영상이 대중의 입맛에 맞으면 저조했던 조회수가 하늘 높이 치솟기도 한다. 이래서 컨텐츠의 역주행이 가능했던걸까?
아니나 다를까 댓글을 보면 알고리즘 신의 선택을 받았다고 하더라.... 신은 존재했던 것인가..! 나도 태일이처럼 언제가 선택받은 아이가 될 수 있을까!?
그렇다면 우리의 그 컨텐츠의 은혜를 하사하시는 그 알고리즘은 무엇이길래 우리에게 늘 정우성처럼 새롭고 짜릿한 컨텐츠를 제공할 수 있을까??
알고리즘?
문제를 해결하기 위해 정해진 일련의 절차나 방법을 표현한 것
우리가 쓰는 자연어를 컴퓨터가 알아먹기 위해서는 번역을 해야할 것이다. 자연어로 된 명령어를 코딩, 프로그래밍을 통해 번역하여 코드로 만든 뒤 컴퓨터에게 지시를 내릴 수 있다.
알고리즘(Algorithm)의 다양성
알고리즘은 다양할 수 있으나 효율적이어야한다. 전에도 말했듯.. 컴퓨터는 대문자 T이다.
알고리즘(Algorithm)의 효율성
- 실행 및 처리 시간을 단축시킬 수 있다.
- 공간을 덜 차지한다.
- 디버깅 시간을 단축시켜 줄 수 있다.
효율성을 판단하는 두 가지 개념이 있다.
- 시간 복잡도 - 알고리즘이 어떤 문제를 해결하는데 걸리는 시간. 시간이 최대치를 나타내는 빅-오(Big-O)표기법이 있다.
- 공간 복잡도 - 문제해결에 차지하는 주기억장치(RAM)의 공간. 최근 RAM의 사용량이 증가하여 상대적으로 중요성이 떨어지는 개념이기는 하지만 스마트폰 같은 소형기기에서는 여전히 중요하다.
알고리즘의 조건
1. 입력과 출력이 있어야 한다.
외부로부터 데이터를 입력받았으면 하나 이상의 출력이 존재해야 한다. 일거리를 받아서 일을 하고 일을 했으면 결과가 있어야 하지 않겠는가?
바둑돌을 놓을 때 화살표 코드는 입력이 되며 화살표 코드 순서로 명령을 처리하여 최종적으로 바둑돌이 놓인 상태로 출력된다.
2. 알고리즘의 명백성
각각의 명령어들은 어떤 순서로 어떤 연산을 해야할지 모호하지 않고 정확히 기술되어야 한다.
바둑알을 놓는 위치를 정하는 화살표 코드는 정확한 방향과 놓는 자리를 제시해야 한다.
3. 알고리즘의 유효성
모든 명령어나 연산은 실행 가능한 동작이나 연산이어야 한다.
바둑알을 놓는 화살표 코드가 바둑알을 놓는 바둑판 밖으로 나가도록 명령한다면 그 알고리즘은 수행 할 수 없을 것이다.
4. 알고리즘의 유한성
알고리즘은 끝이 없이 계속 돌지 않고 반드시 종료되어야 한다.
바둑돌을 모두 두기까지의 한정된 명령의 단계를 거쳐 최종 알고리즘을 완성시켜야 한다.
1. 순서도
- 플로우차트(flowchart), 또는 흐름도
- 알고리즘에서 작업 순서를 그림으로 표현하는 방법
- 단순한 기하학적 기호 사용
2. 의사 코드(pseudo code)
- 자연어보다는 더 체계적이고 프로그래밍 언어보다는 덜 엄격한 언어
- 주로 알고리즘의 표현에 사용되는 코드
- 흔히 알고리즘을 기술하는데 선호되는 표기법
- "유사 코드"
의사 코드(pseudo code)의 장점
- 프로그램 언어보다 이해하기 쉽다.
- 알고리즘의 핵심적인 부분을 언어-독립적으로 기술할 수 있다.
순서도의 단점
- 한번 작성된 순서도는 변경하기 어렵다.
- 알고리즘이 복잡해지면 기술하기 힘들어진다.
▪ 알고리즘에 오류가 없어야 하는 이유
1.인공지능 컴퓨터가 아니라면 일반적인 컴퓨터는 주어진 알고리즘 밖에 동작시킬 수 없다.
2.좋지 못한 알고리즘을 컴퓨터에게 명령하면 나쁜 결과를 얻을 수 밖에 없다.
3.개발자가 논리적이지 않은 알고리즘을 만들어 프로그램을 실행하면 컴퓨터 또한 비논리적으로
동작한다.
4.알고리즘에 오류가 없어야 프로그램도 오류없이 동작한다.
나에게 선택되어 오는 그 유튜브 영상도 수많은 절차와 방법에 거쳐서 나에게 오는 것이었다. 어쩌면 사람이 만든 프로그램이지만 사람보다 더 나을 때가 있어보인다. 적어도 오류없는 절차와 방법이 구현된다면 어떠한 상황에서도 그 일을 해낸다. 차별하지 않는다. 정말 정직하고 공정한 친구다. 무의식적으로 색안경을 끼고 사는 나에게 이런 우직함과 소신이 필요한 시점인 것 같다.
'COMPUTER SCIENCE > Computational thinking' 카테고리의 다른 글
우리도 선택받은 아이들이 될 수 있을까? (0) | 2024.06.30 |
---|---|
컴퓨터의 성장 스토리.. 들어보실래요? (5) | 2024.06.17 |
프로그래밍, 너 T발 C야? (0) | 2024.06.16 |
뻔하다 뻔해!! 다 보인다고 (1) | 2024.06.16 |
문제가 생기면 해결을 해야지 (0) | 2024.03.24 |
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!