<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sib">
	<id>https://sibwiki.org/index.php?action=history&amp;feed=atom&amp;title=%D0%A4%D0%BE%D1%80%D1%82%D1%80%D0%B0%D0%BD</id>
	<title>Фортран - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://sibwiki.org/index.php?action=history&amp;feed=atom&amp;title=%D0%A4%D0%BE%D1%80%D1%82%D1%80%D0%B0%D0%BD"/>
	<link rel="alternate" type="text/html" href="https://sibwiki.org/index.php?title=%D0%A4%D0%BE%D1%80%D1%82%D1%80%D0%B0%D0%BD&amp;action=history"/>
	<updated>2026-05-31T13:13:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://sibwiki.org/index.php?title=%D0%A4%D0%BE%D1%80%D1%82%D1%80%D0%B0%D0%BD&amp;diff=85951&amp;oldid=prev</id>
		<title>Yaroslav: Bot: Automated import of articles</title>
		<link rel="alternate" type="text/html" href="https://sibwiki.org/index.php?title=%D0%A4%D0%BE%D1%80%D1%82%D1%80%D0%B0%D0%BD&amp;diff=85951&amp;oldid=prev"/>
		<updated>2026-05-30T21:59:38Z</updated>

		<summary type="html">&lt;p&gt;Bot: Automated import of articles&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторонка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{YouTube|KUXUIOea_Fs|width=300|height=250}}&lt;br /&gt;
