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