Перейти до вмісту

Free Pascal

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні

Free Pascal або Free Pascal Compiler — це вільний компілятор для мов Pascal та Object Pascal. Він дозволяє створювати консольні програми, desktop-застосунки, серверні утиліти, бібліотеки, навчальні проєкти, cross-platform програми та застосунки з графічним інтерфейсом через Lazarus.

Free Pascal часто скорочують як FPC.

Free Pascal — це відкритий і кросплатформений компілятор Pascal/Object Pascal, який дозволяє писати програми без привʼязки до комерційного середовища Delphi.

Коротко

Параметр Значення
Назва Free Pascal
Скорочення FPC
Повна назва Free Pascal Compiler
Тип Вільний компілятор Pascal/Object Pascal
Мови Pascal, Object Pascal
Ліцензія Open Source
Актуальна стабільна версія 3.2.2
Development-версії 3.3.x
Основна IDE Lazarus
Основні сфери Навчання, desktop, cross-platform застосунки, консольні програми, legacy, бізнес-системи
Офіційний сайт https://www.freepascal.org/

Головна ідея Free Pascal

Free Pascal створений для того, щоб дати розробникам вільний, відкритий і кросплатформений компілятор Pascal/Object Pascal.

Його головна ідея:

написати Pascal/Object Pascal-код;
скомпілювати його під потрібну платформу;
отримати виконувану програму;
не залежати від одного комерційного середовища.

Free Pascal важливий тим, що дозволяє використовувати Pascal не тільки як навчальну мову, а як практичний інструмент для реальної розробки.

Free Pascal продовжує життя Pascal і Object Pascal у відкритій екосистемі.

Важливі акценти

Статус Теза Пояснення
Ключове Free Pascal є open source Компілятор доступний як відкрите програмне забезпечення.
Ключове Free Pascal підтримує Pascal і Object Pascal Можна писати як прості навчальні програми, так і обʼєктно-орієнтовані застосунки.
Ключове Free Pascal кросплатформений Його можна використовувати на різних операційних системах і архітектурах.
Ключове Free Pascal часто використовується разом із Lazarus Lazarus дає IDE, дизайнер форм і LCL для графічних застосунків.
Важливо Free Pascal не є повною копією Delphi Він має режими сумісності з Delphi, але не всі можливості й бібліотеки Delphi однакові.
Увага Не всі Delphi-проєкти можна перенести автоматично Старі компоненти, VCL-залежності й сторонні бібліотеки можуть вимагати ручної адаптації.

Історія

Free Pascal зʼявився як вільна альтернатива комерційним Pascal-компіляторам. Його розвиток повʼязаний із бажанням мати відкритий компілятор, який може підтримувати різні діалекти Pascal, різні платформи й сучасні можливості Object Pascal.

Free Pascal став важливим для спільноти, тому що дозволив:

  • писати Pascal-програми без привʼязки до одного постачальника;
  • компілювати код під різні платформи;
  • створювати open source Pascal-проєкти;
  • використовувати Lazarus як відкриту IDE;
  • підтримувати старий Pascal/Object Pascal-код;
  • навчати програмуванню на відкритих інструментах.

Free Pascal, Pascal, Object Pascal і Delphi

Ці поняття повʼязані, але не однакові.

Термін Що означає
Pascal Класична структурна мова програмування
Object Pascal Обʼєктно-орієнтований розвиток Pascal
Free Pascal Вільний компілятор Pascal/Object Pascal
Lazarus IDE для Free Pascal, схожа за ідеєю на Delphi
Delphi Комерційна IDE, компілятор і платформа від Embarcadero

Free Pascal — це компілятор. Lazarus — середовище розробки. Object Pascal — мова. Delphi — комерційна платформа й IDE.

Для чого використовується Free Pascal

