Unit 1. 소프트웨어 교육과 파이썬

스마트폰이 대중화되면서 일상에 많은 변화가 생겼습니다. SNS를 통해 손쉽게 주변 사람들의 소식을 주고 받고, 몇 번의 터치만으로 은행 업무도 볼 수 있게 되었습니다. 그리고 이제는 스마트폰의 지도와 길 찾기 기능만 있으면 어디든지 정확하게 찾아갈 수 있습니다. 모두 소프트웨어의 발전 덕분입니다.

자동차 또한 단순한 기계를 넘어서서 컴퓨터로 진화하고 있습니다. 이미 자동차 엔진은 ECU라는 컴퓨터가 제어하고 있습니다. 테슬라는 단순한 전기차가 아니라 달리는 컴퓨터, 달리는 스마트폰이라 불리며 자동차에 대한 패러다임을 바꾸었습니다.

그림 1-1 테슬라 모델S
그림 1-1 테슬라 모델S

영화 산업은 컴퓨터 그래픽이 필수가 되었습니다. 3D 영화로 큰 수익을 올린 아바타는 대부분의 장면이 컴퓨터 그래픽으로 제작되었습니다. 또한, 애니메이션 겨울 왕국은 컴퓨터와 3D 모델링 소프트웨어가 없으면 만들 수 없는 작품입니다.

금융 업계도 급속히 소프트웨어 산업으로 바뀌고 있습니다. 오프라인 지점 없이 온라인으로만 영업하는 인터넷 은행은 나오자 마자 큰 돌풍을 일으켰습니다. 개인 대출 시장도 인터넷을 통해 대출을 연결해주는 P2P 대출로 발전했습니다. 특히 국가 중앙은행의 통제를 받지 않는 비트 코인 등 가상화폐까지 등장했습니다. 이들 모두 금융과 소프트웨어가 결합한 핀테크(fintech)입니다.

유통 업계는 이미 소프트웨어 업계로 바뀐지 오래입니다. 미국의 아마존은 인터넷 쇼핑몰을 넘어서서 세계 최대의 클라우드 서비스 업체로 발전했습니다. 물론 국내도 유통 분야에서 인터넷 쇼핑몰이 보편화되었고, 빅데이터를 활용하여 소비자에게 최적화된 상품을 추천해주는 등 소프트웨어를 적극 활용하고 있습니다. 그래서 요즘은 이런 회사들을 유통 업체가 아닌 소프트웨어 업체로 분류하고 있습니다.

생산 분야는 3D 프린터가 도입되어 다품종 소량 생산 및 자동화가 가능해 졌고, 의료 업계 중에서도 이미 치과 보철 분야는 3D 프린터를 사용하고 있습니다. 물론 여기서도 3D 모델링 소프트웨어는 필수입니다.

의료 분야는 빅데이터와 인공 지능을 통해 최적화된 치료법을 제공하고 있습니다. 또한, 일상 생활에서도 스마트 워치로 심박수, 혈당 수치 측정, 칼로리 계산까지 가능합니다. 이러한 의료 정보는 모두 소프트웨어로 처리되며 스마트 헬스 케어라는 분야로 자리를 잡았습니다.

특히 인공지능은 놀라울 정도로 발전했습니다. 지금까지 인공지능은 사람을 이길 수 없을 것이라 여겨졌던 바둑도 구글 알파고가 나오면서 사람을 압도했습니다. 그리고 일상 생활에서는 스마트폰에 내장된 시리와 빅스비 같은 서비스가 활용되고 있습니다.

그리고 빅데이터는 데이터를 기반으로 예측을 하고 과학적으로 의사를 결정하는 분야인데, 대표적인 사례가 서울시 심야버스 노선 최적화입니다. 서울시와 KT는 사람들의 휴대전화 사용 위치, 신용 카드와 교통카드 결제 데이터, 택시 승하차 정보, 휴대전화 청구지 주소 등을 분석하여 실제 유동인구를 파악한 뒤 노선을 최적화하여 심야버스 이용률을 크게 늘였습니다.

그림 1-2 서울시 심야버스 노선 최적화
그림 ‎1 2 서울시 심야버스 노선 최적화(국토교통부 NS센터)

이처럼 일상 생활의 모든 분야에 소프트웨어가 적극적으로 활용되면서 예전보다 삶의 질이 눈에 띄게 향상되었습니다. 기업 중에서도 소프트웨어를 적절히 활용한 기업들은 크게 성장했지만 그렇지 않은 기업들은 고전을 면치 못하고 있습니다. 이미 세계 기업 순위는 애플, 구글, 마이크로소프트, IBM 등 소프트웨어 회사가 상위권을 차지하고 있으며 페이스북, 텐센트, 알리바바 등이 새롭게 등장했습니다. 특히 AirBnB, Uber 등 작은 아이디에서 거대한 소프트웨어 기업으로 성장하는 사례도 흔히 볼 수 있습니다. 하지만 기존 GE, 월마트, 토요타 등은 뒤로 밀려난지 오래입니다.

따라서 앞으로는 어떤 분야든 소프트웨어 기술은 필수입니다. 소프트웨어 전문가는 늘 부족한 상태이며 이에 대비하여 이미 초중고 정규 교과목으로 소프트웨어가 채택되었습니다.


1.1 문제 해결을 위한 과학적 사고

그럼 도대체 소프트웨어는 무엇일까요? 지금까지 설명했던 스마트폰, 전기자동차, 영화, 핀테크, 인터넷 쇼핑몰, 인공지능 등의 소프트웨어는 지금까지 불편했던 문제들을 해결하기 위해 개발되었습니다.

예를 들어 일반 휴대전화에서는 인터넷이 안 되니 데이터 통신 기능과 웹 브라우저가 내장된 스마트폰이 개발되었고, 인터넷으로 물건을 팔기 위해 인터넷 쇼핑몰이 만들어졌습니다. 그리고 사람이 운전하지 않고 스스로 달리는 자동차를 만들기 위해 자율 주행 시스템이 개발되었습니다.

그럼 이렇게 어렵고 복잡한 문제를 공학자들은 어떻게 해결할까요? 자율 주행 시스템을 예로 들면 사람의 눈과 귀 역할을 하는 카메라와 센서를 장착해서 주변 상황을 인식하게 하고, 팔과 다리 역할을 하는 각종 제어 장치를 만들어서 사람 없이 움직이게 합니다. 그다음으로 주변 상황 정보, GPS 정보, 지도 정보 등을 이용해서 자동으로 운전하는 소프트웨어를 만듭니다. 즉, 복잡한 문제를 작은 문제로 나누어서 하나씩 접근합니다. 이렇게 작은 문제를 하나씩 해결하다 보면 결국 복잡한 문제를 해결하게 됩니다.

그림 1-3 복잡한 문제를 작은 문제로 분해
그림 ‎1 3 복잡한 문제를 작은 문제로 분해