04단원 컴퓨터 소프트웨어 1. 프로그래밍 언어 2. 시스템 소프트웨어 1/10
1. 프로그래밍 언어 1) 프로그래밍 언어 구분 각종 프로그래밍 언어에 대해 알아보는 시간을 갖도록 하겠습니다. 우리가 흔히 접하는 소프트웨어 들은 프로그래밍 언어로 만들어지는데, 프로그래밍 언어는 크게 2가지로 나눌 수 있습니다. 1 저급어 : 0과 1로 구성되어 있어, 컴퓨터가 직접 이해할 수 있는 기초적인 언어 2 고급어 : 사람이 실제로 프로그래밍을 할 때 사용하는 언어 2) 저급어(Low Level language) 1 기계어 기계어는 컴퓨터가 직접 이해할 수 있는 가장 기초적인 언어 0과 1의 2진수 형태를 가지며 컴퓨터 기종에 따라 각기 다른 기계어를 가지게 됩니다. CPU에 내장된 명령들을 이용하여 직접 작성하므로 프로그램 작성이 어렵고 복잡합니다. 특별한 번역의 과정을 거치지 않고 컴퓨터가 바로 이해할 수 있으므로 수행속도가 가장 빠릅니 다. 이런 코드를 만들기 위해서 엄청나게 고생을 합니다. 2 어셈블리어 기계어보다 좀 더 쉽게 고안된 저급어가 바로 어셈블리어입니다. 어셈블리어는 0과1로 이루어진 기계어에 1:1로 대응하는 기호로 이루어진 언어입니다. 기계어에 비해 보다 쉽게 작성할 수 있습니다. 어셈블리어 작성한 것을 컴퓨터가 이해할 수 있는 기계어로 번역하기 위해서는 어셈블러라는 번 역기가 필요합니다. 어셈블리어는 기종마다 다르고 고급언어에 비해 사용이 불편하지만 실행속도가 빠르므로 하드웨 어와 관련된 시스템프로그램을 작성하는데 주로 사용됩니다. 3) 고급어 (High Level Language) 프로그래밍 언어도 점차 보완되고 발전을 거듭하면서 고수준의 언어 즉 사람이 이해하기 쉬운 언어로 발 전됐는데 이를 고급어라고 합니다. 고급어는 인간이 일상생활에서 사용하는 자연어에 가까운 표현을 사 용합니다. 기계어와 어셈블리어를 제외한 모든 프로그래밍언어가 고급언어에 속합니다. 2/10
고급언어들은 각자의 목적을 위해 여러 가지 종류로 분할되어 개발되었어요. 1 문제중심(지향)언어: 인공지능이나 시뮬레이션 또는 토목건축이나 보고서작성과 같이 특정 한 문제해결을 위해 개발되었습니다. LISP, GPSS, RPG 등이 있습니다. 2 절차 중심(지향)언어: 정해진 문법에 따라 일련의 처리절차를 차례로 기술해나갑니다. 프로 그래밍언어에는 C, COBOL, FORTRAN, BASIC이 있는데 현재 대부분의 고 급언어들이 해당합니다. 프로그래밍 언어들을 좀 더 구체적으로 살펴보고 그 특징을 알아보도록 하겠습니다. FORTRAN : 1953년 과학기술, 공학과 같은 분야에서 수학적 성질을 갖는 문제들을 계산하기 위 해 만들어졌습니다. 대표적인 과학계산용 프로그래밍 언어입니다. COBOL : 1960년에 개발됐는데 사무처리용 언어로 최초로 개발된 고급언어라는 특징을 들 수 있습니다. 특히 코볼은 영어문장의 형태로 프로그램을 작성할 수 있어 프로그램 작성이 쉽고 이 해하기 쉽다는 장점이 있습니다. BASIC(Beginner s All-purpose Symbolic Instruction Code): 1965년 개발된 마이크로컴퓨터용의 대화형 고급프로그래밍 언어로서 많은 사랑을 받아 왔습니다. 초보자로 쉽게 사용할 수 있는 문법 구조를 갖고 있습니다. PASCAL이라는 언어는 1971년 ALGOL(알골)을 바탕으로 개발된 교육용 언어입니다. 구조화 프 로그래밍과 재귀적 알고리즘의 적용이 가능하고 데이터형의 정의를 자유롭게 할 수 있다는 특징 을 가지고 있습니다. 1984년 개발된 Turbo PASCAL(터보 파스칼)은 개인용 컴퓨터에서 널리 사 용되기도 했습니다. C : ALGOL60을 모체로 개발되었습니다. 현재까지도 모든 언어의 기본이라고 불리는 운영체제 등의 시스템 기술에 적합한 고급언어로서 표현이 간결하고 다양한 데이터 형과 연산자를 지원하 며 우수한 이식성과 강력한 문자열 처리능력을 가지고 있습니다. C는 저급언어와 고급언어의 특 징을 모두 가지고 있어 중급언어라고도 불리는데 프로그래머라면 반드시 한번쯤은 접해보는 언 어가 바로 C입니다. C++: C가 가진 몇 가지 단점을 보완해서 개발된 언어가 C++입니다. C언어를 객체지향적으로 개량한 객체지향언어로서 문제해결의 절차를 중시하던 기존 언어와는 달리 모든 문제를 객체로 모델링하여 표현합니다. 데이터 추상화, 코드재사용, 클래스상속이 가능하도록 했습니다. 우리가 3/10
사용하는 윈도우98역시 C++를 통해 만들어진 운영체제입니다. LISP: 이라는 언어는 리스트처리용 프로그래밍 언어입니다. 수식처리를 비롯하여 기호처리분야 에 사용되고 있으며 특히 인공지능분야에서 널리 사용되고 있는 언어입니다. JAVA: 현재 인터넷분야에서 각광 받고 있는 언어의 하나를 꼽으며, 자바는 객체지향언어 입니다. 추상화, 상속성, 다형성과 같은 특징을 가지면서 네트워크 환경에서 분산작업이 가능하도록 설 계되었어요. 또한 멀티스레드를 지원하고 특정컴퓨터의 구조와 무관한 독립적인 플랫폼을 통해 서 운영되기 때문에 웹 프로그래머들이 많이 선호하고 있습니다. 4) 번역기 프로그램을 작성했다고 해서 바로 바로 컴퓨터가 이해하고 처리하지 못합니다. 프로그램이 저장된 문서를 소스라고 부르는데, 기계어로 작성한 것이 아니라면 소스는 언어번역기를 통 해 컴퓨터가 이해할 수 있는 기계어로 번역하는 절차를 거쳐야 합니다. 고급어에서 사용하는 번역기 1 컴파일러 2 인터프리터 3 프리프로세서 컴파일러 - 속도가 빠르나 사람이 이해하기 어렵고 컴퓨터 기종에 따라 호환성 떨어짐. - 전체 프로그램을 한번에 처리하여 목적 프로그램을 생성하는 번역기. - 기억장소를 많이 차지하지만 실행속도가 빠르다는 장점. - 한번 번역해 두면 목적프로그램이라는 것이 생성되어 다음 번 실행 때 다시 번역할 필요가 없음. - 컴파일러를 사용하는 언어: ALGOL, PASCAL, FORTRAN, COBOL, C 등 인터프리터 - 컴파일러 방식과는 좀 다르게 처리됨. - 목적프로그램을 생성하지 않고 필요할 때마다 기계어로 번역하여 실행하는 방식. - 대화식으로 한 줄씩 번역해서 바로 실행하기 때문에 실행속도가 느리지만 기억장소를 적게 차지. - 인터프리터를 사용하는 언어: BASIC, LISP, APL 등 프리프로세서(Preprocessor) 4/10
- 전처리기 라고도 함. - 고급 언어로 작성된 프로그램을 그에 대응하는 다른 고급언어로 번역. 5) 언어의 특징에 따른 분류 프로그래밍은 각 언어의 특징에 따라 구조적 프로그래밍과 객체지향 프로그래밍으로 분리합니다. 1 구조적 프로그래밍 하나의 입력과 출력 문을 갖는 구조로서 GOTO문을 사용하지 않고 순서, 선택, 반복의 3가지 논 리구조를 사용하는 프로그래밍 기법을 의미합니다. 이러한 구조적 프로그래밍 방식은 프로그램이 세분화되며 기능별 서브루틴이 작성되어 프로그램 작성이 용이하고 이해가 쉽습니다. 대표적인 프로그램으로 FORTRAN, COBOL, PASCAL, C등이 있습니다. 2 객체 지향 프로그래밍 데이터구조의 데이터 형뿐만 아니라 사용되는 함수까지 함께 정의하는 프로그래밍 형식을 말하 는데 이런 정의를 객체라고 합니다. 객체는 속성과 메소드의 상속, 재사용이 가능하고 시스템의 확장성이 높으며 정보은폐가 자연스럽게 이루어지는 장점이 있습니다. 대표적인 객체지향 프로그 램으로는 C++, JAVA등이 있습니다. - 메소드: 객체가 수행하는 특정한 작업을 말합니다. 데이터에 대해 작업을 수행할 수 있는 단위 기능을 말합니다. - 프로퍼티: 객체가 가지고 있는 고유의 성질이나 속성을 말합니다. 비쥬얼 프로그래밍: 객체지향 프로그램 중에서 기존의 프로그래밍 언어를 Windows 운영체제에 서 아이콘과 마우스를 이용하여 대화형으로 보다 쉽게 프로그래밍하도록 개발된 언어를 말합니 다. 이러한 비쥬얼 프로그램언어에는 Visual Basic, Visual C++등이 있습니다. 6) 웹 프로그래밍 언어 인터넷의 발전으로 인해 웹에서의 다양한 정보 처리가 필요해졌고, 이에 다라 여러 가지 웹 프로그래밍 언어들이 등장하게 되었습니다. 인터넷의 바다를 점령한 웹 프로그래밍 언어들을 하나씩 알아보겠습니다. 1 HTML : 먼저 기장 기존적인 웹 문서 개발언어인 HTML이 있습니다. HTML은 쉽고 간단한 태그들 로 이루어져 있습니다. 2 XML : 단순한 HTML의 한계를 극복하기 위해 만들어졌는데, 사용자가 직접 태그를 만들어 쓸 수 있도록 개발되었습니다. 3 WML : 휴대용 단말기에서 사용되는 언어입니다. 4 VRML : 웹 상에서 3차원의 구현이 가능하도록 도와줍니다. 5 JAVA Script / 기타 서버 언어 :웹 문서를 보다 동적으로 구현해주는 웹 프로그래밍 언어로 들 수 있습니다. 5/10
7) 프로그래밍 언어 프로그램을 작성하면서 접하게 되는 많은 용어들을 프로그램의 개발 단계에 맞춰 살펴보겠습니다. 1 원시(Source) 프로그램 사용자 위주의 언어(텍스트)를 이용하여 작성하는 프로그램으로 컴퓨터에서 사용하기 위해서는 기계어로 번역되어야 합니다. 2 목적(Object) 프로그램 원시 프로그램이 언어 번역기(컴파일러, 인터프리터)에 의해 기계어로 변역된 상태의 프로그램입 니다. 3 연계편집(Linkage Editor) 프로그램 둘 이상의 목적 프로그램을 하나로 결합하고, 그들 간의 참조를 위해 필요한 정보를 제공하는 시스템 프로그램입니다. 일반적으로 다른 곳에서 작성된 프로그램 루틴이나 컴파일 또는 어셈블 된 루틴들을 모아서 실행 가능한 하나의 루틴으로 연결합니다. 6/10
4 로더(loader) 목적 프로그램을 실행하기 위해 메모리에 적재하는 역할을 수행하는 시스템 프로그램입니다. 프 로그램이 들어갈 기억 장소를 배정하는 할당(Allocation), 외부 프로그램을 연결시키는 연결 (Linking), 실제 기억 장소에 대응되도록 프로그램 주소를 재배치하는 재배치(Relocation), 프로 그램과 데이터를 메모리에 적재하는 적재(Loading) 기능을 수행합니다. 2. 시스템 소프트웨어 1) 소프트웨어의 분류 프로그래밍언어를 통해 우리가 유용하게 사용할 수 있는 많은 프로그램들이 개발되어 사용자가 작업을 보다 손쉽게 하도록 유도하고 있습니다. 이러한 프로그램들을 통틀어 우리는 소프트웨어라고 합니다. 소 프트웨어란 결국 컴퓨터를 구성하는 하드웨어를 동작시키고 하드웨어를 이용하여 작업을 수행하는 역할 을 담당하는 각종 프로그램을 총칭한다고 할 수 있습니다. 1 시스템 소프트웨어 : 소프트웨어는 컴퓨터를 기본적으로 작동시키거나 사용자가 컴퓨터를 보다 효율적으로 사용하기 위함. 2 응용소프트웨어 : 사용자가 컴퓨터를 이용하여 특정한 작업을 보다 손쉽게 수행하기 위함. 2) 시스템 소프트웨어의 분류 시스템 소프트웨어는 컴퓨터 시스템의 각종 자원을 효율적으로 관리, 운영함으로써 사용자에게 최대의 편리성을 제공하기 위한 것으로써, 컴퓨터 운영의 근본이 되는 소프트웨어 입니다. 시스템 소프트웨어는 응용프로그램의 기초가 되어주어서 그 위에서 응용프로그램을 개발하거나 사용할 수 있도록 해줍니다. 시스템 소프트웨어 : 운영체제 각종 언어의 번역기 유틸리티 프로그램 운영체제 구분 하드웨어와 소프트웨어의 가교역할을 합니다 크게 제어 프로그램과 처리 프로그램으로 나눠 볼 수 있습 니다. 각 구분에 따른 종류와 의미를 살펴 보겠습니다. 1 제어 프로그램 : 컴퓨터 시스템 전체의 동작 상태를 감시하는 감시, 감독 프로그램, 컴퓨터 시스 템의 여러 가지 파일과 데이터를 표준적인 방법으로 처리할 수 있도록 관리 해주는 작업 관리 7/10
프로그램, 업무의 연속 처리를 위한 스케줄 관리나 입출력 장치 등을 관리하는 데이터 관리 프로 그램이 있습니다. 2 처리 프로그램 : 에는 작성된 프로그램을 기계어로 변환시켜주는 프로그램인 언어 번역 프로그램 이 여기에 속하고, 프로그램 작성에 도움을 주기 위한 서비스 프로그램 이 있습니다. 운영체제의 종류 1 CUI (Character User Interface) - 키보드를 이용하여 사용자가 모든 명령어를 직접 입력하는 환경 - CUI방식의 운영체제 : LINUX, DOS, UNIX 2 GUI (Graphic User Interface) - 마우스를 통해 시각적으로 소프트웨어를 운용할 수 있는 환경 - GUI 방식의 운영체제 : Windows, MAC 유틸리티 프로그램 종류 사용자가 컴퓨터를 보다 쉽게 사용할 수 있도록 해주거나 운영체제에서 제공하지 않는 기능을 제공함으 로써 컴퓨터를 이용하여 보다 편리하게 특정한 작업을 수행할 수 있도록 해주는 프로그램이 있습니다. 이러한 프로그램을 통칭하여 유틸리티라고 합니다. 1 파일압축프로그램: 대표적인 유틸리티로 많은 파일들을 하나의 파일로 묶어서 압축하여 관리하 기 위해 만들어진 이 프로그램은 파일을 압축함으로써 디스크공간을 절약할 수 있으며, 파일을 압축하면 크기가 작아지므로 자료를 주고받을 때 소요되는 시간과 요금을 절약할 수도 있습니다. 또한 데이터 백업을 보다 효율적으로 수행할 수도 있습니다. windows용 압축프로그램 - WinZip : 확장자는 자동으로 *.ZIP이 됩니다. - 알집: 최근에는 모든 압축 파일 형식을 지원하는 프로그램들이 개발되어 나오고 있습니 다. 국산 압축 프로그램인 알집이 대표적인 예라고 할 수 있습니다. 2 이미지 뷰어 3 메신저 4 p2p프로그램 8/10
3) 응용소프트웨어의 분류 특정한 작업을 보다 손쉽게 수행하기 위해 개발된 응용소프트웨어를 살펴보겠습니다. 1 사무자동화 워드프로세서 프로그램 : 각종문서를 작성, 편집, 출력, 보관하는데 여기에는 한글, MS워드, 훈민 정음 등이 있습니다. 스프레드시트 프로그램 : 표 계산 프로그램이라고도 하는 스프레드시트 프로그램은 수치를 자동 으로 계산해 주고 입력한 수치를 기초로 차트를 작성하거나 대량의 데이터관리 등의 기능을 제 공하고 있으며, Microsoft Excel, 로터스1-2-3등이 있습니다. 프리젠테이션 : 컴퓨터를 이용하여 각종 발표용 자료를 제작하는 프로그램으로서, 동적으로 화면 구성이 가능하고 그림, 그래프, 동영상 등의 삽입이 가능하며 Microsoft PowerPoint 가 대표적입 니다. 데이터베이스관리 프로그램 : 대량의 데이터를 입력, 검색, 추출, 인쇄하는 등의 관리작업을 보다 효율적으로 수행할 수 있는 기능을 제공합니다. Windows용 프로그램의 경우 다양한 형태의 입 력양식과 보고서작성 기능, 이미지 삽입 등의 기능을 제공하는데 이러한 소프트웨어로는 Microsoft Access (마이크로소프트 엑세스), 로터스, 디베이스 등이 있습니다. 2 그래픽프로그램 페인팅 프로그램 : 그래픽 작업을 위한 그래픽프로그램에도 다양한 종류가 존재합니다. 주로 마 우스나 기타 입력장치를 통하여 비트맵 형식의 그림을 그리는 기능을 제공합니다. 드로잉 프로그램 : 그림을 점의 모임이 아닌 선분이나 곡선의 모임으로 화면에 표시하는 벡터 형 식의 드로잉 프로그램에는 CorelDraw, MS-Draw등이 있습니다. 리터칭프로그램 : 그림이나 사진의 색상을 보정하거나 필터를 이용하여 다양한 효과를 줄 수 있 는 기능을 제공하는 소프트웨어로 Photoshop, PaintShop Pro 등이 있습니다. CAD(캐드)프로그램 : 컴퓨터를 이용하여 제품생산에 필요한 각종 설계도면을 작성할 수 있는 기 능을 제공하는 소프트웨어로 우주, 항공, 건축, 기계, 전자회로설계 등의 분야에서 널리 응용되고 있으며 Auto CAD(오토캐드), P CAD(피 캐드) 등이 있습니다. 3차원 그래픽 프로그램 : 좀 더 사실적 효과를 위해 사용되는 3차원 그래픽 프로그램에는 3D 9/10
MAX, Lightwave 3D, Softimage, Rhino 3D등 이 있습니다.. 3 기타프로그램 멀티미디어 재생 프로그램: 사운드 동영상 플레이어 백신 프로그램 이상으로 컴퓨터 소프트웨어에 대하여 알아 보았습니다. 소프트웨어의 사용 방법을 아는 것도 중요하지 만 소프트웨어가 어떻게 나뉘어 지고 어떠한 소프트웨어가 있는지, 그리고 소프트웨어들이 어떻게 만들 어 지는지 아는 것도 중요합니다. 10/10