Напрям Як використовується Free Pascal Приклади
Навчання Вивчення Pascal, алгоритмів і структурного програмування Консольні задачі, навчальні курси
Object Pascal Обʼєктно-орієнтована розробка Класи, модулі, компоненти
Desktop Графічні застосунки через Lazarus Windows, Linux, macOS desktop
Консольні програми Утиліти, скрипти, CLI Обробка файлів, автоматизація
Cross-platform Компіляція під різні ОС Windows, Linux, macOS та інші
Legacy Підтримка старого Pascal/Object Pascal-коду Turbo Pascal, Delphi-like код
Бізнес-системи Desktop-програми, бази даних, облік CRM, ERP-модулі, складські програми
Open source Відкриті Pascal-проєкти Lazarus, бібліотеки, утиліти

Основні можливості Free Pascal

Можливість Пояснення
Компіляція Pascal-коду Перетворює Pascal/Object Pascal-код у виконувану програму
Підтримка Object Pascal Дозволяє використовувати класи, обʼєкти, інтерфейси
Кросплатформеність Можна розробляти під різні ОС і архітектури
Режими сумісності Підтримує різні діалекти Pascal
Open Source Доступний як вільне програмне забезпечення
Інтеграція з Lazarus Дає можливість створювати GUI-застосунки
Підтримка модулів Дозволяє організовувати код у units
Робота з бібліотеками Можна створювати й використовувати зовнішні бібліотеки

Платформи

Free Pascal відомий своєю кросплатформеністю. Він може використовуватися для різних операційних систем і процесорних архітектур.

Типові платформи:

  • Windows;
  • Linux;
  • macOS;
  • FreeBSD;
  • інші Unix-подібні системи;
  • окремі embedded або спеціалізовані платформи;
  • різні архітектури процесорів залежно від збірки й підтримки.
Платформа Використання
Windows Desktop-програми, консольні утиліти, Lazarus-застосунки
Linux Desktop, server utilities, Lazarus, CLI
macOS Desktop і cross-platform розробка
FreeBSD Системні й серверні сценарії
Embedded / спеціальні платформи Можливі окремі сценарії залежно від підтримки компілятора

Режими компіляції

Free Pascal підтримує різні режими компіляції, щоб бути сумісним із різними діалектами Pascal.

Типові режими:

Режим Для чого
FPC mode Звичайний режим Free Pascal
ObjFPC mode Object Pascal у стилі Free Pascal
Delphi mode Сумісність із синтаксисом Delphi
Turbo Pascal mode Сумісність зі старим Turbo Pascal
Mac Pascal mode Сумісність із окремими старими Pascal-діалектами

Приклад директиви режиму:

{$mode objfpc}

Або:

{$mode delphi}

Встановлення Free Pascal

Free Pascal можна встановити з офіційного сайту або через пакетний менеджер операційної системи.

Приклади встановлення можуть відрізнятися залежно від ОС.

Для Debian/Ubuntu-подібних систем:

sudo apt install fp-compiler

Для Windows зазвичай використовують інсталятор з офіційного сайту:

https://www.freepascal.org/download.html

Для macOS можна використовувати офіційні пакети або пакетні менеджери, залежно від актуальної підтримки.

Перевірка встановлення

Після встановлення можна перевірити компілятор:

fpc -h

Або версію:

fpc -iV

Перша програма

Файл hello.pas:

program HelloWorld;

begin
  Writeln('Hello, Free Pascal!');
end.

Компіляція:

fpc hello.pas

Запуск у Linux/macOS:

./hello

Запуск у Windows:

hello.exe

Структура програми Free Pascal

Типова програма:

program ProgramName;

uses
  SysUtils;

var
  Name: string;

begin
  Name := 'Anna';
  Writeln('Привіт, ', Name);
end.

Основні частини:

Частина Призначення
program Назва програми
uses Підключення модулів
var Оголошення змінних
begin Початок основного блоку
end. Кінець програми

Змінні

program VariablesExample;

var
  Name: string;
  Age: Integer;

