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

Fortran

Матеріал з K2 ERP Wiki

implicit none

real, intent(inout) :: a(:)

Slicing робить код коротшим і ближчим до математичного запису. Приклад: gfortran main.f90 -o main

C interoperability

implicit none

Інструменти:


program hello

== fpm ==

'''Intel Fortran Compiler''' — комерційний/на безкоштовній основі доступний через Intel oneAPI компілятор для Fortran. # Профілювати перед оптимізацією. end function square

* Fortran library + Python wrapper;
* NumPy/SciPy integration;
* f2py;
* C ABI wrapper;
* performance-critical kernels;
* scientific workflows. * '''Column-major order''' — порядок зберігання багатовимірних масивів у Fortran. Modules допомагають організувати код і створюють explicit interfaces.== Floating-point tolerance ==

 real :: y

# Використовувати modern Fortran free form. * optimizing compilers;
* array syntax;
* long history in supercomputing;
* BLAS/LAPACK;
* MPI;
* OpenMP;
* coarrays;
* numerical focus;
* legacy scientific codes;
* portability across HPC systems. Потрібні tolerances.<ref>https://gcc.gnu.org/fortran/</ref>
== do concurrent ==

[[Категорія:Fortran]]

GFortran — популярний open-source компілятор. Вона не модна в web-розробці, але дуже сильна в HPC, фізиці, кліматичних моделях, CFD, лінійній алгебрі й старих наукових кодових базах.

Такий підхід дає можливість поєднати зручність Python і швидкість Fortran. p%x = 1.0


* суперкомп’ютери;
* кластери;
* distributed simulations;
* CFD;
* climate models;
* physics codes. Масиви — одна з головних сильних сторін Fortran.<pre>
-Wextra
<div style="background:#f6ffed;border-left:6px solid #27ae60;padding:14px 18px;margin:16px 0;border-radius:8px;">
<pre>

== Дивіться так само ==

Vectorization дає можливість CPU виконувати одну операцію над кількома даними. * '''iso_fortran_env''' — стандартний module для portable constants і kinds. Щоб допомогти компілятору:

== Масиви ==
 implicit none
end subroutine scale_array

<pre>

Це означає, що навіть розробники Python часто непрямо користуються Fortran-світом. # Додати CI.== Derived types ==

* out-of-bounds array access;
* uninitialized variables;
* integer overflow;
* unsafe input files;
* legacy I/O;
* unchecked assumptions;
* memory corruption;
* unsafe C interoperability;
* build system risks;
* supply chain dependencies;
* running untrusted scientific code. Для звичайних web, CRM, ERP або mobile задач Fortran майже ніколи не виступає як першим вибором. Приклад:

== Modules ==

<code>do concurrent</code> описує цикл, ітерації якого можуть виконуватися незалежно. # Ввести derived types.[[Категорія:Пояснення термінів]]
<pre>

Обмеження:

Порівняння:
end function add
real, allocatable :: a(:)
<pre>

logical :: active

Web/API layer → Python/Go/C#/Java service → Fortran numerical library

* integer;
* real;
* complex;
* logical;
* character. # Додавати <code>intent</code> до arguments.

!$omp end parallel do


== Продуктивність ==

Це означає, що перший індекс змінюється найшвидше.

Використання: -fcheck=all

Індексація масивів

real :: mass

end do fpm run

Але його потрібно модернізувати обережно. * Floating-point tolerance — допустима похибка для порівняння чисел із плаваючою комою. Окремо варто відзначити Julia, R і інших мов. GFortran — GNU Fortran compiler у складі GCC.[1] Fortran у бізнесі корисний, якщо виступає як:

Reproducibility

./main

  • викликати C з Fortran;
  • викликати Fortran з C;
  • інтегруватися з іншими мовами через C ABI;
  • створювати bindings для Python. module procedure norm_complex

Derived type — користувацький тип даних. як приклад, у Fortran часто краще:

Nested loops часто використовуються в чисельних кодах. Це простий спосіб уникнути багатьох тихих помилок. Часто це код, який десятиліттями перевірявся в наукових і промислових задачах. print *, square(3.0) !$omp parallel do

end do Це типовий pattern: high-level language для користувача, Fortran/C/C++ для performance. Fixed form має історичні правила колонок. y = x * x

