1. 개념
: 소프트웨어란 컴퓨터 하드웨어를 이용하는 기술이나 인간에 의해 개발된 프로그램을 총
칭하여 소프트웨어라고 합니다. 하지만 우리는 단지 프로그램을 소프트웨어라고 이해하여도
크게 문제되지는 않습니다. 소프트웨어에는 시스템 소프트웨어와 응용 소프트웨어 두 가지
종류로 나눌 수 있습니다.
2. 시스템 소프트웨어
: 시스템 소프트웨어는 컴퓨터와 사용자간에 인터페이스 역할을 하는 소프트웨어라고 이해
하면 쉬울것입니다. 이는 사용자가 시스템을 직접적으로 제어 할 수 있게 만들어주며, 다른
응용 프로그램을 사용할 수 있게 만들어 줍니다. 이해가 어려우면 운영체제를 생각하면 좀
더 쉬울 것입니다. 우리는 운영체제를 통해 컴퓨터라는 기계를 좀 더 손쉽게 사용하게 되는
데 이러한 운영체제가 좁은 의미로 시스템 소프트웨어라고 할 수 있습니다.
(1) 시스템 소프트웨어의 구성
: 시스템 소프트웨어는 크게 제어 프로그램과 처리 프로그램으로 구성되어 있습니다.
* 제어 프로그램
* 처리 프로그램
3. 응용 소프트웨어
: 사용자가 특정 작업을 좀 더 편하게 수행 할 수 있도록 만든 소프트웨어입니다. 그러니까
시스템 소프트웨어를 제외한 나머지가 여기에 속할 수 있는데 컴퓨터로 작업을 하는데 좀
더 편리하게 할 수 있도록 도와주는 프로그램입니다. 여기에서는 각각의 분야에 어떠한 프
로그램이 있는지 정도만 알면 크게 문제 될 것은 없다고 봅니다.
(1) 워드프로세서
- 문서를 작성하는데 사용하는 프로그램
- 한글, MS-WORD, 훈민정음 등이 있다.
(2) 데이터베이스
- 대량의 데이터를 효과적으로 처리, 보관, 분류, 검색하는 소프트웨어
- 디베이스, 엑세스, 폭스프로, 크리퍼 등이 있다.
(3) 스프레드시트
- 수식이나 수치 계산을 자동으로 해주는 소프트웨어
- 엑셀, 로터스, 훈민시트, 쿼트로 등이 있다.
(4) 프리젠테이션
- 발표회나 각종 회의에서 사용되는 안내, 설명 등을 슬라이드식으로 보여주는 소프트웨어
- 파워포인트, 프리랜스 등이 있다.
(5) 그래픽 관련 프로그램
- 그래픽을 다루는 소프트웨어로 일러스트, 포토샾, 페인트브러쉬등이 있다.
(6) 통계처리 프로그램
- 통계분석을 전문적으로 하는 프로그램
- SPSS, SAS 등이 있다.
(7) 멀티미디어 저작도구
- 멀티미디어 파일이나 타이틀을 만들기 위한 소프트웨어이다.
- 디렉터, 칵테일, 오쏘웨어, 툴북, 플래쉬등이 있다.
(8) 통신, 인터넷 관련 프로그램
- 컴퓨터를 마치 다른 컴퓨터에 연결되어 있는 터미널처럼 사용할 수 있게 개발된 통신 에
뮬레이터의 새롬 데이터맨 프로와 익스플로어, 네스케이프등과 같이 웹브라우저가 있다.
2절 프로그래밍언어
1. about 프로그래밍 언어
우리는 자신의 생각을 표현하고 상대방의 생각을 이해하기 위해 언어라는 것을 사용합니다.
이것이 언어의 역할인데 프로그래밍 언어의 역할은 이와 비슷합니다. 다만 프로그래머의 생
각을 컴퓨터라는 곳에 표현하기 위해 쓴다는 점이 약간 다를 뿐입니다. 프로그램이란 컴퓨
터가 인식하는 명령어들이 논리적이고 체계적으로 나열된 집합과도 같은 것입니다. 이러한
프로그램을 작성해서 우리는 하드웨어를 제어하고, 소프트웨어를 만들 수 있습니다. 그리고
프로그램을 작성하기 위해서 우리는 프로그래밍 언어를 사용하는 것입니다. 결국 우리가 언
어를 배우면 소프트웨어를 만들 수 있다는 의미입니다.
‘나는 소년입니다.”, “I’m a boy.”
위의 문장은 “나는 어린 남자아이 입니다.” 라는 의미를 가지고 있지만 표현 방법은 틀립
니다. 우리가 쓰는 언어에도 한국어, 영어, 독일어, 불어 등 다양한 언어의 종류가 있고 이들
이 내포한 의미는 같지만 표현 방법이 다 틀리듯이 프로그래밍 언어에서도 하려고 하는 일
은 같지만 각각의 프로그래밍 언어에 따라 표현하는 방법이 틀리다는 것을 반드시 알아야
합니다.(같은 1+1의 결과 값을 얻으려 해도 C언어와 JAVA의 표현이 틀리듯이요.) 결국 프
로그래밍 언어에는 많은 종류가 있다고 보면 됩니다.
2. 프로그래밍 언어의 종류
프로그래밍 언어에는 크게 저급언어와 고급언어로 나눌 수 있습니다. 지금 우리가 알고 쓰
고 있는 언어(C, JAVA, BASIC..) 고급언어 입니다.
먼저 저급언어에 대해서 설명하자면 사람보다는 컴퓨터가 이해할 수 있는 2진수의 가장 기
본적인 언어로 번역 과정이 필요가 없기 때문에 속도가 빠르다는 장점을 가지고 있지만 하
드웨어의 전문적인 지식이 없으면 정말 어렵다는 단점을 가지고 있습니다. 저급언어를 좀
더 자세히 나누자면 기계어와 어셈블리어로 나눌 수 있는데 기계어는 정말로 0과 1만 사용
하여 프로그래밍 하는 반면에 어셈블리어는 기계어를 인간이 좀 더 쉽게 이해할 수 있도록
기호나 부호 형태로 고쳐서 사용하는 언어입니다.
하지만 어렵기는 마찬가지입니다.
이렇게 저급언어는 사용하기에 아주 어려운 언어입니다. 그래서 만들어진 것이 고급언어 입
니다. 고급언어는 인간이 알 수 있는 문자로 표현되어 이해하기 쉬운 언어이지만 번역과정
을 거쳐야 하기 때문에 저급언어에 비해 속도가 느리다는 단점을 가지고 있습니다. 하지만
하드웨어의 눈부신 발전으로 극복이 가능하지만요..
고급언어의 종류는 여러 가지가 있습니다. 사실 너무 많아서 저도 모를 때가 있습니다. C,
JAVA, COBOL, FORTRAN, BASIC 등등 요즘 우리가 들어보는 프로그래밍 언어라면 다
고급언어에 속한다고 하더라고 무리가 없습니다.
지금까지 컴활 2·3급에서는 고급언어보다는 저급언어에 보다 많은 문제가 출제되었습니다.
그래서 거기에 비중을 두고 공부하시면 좀 더 유리하실 겁니다. 그리고 JAVA의 많은 발전
으로 JAVA에 관한 문제가 많이 출제되고 있습니다. 시험에서도 문제집에서도.. 심지어
JAVA와 JAVASCRIPT의 비교 문제도 가끔 볼 수 있었습니다. 그래서 JAVA의 특징에 대
해 뒤에서 다시 한번 정리하도록 하겠습니다.
3. 언어번역 프로그램
저급언어에서 어셈블리어와 고급언어는 컴퓨터가 바로 이해하지 못합니다. 그래서 중간에
기계어로 바꿔줄 수 있는 번역기가 필요합니다. 마치 영어를 못 읽는 사람들을 위해 번역사
가 필요하듯이 프로그래밍 언어에서도 마찬가지 입니다. 프로그래밍의 언어는 시험에서는
‘인터프리터’와 ‘컴파일러’가 많이 출제되었으니 공부하실 때 좀 더 비중을 두시면 유
리하실 겁니다.
(1) 어셈블러
: 어셈블러는 어셈블리어로 작성된 프로그램을 기계어로 번역하는 프로그램입니다. 어셈블
리어도 기호나 부호를 사용하기에 컴퓨터가 바로 이해하지 못하기 때문에 번역작업이 필요
합니다.
(2) 인터프리터
: 고급언어로 작성된 원시 프로그램을 한번에 한 줄씩 읽고 번역하는 프로그램입니다. 따라
서 목적프로그램 생성이 없이 한 줄씩 실행하기에 언어자체의 코드가 짧고 사용하기에 편하
지만 속도가 느리다는 단점을 가지고 있습니다. 가장 대표적인 언어로는 BASIC, LISP,
SNBOL등이 있습니다.
(3) 컴파일러
: 컴파일러는 대부분의 고급언어가 채택한 번역방식 입니다. 이는 고급 언어로 작성된 원시
프로그램을 한꺼번에 번역하는 방식으로 당연히 목적프로그램을 생성합니다. 컴파일러는 유
지 및 보수가 어렵고 기억장소를 많이 차지하지만 실행 속도가 빠르다는 장점을 가지고 있
습니다.
(4) 프리프로세서
: 이는 전처리기라고도 하는데 고급 언어로 작성된 프로그램을 이에 대응되는 다른 고급
언어로 번역하는 프로그램으로 시험문제에서 본적이 극히 드물다고 할 수 있습니다.
4. 언어의 번역과정
언어번역 과정은 다음과 같습니다.
(1) 원시 프로그램 : 인간이 작성된 고급 언어로 되어 있는 프로그램입니다.
(2) 컴파일러 : 원시 프로그램을 기계어로 번역하여 목적 프로그램을 생성하는 과정입니다.
(3) 목적프로그램 : 기계가 이해할 수 있는 기계어(0, 1)로 되어있는 프로그램입니다.
(4) 연계 편집 : 목적 프로그램을 실행 가능한 형태로 로드 모듈로 만드는 역할을 하며 링
커라고도 합니다.
(5) 로드 모듈 : 실행 가능한 상태의 프로그램입니다.
(6) 로더 : 로드 모듈을 주기억장치로 적재 시켜 실행하게 합니다.
(7) 실행.
** 언어 번역 과정은 이러한 과정을 겪습니다. 이중 제가 문제에서 많이 접했던 부분은 컴
파일러, 연계편집, 로더였습니다. 가장 전형적인 문제를 많이 봤는데 의미를 문제에서 물어
보고 보기를 출제하는 방식이었습니다.
5. 프로그래밍 기법
프로그래밍 기법은 요즘 가장 잘 나가고 있는 객체지향 프로그래밍 정도만 이해한다면 크게
문제될 것은 없을 거라고 봅니다. 특히 자바에 관련된 문제가 심심치않게 출제됩니다. 그러
니 객체지향의 특징과 자바의 특징정도는 알아두었으면 합니다.
(1) 하향식 프로그래밍
: 프로그램 구조가 전체 윤곽에 의해 세세한 부분으로 진행시켜 나가는 방식입니다. 결국
전체에 의해 점진적으로 진행되는 것으로 수정이 어렵다는 단점을 가지고 있습니다.
(2) 구조적 프로그래밍
: 각각의 작업을 세분화된 블록으로 만들어 전체 프로그램을 구성하는 방식으로 전체의 구
조가 쉽고, 빠른 처리 결과를 얻을 수 있어 객체지향이라는 개념이 나오기 이전에 많이 사
용하던 방식입니다.
(3) 객체지향 프로그래밍
: 객체라는 모듈을 단위로 프로그램을 작성하는 기법으로 문제해결 방법을 사람들이 일상
생활에서 사용하던 방법들을 프로그래밍 기법에 적용시켰다고 볼 수 있습니다.(하지만 이건
아직 저도 이해가 잘 가지 않습니다.^^)
이러한 객체지향에서는 반드시 객체, 클래스, 상속을 가질 수 있으며 C++, SmallTalk,
JAVA등이 있습니다.
(4) 비주얼 프로그래밍
:기존의 프로그래밍 기법에 아이콘이나 메뉴를 이용한 대화식 그래픽 방식이 결합된 프로
그램 기법입니다. 물론 프로그램 제작이 용이 하지만 당연히 필요 없는 소스가 많이 붙기에
메모리를 많이 차지하겠지요.. 종류로는 Visual Basic, Visual C++, Power Builder등이 있습
니다.
# 자바의 특징
·객체지향 프로그램이다.
·객체, 클래스, 상속을 가진다.
·네트워크 환경에서 분산 작업이 가능하다.
·바이트 코드를 생성한다.
·플랫폼에 관계없이 독립적으로 동작한다.