begin
  Name := 'Anna';
  Age := 17;

  Writeln('Привіт, ', Name);
  Writeln('Вік: ', Age);
end.

Умови

if Age >= 18 then
  Writeln('Дорослий')
else
  Writeln('Неповнолітній');

Цикли

Цикл for:

var
  I: Integer;

begin
  for I := 1 to 5 do
    Writeln(I);
end.

Цикл while:

while Counter < 10 do begin

 Writeln(Counter);
 Inc(Counter);

end;

Цикл repeat until:

repeat

 Writeln(Counter);
 Inc(Counter);

until Counter >= 10;

Процедури

procedure SayHello(Name: string);
begin
  Writeln('Привіт, ', Name);
end;

Виклик:

SayHello('Anna');

Функції

function Add(A, B: Integer): Integer;
begin
  Result := A + B;
end;

Виклик:

Writeln(Add(5, 7));

Units

Free Pascal підтримує модулі — unit.

Файл MathUtils.pas:

unit MathUtils;

{$mode objfpc}

interface

function Add(A, B: Integer): Integer;

implementation

function Add(A, B: Integer): Integer;
begin
  Result := A + B;
end;

end.

Використання:

program Main;

{$mode objfpc}

uses

 MathUtils;

begin

 Writeln(Add(2, 3));

end.

Object Pascal у Free Pascal

Free Pascal підтримує обʼєктно-орієнтоване програмування.

Приклад класу:

program ClassExample;

{$mode objfpc}

type
  TUser = class
  private
    FName: string;
  public
    constructor Create(const AName: string);
    procedure SayHello;
  end;

constructor TUser.Create(const AName: string);
begin
  FName := AName;
end;

procedure TUser.SayHello;
begin
  Writeln('Привіт, я ', FName);
end;

var
  User: TUser;

begin
  User := TUser.Create('Anna');
  try
    User.SayHello;
  finally
    User.Free;
  end;
end.

Класи

Класи дозволяють описувати обʼєкти з полями, методами й властивостями.

type
  TProduct = class
  private
    FName: string;
    FPrice: Currency;
  public
    property Name: string read FName write FName;
    property Price: Currency read FPrice write FPrice;
  end;

Records

type
  TCustomer = record
    Id: Integer;
    Name: string;
    Email: string;
  end;

Використання:

var

 Customer: TCustomer;

begin

 Customer.Id := 1;
 Customer.Name := 'Anna';
 Customer.Email := 'anna@example.com';

end.

Масиви

Статичний масив:

var
  Numbers: array[1..5] of Integer;

Динамічний масив:

var

 Numbers: array of Integer;

begin

 SetLength(Numbers, 3);
 Numbers[0] := 10;
 Numbers[1] := 20;
 Numbers[2] := 30;

end.

Винятки

Free Pascal підтримує обробку винятків.

try
  DoSomething;
except
  on E: Exception do
    Writeln('Помилка: ', E.Message);
end;

Блок try/finally:

Obj := TObject.Create; try

 // робота з обʼєктом

finally

 Obj.Free;

end;

Компіляція з параметрами

Базова компіляція:

fpc main.pas

Вивести більше інформації:

fpc -va main.pas

Вказати output-файл:

fpc -omain main.pas

Компіляція у режимі Delphi:

fpc -Mdelphi main.pas

Компіляція у режимі ObjFPC:

fpc -Mobjfpc main.pas

Основні файли проєкту

Файл Призначення
.pas Pascal/Object Pascal source code
.pp Альтернативне розширення Pascal-файлів
.ppu Скомпільований unit
.o Object file
.exe Виконуваний файл у Windows
.lpi Lazarus project information
.lpr Lazarus program file
.lfm Lazarus form file

Free Pascal і Lazarus

Lazarus — це професійна open source IDE для Free Pascal.

Lazarus дає:

  • редактор коду;
  • дизайнер форм;
  • Object Inspector;
  • компоненти;
  • debugger;
  • проєкти;
  • LCL;
  • cross-platform GUI;
  • інтеграцію з Free Pascal.