if (x == y) then

print *, "equal"

end if

Краще:

if (abs(x - y) < tolerance) then
 print *, "close enough"
end if

Floating-point arithmetic має похибки округлення.

Це критично для наукових обчислень.

Debugging

Типи даних

Fortran і ERP-системи

Fortran Wiki зазначав, що з GCC 16.1 у квітні 2026 року GFortran нативно підтримує coarrays Fortran 2008 і паралельні функції ERP Fortran 2018 на single-node shared memory.== Legacy modernization ==

  • наукові моделі;
  • інженерні симуляції;
  • чисельні бібліотеки;
  • legacy scientific code;
  • high-performance kernels;
  • climate/weather models;
  • financial numerical models;
  • industrial simulation;
  • integration with HPC. * OpenMP — API для shared-memory parallelism. * modules;
  • explicit interfaces;
  • array syntax;
  • allocatable arrays;
  • derived types;
  • generic interfaces;
  • elemental functions;
  • pure procedures;
  • coarrays;
  • do concurrent;
  • interoperability with C;
  • object-oriented features;
  • better type safety;
  • free-form source. * HPC — High Performance Computing. real :: x
  • NVIDIA HPC SDK Fortran;
  • NAG Fortran Compiler;
  • LLVM Flang;
  • LFortran;
  • Cray Fortran;
  • IBM XL Fortran historically;
  • vendor compilers для HPC systems. Приклад:

Fortran має bindings для роботи з цими форматами. * окреме чисельне ядро для складних розрахунків;

  • інтеграційні функції ERP з legacy scientific/engineering code;
  • оптимізаційна модель;
  • прогнозна модель;
  • обробка великих чисельних масивів;
  • backend-бібліотека, яку викликає інша мова;
  • розрахунковий компонент для інженерного бізнес-процесу. # Профілювати performance перед оптимізацією. real, intent(in) :: x
  • не mainstream для web/backend;
  • менший ринок ERP в Україні розробників;
  • багато legacy-коду потребує модернізації;
  • tooling менш зручний, ніж у Python/JavaScript/C#;
  • package ecosystem історично слабший;
  • складна інтеграційні функції ERP з modern app layers без wrappers;
  • для нечисельних задач часто виступає як кращі мови. Під час роботи з Fortran варто:

Modules — основа modern Fortran. a = 0.0

BLAS

implicit none

pure function add(a, b) result(c)

  • gprof;
  • perf;
  • Intel VTune;
  • NVIDIA Nsight;
  • HPC profilers;
  • compiler reports;
  • timing instrumentation;
  • MPI profiling tools. Це дає можливість:

Functions корисні для чисельних формул, але для масивів і складних output часто використовують subroutines. * Intel Fortran Compiler — Fortran-компілятор Intel oneAPI. У чисельних задачах часто не можна порівнювати floating-point results через точну рівність.

Subroutines

Наукові сфери використання

a = 0.0 Підходи: Для AI частіше використовують Python, PyTorch, JAX, TensorFlow. real, intent(in) :: x

  • платформи;
  • стандарту;
  • HPC hardware;
  • performance;
  • diagnostics;
  • OpenMP/MPI/offload support;
  • licensing;
  • legacy compatibility. character(len=20) :: name

Приклад:

Fortran зберігає багатовимірні масиви в column-major order. a = a * factor

HPC

Для нового коду варто використовувати free form. Fortran не виступає як типовою мовою для web API. print *, y

end do fpm test

Fortran 77 і legacy code

Приклад:

Офіційна сторінка GNU Fortran зазначає, що проєкт підтримує функції ERP останніх стандартів до Fortran 2018 і має initial support of some features of Fortran 2023. Мета модернізації — не переписати все, а зробити код безпечнішим для змін. * WG5 — робоча група, відповідальна за стандарти Fortran.

matrix(:, 1) = 1.0


<pre>

Julia позиціонується як modern high-level мова для high-performance scientific computing. Порівняння:
Приклад ідеї:
Головна ідея Fortran — ефективно для бізнесу обчислювати. * '''Legacy Fortran''' — старий Fortran-код, часто Fortran 77 або старіший стиль.== Джерела ==

