SW/네트워크

IoT, 프로그래밍과의 관계에 대해 알아볼까요?

얇은생각 2018. 12. 2. 12:00
반응형

프로그래밍

이전에도 언급했던 것처럼, 센서들과 액추에이터들은 사물인터넷에서 많이 사용된다. 센서들은 물리적인 특성들을 측정하고 네트워크를 통해 이 정보를 전달한다. 센서들은 어떤 정보를 수집해야하는지 또는 어떤 컨트롤러와 통신해야하는지를 어떻게 알까?


액추에이터들은 전달받은 신호를 기반으로 특정 행동을 수행한다. 액추에이터들은 어떤 행동을 수행해야하는지 또는 특정 행동에 요구되는 신호가 어떤 것인지를 어떻게 알까?


센서들은 어떤 데이터를 수집하고 그 데이터를 어디에 보내야하는지를 지시받아야한다. 컨트롤러는 데이터를 받고, 이를 처리한 뒤 다른 장치로 중계해야하는지를 결정하기 위해 명령어들의 집합과 함께 프로그래밍 되어야한다. 예를 들면, 자동차에 설치된 컴퓨터와 같은 사물인터넷 단말장치는 도로 상황에 따라 반응하기 위해 프로그래밍 되어야한다. 사물인터넷에서 모든 장치들은 프로그래밍 되어야하므로, 프로그래밍 기술은 사물인터넷과 만물인터넷의 성공에 매우 중요하다.

 


기본적인 프로그래밍 정의

프로그램은 무엇인가?

컴퓨터 프로그램은 특정한 순서로 실행되는 컴퓨터에게 주어진 명령어들의 집합이다. 컴퓨터들은 사람들의 언어로 말을 하지 않기 때문에 컴퓨터 프로그래밍 언어가 만들어졌다. 프로그래밍 언어들은 사람들이 컴퓨터가 이해할 수 있는 방법으로 명령어들을 작성할 수 있도록 한다. 다양한 컴퓨터 언어가 존재하지만, 모든 컴퓨터 언어들은 논리적인 구조를 기반으로 한다.


프로그래밍 언어에 가장 일반적인 논리 구조


그림은 프로그래밍 언어에서 찾아볼 수 있는 가장 일반적인 논리적인 구조들이다


· IF 조건(condition) THEN 명령어(instructions) (if/Then) - 가장 일반적인 프로그래밍 구조들 중에 하나이다. 조건부 코드 실행을 위해 사용된다. THEN 키워드(keyword) 뒤에 따라오는 명령어들의 집합은 오직 주어진 조건이 참(true)일 때만 실행된다. 만약 조건이 거짓(false)이면 명령어들은 결코 실행되지 않는다. 예를 들어, IF 패스워드 = 12345, THEN 출력 “패스워드가 올바름이 코드에서는 오직 패스워드에 12345가 입력되었을 때만패스워드가 올바름”이라는 메시지를 보여준다.


· FOR 표현식(expression) DO 명령어 (For/Do) - 이 논리 구조는 제어 루프(loop)를 만들기 위해 사용된다. 명령어들의 집합은 표현식에 정의된 수만큼 실행된다. 표현식이 더 이상 만족되지 않을 때, 루프가 끝나고 컴퓨터는 다음 명령어로 이동한다. 예를 들면, FOR 카운트 (count) <= 10 DO 출력아직 10이 아님!” 이 프로그램은 카운트라고 이름을 지은 변수(variable)의 값을 검사할 것이다. 카운트 값이 10보다 작거나 같다면, 계속 화면에아직 10이 아님!”이라는 메시지를 출력할 것이다. 카운트 값이 10보다 커지자마자, 이 논리구조는 끝나고 컴퓨터는 코드의 다음 라인(line)으로 이동한다


