Free Pascal
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 розробкою.
Джерела
- Free Pascal: https://www.freepascal.org/
- Free Pascal Downloads: https://www.freepascal.org/download.html
- Free Pascal Documentation: https://www.freepascal.org/docs.html
- Free Pascal Wiki: https://wiki.freepascal.org/
- Lazarus IDE: https://www.lazarus-ide.org/
- Lazarus Documentation: https://wiki.freepascal.org/Lazarus_Documentation
- Installing the Free Pascal Compiler: https://wiki.freepascal.org/Installing_the_Free_Pascal_Compiler
- Modern Object Pascal Introduction for Programmers: https://castle-engine.io/modern_pascal