== GPU і offload ==

Intel Fortran Compiler


* використовувати прості loops;
* уникати aliasing;
* правильно організовувати memory access;
* використовувати <code>do concurrent</code>, де доречно;
* перевіряти compiler vectorization reports. * '''NetCDF''' — формат і бібліотеки для наукових масивних даних. BLAS реалізації часто дуже оптимізовані під hardware. Для наукових кодів важлива не лише cyber security, а й correctness: неправильний результат здатна бути серйозною проблемою. end program main

== Профілювання ==

Це краще відповідає layout пам’яті. * '''Derived type''' — користувацький тип даних. * кліматичному моделюванні;
* weather forecasting;
* computational fluid dynamics;
* finite element analysis;
* quantum chemistry;
* astrophysics;
* nuclear engineering;
* geophysics;
* ocean modeling;
* aerospace;
* mechanical engineering;
* numerical libraries. Типові команди:

module math_utils

 real :: y

complex :: z
== Array slicing ==
|-
| '''Fortran''' || масиви, чисельні обчислення, legacy scientific libraries, HPC kernels
|-
| '''C/C++''' || системне програмування, performance control, templates, hardware-level code, broader ecosystem
|}

 x = 2.0

<div style="background:#eef6ff;border-left:6px solid #2f80ed;padding:14px 18px;margin:16px 0;border-radius:8px;">

Корисні compiler flags для GFortran можуть включати:

У HPC-проєктах часто виступає як суміш Fortran, C, C++, Python і shell scripts. Fortran не виступає як ERP-системою. GPU offload потребує окремого performance design. # Додати <code>implicit none</code>. !

Interfaces роблять API чистішим і типобезпечнішим. real :: matrix(100, 100)

  • C wrapper;
  • Python wrapper;
  • shared library;
  • command-line executable;
  • microservice wrapper;
  • C++/Rust/Go binding;
  • batch job. Він цікавий для:
  • Fortran — мова програмування для чисельних і наукових обчислень. * Modern Fortran — сучасний стиль Fortran після Fortran 90.== LAPACK ==
real, intent(in) :: factor

intent показує, як parameter застосовується для:

a = square(a)

do loops

Fortran — це спеціалізована, але дуже важлива мова для чисельних і наукових обчислень. Окрім GFortran і Intel Fortran, існують:

Проста аналогія: Fortran — це не мова для красивих web-сторінок. * Coarray — механізм паралельного програмування у Fortran. MPI — Message Passing Interface. Fortran історично дуже тісно пов’язаний із BLAS/LAPACK.

Ризики: Fortran використовує kind для керування точністю. use iso_fortran_env, only: real64

use iso_c_binding

  • unit tests;
  • regression tests;
  • golden tests;
  • numerical tolerance tests;
  • integration tests;
  • comparison with reference data;
  • property-based checks for numerical invariants;
  • compiler matrix;
  • CI on multiple platforms. * HDF5 — формат і бібліотеки для ієрархічних наукових даних. Це краще, ніж покладатися на неявні типи. MATLAB здатна бути front-end для прототипу, а Fortran — backend для performance-critical ядра. real :: x, y
a(i) = a(i) + 1.0
Для production performance ці flags не завжди підходять, але для debug дуже корисні.

<pre>

do i = 1, n

Для чисельних задач критично правильно вибирати precision. type(particle) :: p
== Free form і fixed form ==
real :: a(3)
contains
[[Категорія:Numerical Computing]]
R застосовується для для статистики й data analysis.

Fortran і C/C++

  • intent(in);
  • intent(out);
  • intent(inout). # Створити Python/C API wrapper, якщо потрібно.

Типовий pattern:

Fortran-код потрібно тестувати так само, як будь-який production-код. Багато мов, включно з Python/NumPy/SciPy, опосередковано використовують бібліотеки, написані на Fortran або сумісні з Fortran ABI. end type particle

Fortran і AI

офіційний сайт Fortran-lang описує Fortran як high-performance parallel programming language, створену для computationally intensive applications in science and engineering. Багато наукового Python-стеку історично пов’язано з Fortran-бібліотеками. Performance потрібно вимірювати.== Column-major order ==

