컴퓨터이용의 급증은 쓸만한 소프트웨어가 부족한 '소프트웨어위기' 상황을 초래했다. 이를 극복하기 위해 등장한 '4세대 언어'란 어떤 것인가?
컴퓨터는 여러 방면에서 실생활에 영향을 미치면서 다양하게 발전해왔다. 전문가들의 전유물이었던 컴퓨터는 이제 대중적인 상품으로 주변 어디서나 쉽게 접할 수 있게 되었다. 그런데 컴퓨터의 대수가 기하급수적으로 증가하고 그에 대한 수요가 급증하면서 초창기에는 별 문제되지 않았던 현상이 나타났다. 소프트웨어에 대한 소요가 지나치게 증가해서 기존 소프트웨어로는 감당할 수 없게 된 것이다. 더욱이 기존의 소프트웨어 개발 기법으로는 피할 수 없는 생산성의 제약때문에 충분한 소프트웨어의 공급이 이루어질 수 없게 되었다.
이러한 소프트웨어 위기를 극복하기 위한 연구들이 많이 이루어지고 있는데 하나의 예로 구조적 기법(structured technique)에 기초한 소프트웨어공학(소프트웨어를 자동으로 생산하는 기술)을 들 수 있다. 이런 시도의 궁극적인 목표는 소프트웨어 위기의 해결이며 이를 위해서 소프트웨어의 개발과 보수유지 과정을 경제적으로 수행하고 각 상품 주기의 단계마다 생산성을 향상시키려 한다.
이러한 문제의 심각성은 컴퓨터 사용의 대중화로 인해 더욱 가중된다. 컴퓨터 사용이 일반화되면서 전문가가 아닌 사람들이 컴퓨터를 접하게 되었는데 일반사용자 경영자 상담가 등이 이에 포함된다. 사용자들은 자료와 정보의 처리를 원한다. 하지만 그들이 자료처리 전문가는 아니다. 때문에 일반 사용자들이 사업을 하고 문제를 해결하는 것은 원하지만 결코 복잡하고 까다로운 코딩(coding)작업에 참여하기를 원하지 않는 것이다. 또한 사용자들은 되도록이면 전문적인 프로그래머의 도움을 받지 않고, 자신이 직접 소프트웨어를 개발하고 문제를 해결하기를 원한다. 이처럼 실무적으로는 생산성의 향상을 통해 소프트웨어의 위기를 극복하고 일반 사용자들의 요구를 폭넓게 수용하기 위해서 컴퓨터 언어에 대한 새로운 요구가 생기게 되었다. 즉 새로운 언어를 사용해서 이같은 상황을 해결하려고 많은 연구와 노력을 기울여 왔다.
기계어와 상징어
초기의 컴퓨터는 복잡한 논리와 계산능력을 구비하지 못한 채, 다분히 기계적인 작업을 수행하는 기계지향적(machine oriented)이었다. 이 시기에 사용된 언어를 기계어라 부르며 이는 제1세대 언어에 해당한다. 그 뒤에 다소 진보된 능력을 가진 컴퓨터언어가 등장했는데, 이 시기에 사용된 어셈블리어는 상징어(symbolic language)로 2세대를 형성한다.
컴퓨터의 사용이 대중화되면서 이전보다 더 문제지향적 언어(problem-oriented language)들이 등장하게 되었다. 과학 계산에 적합한 알골(ALGOL)과 포트란(FORTRAN)등이 소개되었고, 코볼(COBOL)이 사무처리용으로, 그리고 PL/1과 ADA 등이 과학계산과 사무처리 모두를 위해 개발되었다. 이러한 3세대 언어들은 사람의 언어와 유사한 표현방법을 택하고 있으며 다른 언어에 비해 상당히 기계독립적(machine independent)이어서 컴퓨터 자체에 신경을 덜 쓰고도 사용할 수 있다.
원래의 목적이 그러했듯이 초창기의 컴퓨터는 복잡하고 지루한 과학계산 위주로 운용되었다. 그 뒤에 컴퓨터는 대단히 향상된 능력을 갖추게 되었으며, 특히 하드웨어의 발달은 컴퓨터를 저렴하게 구입할 수 있게 하였고 컴퓨터의 대중화에 결정적인 영향을 미첬다. 그리고 보다 많은 사람들이 컴퓨터 이용에 관련하게 되었는데 이 때문에 소프트웨어 위기의 해결과 함께 일반 사용자의 다양한 요구를 처리해야만 하게 되었다. 사업 상담자는 과학계산보다는 많은 정보의 관리와 처리에 관심을 가진다. 일반 사용자들은 컴퓨터 자체를 알기 보다는 자신의 문제를 손쉽고도 신속하게 처리하기를 원한다. 시스템 분석가는 컴퓨터시스템을 아는 것보다는 자신의 문제를 해결하기 위해 컴퓨터를 사용하는 것에 더 관심이 있다.
그런데 3세대 언어만으로는 이러한 요구를 해결하는데는 어려운 점이 많다. 3세대 언어는 주로 '폰노이만 구조'(VonNeuman structure)를 바탕으로 설계됐고 순차적(procedural)이어서 컴퓨터의 동작을 일련의 순서로 표현한다. 그렇기 때문에 비록 사람의 언어와 유사한 표현방식을 취하고 있다 하더라도 프로그램의 크기가 상당히 커지게 된다. 더욱이 사용자들이 컴퓨터를 사용하기 위해서는 적어도 컴퓨터언어의 문법을 익혀야 하며 효율적인 프로그램을 개발하기 위해서는 컴퓨터에 대해서도 어느정도 알아야 한다. 그렇지만 이러한 일들은 최종 사용자나 자료 처리 전문가가 아닌 사람들에게는 상당히 까다로우며 불편하다. 왜냐하면 사용자들이 원하는 것은 컴퓨터의 세부사항이 아니고 컴퓨터가 제공할 수 있는 기능과 서비스이기 때문이다. 이와 같은 요구들에 의해 새로운 언어의 개발 필요성이 증대되었고, 그것의 해결책으로 4세대 언어가 개발, 소개되었다.
4세대 언어의 특성
3세대 언어의 제약을 극복하고, 일반 사용자들의 요구를 폭넓게 수용하기 위해서 등장한 4세대 언어는 다음과 같은 것들을 목적으로 한다.
△개발 과정을 가속화한다.
△신속하고 손쉬운 변경을 가능하게 해서 보수유지 비용을 절감한다.
△문제의 표현을 고수준으로 하고 오류 없는 코드를 생성한다.
△사용자들에게 친근한 언어(user friendly language)를 제공함으로써 문제를 손쉽게 해결할 수 있게 한다.
그리고 이러한 목적을 달성하기 위해 4세대 언어는 다음과 같은 특성들을 갖추어야 한다.
△사용자들에게 친근한 언어다. 이것은 '생산성'과 함께 실제적으로 4세대 언어가 필요하게 된 가장 기본적인 요인이며 다음의 특성들은 이 조건을 만족하기 위한 세부 사항으로 이해할 수 있다.
△비전문적인 프로그래머도 쉽게 결과를 얻을 수 있다.
△데이터베이스를 직접 창조해서 이용할 수 있다. 과학위주의 계산과는 달리 4세대 언어는 다량의 자료와 정보를 처리하기 위해 개발되었기 때문에 데이터베이스관리시스템을 효율적으로 이용할 수 있어야 한다. 4세대언어는 필요한 경우 비절차적 코드(non-procedural code)도 사용한다.
△적은 수의 라인으로 프로그래밍 할 수 있다. 이것은 4세대 언어가 고(高)생산성 언어일 수 있는 가장 중요한 특성이며 4세대 언어의 개발을 촉진시킨 동기이다.
△온라인으로 작동할 수 있다.
△구조적 코딩을 하기에 편리한 구조를 가진다.
△프로그램을 이해하기 쉬워 보수유지가 편하고 비용이 적게 든다.
△짧은 시간 내에 비전문가라도 쉽게 배울 수 있다.
△오류 정정이 쉽다.
△원형(prototype)의 설계가 쉽고 신속하게 변경할 수 있다.
△결과를 신속히 받아볼 수 있다.
위와 같은 특성을 가지고, 본래의 목적을 달성하기 위해 4세대 언어는 다음과 같은 구조를 가진다. 기본적으로 4세대 언어는 여러 개의 비절차적인 요소(non-procedural component)로 구성된다.
무엇보다도 먼저 사용자는 자신이 사용할 자료의 구조 등을 명시적으로 정의할 수 있어야 한다. 이를 위해서 4세대 언어는 자료명세(data specification) 기능을 갖추고 있다. 그리고 리포트 생성기(report generator)가 있는데 리포트에 대한 명세는 사전에 저장된다. 이와 함께 비절차적 요소의 하나로 화면명세부(screen specification part)가 있으며 이로 인해 사용자는 원하는 형식대로 화면을 구성할 수 있고 더욱 컴퓨터를 친근하게 사용할 수 있다. 4세대 언어는 사용자와의 상호작용을 위해 대화명세(dialogue specification) 기능이 있고 이외에도 복잡한 판단이나 조건을 기술하고 수행할 수 있다.
이러한 4세대 언어의 비절차적 요소들은 보다 효율적인 프로그램의 개발과 수행을 위해 종종 기존의 3세대 언어와 같은 절차적 특성과 병행해서 사용된다.
인공지능용 5세대언어
'5세대'란 용어는 △지식기반시스템 △전문가시스템 △추론기관(inference engines)△자연언어 처리 등 인공지능 분야의 원리를 사용하는 시스템을 일컫는다.
전문가시스템을 구축하기 위해 다양한 종류의 쉘(shell)이 있으며, 이들은 고급언어의 형태를 제공해 준다.
인력과 시간을 절약한다
4세대 언어는 일반 사용자와 비전문가들의 다양한 요구를 수용할 수 있도록 개발되었다. 따라서 사용자들이 원하는 기능과 특성들을 가급적이면 많이 포함하고 있다. 앞에서 말한 바와 같이 사용자는 컴퓨터의 작동원리를 알고자 하지 않는다. 그리고 문제를 풀기 위한 세부논리에 얽매이기도 원하지 않는다. 사용자의 관심은 자신의 문제를 해결하는데 있고 이를 위해 컴퓨터의 도움을 필요로 하는 것이다. 그렇기 때문에 프로그래밍은 절차적인 세부사항을 기술하는 것이 아니라 사용자가 원하는 '기능'을 기술하는 것이다. 그리고 컴퓨터 언어는 이러한 기능의 '표현도구'로서 상당히 추상적이며 사람에 가까운 높은 수준의 언어다.
4세대 언어에 의한 프로그래밍은 사용자가 원하는 기능의 표현이며, 프로그램을 수행하기 위한 절차적인 특성이나 세부 논리는 컴퓨터 언어가 자체적으로 구현한다. 그러므로 3세대 언어를 사용했을 경우보다 적은 수의 라인으로 프로그램을 작성할 수 있다. 결국 해결해야 할 문제만 정확히 인식한 사용자라면 짧은 시간 내에 짧고 밀도 높은 프로그램(compact program)을 작성해 결과를 얻을 수 있다.
이와 같이 사용자가 원하는 기능을 실질적으로 지원하기 위해 4세대 언어가 개발되었다. 그렇기에 4세대 언어는 고생산성 언어다. 4세대 언어가 소프트웨어 개발의 생산성에 미치는 효과는(그림1)에서 볼 수 있다. 4세대 언어를 사용할 경우, 소프트웨어 생산과정의 한단계인 프로그래밍 단계의 노력이 현저하게 줄어든다. 이와 함께 컴퓨터 언어가 리포트와 화면을 생성할 수 있고 대화가 가능하며, 데이터베이스를 직접 참조할 수 있다면 소프트웨어 개발 및 보수유지 전과정에 걸쳐 생산성은 더욱 커질 것이다. 즉 3세대 언어를 사용하는 경우 상당한 개발시간과 많은 오류, 그리고 높은 보수유지비용이 들 문제라도 짧은 시간에 오류를 최소화하면서 해결할 수 있는 것이다.
4세대 언어는 높은 수준의 표현방법을 취하고 낮은 수준의 세부논리는 언어가 자체적으로 표현하므로 오류를 최소화할 수 있다. 또한 사용자에게 친근한 언어이기에 프로그래밍단계의 노력을 줄일 수 있다. 따라서 소프트웨어 작성의 전단계 중에서 일차적으로 코딩 및 그 이후 단계의 생산성의 향상을 기대할 수 있다. 결국 4세대 언어를 사용할 경우 소프트웨어 생산과정 중 전(前) 단계인 요구분석과 명세 그리고 설계 등에 노력이 집중되는데, 컴퓨터 언어가 전술한 다양한 기능을 갖추고 있을 경우, 이 단계에서의 노력은 상당히 절감된다.
프로그램의 크기에 따른 3세대 언어와 4세대 언어의 생산성 변화의 일반적인 경향은 (그림3)에 나타나 있다. 이 그림에서 주목할 만한 것은 비절차적인 4세대 언어와 절차적 특성의 조화다. 이 경우 기존의 3세대 언어보다는 월등히 향상된 생산성을 보이며, 심지어는 여타의 절차적 비절차적 4세대 언어보다도 훨씬 생산성이 향상되었다.
미래지향적인 언어
이제까지 살펴본 바와 같이 4세대 언어는 소프트웨어 생산성에 상당히 좋은 효과를 미친다. 4세대 언어로는 현재 많은 언어들이 소개되어 사용되고 있는데, 포커스(FOCUS) 로터스(LOTUS 1-2-3) SAS 노마드(NOMAD), 그리고 IBM의 APL SQL 등이 좋은 예다. 그러나 전술한 특성을 갖춘 4세대 언어라 하더라도 일반적으로 다양한 분야를 포괄하지는 못한다. 다시 말해서 개개의 언어는 특정분야 지향적(specific field oriented)이다. 왜냐하면 최종 사용자나 비전문 프로그래머들의 요구가 너무나 다양하기에 하나의 4세대 언어가 처리할 수 있는 영역이 제한된다.
컴퓨터의 기하급수적인 증가는 소프트웨어의 절대부족이라는 위기를 낳았고 생산성향상을 위한 연구를 촉발시켰다. 그리고 컴퓨터의 대중화로 인한 일반 사용자와 비전문가 집단의 요구로 인해 좀 더 높은 수준의 편리하면서도 오류가 적은 컴퓨터언어의 개발을 촉진시켰다.. 이것을 해결하고 필요한 기능을 지원하기 위해 4세대 언어가 개발되었다. 결국 고생산성 언어인 4세대 언어를 사용하여 기존의 방대하고 복잡한 문제들을 상당히 적은 라인의 프로그램으로 해결할 수 있게 되었다. 따라서 다양한 분야의 다양한 문제에 적합한 4세대 언어가 속출하고 있고, 표준적인 언어의 개발을 위해 많은 연구가 행해지고 있다.
컴퓨터는 여러 방면에서 실생활에 영향을 미치면서 다양하게 발전해왔다. 전문가들의 전유물이었던 컴퓨터는 이제 대중적인 상품으로 주변 어디서나 쉽게 접할 수 있게 되었다. 그런데 컴퓨터의 대수가 기하급수적으로 증가하고 그에 대한 수요가 급증하면서 초창기에는 별 문제되지 않았던 현상이 나타났다. 소프트웨어에 대한 소요가 지나치게 증가해서 기존 소프트웨어로는 감당할 수 없게 된 것이다. 더욱이 기존의 소프트웨어 개발 기법으로는 피할 수 없는 생산성의 제약때문에 충분한 소프트웨어의 공급이 이루어질 수 없게 되었다.
이러한 소프트웨어 위기를 극복하기 위한 연구들이 많이 이루어지고 있는데 하나의 예로 구조적 기법(structured technique)에 기초한 소프트웨어공학(소프트웨어를 자동으로 생산하는 기술)을 들 수 있다. 이런 시도의 궁극적인 목표는 소프트웨어 위기의 해결이며 이를 위해서 소프트웨어의 개발과 보수유지 과정을 경제적으로 수행하고 각 상품 주기의 단계마다 생산성을 향상시키려 한다.
이러한 문제의 심각성은 컴퓨터 사용의 대중화로 인해 더욱 가중된다. 컴퓨터 사용이 일반화되면서 전문가가 아닌 사람들이 컴퓨터를 접하게 되었는데 일반사용자 경영자 상담가 등이 이에 포함된다. 사용자들은 자료와 정보의 처리를 원한다. 하지만 그들이 자료처리 전문가는 아니다. 때문에 일반 사용자들이 사업을 하고 문제를 해결하는 것은 원하지만 결코 복잡하고 까다로운 코딩(coding)작업에 참여하기를 원하지 않는 것이다. 또한 사용자들은 되도록이면 전문적인 프로그래머의 도움을 받지 않고, 자신이 직접 소프트웨어를 개발하고 문제를 해결하기를 원한다. 이처럼 실무적으로는 생산성의 향상을 통해 소프트웨어의 위기를 극복하고 일반 사용자들의 요구를 폭넓게 수용하기 위해서 컴퓨터 언어에 대한 새로운 요구가 생기게 되었다. 즉 새로운 언어를 사용해서 이같은 상황을 해결하려고 많은 연구와 노력을 기울여 왔다.
기계어와 상징어
초기의 컴퓨터는 복잡한 논리와 계산능력을 구비하지 못한 채, 다분히 기계적인 작업을 수행하는 기계지향적(machine oriented)이었다. 이 시기에 사용된 언어를 기계어라 부르며 이는 제1세대 언어에 해당한다. 그 뒤에 다소 진보된 능력을 가진 컴퓨터언어가 등장했는데, 이 시기에 사용된 어셈블리어는 상징어(symbolic language)로 2세대를 형성한다.
컴퓨터의 사용이 대중화되면서 이전보다 더 문제지향적 언어(problem-oriented language)들이 등장하게 되었다. 과학 계산에 적합한 알골(ALGOL)과 포트란(FORTRAN)등이 소개되었고, 코볼(COBOL)이 사무처리용으로, 그리고 PL/1과 ADA 등이 과학계산과 사무처리 모두를 위해 개발되었다. 이러한 3세대 언어들은 사람의 언어와 유사한 표현방법을 택하고 있으며 다른 언어에 비해 상당히 기계독립적(machine independent)이어서 컴퓨터 자체에 신경을 덜 쓰고도 사용할 수 있다.
원래의 목적이 그러했듯이 초창기의 컴퓨터는 복잡하고 지루한 과학계산 위주로 운용되었다. 그 뒤에 컴퓨터는 대단히 향상된 능력을 갖추게 되었으며, 특히 하드웨어의 발달은 컴퓨터를 저렴하게 구입할 수 있게 하였고 컴퓨터의 대중화에 결정적인 영향을 미첬다. 그리고 보다 많은 사람들이 컴퓨터 이용에 관련하게 되었는데 이 때문에 소프트웨어 위기의 해결과 함께 일반 사용자의 다양한 요구를 처리해야만 하게 되었다. 사업 상담자는 과학계산보다는 많은 정보의 관리와 처리에 관심을 가진다. 일반 사용자들은 컴퓨터 자체를 알기 보다는 자신의 문제를 손쉽고도 신속하게 처리하기를 원한다. 시스템 분석가는 컴퓨터시스템을 아는 것보다는 자신의 문제를 해결하기 위해 컴퓨터를 사용하는 것에 더 관심이 있다.
그런데 3세대 언어만으로는 이러한 요구를 해결하는데는 어려운 점이 많다. 3세대 언어는 주로 '폰노이만 구조'(VonNeuman structure)를 바탕으로 설계됐고 순차적(procedural)이어서 컴퓨터의 동작을 일련의 순서로 표현한다. 그렇기 때문에 비록 사람의 언어와 유사한 표현방식을 취하고 있다 하더라도 프로그램의 크기가 상당히 커지게 된다. 더욱이 사용자들이 컴퓨터를 사용하기 위해서는 적어도 컴퓨터언어의 문법을 익혀야 하며 효율적인 프로그램을 개발하기 위해서는 컴퓨터에 대해서도 어느정도 알아야 한다. 그렇지만 이러한 일들은 최종 사용자나 자료 처리 전문가가 아닌 사람들에게는 상당히 까다로우며 불편하다. 왜냐하면 사용자들이 원하는 것은 컴퓨터의 세부사항이 아니고 컴퓨터가 제공할 수 있는 기능과 서비스이기 때문이다. 이와 같은 요구들에 의해 새로운 언어의 개발 필요성이 증대되었고, 그것의 해결책으로 4세대 언어가 개발, 소개되었다.
4세대 언어의 특성
3세대 언어의 제약을 극복하고, 일반 사용자들의 요구를 폭넓게 수용하기 위해서 등장한 4세대 언어는 다음과 같은 것들을 목적으로 한다.
△개발 과정을 가속화한다.
△신속하고 손쉬운 변경을 가능하게 해서 보수유지 비용을 절감한다.
△문제의 표현을 고수준으로 하고 오류 없는 코드를 생성한다.
△사용자들에게 친근한 언어(user friendly language)를 제공함으로써 문제를 손쉽게 해결할 수 있게 한다.
그리고 이러한 목적을 달성하기 위해 4세대 언어는 다음과 같은 특성들을 갖추어야 한다.
△사용자들에게 친근한 언어다. 이것은 '생산성'과 함께 실제적으로 4세대 언어가 필요하게 된 가장 기본적인 요인이며 다음의 특성들은 이 조건을 만족하기 위한 세부 사항으로 이해할 수 있다.
△비전문적인 프로그래머도 쉽게 결과를 얻을 수 있다.
△데이터베이스를 직접 창조해서 이용할 수 있다. 과학위주의 계산과는 달리 4세대 언어는 다량의 자료와 정보를 처리하기 위해 개발되었기 때문에 데이터베이스관리시스템을 효율적으로 이용할 수 있어야 한다. 4세대언어는 필요한 경우 비절차적 코드(non-procedural code)도 사용한다.
△적은 수의 라인으로 프로그래밍 할 수 있다. 이것은 4세대 언어가 고(高)생산성 언어일 수 있는 가장 중요한 특성이며 4세대 언어의 개발을 촉진시킨 동기이다.
△온라인으로 작동할 수 있다.
△구조적 코딩을 하기에 편리한 구조를 가진다.
△프로그램을 이해하기 쉬워 보수유지가 편하고 비용이 적게 든다.
△짧은 시간 내에 비전문가라도 쉽게 배울 수 있다.
△오류 정정이 쉽다.
△원형(prototype)의 설계가 쉽고 신속하게 변경할 수 있다.
△결과를 신속히 받아볼 수 있다.
위와 같은 특성을 가지고, 본래의 목적을 달성하기 위해 4세대 언어는 다음과 같은 구조를 가진다. 기본적으로 4세대 언어는 여러 개의 비절차적인 요소(non-procedural component)로 구성된다.
무엇보다도 먼저 사용자는 자신이 사용할 자료의 구조 등을 명시적으로 정의할 수 있어야 한다. 이를 위해서 4세대 언어는 자료명세(data specification) 기능을 갖추고 있다. 그리고 리포트 생성기(report generator)가 있는데 리포트에 대한 명세는 사전에 저장된다. 이와 함께 비절차적 요소의 하나로 화면명세부(screen specification part)가 있으며 이로 인해 사용자는 원하는 형식대로 화면을 구성할 수 있고 더욱 컴퓨터를 친근하게 사용할 수 있다. 4세대 언어는 사용자와의 상호작용을 위해 대화명세(dialogue specification) 기능이 있고 이외에도 복잡한 판단이나 조건을 기술하고 수행할 수 있다.
이러한 4세대 언어의 비절차적 요소들은 보다 효율적인 프로그램의 개발과 수행을 위해 종종 기존의 3세대 언어와 같은 절차적 특성과 병행해서 사용된다.
인공지능용 5세대언어
'5세대'란 용어는 △지식기반시스템 △전문가시스템 △추론기관(inference engines)△자연언어 처리 등 인공지능 분야의 원리를 사용하는 시스템을 일컫는다.
5세대 시스템은 복잡한 지식을 분석 조합하여 기계가 그 지식으로부터 추론하는 것을 가능하게 해준다. 이 추론 처리기는 보고 듣고 말하는 기능, 즉 인간에게는 자연스러운 기능이지만 기계에게는 복잡한 기능들을 수행하도록 하기 위해 사용된다. 또한 인간이 직관적으로 할 수 없는 추론을 빠르게 수행함으로써 소프트웨어가 매우 지능적으로 보이도록 만들어 주기도 한다. 기계는 지식의 매우 특정한 분야에서는 전문적인 기능을 인간보다 훨씬 잘 수행할 수 있는데, 이의 수행을 위해 개발된 언어를 '5세대언어'라 부른다.
이외에도 5세대 컴퓨터는 고도의 병렬처리기능을 갖는다. 한가지 문제를 여러개의 대량생산 처리기가 동시에 처리하도록 하는데, 이는 경제적으로도 매우 바람직한 일이다. 앞으로 고도의 병렬처리를 위한 언어가 개발될 것이다.
전문가시스템을 구축하기 위해 다양한 종류의 쉘(shell)이 있으며, 이들은 고급언어의 형태를 제공해 준다.
인력과 시간을 절약한다
4세대 언어는 일반 사용자와 비전문가들의 다양한 요구를 수용할 수 있도록 개발되었다. 따라서 사용자들이 원하는 기능과 특성들을 가급적이면 많이 포함하고 있다. 앞에서 말한 바와 같이 사용자는 컴퓨터의 작동원리를 알고자 하지 않는다. 그리고 문제를 풀기 위한 세부논리에 얽매이기도 원하지 않는다. 사용자의 관심은 자신의 문제를 해결하는데 있고 이를 위해 컴퓨터의 도움을 필요로 하는 것이다. 그렇기 때문에 프로그래밍은 절차적인 세부사항을 기술하는 것이 아니라 사용자가 원하는 '기능'을 기술하는 것이다. 그리고 컴퓨터 언어는 이러한 기능의 '표현도구'로서 상당히 추상적이며 사람에 가까운 높은 수준의 언어다.
4세대 언어에 의한 프로그래밍은 사용자가 원하는 기능의 표현이며, 프로그램을 수행하기 위한 절차적인 특성이나 세부 논리는 컴퓨터 언어가 자체적으로 구현한다. 그러므로 3세대 언어를 사용했을 경우보다 적은 수의 라인으로 프로그램을 작성할 수 있다. 결국 해결해야 할 문제만 정확히 인식한 사용자라면 짧은 시간 내에 짧고 밀도 높은 프로그램(compact program)을 작성해 결과를 얻을 수 있다.
이와 같이 사용자가 원하는 기능을 실질적으로 지원하기 위해 4세대 언어가 개발되었다. 그렇기에 4세대 언어는 고생산성 언어다. 4세대 언어가 소프트웨어 개발의 생산성에 미치는 효과는(그림1)에서 볼 수 있다. 4세대 언어를 사용할 경우, 소프트웨어 생산과정의 한단계인 프로그래밍 단계의 노력이 현저하게 줄어든다. 이와 함께 컴퓨터 언어가 리포트와 화면을 생성할 수 있고 대화가 가능하며, 데이터베이스를 직접 참조할 수 있다면 소프트웨어 개발 및 보수유지 전과정에 걸쳐 생산성은 더욱 커질 것이다. 즉 3세대 언어를 사용하는 경우 상당한 개발시간과 많은 오류, 그리고 높은 보수유지비용이 들 문제라도 짧은 시간에 오류를 최소화하면서 해결할 수 있는 것이다.
4세대 언어는 높은 수준의 표현방법을 취하고 낮은 수준의 세부논리는 언어가 자체적으로 표현하므로 오류를 최소화할 수 있다. 또한 사용자에게 친근한 언어이기에 프로그래밍단계의 노력을 줄일 수 있다. 따라서 소프트웨어 작성의 전단계 중에서 일차적으로 코딩 및 그 이후 단계의 생산성의 향상을 기대할 수 있다. 결국 4세대 언어를 사용할 경우 소프트웨어 생산과정 중 전(前) 단계인 요구분석과 명세 그리고 설계 등에 노력이 집중되는데, 컴퓨터 언어가 전술한 다양한 기능을 갖추고 있을 경우, 이 단계에서의 노력은 상당히 절감된다.
프로그램의 크기에 따른 3세대 언어와 4세대 언어의 생산성 변화의 일반적인 경향은 (그림3)에 나타나 있다. 이 그림에서 주목할 만한 것은 비절차적인 4세대 언어와 절차적 특성의 조화다. 이 경우 기존의 3세대 언어보다는 월등히 향상된 생산성을 보이며, 심지어는 여타의 절차적 비절차적 4세대 언어보다도 훨씬 생산성이 향상되었다.
미래지향적인 언어
이제까지 살펴본 바와 같이 4세대 언어는 소프트웨어 생산성에 상당히 좋은 효과를 미친다. 4세대 언어로는 현재 많은 언어들이 소개되어 사용되고 있는데, 포커스(FOCUS) 로터스(LOTUS 1-2-3) SAS 노마드(NOMAD), 그리고 IBM의 APL SQL 등이 좋은 예다. 그러나 전술한 특성을 갖춘 4세대 언어라 하더라도 일반적으로 다양한 분야를 포괄하지는 못한다. 다시 말해서 개개의 언어는 특정분야 지향적(specific field oriented)이다. 왜냐하면 최종 사용자나 비전문 프로그래머들의 요구가 너무나 다양하기에 하나의 4세대 언어가 처리할 수 있는 영역이 제한된다.
컴퓨터의 기하급수적인 증가는 소프트웨어의 절대부족이라는 위기를 낳았고 생산성향상을 위한 연구를 촉발시켰다. 그리고 컴퓨터의 대중화로 인한 일반 사용자와 비전문가 집단의 요구로 인해 좀 더 높은 수준의 편리하면서도 오류가 적은 컴퓨터언어의 개발을 촉진시켰다.. 이것을 해결하고 필요한 기능을 지원하기 위해 4세대 언어가 개발되었다. 결국 고생산성 언어인 4세대 언어를 사용하여 기존의 방대하고 복잡한 문제들을 상당히 적은 라인의 프로그램으로 해결할 수 있게 되었다. 따라서 다양한 분야의 다양한 문제에 적합한 4세대 언어가 속출하고 있고, 표준적인 언어의 개발을 위해 많은 연구가 행해지고 있다.