· WHILE 조건 DO 명령어 (While/Do) - 이 논리구조 또한 제어 루프를 형성하기 위해 사용되지만 다른 방법으로 사용된다. WHILE은 조건이 참이면 계속 명령어를 실행한다. 조건이 더 이상 참이 아닐 때, 이 논리구조는 끝나고 컴퓨터는 코드의 다음 라인으로 이동한다. 예를 들어, WHILE 온도 센서 값 > 80 DO 화면에 출력온도가 너무 높음!” 이 코드는 온도 센서 값이 80보다 작거나 같을 때까지 계속 메시지를 출력할 것이다.


이와 같은 논리구조는 컴퓨터 프로그램의 중요 구성요소들이다.



프로그램의 종류

다양한 운영체제


다양한 프로그램들은 각기 다른 작업들을 수행한다. 예를 들어, 온도를 측정하고 보고하는 프로그램이 있고, 신호등을 관리하는 프로그램, 사용자가 컴퓨터와 장치들과 상호작용 할 수 있도록 해주는 프로그램이 있다. 때때로 프로그램 범주(category)는 프로그램 이름으로 되는 것이 일반적이다. 몇 가지 프로그램 범주는 다음과 같다.


· 펌웨어(Firmware) - 펌웨어는 장치들이 부팅될 때 수행하는 명령어들을 포함한다. 단지 장치에 존재하는 소프트웨어(software)일 수도 있거나 더 향상된 운영체제를 불러오기 위한 명령어들을 포함 할 수도 있다. 펌웨어를 사용하는 장치들의 예는 시계, 프린터, TV 세트, 센서, 휴대폰, 라우터, 스위치들이다. 보통 펌웨어는 상당이 적은 기능들만 지원하므로 프로그램 의 크기도 훨씬 작다.


· 운영체제(Operating System) - 사람이 컴퓨터와 상호작용 할 수 있도록 만들어진 프로그램이다. 그림에 보이는 윈도우즈(Windows), (Mac) OS, 리눅스(Linux), 애플(Apple) iOS, 안드로이드(Android), 시스코(Cisco) IOS는 운영체제의 예이다.


· 어플리케이션(Application) - 특정 작업과 서비스를 수행하기 위해 설계되고 만들어진 프로그램이다. 워드 프로세서(word processor), 이미지 편집 툴(image editor tool), 스프레드 시트 편집기(spreadsheet editor), 협업 도구(collaboration tool), 데이터 분석과 모니터링 툴(data analysis and monitoring tool)은 모두 어플리케이션들이다.



프로그래밍 언어

프로그래밍 언어들


C++와 자바(Java)와 같은 컴퓨터 프로그램을 만들기 위해 사용되는 다양한 프로그래밍 언어들이 있다. 예를 들어, C 언어는 가장 대중적인 컴퓨터 프로그래밍 언어이다. 운영체제의 전체는 C 언어로 만들어졌다. 초기에 C언어는 1969~1973년간 개발되었다. 그러나 객체지향 (object-oriented) C++로 발전되었고 이후 C#이 나왔다.


자바는 또 다른 대중적인 객체지향 프로그래밍 언어이다. 1995년에 썬 마이크로시스템즈에 의해 발표되었고, 가능한 적은 구현 의존성을 위해 다양한 플랫폼 (platform)에서 구현될 수 있도록 설계의 초점을 두었다. WORA(write once, run anywhere), 이 약어는 종종 자바의 특성으로 여겨진다. 자바가 다양한 플랫폼에서 구현되기 때문에, 자바는 웹에서 널리 사용된다.

 


자바스크립트(JavaScript) 프로그래밍의 예

자바스크립트 코드의 일부를 분석하는 것은 컴퓨터 프로그램의 더 나은 이해를 제공한다.

커피 농장