Для performance критично правильно організовувати loops. * Module — одиниця організації modern Fortran-коду.

Fortran здатна бути невдалим вибором, якщо:

Без цього результат здатна відрізнятися на іншій машині. ! * do concurrent — цикл із незалежними ітераціями. type :: particle

Назва Fortran походить від Formula Translation.

Коли Fortran здатна бути невдалим вибором


Приклад:

Intel так само має окрему сторінку завантаження Intel Fortran Compiler 2026.0.0, де зазначено functional і security updates. Elemental procedure здатна застосовуватися до scalar і array. * '''implicit none''' — директива, що вимикає implicit typing. Але Fortran здатна бути корисний для:

c = a + b

Науковий Fortran-код має бути відтворюваним. MPI + Fortran — класична комбінація для HPC. Subroutine — процедура без return value. Правило №1 для modern Fortran: завжди пишіть implicit none. * MATLAB

-g integer :: count

LFortran — modern interactive LLVM-based Fortran compiler project. interface norm

fpm — Fortran Package Manager. # Використовувати bounds checking у debug. # Відокремити I/O від чисельного ядра. * MPI — Message Passing Interface для distributed parallelism.[2]

Functions

Типові помилки у Fortran

Allocatable arrays дозволяють виділяти пам’ять під час виконання. Fortran здатна використовуватися в R packages для швидких чисельних частин. * GFortran — GNU Fortran compiler у складі GCC. критично стежити за layout пам’яті й порядком індексів.SEO title: Fortran — мова для HPC, наукових обчислень, чисельних методів, масивів, модулів, BLAS/LAPACK і modern scientific computing

SEO keywords: Fortran, modern Fortran, Fortran 2023, Fortran 2018, Fortran 2008, Fortran 90, Fortran 77, gfortran, GNU Fortran, Intel Fortran Compiler, Fortran HPC, high performance computing, scientific computing, numerical computing, BLAS, LAPACK, OpenMP Fortran, MPI Fortran, coarrays, do concurrent, Fortran modules, derived types, allocatable arrays, fpm Fortran, Fortran Package Manager, NetCDF Fortran, HDF5 Fortran, legacy Fortran, scientific programming, чисельні методи, наукові обчислення, інженерні розрахунки

</noinclude>
 {{SEO
Шаблон для службового SEO-опису сторінки. 

}}


  • NetCDF;
  • HDF5. Fortran краще для:

Fortran 77 — старий стандарт, який досі часто зустрічається в legacy-науковому коді.== Безпека ==

OpenMP популярний у HPC-коді, бо дає можливість поступово паралелізувати loops. elemental function square(x) result(y)

Він не веде обліковий облік, не проводить документи й не керує складом сам по собі. # Модернізувати legacy code поступово. # Перевіряти код кількома компіляторами, якщо можливо. Fortran здатна використовувати GPU через: Coarrays — вбудована модель паралельного програмування у Fortran. Fortran має базові типи:

  • висока продуктивність;
  • масиви й матриці;
  • mature optimizing compilers;
  • HPC;
  • BLAS/LAPACK ecosystem;
  • OpenMP/MPI;
  • coarrays;
  • modern Fortran features;
  • legacy scientific code;
  • стабільність;
  • decades of validated libraries.

BLAS містить базові операції лінійної алгебри:

fpm — важлива частина modern Fortran ecosystem, бо історично Fortran довго не мав єдиного зручного package manager. Fortran дуже сильний у HPC через:

Хороші практики

real :: b(0:9)

end do Але Fortran-код можна інтегрувати в API через:

real, intent(in) :: x

Python часто використовують як високорівневий інтерфейс, а Fortran — як швидке чисельне ядро. a(1) = 10.0

  • OpenMP offload;
  • OpenACC;
  • CUDA Fortran у NVIDIA ecosystem;
  • vendor-specific compilers;
  • library calls;
  • mixed-language kernels. do i = 1, n

Fortran підтримує slicing. Приклад: end module math_utils

 real :: y

Fortran можна debug-ити через:

-Wall
 implicit none

Fortran і Julia

Простий приклад

Приклад: do j = 1, n

real(real64) :: x

Одна з найважливіших практик Fortran:

GFortran

Вона вимикає implicit typing.== MPI ==


