검수요청.png검수요청.png

파스칼

위키원
이동: 둘러보기, 검색
파스칼(Pascal)
파스칼(Pascal)
니클라우스 비르트(Niklaus Emil Wirth) 파스칼 고안자

파스칼(Pascal) 1969년 스위스의 컴퓨터 과학자 니클라우스 비르트(Niklaus Wirth)가 개발한 교육용 프로그래밍 언어이다. 파스칼이라는 이름은 17세기 프랑스의 유명한 수학자이자 철학자인 블레즈 파스칼(Blaise Pascal)에게서 이름을 따왔다. 파스칼 언어는 포인터(pointer)를 사용한 구조적 프로그래밍을 특징으로 한다. 파스칼에 객체 지향(OOP) 개념을 포함하여 오브젝트 파스칼(Object Pascal) 언어가 생겨났고, 이 오브젝트 파스칼을 일부 변형하여 델파이(Delphi) 프로그래밍 언어가 생겨났다.

개요

파스칼은 프로그래밍 언어의 한 종류로서, 컴파일러 규모가 크고 다양해서 복잡한 프로그램 처리에는 용이하지만, 배우기가 어렵고 구조가 복잡했던 알골이라는 언어와는 다르게 쉽고 효율적으로 프로그램을 작성할 수 있도록 간결성과 신뢰성에 중점을 두어 개발된 언어이다. 풍부한 데이터 구조, 구조화 프로그래밍에 적합한 제어구조를 가졌으며, 주로 과학계산용 중,소형 컴퓨터에서 사용된다. 데이터 형식에는 스칼라 데이터형식, 구조 데이터형식, 포인터 데이터형식 등이 있다. 파스칼은 C언어와 유사한 점이 있지만, 코드를 간결하게 하고 버그를 더 쉽게 잡아내기 위한 목적으로 몇가지 기능을 제한함으로써 C언어보다 활용도가 떨어지는 언어가 되었다.

역사

1960년대 컴퓨터 언어 역사의 상당 부분은 ALGOL60 언어로 추적될 수 있다. ALGOL은 알고리즘을 명확하게 설명할수 있다는 명백한 목표를 가지고 1950년대에 개발되었다. 오늘날까지 언어에서 공통으로 남아 있는 구조화된 프로그래밍을 위한 많은 기능들을 포함했다. 조입직후 1962년 워스는 헬무트 웨버와 함께 오일러 프로그래밍 언어에 관한 논문 작업을 시작했다. 오일러은 ALGOL의 구문과 많은 개념에 기초했지만 파생어는 아니었다.그것의 주요 목표는 동적 목록과 유형을 추가하는 것이었고 이를 리프와 유사한 역할에 사용할 수 있게 했다. 1965년에 완성되었다. 이때까지 ALGOL의 여러가지 문제가 확인되었는데 특히 표준화된 문자열 시스템의 부족이 두드러졌다. 언어유지를 담당한 그룹은 개선하기위해 ALGOL X 프로세스를 시작했다. 워스와 Tony Hoare는 문자열을 추가하고 일부 구문을 정히하기 위해 보수적인 수정안을 제출 했다. 수정안은 너무 경미해서 새로운 표준 ALGOL로 사용할 가치가 없다고 여겨졌기 때문에 워스는 언어용 컴파일러를 사용하였고 이것이 ALGOL W로 알려지게 되었다.