Free Pascal — компілює код. Lazarus — дає зручне середовище для створення програм.

LCL

LCL або Lazarus Component Library — це бібліотека компонентів Lazarus.

LCL схожа за ідеєю на VCL у Delphi, але орієнтована на cross-platform desktop.

LCL дозволяє створювати:

  • форми;
  • кнопки;
  • меню;
  • таблиці;
  • поля введення;
  • діалоги;
  • desktop-застосунки.

Free Pascal і Delphi

Free Pascal має режими сумісності з Delphi, але це не означає, що будь-який Delphi-проєкт автоматично скомпілюється у FPC.

Схожість Відмінність
Object Pascal-синтаксис Не всі можливості Delphi повністю збігаються
Класи, units, exceptions Бібліотеки VCL і LCL різні
Режим Delphi Сторонні Delphi-компоненти можуть не працювати
Можливість міграції частини коду Великі проєкти потребують адаптації

Міграція з Delphi до Free Pascal / Lazarus

Міграція може бути корисною, якщо потрібно:

  • перейти на open source-інструменти;
  • зробити застосунок кросплатформеним;
  • зменшити залежність від комерційних ліцензій;
  • оживити старий Pascal/Object Pascal-код;
  • перенести частину бізнес-логіки.

Але міграція потребує перевірки:

  • синтаксису;
  • бібліотек;
  • компонентів;
  • VCL-залежностей;
  • баз даних;
  • звітів;
  • COM/ActiveX;
  • сторонніх пакетів;
  • роботи з Windows API.

Free Pascal і бази даних

Free Pascal може використовуватися для роботи з базами даних, особливо разом із Lazarus.

Типові СУБД:

  • SQLite;
  • Firebird;
  • PostgreSQL;
  • MySQL;
  • MariaDB;
  • Microsoft SQL Server через відповідні драйвери;
  • ODBC;
  • інші джерела даних.

Типові задачі:

  • підключення до бази;
  • виконання SQL;
  • читання даних;
  • оновлення записів;
  • транзакції;
  • форми для введення даних;
  • звіти.

Приклад SQL-логіки

У реальному Lazarus-проєкті SQL часто виконується через компоненти доступу до даних.

Ідея запиту:

SELECT id, name, email
FROM customers
WHERE city = 'Київ';

У Pascal-коді це може бути частиною логіки репозиторію або форми.

Free Pascal у навчанні

Free Pascal добре підходить для навчання, тому що:

  • безкоштовний;
  • відкритий;
  • підтримує класичний Pascal;
  • працює на різних ОС;
  • дозволяє вивчати алгоритми;
  • підходить для консольних задач;
  • дає шлях до Object Pascal і Lazarus;
  • не потребує комерційної ліцензії.

Типові навчальні теми:

  • змінні;
  • типи;
  • умови;
  • цикли;
  • масиви;
  • records;
  • процедури;
  • функції;
  • рекурсія;
  • файли;
  • класи;
  • модулі.

Free Pascal у бізнес-системах

Free Pascal може використовуватися в бізнес-системах, особливо через Lazarus.

Можливі сценарії:

  • складський облік;
  • прості ERP-модулі;
  • CRM;
  • документообіг;
  • desktop-клієнти до бази даних;
  • локальні програми підприємства;
  • інструменти імпорту/експорту;
  • консольні утиліти для автоматизації;
  • програми для роботи з файлами й обладнанням.

Free Pascal і legacy

Free Pascal корисний для підтримки старого Pascal/Object Pascal-коду.

Legacy-код може походити з:

  • Turbo Pascal;
  • Borland Pascal;
  • старих Delphi-проєктів;
  • навчальних систем;
  • інженерних програм;
  • облікових застосунків;
  • внутрішніх корпоративних утиліт.

Free Pascal може бути мостом між старим Pascal-кодом і сучаснішими open source-інструментами.