офіційний Fortran-lang Learn section збирає modern canonical way of doing things in Fortran і радить сучасний підхід до вивчення. * interactive workflows;
* notebooks;
* modern compiler architecture;
* educational use;
* tooling experiments. # Використовувати BLAS/LAPACK замість ручної лінійної алгебри.== Vectorization ==

<pre>

  • memory layout;
  • loop order;
  • vectorization;
  • cache locality;
  • compiler optimization flags;
  • BLAS/LAPACK usage;
  • avoiding unnecessary temporaries;
  • array slicing;
  • parallelization;
  • I/O;
  • algorithm choice. У багатьох AI/science workflows Fortran здатна бути “невидимим двигуном” під високорівневим Python-кодом. Fortran має стандартизовану interoperability з C через iso_c_binding. # Використовувати explicit interfaces. Це лабораторний двигун для великих обчислень: старий, перевірений і досі дуже швидкий. Модернізація Fortran-коду — важлива задача.

Derived types дозволяють писати більш структурований modern Fortran. # Додати tests. real :: a(10) Intel oneAPI Toolkit Release Notes 2026 зазначає, що Intel Fortran Compiler 2026.0 готовий для нових процесорів і додає оновлення версій, пов’язані з Fortran 2023 features, coarrays, offload code і numerical output predictability. module procedure norm_real


* не писати <code>implicit none</code>;
* використовувати старий fixed-form стиль для нового коду;
* не перевіряти array bounds;
* порівнювати real numbers через точну рівність;
* не фіксувати compiler flags;
* не писати tests для чисельних routines;
* змішувати I/O і computation;
* створювати зайві temporary arrays;
* неправильно організовувати loop order;
* ігнорувати column-major layout;
* переписувати перевірений legacy code без тестів;
* не документувати units і assumptions;
* не перевіряти portability між компіляторами. Fortran особливо корисний для:
== Інші компілятори ==
== Коли Fortran особливо корисний ==
Поширені помилки:

<pre>

Приклад:

Приклад:

Fortran і C/C++ часто співіснують у HPC. Pure procedures корисні для optimization, parallelism і reasoning. Function повертає значення. end function square

p%mass = 3.0

'''Для документації:''' краще писати “modern Fortran” або конкретний стандарт: Fortran 2008, Fortran 2018, Fortran 2023.== Modern Fortran ==
real :: y

Fortran у бізнесі

Станом на травень 2026 року актуальний стандарт мови — Fortran 2023. Modern Fortran сильно відрізняється від старого fixed-form Fortran 77. * BLAS — Basic Linear Algebra Subprograms. Fortran досі сильний для production HPC і перевірених чисельних бібліотек. matrix(1, :) = 2.0

Coarrays

через iso_fortran_envкористувачі можуть писати більш portable код. * Function — процедура, що повертає значення. WG5, робоча група, відповідальна за стандарти Fortran, зазначає, що Fortran 2023, ISO/IEC 1539:2023, виступає як current standard і був опублікований у листопаді 2023 року.[3]

Потрібно фіксувати:

HPC — High Performance Computing. Приклад modern Fortran:

Fortran найкраще використовувати там, де потрібні швидкі, перевірені й довготривалі чисельні ядра: HPC, наукові бібліотеки, фізичні симуляції, інженерні моделі й legacy scientific software. Це здатна призвести до помилок через опечатки. Старий Fortran часто використовував fixed form. fpm build

a(i, j) = a(i, j) + 1.0

Сценарії:

  • HPC;
  • scientific computing;
  • numerical methods;
  • array-heavy computations;
  • climate modeling;
  • CFD;
  • physics simulations;
  • linear algebra;
  • legacy scientific libraries;
  • code that must run fast for decades;
  • supercomputing;
  • Fortran libraries behind Python/R/Julia. end function square

Підходи:

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

  • linear systems;
  • eigenvalues;
  • singular value decomposition;
  • least squares;
  • matrix factorizations. Приклад:
real, intent(in) :: a, b

Pure procedure не має side effects, які порушують чистоту обчислень. * compiler version;

  • compiler flags;
  • math libraries;
  • BLAS/LAPACK implementation;
  • input data;
  • random seeds;
  • platform;
  • number of MPI ranks;
  • OpenMP threads;
  • floating-point settings;
  • code commit;
  • dependencies.