버전

  • 2000년 7월 12일 : FPC(Free Pascal Compiler) 1.0.0버전이 출시되었다.
  • 2000년 10월 12일 : FPC 1.0.2버전이 출시되었다.
  • 2000년 12월 31일 : FPC 1.0.4버전이 출시되었고, 안정화 작업을 하였다.
  • 2005년 5월 15일 : FPC 2.0.0버전이 출시되었고, 향상된 MacPas모드, 변형 지원 기능 향상, 언어 파일 업데이트, 초기화되지 않은 변수에 대한 경고 개선, 많은 소규모 버그 및 호환성 수정 등 다양한 기능향상 및 버그 수정이 이루어졌다.
  • 2005년 12월 8일 : FPC 2.0.2버전이 출시되었고, 2.0.0버전의 버그 수정이 이루어졌다.
  • 2007년 9월 10일 : FPC 2.2.0버전이 출시되었고, 윈도우64, 윈도우CE(윈도우 모바일), 닌텐도 게임보이 어드밴스, 닌텐도DS 등의 새로운 플랫폼을 지원하게 되었으며, 컴파일 중 메모리 사용 감소 및 컴파일 속도 향상, 다중 리소스 파일 지원, Windows에서 COM / OLE 호환 가능 등 다양한 기능향상 및 버그 수정이 이루어졌다.
  • 2010년 1월 1일 : FPC 2.4.0버전이 출시되었고, 드워프 디버그 정보를 개선하였으며, 많은 컴파일러 버그 수정과 라이브러리 업데이트 및 전체 프로그램 최적화를 하였다.
  • 2011년 5월 22일 : FPC 2.4.4버전이 출시되었고, XML단위 개선, chm단위 개선, fppkg 및 fpmake 개선, 데이터베이스 유닛 개선, OS/2RTL의 멀티 스레딩 지원 수정 등 다양한 개선과 버그 수정이 이루어졌다.
  • 2012년 1월 1일 : FPC 2.6.0버전이 출시되었고, 델파이 호환성 모드 개선, 일반 일반어 구문의 델파이 호환성 개선, 새 ARM 코드 생성기 기능 추가, ARM VFPv2 및 VFPv3 부동 소수점 장치 지원 등 언어 기능들을 많이 추가하고 다양한 플랫폼에 대한 지원을 추가 및 개선하였다.
  • 2013년 2월 23일 : FPC 2.6.2버전이 출시되었고, ARM 아키텍처의 기능 수정 및 향상, 새로운 패키지 fpindexer (인덱싱 엔진)추가, fcl-base (및 RTL의 기본 클래스)에 관찰자 패턴 추가, fcl-db수정 및 개선, fcl-passrc (및 fpdoc) 수정 및 개선, PTCPas 및 gtk2 업데이트 등 새로운 기능들이 추가되고 개선되었다.
  • 2014년 3월 11일 : FPC 2.6.4버전이 출시되었고, fcl-db수정 및 개선, 웹 및 json 패키지 동기화, chmcmd 컴파일러 개선 등 다양한 기능들이 개선되었다.
  • 2015년 11월 25일 : FPC 3.0.0버전이 출시되었고, 몇 가지 새로운 플랫폼, 코드 페이지 인식 문자열 및 통합 파스칼 소스 저장소에 대한 지원을 갖췄다.
  • 2017년 2월 15일 : FPC 3.0.2버전이 출시되었고, 3.0버전에 대한 버그 수정이 이루어졌다.
  • 2017년 11월 28일 : FPC 3.0.4버전이 출시되었고, 3.0버전에 대한 버그 수정이 이루어졌다.[1]

구조

구조도

 program 프로그램이름; // 이 소스코드가 프로그램이라는것을 의미.
 label                 // Goto문의 지표
   지표1, 지표2;
 
 uses                  // 외부유닛의 참조목록
   유닛1, 유닛2;
 
 type                  // 자료형 선언부
   형명칭: 자료형; 
 
 var                   // 변수 선언부          
   변수명: 자료형;
 
 const                 // 상수 선언부
   상수명=상수값;
 
   procedure 프로시저이름; // 프로시저를 만들었다.
   begin                   // 시작
     명령;
   end;                    // 끝 - 프로시저
 
 begin                 // 시작
   프로시저이름;
   명령;                    
 end.                  // 끝 - 프로그램[2]

HelloWorld

문자열 HelloWorld를 출력한다.

 program Helloworld;
 begin
   WriteLn('HelloWorld');
 end.[2]