Free Pascal і консольні утиліти

Free Pascal добре підходить для консольних програм.

Приклад утиліти, яка читає аргументи:

program ArgsExample;

var
  I: Integer;

begin
  for I := 1 to ParamCount do
    Writeln('Аргумент ', I, ': ', ParamStr(I));
end.

Компіляція:

fpc args_example.pas

Запуск:

./args_example first second third

Free Pascal і файли

Приклад запису у файл:

program WriteFileExample;

var
  F: Text;

begin
  Assign(F, 'output.txt');
  Rewrite(F);

  Writeln(F, 'Hello from Free Pascal');

  Close(F);
end.

Приклад читання файлу:

program ReadFileExample;

var

 F: Text;
 Line: string;

begin

 Assign(F, 'output.txt');
 Reset(F);
 while not Eof(F) do
 begin
   Readln(F, Line);
   Writeln(Line);
 end;
 Close(F);

end.

Free Pascal і packages

У Free Pascal і Lazarus є поняття пакетів.

Пакети можуть містити:

  • units;
  • компоненти;
  • бібліотеки;
  • ресурси;
  • залежності;
  • design-time компоненти для IDE.

У Lazarus пакети використовуються для розширення IDE та повторного використання коду.

Переваги Free Pascal

Перевага Пояснення
Безкоштовний Можна використовувати без купівлі комерційної IDE
Open Source Код і розвиток відкриті для спільноти
Кросплатформений Підтримує різні ОС і архітектури
Підтримує Pascal і Object Pascal Підходить для навчання й реальних програм
Сумісність із різними діалектами Є режими Turbo Pascal, Delphi, ObjFPC
Добре працює з Lazarus Можна створювати GUI-застосунки
Підходить для legacy Може допомогти підтримувати старий Pascal-код

Недоліки Free Pascal

Недолік Пояснення
Менша популярність Значно менше поширений, ніж Python, JavaScript, Java, C# або Go
Менше сучасних бібліотек Екосистема менша, ніж у популярних мов
Не повна заміна Delphi Частина Delphi-коду або компонентів потребує адаптації
Менше вакансій Ринок роботи менший
Не основний вибір для web frontend Для frontend частіше використовують JavaScript або TypeScript
Не основний вибір для AI Для AI переважно використовують Python
Іноді складніша інтеграція з сучасними сервісами Для деяких API або SDK може не бути готових бібліотек

Типові помилки новачків

Помилка Чому це проблема
Плутати Free Pascal і Lazarus Free Pascal — компілятор, Lazarus — IDE
Не вказувати режим компіляції Код може компілюватися не так, як очікується
Плутати Delphi-сумісність із повною ідентичністю Delphi і Free Pascal мають відмінності
Не розділяти код на units Великі програми стають хаотичними
Не звільняти обʼєкти Можливі витоки памʼяті
Писати всю логіку у формах Lazarus Важко підтримувати й тестувати програму

Хороша структура Free Pascal-проєкту

Приклад структури консольного проєкту:

project/
├── src/
│   ├── main.pas
│   ├── user_service.pas
│   └── file_utils.pas
├── tests/
├── README.md
└── build.sh

Приклад структури Lazarus-проєкту:

project/ ├── forms/ │ ├── main_form.pas │ └── customer_form.pas ├── services/ │ └── customer_service.pas ├── repositories/ │ └── customer_repository.pas ├── models/ │ └── customer.pas ├── project.lpi ├── project.lpr └── README.md

Free Pascal у порівнянні з Delphi

Критерій Free Pascal Delphi
Ліцензія Open Source Комерційна, з окремими редакціями
IDE Найчастіше Lazarus Delphi IDE / RAD Studio
UI-бібліотека LCL VCL, FireMonkey
Сумісність Має режими сумісності Власна офіційна екосистема Delphi
Ціна Безкоштовний Залежить від редакції
Enterprise-можливості Можливі, але екосистема менша Сильніші комерційні інструменти