</div> * OpenBLAS; * Intel oneMKL; * BLIS; * vendor BLAS. LAPACK використовує BLAS і надає алгоритми для: Приклади реалізацій: [[Категорія:HPC]] end program main Fortran має зручний array syntax: Перед оптимізацією треба зрозуміти bottleneck.== Precision і kind == Interfaces потрібні для generic procedures, explicit interfaces і interop. # Відокремлювати чисельне ядро від I/O. Сильні сторони:

  • кліматичні інформаційні дані;
  • геофізика;
  • великі масиви;
  • simulation outputs;
  • scientific datasets;
  • parallel I/O. Мова !!

Саме тут важливі performance, точність і перевірені алгоритми.== Fortran і R ==

У Fortran MPI застосовується для для distributed-memory parallelism. * Subroutine — процедура без return value. Мова !! Коротко: Fortran — це мова для швидких чисельних обчислень. Особливість

Elemental procedures

  • потрібен web backend;
  • потрібна ERP-бізнес-логіка;
  • потрібен mobile app;
  • потрібен GUI;
  • потрібна AI ecosystem;
  • потрібен великий ринок ERP в Україні generalist developers;
  • задача не виступає як чисельною;
  • команда не має Fortran/HPC досвіду;
  • потрібна швидка інтеграційні функції ERP з modern SaaS;
  • достатньо Python/NumPy або MATLAB. Мова створювалася для того, щоб інженери, фізики й математики могли ефективно для бізнесу записувати формули, працювати з масивами й запускати обчислення на реальному hardware. Сценарії:
  • fixed-form source;
  • COMMON blocks;
  • GOTO;
  • implicit typing;
  • глобальний стан;
  • старі I/O patterns;
  • відсутність modules;
  • масиви з фіксованими розмірами;
  • складність тестування.

Без implicit none Fortran здатна автоматизовано вважати змінні певного типу за першою літерою імені. a(2) = 20.0 subroutine scale_array(a, factor)

Пояснення термінів

Головна ідея

Актуальний стандарт

MATLAB зручний для інтерактивних інженерних обчислень.[4]

У modern Fortran allocatable arrays часто безпечніші й зручніші за старі manual memory patterns.[5]

Тоді можна викликати:

Fortran і MATLAB

 y = x * x
<pre>

program main
Приклад:
Fortran не асоціюється з web-security, але безпека все одно важлива.<pre>
== Тестування Fortran-коду ==
<pre>
Приклад generic interface:
'''Modern Fortran''' — це стиль Fortran після Fortran 90, який використовує сучасні функції ERP мови:
<div style="background:#fff7e6;border-left:6px solid #f2994a;padding:14px 18px;margin:16px 0;border-radius:8px;">
Але для production HPC потрібно перевіряти maturity під конкретну задачу. Legacy Fortran-код не обов’язково поганий. '''BLAS''' — Basic Linear Algebra Subprograms. # Завжди писати <code>implicit none</code>. # Документувати units, assumptions і input data. OpenMP часто застосовують, коли потрібно з Fortran для shared-memory parallelism. * '''LAPACK''' — Linear Algebra PACKage. # Не використовувати Fortran там, де він не дає конкурентні переваги. * gdb;
* lldb;
* compiler checks;
* bounds checking;
* sanitizer support у деяких toolchains;
* Intel tools;
* HPC debuggers;
* logging;
* assertions. end program hello

Класичний цикл:

Сучасний Fortran використовує free form.</div>

<pre>

Приклад:

Типові ознаки старого Fortran:
Компіляція через gfortran:
Не кожен Fortran-код автоматизовано стане швидким на GPU.<pre>

 y = x**2 + 3.0*x + 1.0

Fortran не виступає як головною мовою для сучасного AI research. Fortran за замовчуванням індексує масиви з 1.<ref>https://fortranwiki.org/fortran/show/GFortran</ref>
Fortran-компілятори часто добре векторизують чисельні loops. '''LAPACK''' — Linear Algebra PACKage. # Перевести fixed form у free form.== Python і Fortran ==