자바스크립트는 주로 웹 어플리케이션에 사용되는 스크립트 언어이다. 시스코 커피(Cisco Coffee)라고 불리는 가상의 웹 어플리케이션으로 예를 들어보자. 이 어플리케이션은 그림에 보이는 커피 농장에 대한 모니터링 툴(monitoring tool) 또는 대시보드(dashboard)로써 설계되었다. 이 예에서는 커피농장 곳곳 많은 센서들이 커피 콩 작물 주변에 설치되었다. 이 센서들은 중앙 센터로 데이터를 보낸다. 중앙 센터에서는 시스코 커피 웹 어플리케이션을 통해 사람들이 농장을 모니터링 할 수 있도록 한다. 이 농장에는 온도, 햇빛, 토양 수분에 대한 세 종류의 센서가 설치되었다. 만약 온도가 25 ℃ (77 ℉) 밑으로 떨어질 경우, 중앙 센터의 시스코 웹 어플리케이션 화면에 경고가 표시된다. 커피 작물들이 너무 많이 햇빛에 노출되었을 경우에는, 또 다른 경고가 표시된다. 토양이 너무 말랐거나 젖었을 경우에는 이전과는 다른 경고가 표시된다.


커피 웹 어플리케이션의 자바스크립트 일부


그림은 시스코 커피 웹 어플리케이션의 조건에 따라 경고를 알리기 위한 자바스크립트 일부이다. 경고는 피드백 순환(feedback loop)의 기회를 제공한다. 예를 들어 토양 수분이 적다면, 물을 대는 시스템의 활성화와 여러 상황을 인식하고 적절한 결정을 할 수 있는 농부에게 알려줄 필요가 있을 것이다. 알림을 받은 농부는 적절한 조치를 취해야겠다고 결정했고, 기상예보에서 비가 내릴 것 이라고 했기 때문에 물을 대는 시스템을 활성화하지는 않을 것이다. 어떠한 방식으로 물을 끌어들였는지 상관없이, 이상적인 토양 수분 정도를 위해 센서는 토양 수분을 다시 측정하고 알려줌으로써 피드백 순환을 계속 할 것이다.

 


시스코 커피 자바스크립트 어플리케이션(Cisco Coffee JavaScript Application)

시스코 커피 자바스크립트 어플리케이션의 웹 인터페이스(web interface)51)


그림은 시스코 커피 자바스크립트 어플리케이션의 시뮬레이션(simulation) 버전을 보여준다. ‘실제 데이터버튼을 선택하면, “발견된 센서가 없음이라는 상태메시지를 보여줄 것이다. 이유는 어플리케이션과 연결된 실제 센서가 없기 때문이다. 하지만 이 어플리케이션은 가상의 센서에 대한 데이터를 만들어낸다. 어플리케이션의 전체 코드를 보는 것은 이 과정의 범위를 벗어나지만, 어느 정도 이해할 수 있는지 보기위해 스스로 소스 코드(source code) 파일을 열어서 분석하는 것은 자유이다.


그림의 아무 곳이나 오른쪽 클릭을 하여 브라우저(browser)에 따라소스 보기또는프레임 소스 보기를 선택하여 소스를 볼 수 있다. 코드의 ’Script’로 시작하는 위치로 스크롤을 내려라. 두 개의 슬래시(//)로 시작하는 라인(line)들은 주석(comment)이다. 주석들은 코드의 간략한 설명을 적을 때 사용한다

 


스크래치(Scratch) 학습

스크래치


스크래치는 매사추세츠 공과대학 미디어 연구실(MIT media Lab.) Lifelong Kindergarten Group에 의해 개발된 프로그래밍 언어이다. 이것은 사용자가 대화형으로 이야기, 게임, 애니 메이션을 만들도록 도움을 주는 온라인 커뮤니티가 존재한다.


스크래치에 관하여 더 자세히 알고 싶거나 사용해보려면 홈페이지를 참고하면 된다. 이 웹사이트에는 스크래치를 시작하는데 도움을 주는 많은 튜토리얼(tutorial) 비디오들이 있다. 스크래치는 장난감처럼 보일수도 있지만, 컴퓨터 프로그래밍을 하는데 요구되는 것들 중의 하나인 논리적으로 생각하는 기술을 증진시켜주는 뛰어난 툴(tool)이다.

반응형