소프트웨어(Software, SW)란 무엇이고, 프로그램의 종류는?

소프트웨어 (software) – 컴퓨터 프로그램 및 그와 관련된 문서들을 통틀어 이르는 말. 컴퓨터를 관리하는 시스템 프로그램과, 문제 해결에 이용되는 다양한 형태의 응용 프로그램으로 나눈다. – 네이버 사전

[전산] 하드웨어(hardware)와 함께 컴퓨터(computer)를 구성하는 중요한 요소. 운영 체제와 공용 프로그램 및 응용 프로그램으로 구성된다. – 다음 사전

뭐 굳이 SW가 무엇이냐까지 이야기하기는 그렇지만, 하드웨어부터 짚고 넘어가는 김에 짧게 이야기하고 넘어가 보겠습니다.

소프트웨어는 일반적으로 프로그램, 앱, 어플 등 다양한 이름으로 불리는데, 

사람의 몸이 하드웨어라면, 우리의 영혼(?), 생각하는 사고 등을 소프트웨어라고 생각하시면 될 듯 합니다.

신체가 멀쩡해도 뇌의 기능이 정지되면 뇌사판정을 받아서 식물인간으로 사망한것과 마찬가지로 치는 것처럼

컴퓨터 또한 소프트웨어가 없다면, 하드웨어는 고철 덩어리에 불과합니다.

사람의 신체의 신비나 완벽함(미스터 코리아)같은것도 대단하지만, 사람의 위대함은 그의 생각, 행동으로 평가를 받는 것 처럼,

제대로 작동하고, 좋은 컴퓨터가 되기 위해서는 좋은 SW가 필요합니다.

전세계 IT 시장을 주름잡는 기업인 Microsoft, Google, Apple 같은 회사를 보시면 하드웨어도 생산을 하지만, 대부분의 수익을 SW에서 올리고 있다는것을 익히 아실껍니다.

다만, SW는 HW에 비해서 발전속도가 좀 더딘 편입니다. HW는 항상 엄청난 발전을 해왔지만, SW는 따라가기가 벅차보이는데, 십년후면 인공지능(AI)이 대세가 될꺼라고 했지만, 뭐 아직 전혀 실감을 못하고 있고, 앞으로도 쉽지는 않은데, 개발자들이 직접 코딩을 하면서 개발한다는게 쉬운 일이 아닙니다.

#include int
main(int argc, char * argv[])
{
printf(“Hello World!\n”);
return 0;
}
개발을 하는 사람들이 맨처음 C를 배우게 되면 위와 같은 방식으로 화면에 Hello World! 라는 문자를 출력하는 프로그램부터 배우기 시작하는데, 위와 같은 소스 파일을 기계가 이해할수 있게 바꾸어서(컴파일)을 해서 만드는 EXE 파일을 보통 일반적으로 프로그램이라고 부릅니다.(물론 이외에 다양한 방식이 있습니다)

20140107-111114.png

대표적으로 소프트웨어하면 생각나는것이 바로 OS(오퍼레이팅 시스템, operating system)입니다.

윈도우, ios, 안드로이드, 리눅스, 유닉스, ibm db2 등 수많은 os가 있는데, 가장 낮은 레벨에서 하드웨어를 관리하고, 사용자의 명령을 수행하며, 다른 프로그램들이 실행 되게 도와줍니다.

펌웨어 라는 것도 있는데, 롬(rom)에 저장되어서 하드웨어를 관리하는 프로그램으로 어떻게보면 OS와 같다고 보시면 되는데, 디지털카메라, 캠코더, 안드로이드 OS같은 경우 펌웨어 업데이트를 통해서 OS를 업데이트 하기도 합니다.

 

20140318-083134.png

그리고 일반적인 유틸리티, 게임, 업무용 프로그램 등은 일반적으로 OS에 종속되어서 돌아가는 소프트웨어입니다.

뭐 이런 프로그램들은 C, C++, C#, java, 비주얼 베이직, 파워빌더 등으로 수많은 프로그래밍 언어로 개발자에 의해서 개발이 됩니다.

20140107-111338.png

 

요즘 누구나 가지고 다니면서 사용하는 스마트폰 또한 PC와 마찬가지로 각각의 ios, android, windows mobile, 심비안, 블랙베리 등 OS에 종속되어서 돌아갑니다.

20140107-113241.png

 

위에서 설명한 SW들은 OS에 종속이 되어서 돌아가는 방식으로, 아이폰에서 돌아가는 앱(app)을 PC나 안드로이드에서 돌릴수가 없고, 개발자가 해당 OS용으로 따로 개발을 해야 합니다.(카톡도 아이폰, 안드로이드용, PC용 버전이 별도로 있지요)

이런것에 반기(?)를 들고 나온것이 java 라는 프로그램 개발 언어로, 개발자가 java로 개발을 하면 어떤 기기에서도 돌아가게 된다는 취지로 sun이라는 회사에서 제임스 고슬링(James Gosling)이라는 사람이 만들어서 현재도 괘 많이 사용하고 있습니다.

다만, PC에서 속도가 느리고, 스마트폰의 경우 안드로이드는 자바를 지원하지만, ios는 지원을 하지 않고 있습니다.

 

url.jpg

하이브리드앱,네이티브앱,모바일웹의 스마트폰 개발 방법의 차이점과 장단점 비교

최근에는 하이브리드 앱(Hybrid app)이라는 것이 나와서 html5, javascript, css3 등을 이용해서 브라우저를 기반으로 들어가는 앱들이 속속 나오고 있는데, 뭐 개발하는 분이 아니시라면 이렇게도 프로그램이 돌아가는 구나 정도만 알아두시면 좋을듯 합니다.

데이터베이스(DataBase, DB)란 무엇이고, 어디에 사용이 될까?

우리가 은행에서 돈을 뽑을때 ATM도 프로그램이 설치되어 있고, 그 자료들이 들어가 있는 데이터베이스도 프로그램이고, 앞서 설명한 hello world 도 프로그램인데, 소프트웨어는 사람이 만든 명령어 코드를 기계나 OS가 알아 들을 수 있는 언어로 변환한 프로그램이라고 보시면 됩니다.

재미있는것은 우리가 컴퓨터에게 내리는 수많은 명령(키보드, 마우스 입력 등)들이 기계어로 변환을 하면, 더하기, 빼기, 논리연산 같은 +, -, and, or, not, if, goto, call, return 등의 단순한 명령어와 0과 1로 이루어진 비트로 변환되어서 실행되고, 그 결과 값을 계산해서 다시금 모니터로 출력을 해준다고 보시면 되는데, 단순한 사칙연산이 아닌, 게임에서 화면 이동하고, 그래픽으로 출력하는 과정들은 상당히 복잡한 과정을 거치게 되고, 그래서 고사양의 PC나 smartphone이 필요하겠지요~

댓글 남기기