Free Pascal
Використання:
├── services/
Знайти суму чисел від 1 до N:<pre>
FName := AName;== Міграція з Delphi до Free Pascal / Lazarus == program ProgramName; |- |'''Назва''' |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/ |}
!Режим {| class="wikitable"
Типові задачі: var
Цикл while:
Close(F); User.SayHello;скомпілювати його під потрібну платформу;
for I := 1 to 5 do public│ └── customer_form.pas
end; Line: string;|- | style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове |'''Free Pascal виступає як open source''' |Компілятор доступний як відкрите програмне забезпечення (ПЗ). property Price: Currency read FPrice write FPrice;
sudo apt install fp-compiler while Counter < 10 do begin
Writeln(Counter); Inc(Counter);end;
Цикл repeat until:
Free Pascal часто скорочують як '''FPC'''. A [J] := A [J + 1]; !Призначення !Призначення
public{$mode objfpc}
Компіляція:
- units;
- компоненти;
- бібліотеки;
- ресурси;
- залежності;
- design-time компоненти для IDE. begin
!Значення
Або версію:
end. begin
Writeln(A [I]);project/
У Pascal-коді це здатна бути частиною логіки репозиторію або форми. TCustomer = record
Міграція здатна бути корисною, якщо потрібно: Free Pascal має режими сумісності з Delphi, але це не означає, що будь-який Delphi-проєкт автоматизовано скомпілюється у FPC. У Free Pascal і Lazarus виступає як поняття пакетів. * форми;
- кнопки;
- меню;
- таблиці;
- поля введення;
- діалоги;
- desktop-застосунки. |-
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Увага |Не всі Delphi-проєкти можна перенести автоматизовано |Старі компоненти, VCL-залежності й сторонні бібліотеки можуть вимагати ручної адаптації. |- |Навчання Pascal | style="background:#d4edda; color:#155724; font-weight:bold;" |Дуже добре |- |Консольні програми | style="background:#d4edda; color:#155724; font-weight:bold;" |Добре |- |Lazarus desktop-застосунки | style="background:#d4edda; color:#155724; font-weight:bold;" |Добре |- |Cross-platform desktop | style="background:#d4edda; color:#155724; font-weight:bold;" |Добре |- |технічна підтримка старого Pascal-коду | style="background:#d4edda; color:#155724; font-weight:bold;" |Добре |- |Міграція частини Delphi-коду | style="background:#fff3cd; color:#856404; font-weight:bold;" |Можливо, але потрібна перевірка сумісності |- |Новий web frontend | style="background:#f8d7da; color:#721c24; font-weight:bold;" |Не базовий вибір |- |AI / Data Science | style="background:#f8d7da; color:#721c24; font-weight:bold;" |Не базовий вибір |}
Вказати output-файл:Динамічний масив:Writeln('Дорослий')== Основні файли проєкту == |- |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-застосунків |}
try Типова програма:<pre>
Приклад структури Lazarus-проєкту:== Процедури == |- |'''Компілятор''' |Free Pascal 3.2.2 або актуальна стабільна реліз системи |- |'''IDE''' |Lazarus або простий редактор |- |'''Перший проєкт''' |Console application |- |'''Перші теми''' |Змінні, умови, цикли, процедури, функції |- |'''Для GUI''' |Lazarus + LCL |- |'''Для баз даних''' |SQLite або Firebird для старту |- |'''Контроль версій''' |Git |}
!Етап begin
TUser = class Email: string;
Lazarus дає:
Режими компіляції
Основні функції ERP Free Pascal
function Add(A, B: Integer): Integer;
Типові навчальні теми:
begin
Write('Введіть N: ');
Для macOS можна використовувати офіційні пакети або пакетні менеджери, залежно від актуальної підтримки. program Main;
| Що означає
uses begin Free Pascal добре підходить для консольних програм.Для Windows зазвичай використовують інсталятор з офіційного сайту:
Для Debian/Ubuntu-подібних систем:<pre> == Винятки == Sum := Sum + I; Customer.Id := 1; == Free Pascal і файли == !Задача Customer: TCustomer;
Writeln('Привіт, я ', FName);
Або:Вивести більше інформації:Rewrite(F); SetLength(Numbers, 3); // робота з обʼєктом
interface begin A [J + 1] := Temp;Приклад читання файлу: fpc args_example.pas Запуск:Free Pascal важливий тим, що дає можливість використовувати Pascal не тільки як навчальну мову, а як практичний інструмент для реальної розробки. |} Obj := TObject.Create;
|
Схожість
repeat MathUtils;
│ └── customer.pas * Turbo Pascal; * Borland Pascal; * старих Delphi-проєктів; * навчальних систем; * інженерних програм; * облікових застосунків; * внутрішніх корпоративних утиліт. begin end. |- | style="background:#fff3cd; color:#856404; font-weight:bold;" |критично |'''Free Pascal не виступає як повною копією Delphi''' |Він має режими сумісності з Delphi, але не всі функції ERP й бібліотеки Delphi однакові. |- | style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове |'''Free Pascal часто застосовується для разом із Lazarus''' |Lazarus дає IDE, дизайнер форм і LCL для графічних застосунків.== Free Pascal у порівнянні з іншими мовами == var while not Eof(F) do
Reset(F);
I: Integer;
Writeln('Неповнолітній');
|
Теза | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Менша популярність | Значно менше поширений, ніж Python, JavaScript, Java, C# або Go | ||||||||||||||||||
| Менше сучасних бібліотек | ERP-платформа менша, ніж у популярних мов | ||||||||||||||||||
| Не повна заміна Delphi | Частина Delphi-коду або компонентів потребує адаптації | ||||||||||||||||||
| Менше вакансій | ринок ERP в Україні роботи менший | ||||||||||||||||||
| Не базовий вибір для web frontend | Для frontend частіше використовують JavaScript або TypeScript | ||||||||||||||||||
| Не базовий вибір для AI | Для AI переважно використовують Python | ||||||||||||||||||
| Іноді складніша інтеграційні функції ERP з сучасними сервісами | Для деяких API або SDK здатна не бути готових бібліотек |
Records
!Перевага var
Цикли
|- |Плутати Free Pascal і Lazarus |Free Pascal — компілятор, Lazarus — IDE |- |Не вказувати режим компіляції |Код здатна компілюватися не так, як очікується |- |Плутати Delphi-сумісність із повною ідентичністю |Delphi і Free Pascal мають відмінності |- |Не розділяти код на units |Великі програми стають хаотичними |- |Не звільняти обʼєкти |Можливі витоки памʼяті |- |Писати всю логіку у формах Lazarus |Важко підтримувати й тестувати програму |}
type begin
unit MathUtils; program VariablesExample; User := TUser.Create('Anna');
Компіляція:
var
Компіляція у режимі ObjFPC:
{| class="wikitable" Id: Integer; A: array [1..5] of Integer; Але міграція потребує перевірки: Free Pascal зʼявився як вільна альтернатива комерційним Pascal-компіляторам.<blockquote>'''Free Pascal — це міст між класичним Pascal, сучасним Object Pascal і відкритою cross-platform розробкою.'''</blockquote> I: Integer;
https://www.freepascal.org/download.html
Free Pascal можна встановити з офіційного сайту або через пакетний менеджер операційної системи. hello.exe
Name: string;
function Add(A, B: Integer): Integer; ├── src/ begin begin У реальному Lazarus-проєкті SQL часто виконується через компоненти доступу до даних.Ці поняття повʼязані, але не однакові. !Платформа * підключення до бази; * виконання SQL; * читання даних; * оновлення версій записів; * транзакції; * форми для введення даних; * звіти.<blockquote>'''Free Pascal — це відкритий і кросплатформений компілятор Pascal/Object Pascal, який дає можливість писати програми без привʼязки до комерційного середовища Delphi.'''</blockquote> == Для чого застосовується для Free Pascal == fpc -Mdelphi main.pas == Приклад SQL-логіки ==
Перевірка встановлення
Free Pascal у порівнянні з Delphi
| Приклади | Компонент
Free Pascal і Delphiend; Класине залежати від одного комерційного середовища. uses var Free Pascal відомий своєю кросплатформеністю. |- |
Ключове | Free Pascal підтримує Pascal і Object Pascal | Можна писати як прості навчальні програми, так і обʼєктно-орієнтовані застосунки.== Object Pascal у Free Pascal ==
Writeln(Line);
Inc(Counter);
Free Pascal підтримує різні режими компіляції, щоб бути сумісним із різними діалектами Pascal.== Змінні == begin Age := 17; procedure TUser.SayHello; DoSomething; | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Object Pascal-синтаксис | Не всі функції ERP Delphi на 100% збігаються | |||||||||||||||||
| Класи, units, exceptions | Бібліотеки VCL і LCL різні | |||||||||||||||||
| Режим Delphi | Сторонні Delphi-компоненти можуть не працювати | |||||||||||||||||
| Можливість міграції частини коду | Великі проєкти потребують адаптації |
end;
Free Pascal і packages
- перейти на open source-інструменти;
- зробити застосунок кросплатформеним;
- зменшити залежність від комерційних ліцензій;
- оживити старий Pascal/Object Pascal-код;
- перенести частину бізнес-логіки.
begin project/
Приклад директиви режиму:
== Головна ідея Free Pascal == A [3] := 4; == Висновок == except <blockquote>'''Free Pascal здатна бути мостом між старим Pascal-кодом і сучаснішими open source-інструментами.'''</blockquote>
Використання:
FROM customers
Запуск у Windows:
begin │ └── customer_repository.pas SysUtils;
Умови
Запуск у Linux/macOS:
== Недоліки Free Pascal == │ ├── main_form.pas try I: Integer;
Приклад класу:<pre> Базова компіляція:<pre> Writeln(Add(2, 3)); !Рекомендація WHERE city = 'Київ'; !Free Pascal if A [J] > A [J + 1] then
Пакети можуть містити: begin var ├── models/ {$mode objfpc} Writeln('Аргумент ', I, ': ', ParamStr(I)); fpc -omain main.pas finally
!Термін SELECT id, name, email
Компіляція з параметрами
Приклад навчальної задачі
Readln(N);
Файл hello.pas:
type
Writeln(Add(5, 7));
if Age >= 18 then
Writeln('Вік: ', Age);
<pre>
== конкурентні переваги Free Pascal ==
end. Legacy-код здатна походити з:
type
until Counter >= 10;
{| class="wikitable"
Assign(F, 'output.txt');
N: Integer;
!Відмінність
├── forms/
program ReadFileExample;
F: Text;
{| class="wikitable"
│ ├── user_service.pas
Виклик:
LCL схожа за ідеєю на VCL у Delphi, але орієнтована на cross-platform desktop. {$mode delphi} Його головна ідея:<pre> property Name: string read FName write FName; Ідея запиту:<pre> == Масиви == Writeln('Помилка: ', E.Message); var {$mode objfpc}
Компіляція у режимі Delphi:
LCL дає можливість створювати: end;
!Як застосовується для Free Pascal end;
Result := A + B; Numbers: array [1..5] of Integer; {| class="wikitable sortable"
Readln(F, Line);
Temp := A [J]; begin Файл <code>MathUtils.pas</code>:<pre> ├── README.md
Приклад структури консольного проєкту:<pre> procedure SayHello; == Хороша структура Free Pascal-проєкту ==
!Помилка program BubbleSortExample; !Частина
end. Close(F);
== Історія K2 ERP == Writeln('Hello, Free Pascal!'); <pre> FName: string;
!Статус Writeln(F, 'Hello from Free Pascal'); <blockquote>'''Free Pascal — це компілятор. Lazarus — середовище розробки. │ └── file_utils.pas
- синтаксису;
- бібліотек;
- компонентів;
- VCL-залежностей;
- баз даних;
- звітів;
- COM/ActiveX;
- сторонніх пакетів;
- роботи з Windows API. Delphi — комерційна платформа й IDE.'''</blockquote>
├── repositories/
program HelloWorld; '''LCL''' або '''Lazarus Component Library''' — це бібліотека компонентів Lazarus. end. Free Pascal — це безкоштовний компілятор, який дає можливість писати Pascal/Object Pascal-програми на сучасних системах. Assign(F, 'output.txt'); == Коли Free Pascal — хороший вибір ==
else ├── tests/ ./args_example first second third
FPrice: Currency; var fpc -Mobjfpc main.pas
Result := A + B; Він дає можливість створювати консольні програми. end; ├── project.lpi begin end; Age: Integer;
for I := 1 to ParamCount do
Виклик:
{| class="wikitable"
begin
Приклади встановлення можуть відрізнятися залежно від ОС.== Free Pascal у навчанні ==
begin !Delphi
F: Text;
Free Pascal підтримує модулі — <code>unit</code>. Він здатна використовуватися для різних операційних систем і процесорних архітектур. !Пояснення == Важливі акценти ==
end.== Коротко ==
- змінні;
- типи;
- умови;
- цикли;
- масиви;
- records;
- процедури;
- функції;
- рекурсія;
- файли;
- класи;
- модулі. '''Free Pascal''' або '''Free Pascal Compiler''' — це вільний компілятор для мов '''[[Pascal]]''' та '''[[Object Pascal]]'''. Приклад утиліти, яка читає аргументи:<pre>
{| class="wikitable" fpc -iV !Можливість == LCL ==
end; fpc -va main.pas !Файл var
Основні частини:
|- |ліцензійний пакет |Open Source |Комерційна, з окремими редакціями |- |IDE |Найчастіше Lazarus |Delphi IDE / RAD Studio |- |UI-бібліотека |LCL |VCL, FireMonkey |- |Сумісність |Має режими сумісності |Власна офіційна ERP-платформа Delphi |- |Ціна |Безкоштовний |Залежить від редакції |- |Enterprise-можливості |Можливі, але ERP-платформа менша |Сильніші комерційні інструменти |}
Джерела
!Мова Типові платформи:
Мінімальний набір для першого проєкту
|- |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 |}
A [1] := 5;Lazarus — це професійна open source IDE для Free Pascal. Writeln('Привіт, ', Name);
Встановлення Free Pascal
Він корисний для: Free Pascal добре підходить для навчання, тому що: for I := 1 to 4 do
Free Pascal здатна використовуватися для роботи з базами даних, особливо разом із Lazarus. Free Pascal корисний для підтримки старого Pascal/Object Pascal-коду.Free Pascal продовжує життя Pascal і Object Pascal у відкритій екосистемі.
- безкоштовний;
- відкритий;
- підтримує класичний Pascal;
- функціонує на різних ОС;
- дає можливість вивчати алгоритми;
- підходить для консольних задач;
- дає шлях до Object Pascal і Lazarus;
- не потребує комерційної ліцензії. fpc -h
for:Типові СУБД:
написати Pascal/Object Pascal-код;
function Add(A, B: Integer): Integer;
Writeln('Привіт, ', Name);
end;
end;
Name := 'Anna';
end. {| class="wikitable"
Free Pascal здатна використовуватися в бізнес-системах, особливо через Lazarus. |-
|'''Навчання'''
|Вивчення 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, бібліотеки, утиліти
|}
Можливі сценарії:
A [5] := 3; Numbers: array of Integer;
| Компіляція Pascal-коду | Перетворює Pascal/Object Pascal-код у виконувану програму |
| технічна підтримка Object Pascal | дає можливість використовувати класи, обʼєкти, інтерфейси |
| Кросплатформеність | Можна розробляти під різні ОС і архітектури |
| Режими сумісності | підтримує різні діалекти Pascal |
| Open Source | Доступний як вільне програмне забезпечення (ПЗ) |
| інтеграційні функції ERP з Lazarus | Дає можливість створювати GUI-застосунки |
| технічна підтримка модулів | дає можливість організовувати код у units |
| Робота з бібліотеками | Можна створювати й використовувати зовнішні бібліотеки |
!Для чого │ └── customer_service.pas
begin
- Windows;
- Linux;
- macOS;
- FreeBSD;
- інші Unix-подібні системи;
- окремі embedded або спеціалізовані платформи;
- різні архітектури процесорів залежно від збірки й підтримки. fpc main.pas
for I := 1 to N do
for J := 1 to 5 - I do
- SQLite;
- Firebird;
- PostgreSQL;
- MySQL;
- MariaDB;
- Microsoft SQL Server через відповідні драйвери;
- ODBC;
- інші джерела даних.
Якщо Pascal — це мова, то Free Pascal — це інструмент, який перетворює цю мову на працюючу програму.
constructor Create(const AName: string); end;
end; !Порівняння
Типові помилки новачків
Writeln(I);
implementation |- |program |Назва програми |- |uses |Підключення модулів |- |var |Оголошення змінних |- |begin |Початок основного блоку |- |end. |Кінець програми |}
User.Free;
└── build.sh end. Numbers [2] := 30; !Що вивчати
Writeln('Привіт, ', Name);
./hello
Рекомендований шлях навчання Free Pascal
procedure SayHello(Name: string);
Name := 'Anna'; Customer.Name := 'Anna';
Блок try/finally:
end. {| class="wikitable"
{$mode objfpc}
for I := 1 to 5 doSum: Integer;!Недолік
└── README.md
TProduct = classFree Pascal створений для того, щоб дати розробникам вільний, відкритий і кросплатформений компілятор Pascal/Object Pascal. !Чому це проблема
Sum := 0; end. Типові режими: program WriteFileExample; var |- |Windows |Desktop-програми, консольні утиліти, Lazarus-застосунки |- |Linux |Desktop, server utilities, Lazarus, CLI |- |macOS |Desktop і cross-platform розробка програмного забезпечення |- |FreeBSD |Системні й серверні сценарії |- |Embedded / спеціальні платформи |Можливі окремі сценарії залежно від підтримки компілятора |} beginI, J, Temp: Integer; Obj.Free; !НапрямFree Pascal і legacy
|- |FPC mode |Звичайний режим Free Pascal |- |ObjFPC mode |Object Pascal у стилі Free Pascal |- |Delphi mode |Сумісність із синтаксисом Delphi |- |Turbo Pascal mode |Сумісність зі старим Turbo Pascal |- |Mac Pascal mode |Сумісність із окремими старими Pascal-діалектами |} Класи дозволяють описувати обʼєкти з полями, методами й властивостями.== Структура програми Free Pascal == Статичний масив:Units
Name: string; Writeln(Counter); end.Writeln('Сума = ', Sum);Free Pascal у бізнес-системах
Пояснення
Free Pascal і Lazarus | |
|---|---|
| Pascal | Класична структурна мова програмування |
| Object Pascal | Обʼєктно-орієнтований дорожня карта розвитку Pascal |
| Free Pascal | Вільний компілятор Pascal/Object Pascal |
| Lazarus | IDE для Free Pascal, схожа за ідеєю на Delphi |
| Delphi | Комерційна IDE, компілятор і платформа від Embarcadero |
| Чи підходить Free Pascal? Окремо варто відзначити desktop-застосунки, серверні утиліти, бібліотеки, навчальні проєкти, cross-platform програми і застосунки з графічним інтерфейсом через Lazarus. Object Pascal — мова. Його дорожня карта розвитку повʼязаний із бажанням мати відкритий компілятор, який здатна підтримувати різні діалекти Pascal, різні платформи й сучасні функції ERP Object Pascal. !Параметр | Пояснення * 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 |
|---|