Free Pascal у порівнянні з іншими мовами

Мова Порівняння
Pascal Free Pascal є компілятором для Pascal і Object Pascal
Object Pascal Free Pascal підтримує Object Pascal і власні розширення
Delphi Delphi комерційний, Free Pascal відкритий
Python Python популярніший для автоматизації й AI; Free Pascal компілюється в нативний код
C C ближча до системного програмування; Free Pascal читабельніший для прикладних задач
C# C# сильний у .NET; Free Pascal сильний для відкритої Pascal-екосистеми
JavaScript / TypeScript JS/TS головні для web; Free Pascal більше для desktop, навчання й legacy

Коли Free Pascal — хороший вибір

Задача Чи підходить Free Pascal?
Навчання Pascal Дуже добре
Консольні програми Добре
Lazarus desktop-застосунки Добре
Cross-platform desktop Добре
Підтримка старого Pascal-коду Добре
Міграція частини Delphi-коду Можливо, але потрібна перевірка сумісності
Новий web frontend Не основний вибір
AI / Data Science Не основний вибір

Рекомендований шлях навчання Free Pascal

Етап Що вивчати
1 Встановлення Free Pascal
2 Компіляція першої програми через fpc
3 Основи Pascal: змінні, типи, умови, цикли
4 Процедури й функції
5 Масиви, records, файли
6 Units
7 Режими компіляції: objfpc, delphi
8 Класи й Object Pascal
9 Exceptions і try/finally
10 Lazarus IDE
11 LCL і форми
12 SQL і бази даних
13 Архітектура desktop-застосунків

Мінімальний набір для першого проєкту

Компонент Рекомендація
Компілятор Free Pascal 3.2.2 або актуальна стабільна версія
IDE Lazarus або простий редактор
Перший проєкт Console application
Перші теми Змінні, умови, цикли, процедури, функції
Для GUI Lazarus + LCL
Для баз даних SQLite або Firebird для старту
Контроль версій Git

Приклад навчальної задачі

Знайти суму чисел від 1 до N:

program SumToN;

var
  N: Integer;
  I: Integer;
  Sum: Integer;

begin
  Write('Введіть N: ');
  Readln(N);

  Sum := 0;

  for I := 1 to N do
    Sum := Sum + I;

  Writeln('Сума = ', Sum);
end.

Приклад сортування

program BubbleSortExample;

var
  A: array[1..5] of Integer;
  I, J, Temp: Integer;

begin
  A[1] := 5;
  A[2] := 2;
  A[3] := 4;
  A[4] := 1;
  A[5] := 3;

  for I := 1 to 4 do
    for J := 1 to 5 - I do
      if A[J] > A[J + 1] then
      begin
        Temp := A[J];
        A[J] := A[J + 1];
        A[J + 1] := Temp;
      end;

  for I := 1 to 5 do
    Writeln(A[I]);
end.

Простими словами

Free Pascal — це безкоштовний компілятор, який дозволяє писати Pascal/Object Pascal-програми на сучасних системах.

Якщо Pascal — це мова, то Free Pascal — це інструмент, який перетворює цю мову на працюючу програму.

Висновок

Free Pascal — важливий відкритий компілятор для Pascal і Object Pascal.

Він корисний для:

  • навчання програмуванню;
  • підтримки Pascal-коду;
  • Object Pascal-розробки;
  • консольних утиліт;
  • desktop-застосунків через Lazarus;
  • cross-platform розробки;
  • open source Pascal-екосистеми;
  • міграції або модернізації частини старих систем.

Free Pascal не є найпопулярнішим інструментом сучасної індустрії, але він має важливу роль: зберігає й розвиває Pascal/Object Pascal у відкритому, доступному та кросплатформеному форматі.

Free Pascal — це міст між класичним Pascal, сучасним Object Pascal і відкритою cross-platform розробкою.

Джерела