&lt;br /&gt;
Фортран (от англ. FORTRAN — Formula Translator) — исторически первый язык программирования высокого уровня, получивший массовое коммерческое и академическое распространение. Язык был специально спроектирован для выполнения сложных научных и инженерных вычислений. На протяжении всей второй половины XX века Фортран сохранял статус главного инструмента для программирования математических задач. Огромное количество накопленных математических библиотек (решение систем дифференциальных уравнений, математическая статистика и методы линейной алгебры) делает его актуальным в узкоспециализированной инженерной среде до настоящего времени. Практически весь фундаментальный математический аппарат человечества был алгоритмизирован и задокументирован на этом языке.&lt;br /&gt;
&lt;br /&gt;
== История создания ==&lt;br /&gt;
В начале 1950-х годов программирование осуществлялось исключительно на языках ассемблера и ранних автокодах, что делало процесс ввода сложных математических формул и уравнений в ЭВМ крайне трудоемким и медленным. В 1953 году Джон Бэкус, инженер корпорации IBM, предложил концепцию принципиально нового языка, который позволил бы транслировать линейно записанные математические формулы непосредственно в машинно-исполняемый код. Позднее, в интервью 1979 года, Бэкус отмечал, что идея языка возникла во многом из желания упростить рутинную работу по расчету траекторий ядерных ракет и избавить программистов от необходимости писать громоздкий ассемблерный код.&lt;br /&gt;
&lt;br /&gt;
Разработка системы велась исследовательской командой, состоящей примерно из двадцати человек. В ноябре 1954 года была опубликована первая спецификация системы перевода математических формул IBM. В октябре 1956 года разработчики выпустили первое учебное пособие по Фортрану, а в апреле 1957 года был представлен первый рабочий компилятор. Разработка компиляторов американскими инженерами развивалась стремительно, опередив европейский проект Алгол-58 почти на год. К 1960 году IBM выпустила стабильные версии транслятора для всех своих передовых вычислительных машин (включая архитектуры IBM 709, 650, 1620 и 7090), а на глобальном рынке уже присутствовало около 40 различных реализаций компиляторов.&lt;br /&gt;
&lt;br /&gt;
== Эволюция стандартов ==&lt;br /&gt;
Жесткая стандартизация обеспечила языку выдающуюся переносимость и глубокую обратную совместимость: алгоритмы, написанные на перфокартах в 1960-е годы, способны успешно компилироваться и функционировать в современных средах без потери производительности.&lt;br /&gt;
&lt;br /&gt;
Стандарт Фортран 66 свел разрозненные реализации языка к единой спецификации. &lt;br /&gt;
&lt;br /&gt;
Стандарт Фортран 77 стал важнейшей вехой в истории языка. Были добавлены операторы открытия и закрытия файлов, а также внедрен полноценный строковый (символьный) тип данных (до появления этого стандарта символы обрабатывались компилятором как числовые значения). Под влиянием парадигмы структурного программирования были внедрены блочные конструкции (такие как ветвления if-then-else), что позволило сократить использование безусловных переходов по числовым меткам.&lt;br /&gt;
&lt;br /&gt;
Стандарт Фортран 90 привел к существенной модернизации языка с учетом достижений языков семейства Си. Был введен свободный формат написания исходного кода, добавлены инструменты для работы с динамической памятью (динамические массивы и указатели), концепция модулей и базовые элементы объектно-ориентированного программирования (ООП). &lt;br /&gt;
&lt;br /&gt;
В стандарте Фортран 95 были интегрированы конструкции для упрощения векторных и матричных вычислений без явного использования циклов, а также концепции «чистых» (pure) подпрограмм. Дальнейшие стандарты, такие как Фортран 2003, Фортран 2008 и Фортран 2018, продолжили углублять интеграцию ООП, добавили асинхронный ввод-вывод данных и расширили возможности языка в области параллельных вычислений.&lt;br /&gt;
&lt;br /&gt;
== Архитектура и синтаксис ==&lt;br /&gt;
Ранние версии языка были физически привязаны к формату стандартной 80-колонной картонной перфокарты. Исходный код подчинялся строгим позиционным правилам, нарушение которых приводило к синтаксической ошибке. С 1 по 5 колонку располагалась область числовых меток. Шестая колонка служила маркером продолжения строки (она заполнялась любым символом, кроме пробела и нуля). С 7 по 72 колонку записывался сам текст оператора или текстовый комментарий. Наконец, с 73 по 80 колонку резервировалось место для физической нумерации перфокарт на случай, если колода случайно рассыплется. Процесс компиляции представлял собой последовательное считывание этих колод кардридером в память вычислительной машины.&lt;br /&gt;
&lt;br /&gt;
Начиная со стандарта Фортран 90, ограничения перфокарт были отменены. Введение свободного формата позволило размещать несколько операторов на одной строке, использовать произвольные отступы и длинные идентификаторы. Тем не менее, язык полностью сохранил поддержку оператора безусловного перехода (goto) и логических циклов с числовыми метками. &lt;br /&gt;
&lt;br /&gt;
Операции сравнения символьных или числовых данных исторически записывались с использованием специальных буквенных операторов, окруженных точками (например, .GT. для проверки условия «больше», или .LT. для «меньше»), так как на ранних клавиатурах не всегда присутствовали нужные математические знаки.&lt;br /&gt;
&lt;br /&gt;
== Типы данных ==&lt;br /&gt;
Язык оперирует пятью базовыми встроенными типами данных: целым, действительным (с плавающей точкой), комплексным, логическим и символьным. Фундаментальной особенностью является встроенная с самых первых версий поддержка вычислений с комплексными числами. Это решение сделало язык незаменимым в электротехнике, радиолокации и теоретической физике. &lt;br /&gt;
&lt;br /&gt;
При выполнении арифметических операций компилятор осуществляет автоматическое приведение типов (например, автоматический перевод целого числа в действительное или комплексное). Для работы с символьными данными в современных версиях языка предусмотрено множество встроенных функций: определение длины строки, преобразование регистра, поиск подстрок и первого вхождения символа. Строки также могут обрабатываться методами матричного анализа.&lt;br /&gt;
&lt;br /&gt;
== Подпрограммы и функции ==&lt;br /&gt;
В основе структурной организации Фортрана лежит разбиение алгоритма на систему независимых подпрограмм. Важнейшей архитектурной особенностью языка является вызов подпрограмм исключительно по ссылке (передачей адреса памяти параметра, а не его копии). Подобный подход обеспечивает максимальное быстродействие при пересылке гигантских массивов данных, однако он же позволяет подпрограмме изменять значения переменных непосредственно в вызывающей программе.&lt;br /&gt;
&lt;br /&gt;
В языке строго различаются два вида подпрограмм:&lt;br /&gt;
Во-первых, функции. Они возвращают единственный вычисленный результат определенного типа и вызываются внутри математических выражений.&lt;br /&gt;
Во-вторых, процедуры (субрутины, описываемые ключевым словом subroutine). Они способны одновременно преобразовывать множество переданных аргументов различных типов. Вызов процедуры в коде осуществляется с помощью специального оператора call.&lt;br /&gt;
&lt;br /&gt;
В стандарте Фортран 95 были введены спецификации «чистых» (pure) подпрограмм. Чистая функция обязана только возвращать значение и гарантированно не изменяет переданные в нее входные параметры (глобальные данные). При написании чистых процедур программист обязан явно указывать с помощью модификатора intent статус параметров: какие из них предназначены исключительно для чтения, а какие являются выходными и могут быть изменены. Это нововведение позволило минимизировать побочные эффекты вычислений.&lt;br /&gt;
&lt;br /&gt;
Концептуальный синтаксический пример вызова подпрограммы:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  call MY_SUBROUTINE(Argument1, Argument2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Массивы и матричные вычисления ==&lt;br /&gt;
Эффективная обработка многомерных массивов — центральная парадигма языка. В отличие от языков семейства Си или Паскаль, элементы многомерных матриц в оперативной памяти Фортрана располагаются строго по столбцам. Для достижения максимальной производительности во вложенных циклах внутренний цикл всегда должен индексировать левые (первые) индексы массива, а внешний — правые.&lt;br /&gt;
&lt;br /&gt;
Язык обладает встроенными средствами работы с динамическими массивами нулевого размера, массивами с произвольными целочисленными границами, а также поддерживает создание произвольных сечений массивов и векторных индексов. Выражение вычисляется целиком в оперативной памяти, после чего присваивается индексам, удовлетворяющим определенным условиям.&lt;br /&gt;
&lt;br /&gt;
Уникальной мощью обладают логические маски и матричные функции. Маска — это логический массив, который накладывается на другой массив для массового выполнения операций без написания классических циклов со счетчиками. В язык встроены функции all (возвращает истину, если все элементы маски истинны), any (если истинен хотя бы один элемент) и count (подсчет количества истинных элементов). Также встроены специализированные математические функции maxval и minval для мгновенного нахождения экстремумов массива, встроенные функции для поиска индекса по условию, суммирования всех элементов, а также функции автоматического транспонирования и перемножения матриц. &lt;br /&gt;
&lt;br /&gt;
== Файловая система ==&lt;br /&gt;
Подсистема ввода-вывода отличается исключительной гибкостью. Современный стандарт языка поддерживает до 15 типов организации файлов (среди которых текстовые, битовые файлы, файлы с фиксированной и переменной длиной записи, файлы прямого и последовательного доступа). Максимальный размер одной записи может достигать 2 гигабайт. Примечательно, что любая символьная строка внутри программы интерпретируется компилятором как внутренний файл, благодаря чему операции считывания данных из обычной текстовой переменной синтаксически идентичны операциям считывания информации с жесткого диска. &lt;br /&gt;
&lt;br /&gt;
Указатели в языке присутствуют и служат для предотвращения утечек памяти при работе с динамическими массивами. Однако классическая философия языка не рекомендует злоупотреблять прямой работой с указателями в стиле Си, поскольку встроенный инструментарий матричного анализа позволяет решать подавляющее большинство задач более высокоуровневыми и безопасными методами.&lt;br /&gt;
&lt;br /&gt;
== Развитие в СССР ==&lt;br /&gt;
В академической среде Советского Союза изначально преобладал интерес к европейскому языку Алгол. Однако Фортран быстро завоевал популярность благодаря советским физикам-ядерщикам, тесно сотрудничавшим с Европейским центром ядерных исследований (ЦЕРН). В 1967 году был разработан первый транслятор для отечественной ЭВМ «Минск-22», а в 1968 году коллектив программистов из Объединенного института ядерных исследований создал знаменитый компилятор «Фортран-Дубна». &lt;br /&gt;
&lt;br /&gt;
В 1970–1980-е годы язык стал абсолютным индустриальным стандартом для советских инженеров и массово использовался на суперкомпьютерах серии ЕС ЭВМ. Для визуализации результатов физических симуляций советскими программистами была создана мощная графическая библиотека ГРАФОР. Популярность языка была столь велика, что в конце 1980-х годов для обучения советских детей основам вычислительной техники была написана и издана книга «Энциклопедия профессора Фортрана».&lt;br /&gt;
&lt;br /&gt;
== Применение и современное состояние ==&lt;br /&gt;
С развитием информационных технологий и появлением универсальных языков программирования, направленных на создание баз данных и веб-приложений (таких как Java, C# или Python), Фортран потерял массовую долю рынка коммерческого программного обеспечения. Корпорация Microsoft, выпускавшая компиляторы языка с самых ранних версий операционной системы Windows, официально прекратила их поддержку в 1997 году (позднее эту нишу занял продукт Microsoft Fortran PowerStation, разрабатываемый корпорацией DEC). &lt;br /&gt;
&lt;br /&gt;
Тем не менее, язык продолжает активно развиваться и использоваться в научно-исследовательской сфере. Современные компиляторы (как проприетарные, так и свободные, например, GNU Fortran, полностью поддерживающий стандарт 2018 года) позволяют писать эффективный код. Для Фортрана разработаны графические оболочки визуального программирования, средства интеграции с современными реляционными базами данных (SQL) и интерфейсы перекрестной трансляции, позволяющие вызывать оптимизированный фортран-код из программ на других языках.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
[[Haskell]]&lt;br /&gt;
[[Eiffel]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Языки программирования]]&lt;br /&gt;
[[Category:История компьютерных технологий]]&lt;br /&gt;
[[Category:Устаревшие языки программирования]]&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=KUXUIOea_Fs Смотреть видео]&lt;/div&gt;</summary>
		<author><name>Yaroslav</name></author>
	</entry>
</feed>