콘솔 입출력

 program WriteName;
 
 var
   Name:string;                // 변수 이름을 문자열로 선언 
 
 begin
   Write('Please give your name: ');
   Readln(Name);               // Readln은 화면에 인쇄된 문자열을 읽는다.
   WriteLn('Hello ', Name);
 end.

절차 및 함수

파스칼 구조는 절차와 함수로 짜여진다. 절차와 함수는 어느 깊이로든 놓일 수 있으며, 프로그램 구조는 논리 외부 블록이다.

  program mine(output);
    var i : integer;
 
    procedure print(var j: integer);
 
      function next(k: integer): integer;
      begin
        next := k + 1
      end;
 
    begin
      writeln('The total is: ', j);
      j := next(j)
    end;
 
  begin
    i := 1;
    while i <= 10 do print(i)
  end.[3]

설명

  • Program : 해당 파일이 프로그램이라는 것을 의미한다. Program 뒤의 이름은 보통 파일 이름으로 자동설정 된다.
  • begin : 프로그램, 유닛, 서브루틴의 시작을 알리며, 블록의 시작이라는 뜻이다.
  • end : 프로그램, 유닛, 서브루틴의 끝을 알리며, 블록의 끝이라는 뜻이다.
  •  ; : 문장의 끝을 알리며, ;을 써야만 그 문장이 끝나게 된다.

종류

  • 오브젝트 파스칼(Object Pascal) : 파스칼에 객체 지향 개념을 포함하여 발전시킨 프로그래밍 언어이다. 주로 델파이(Delphi) 언어로도 잘 알려져 있다. 애플의 매킨토시의 전신인 애플 리자용으로 개발한 오브젝트 파스칼 컴파일러가 시초이며, 가장 널리 알려진 오브젝트 파스칼의 변종은 볼랜드/코드기어 사의 델파이에서 사용되는 '델파이 프로그래밍 언어'가 있다.[4]
  • 델파이(Delphi) : 윈도우즈, 리눅스, IOS, 안드로이드에서 작동하는 프로그램 제작에 이용되는 통합개발환경(IDE: Integrated Development Environment)이자 언어이다. 기본적인 문법은 파스칼 문법과 같지만 파스칼에 여러 기능들이 추가되어 현재는 델파이라는 언어로 존재한다.원래는 볼랜드가 개발하였으나 지금은 엠바카데로사에서 소유하여 개발하고 있다.[5]

장단점

  • 장점 : 파스칼의 장점은 자연언어를 이용한 매우 명확한 문법체계를 가지고 있기 때문에 코드를 읽고, 유지 및 보수가 용이하다는 것이다. 그리고 C언어로는 몇시간단위로 걸릴 컴파일 프로그램이 파스칼로는 1분도 걸리지 않을만큼 파스칼의 컴파일속도는 매우 빠르다. 게다가 파스칼 IDE는 델파이 IDE와 Lazarus IDE에서 보듯이 생산성 측면에서 아직도 최고 수준이다. 또한 파스칼은 아직 많은 대학에서 선호되는 언어로 남아있는데, 그 이유로는 학생이 프로그래밍을 하는 과정에서 문제가 발생할 소지가 적고, C, C++보다 배우기가 쉽기 때문이라고 할 수 있다.
  • 단점 : 프로그래밍 검증분야에서 매우 중요한 역할을 하고 있으며 알고리즘 기술용으로 각광을 받고 있으나, 부프로그램은 별도로 컴파일하지 못한다. 그리고 type casting이 매우 정확 해야 하기 때문에 C언어에 비해 유연성이 떨어 지는 편이다.

각주

  1. 파스칼 공식 홈페이지(Free Pascal) - https://www.freepascal.org/news.html
  2. 2.0 2.1 파스칼 프로그래밍/기본서〉, 《위키책》
  3. 파스칼 (프로그래밍 언어)〉, 《위키백과》
  4. 오브젝트 파스칼〉, 《위키백과》
  5. 델파이〉, 《위키백과》

참고자료

같이 보기


  검수요청.png검수요청.png 이 파스칼 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.