операційна дія застосовується до всього масиву. Приклад:
deallocate(a)
Fortran часто застосовується для в:

Fortran здатна бути дуже швидким, але performance залежить від:

Це дає компілятору більше інформації для оптимізації й паралелізації. без зусиль “Fortran” здатна означати як сучасний код, так і старий Fortran 77. * Fortran 2023 — актуальний стандарт ISO/IEC 1539:2023. NumPy/SciPy можуть використовувати BLAS/LAPACK, які мають Fortran API/ABI або походження. Сильні сторони


* vector operations;
* matrix-vector multiplication;
* matrix-matrix multiplication. implicit none

 print *, "Hello, Fortran"

 real :: c
== Interfaces ==
Добра практика: спочатку алгоритм, потім layout, потім compiler optimization, потім low-level tuning. # Розбити великі routines. # Використовувати modules. Приклад:

 implicit none
<pre>
 use math_utils
 implicit none
<pre>
GNU Fortran зазначає, що має широку підтримку стандартів до Fortran 2018 і initial support of some features of Fortran 2023. * '''Allocatable array''' — масив, пам’ять для якого виділяється під час виконання.<ref>https://fortran-lang.org/</ref>
== Fortran і API ==

== Pure procedures ==

 end do

Але основну бізнес-логіку ERP не варто писати на Fortran. end interface norm
allocate(a(1000))

== Практичний висновок ==

program main

== LFortran ==

Вибір компілятора залежить від:

* FORTRAN IV;
* FORTRAN 66;
* FORTRAN 77;
* Fortran 90;
* Fortran 95;
* Fortran 2003;
* Fortran 2008;
* Fortran 2018;
* Fortran 2023. Погано:
a = a + 1.0

 do i = 1, m
<pre>
Fortran історично створювався для задач, де важливі:

a(3) = 30.0


do concurrent (i = 1:n)

Allocatable arrays

Так Fortran робить обчислення, а API-шар відповідає за HTTP, auth, logging і deployment. -fbacktrace

OpenMP

a(i) = a(i) + 1.0 function square(x) result(y) real :: temperature Це відрізняє Fortran від C, Python і багатьох інших мов. Він оптимізує створювати, збирати й тестувати Fortran-проєкти.== NetCDF і HDF5 == У контексті K2 ERP Fortran здатна бути корисним тільки в специфічних випадках: * чисельних solvers; * simulation data generation; * фізичних моделей; * scientific ML; * legacy numerical kernels; * HPC preprocessing; * climate/physics simulations для AI workflows. y = x * x * чисельні методи; * матриці й масиви; * фізичні моделі; * інженерні симуляції; * лінійна алгебра; * диференціальні рівняння; * обчислення на суперкомп’ютерах; * довгі цикли; * оптимізація компілятором; * стабільність коду протягом десятиліть. це одна з найстаріших мов програмування, яка досі активно застосовується для; так само реалізовано інженерних і чисельних обчислень виступає ключовою рисою високопродуктивних наукових забезпечується через Fortran. * fpm — Fortran Package Manager. real :: x [*] fpm new my_project a(i) = a(i) + 1.0 Coarrays дозволяють працювати з images — паралельними виконаннями програми. Fortran часто використовують у задачах, які виконуються годинами, днями або тижнями на кластерах. function square(x) result(y)
Fortran перевірені компілятори, legacy libraries, HPC stability
Julia high-level syntax, JIT, modern multiple dispatch, research productivity

Free form виглядає як нормальний сучасний код:

p%y = 2.0 Сценарії:

Fortran і NumPy/SciPy

* компільованих чисельних ядер; * HPC; * довготривалих simulation codes; * інтеграції з supercomputers; * бібліотек, які мають працювати оперативно й довго. # Замінити COMMON blocks на modules. * iso_c_binding — стандартний module для C interoperability. # Писати tests із numerical tolerances.[6] Встановлення GFortran описано на Fortran-lang для Windows, Linux, macOS і OpenBSD. # Документувати assumptions. # Використовувати iso_fortran_env для precision. Julia здатна бути зручнішою для нових numerical experiments. Fortran розвивався через багато стандартів: Можна задавати власні межі: У наукових обчисленнях часто використовують формати даних:
a(1:10) = 0.0