Возможно, это был первый в мире язык высокого уровня и Майк Бедфорд обнаруживает, что FORTRAN жив и процветает по сей день.

Когда FORTRAN только зарождался, языков высокого уровня практически не существовало, и уж тем более не было таких, которые получили бы широкую известность. Сейчас, когда такие языки стали практически универсальными, необходимо помнить, что языки высокого уровня были созданы для облегчения работы программиста. Раньше код писался на "родных" инструкциях компьютера, определяемых его аппаратной частью. С помощью языка высокого уровня стало возможным использование инструкций, приближенных к человеческим. Кроме того, появилась возможность переносить программы с одного компьютера на другой, хотя при разработке FORTRAN это не учитывалось, поскольку язык изначально создавался специально для компьютера IBM 704.

Сегодня об этом практически забыли, но научный компьютер IBM 704 сыграл важную роль в запуске проекта FORTRAN.
Сегодня об этом практически забыли, но научный компьютер IBM 704 сыграл важную роль в запуске проекта FORTRAN.

Оригинальный FORTRAN был представлен в 1957 году и содержал всего 32 инструкции, что сильно отличает от большинства современных языков. Более того, некоторые из этих инструкций были привязаны к аппаратному обеспечению IBM 704, поэтому они были удалены из более поздних версий, которые должны были стать аппаратно независимыми.

Команда IBM, занимавшаяся разработкой FORTRAN, возглавлялась Джоном Бэкусом, имя которого вы можете узнать по нотации Backus Naur Form.
Команда IBM, занимавшаяся разработкой FORTRAN, возглавлялась Джоном Бэкусом, имя которого вы можете узнать по нотации Backus Naur Form.

Если вы хотите попробовать свои силы в кодинге на FORTRAN 1957, то компилятора FORTRAN для IBM 704 вы не найдете. Однако, хотя некоторые инструкции, специфичные для оригинального FORTRAN 704, в последующем были удалены, каждая версия FORTRAN сохраняла большинство (но не все) инструкций своих предшественников для обеспечения обратной совместимости. Таким образом, вы можете использовать более современный компилятор, но при этом только оригинальные инструкции и избегать использования тех, которые были удалены совсем недавно. Пожалуй, наиболее авторитетным FOSS-компилятором является GFortran (GNU Fortran), доступный в основных репозиториях. Если же хотите сразу опробовать код на FORTRAN перед тем, как перейти к локально установленному решению, - воспользуйтесь онлайн-ресурсом Try It Online, который позволяет сразу увидеть результат работы вашего кода и фактически использует компилятор GFortran.

В качестве первого примера мы предлагаем попробовать, а затем, возможно, и модифицировать следующий код, написанный на оригинальной версии языка FORTRAN. Обратите внимание, что мы намеренно оставили в этом коде ошибку, которую вы обнаружите, если введете значение 10 или больше, так что, возможно, Вам получится ее исправить. Она выводит факториал числа - факториалом числа является результат умножения всех положительных чисел до этого числа включительно. По определению, факториал нуля равен 1, а факториала отрицательного числа не существует.

      READ 30,N
   30 FORMAT(I2)
      IF(N) 40,60,70
   40 PRINT 50
   50 FORMAT(17HCAN’T BE NEGATIVE)
      GOTO 110
   60 NFAC=1
      GOTO 90
   70 NFAC=1
      DO 80 I=1,N
      NFAC=NFAC*I
   80 CONTINUE
   90 PRINT 100,NFAC
  100 FORMAT(I6)
  110 STOP
      END

Несколько комментариев помогут вам понять код. В 1957 году компьютеры, как правило, не имели терминалов типа VDU или телетайпов, поэтому оператор READ должен был считывать данные с перфокарты. Если вы используете Try It Online, введите в область Input значение для чтения - число, для которого нужно вычислить факториал, и которое было бы считано с перфокарты. По умолчанию все имена переменных, начинающиеся с букв I, J, K, L, M или N, считаются целыми числами; переменные, начинающиеся с любой из других букв, - вещественными. Операторы READ и PRINT ссылаются на оператор FORMAT по номеру строки, определяющий способ интерпретации или отображения данных. Например, FORMAT, связанный с оператором READ, указывает, что ожидается целочисленное значение, состоящее максимум из двух цифр, а FORMAT, связанный с последним оператором PRINT, указывает, что оно должно быть выведено в виде шестизначного целого числа. Оператор IF - это арифметический оператор IF, в отличие от логического IF, который мы чаще всего используем в других языках и который появился только в более поздней версии FORTRAN. Арифметический IF ветвится на одну из трех строк, в зависимости от того, является ли результат выражения в скобках отрицательным, нулевым или положительным соответственно. Цикл DO завершается оператором CONTINUE, номер строки которого указан в операторе DO. Изначально использовались только прописные буквы, хотя сейчас большинство компиляторов допускают использование строчных букв. Код имеет фиксированный формат. Символ C в первом столбце означает, что строка является комментарием, необязательный номер строки может быть указан в столбцах 1-5, любой символ в столбце 6 означает, что строка является продолжением предыдущей строки, а собственно оператор отображается в столбцах 7-72.

Более подробно об оригинальном FORTRAN можно узнать из справочника IBM Programmer's Reference Manual.

Возможно, лучшим способом проиллюстрировать зрелость FORTRAN является указание на то, что в IBM 704, на котором он был впервые запущен, использовались электронные лампы.
Возможно, лучшим способом проиллюстрировать зрелость FORTRAN является указание на то, что в IBM 704, на котором он был впервые запущен, использовались электронные лампы.

Продолжение пути

Поскольку оригинальный FORTRAN содержал всего 32 инструкции, некоторые из которых были связаны с уникальным аппаратным обеспечением IBM 704, неудивительно, что с течением времени FORTRAN был расширен. Первое расширение получило название FORTRAN II, оно по-прежнему предназначалось исключительно для использования на 704-й модели и добавляло поддержку подпрограмм и функций, определяемых пользователем, что, безусловно, было большим недостатком исходного FORTRAN, плюс комплексные числа. Существовал также FORTRAN III, но он так и не был опубликован.

Еще одно свидетельство того, что в момент создания FORTRAN мир был совсем другим: программистам приходилось носить с собой огромные стопки перфокарт с кодом.
Еще одно свидетельство того, что в момент создания FORTRAN мир был совсем другим: программистам приходилось носить с собой огромные стопки перфокарт с кодом.

Первым действительно важным обновлением стал FORTRAN IV. Он поддерживался на гораздо более широком спектре компьютеров и на несколько лет стал языком де-факто для научных, инженерных и математических приложений. Он появился в 1962 году и, если пропустить FORTRAN 66, который по сути был тем же самым, что и FORTRAN IV, но названный так в связи с тем, что в 1966 году он был принят в качестве стандарта ANSI, оставался неоспоримым до появления FORTRAN 77. Основным отличием FORTRAN IV от FORTRAN II стало введение логического оператора IF, примером которого является IF (N.EQ.10) I=I+1 . Заметим, что, в отличие от большинства более современных языков, реляционные операторы представляли собой не символы =, >, < и т.д., а двухбуквенные коды, окруженные точками. Так, например, реляционный оператор в нашем предыдущем примере был "меньше или равно", а другие, значения которых очевидны - это .NE..GT..GE..LT. и .LE.. Их можно было комбинировать с логическими операторами .OR..AND. и .NOT.. Однако концепция структуры IF ... THEN ... ELSE отсутствовала, несмотря на то, что блоки уже появились в ALGOL. Единственным оператором в FORTRAN IV, предполагавшим выполнение блока кода, был DO ... CONTINUE. Другим главным новшеством FORTRAN IV стала замена поддержки устройств массового хранения данных, реализованной в оригинальном FORTRAN для IBM 704, на более общую поддержку устройств массового хранения данных. Если вам наскучил оригинальный FORTRAN, но вы все же хотите получить некоторый опыт работы с классическим FORTRAN, под которым мы имеем в виду версию, которой более полувека, то FORTRAN IV - ваш очевидный выбор. Руководство по языку IBM System/360 FORTRAN IV. А вот код, который можно использовать в качестве первого примера:

      GR = (1 + SQRT (5.0))/2
      NMARK=78
      PRINT 10
   10 FORMAT(39H N FIBONACCI GOLDEN RATIO WITHIN 0.001%)
      NFIB1=1
      NFIB2=1
      DO 200 N=1,30
      IF(N.GT.2) GOTO 50
      NFIB=1
      GOTO 60
   50 NFIB=NFIB1 + NFIB2
      NFIB1=NFIB2
      NFIB2=NFIB
   60 GRAPP=REAL(NFIB)/REAL(NFIB1)
      ERR=ABS(GR-GRAPP)/GR*100
      IF(ERR.LT.0.001) NMARK=89
      PRINT 100,N,NFIB,GRAPP,NMARK
  100 FORMAT(I2,XXXX,I6,XX,F11.9,X,A1)
  200 CONTINUE
  210 STOP
      END

Прежде чем приступить к рассмотрению кода, необходимо объяснить, что он делает. Сначала вычисляется и выводится N-е число Фибоначчи для значений N от 1 до 30. Первые два числа Фибоначчи определяются как 1 и 1, а все последующие числа являются суммой двух предыдущих. Таким образом, первые несколько чисел Фибоначчи - это 1, 1, 2, 3, 5, 8, 13 и 21. Далее, для каждого N мы также рассчитываем и выводим приближенное значение золотого сечения и указываем с помощью символов N или Y, находится ли оно в пределах 0,001% от действительного значения. Золотое сечение - если вы не знакомы с этим понятием, мы рекомендуем вам почитать о нем, это очень интересно. Если вернуться к числам Фибоначчи, то соотношения пар последовательных чисел Фибоначчи все больше приближаются к реальному значению золотого сечения.

Теперь уместно сделать несколько замечаний по поводу кода. Основное отличие этого кода от программы, написанной на оригинальном языке FORTRAN, заключается в использовании логического оператора IF. В первой строке вычисляется фактическое значение золотого сечения. Хотя FORTRAN IV не поддерживает переменные символьных строк, целочисленная переменная может хранить значение ASCII, и если затем напечатать его, используя обозначение A в операторе FORMAT, то будет напечатан соответствующий символ. Такой переменной является NMARK, а значения ASCII для N и Y равны 78 и 89 соответственно. Мы используем несколько функций, в том числе SQRT и ABS, но особое внимание заслуживает REAL в строке 60. Она необходима, поскольку мы делим два целых числа, и если бы мы не использовали функцию REAL, то результат был бы целочисленным.

Мы не будем так подробно рассматривать все преемники FORTRAN IV/66 - их было достаточно много, но кратко опишем основные особенности наиболее важных версий. В FORTRAN 77 к оператору IF была добавлена опция ELSE, а также введено понятие блоков, но только для оператора IF. Впервые был добавлен символьный тип данных. Со временем была добавлена поддержка блочной структуры, включающая конструкции DO WHILE и CASE. С появлением Fortran 90, и это не опечатка, с наступлением 1990-х годов FORTRAN стал Fortran - требование помещать номера строк и операторов в определенные столбцы было ослаблено. Также было разрешено использовать сочетание символов верхнего и нижнего регистров, а прежнее требование использовать только заглавные буквы было отголоском эпохи перфокарт. Fortran 90 также допускал рекурсию и позволял работать с массивами как с единым целым, а не с отдельными элементами в цикле или во вложенных циклах. Объектно-ориентированная обработка появилась в Fortran 2003, а с появлением Fortran 2008 была реализована поддержка параллельной обработки. Вскользь следует упомянуть также Fortran 95 и Fortran 2018, но мы пропустим мимо ушей замечание, возможно, анафемное для приверженцев FORTRAN, о том, что добавленные в них новые возможности были довольно незначительными.

Сегодня на ПК под управлением Linux можно запустить FORTRAN или практически любой другой язык. Однако если мы перейдем от термина "ПК" к термину "домашний компьютер", то те, у кого длинная память, вспомнят бум домашних компьютеров начала 80-х годов. И практически все эти компьютеры предлагали один-единственный встроенный язык программирования: Basic. Интересно, однако, что FORTRAN появился и на самых ранних микропроцессорных компьютерах.

Персональные компьютеры в самом широком смысле этого слова появились в начале 70-х годов, многие из них были построены на базе 8-разрядного процессора Intel 8080 образца 1974 года, а также его близких родственников - Intel 8085 и Zilog Z80. Они были дорогими, поэтому широко использовались в ранних бизнес-приложениях, а также привлекали состоятельных любителей. Даже в те ранние времена, несмотря на большое разнообразие, на первый план выходила стандартизация в виде операционной системы CP/M. С 1977 по конец 80-х годов CP/M появилась на целом ряде компьютеров, хотя иногда только при наличии дополнительного сопроцессора. Хотя большинство этих компьютеров принадлежали уже забытым именам, другие компании, включая Acorn, Amstrad, Atari, Commodore и Tandy, также продавали машины на базе CP/M. В основном он не входил в стандартную комплектацию, но когда другие пользователи домашних компьютеров программировали на Basic, FORTRAN позволил пользователям CP/M взять на вооружение более совершенный язык.

В то время, как другие домашние компьютеры 80-х годов работали только на Basic, Amstrad CPC 464 предлагал в качестве опции CP/M, а значит, и FORTRAN.
В то время, как другие домашние компьютеры 80-х годов работали только на Basic, Amstrad CPC 464 предлагал в качестве опции CP/M, а значит, и FORTRAN.

FORTRAN сегодня

Если бы мы были более критичными, то могли бы назвать FORTRAN устаревшим языком. Конечно, он продолжает обновляться, но можно утверждать, что новые версии представляют собой запоздалые попытки внедрить парадигмы программирования, которые уже десятилетиями были общепринятыми в других языках. Например, блочная ориентация начала ограниченно проявляться только в FORTRAN 77, почти через 20 лет после того, как это понятие было введено в ALGOL. А если взять пример объектной ориентации, то она появилась только в Fortran 2003, появившемся на сцене не менее чем через 31 год после того, как язык Simula впервые познакомил мир с этой парадигмой. Однако если все это справедливая критика, то будет несколько удивительно узнать, что, согласно последнему индексу популярности языков программирования TIOBE, FORTRAN сегодня занимает вполне достойное 14-е место.

Чтобы узнать больше о том, что FORTRAN по-прежнему привлекателен, мы побеседовали с Рафиком Зуробом, менеджером по разработке компилятора IBM Open XL Fortran. Для начала мы хотели узнать, какие организации используют FORTRAN и в каких типичных приложениях. Из ответа Рафика следовало, что что он используется в высших эшелонах вычислительной техники для передовых исследований. "FORTRAN обычно используется для высокопроизводительных вычислений и других приложений, требующих больших вычислений. В качестве примера можно привести научное моделирование и симуляцию в области прогнозирования погоды, физики, химии, биологии, медицины, астрономии и искусственного интеллекта. Среди крупных пользователей - крупные исследовательские лаборатории в США и Европе, - рассказал он.

Но используется ли он только для поддержки устаревших приложений, или на FORTRAN сегодня пишутся новые проекты? По всей видимости, верно и то, и другое, - продолжил Рафик. "Хотя унаследованные библиотеки FORTRAN по-прежнему составляют значительную часть пользовательской базы FORTRAN, многие пользователи также используют новые возможности более поздних стандартов FORTRAN. Использование FORTRAN также изменилось: вместо того, чтобы использовать его для написания всего приложения, теперь он чаще используется для написания вычислительных ядер для приложения. Другие языки, такие как C/C++ или Python, используются для написания пользовательского интерфейса или другого кода, вызывающего вычислительное ядро. В результате многие пользователи не подозревают, что используют библиотеки FORTRAN. Например, если вы пользовались модулями SciPy или NumPy в Python, то, скорее всего, использовали библиотеку BLAS, написанную на FORTRAN. В настоящее время программы на FORTRAN также часто используют спецификации OpenMP или MPI для добавления параллелизма (множество одновременных потоков в одной программе), выгрузки на ускорители, такие как GPU, и распределения, то есть взаимодействия между разными программами, возможно, на разных компьютерах. Это позволило использовать преимущества FORTRAN на больших суперкомпьютерах, имеющих несколько CPU и GPU".

Список Top500, публикуемый дважды в год, определяет 500 самых быстрых суперкомпьютеров в мире, и в настоящее время в нем лидирует 8 699 904-ядерный Frontier, расположенный в Национальной лаборатории DOE/SC/Oak Ridge в США. Это единственный компьютер, производительность которого превысила 1EFLOPS, т.е. один квинтиллион (1 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000) инструкций с плавающей точкой в секунду, что измеряется с помощью бенчмарка LINPACK.

При такой производительности - в 100 000 раз большей, чем у игровых ПК высшего класса - выбор подходящего языка очень важен для того, чтобы использовать его по максимуму. Поэтому интересно отметить, что практически во всем, что можно прочитать о программном обеспечении Frontier, упоминаются всего три языка: C, C++ и FORTRAN. И это не единичный случай. С момента создания первого компьютера с хранимыми программами до появления первого экзафлопсного компьютера прошло 74 года, но другие уже идут по пятам. Например, готовящийся к выпуску суперкомпьютер El Capitan, расположенный в Ливерморской национальной лаборатории имени Лоуренса, имеет проектную скорость, вдвое превышающую скорость Frontier, а Aurora, расположенная в Аргоннской национальной лаборатории, как ожидается, превысит этот показатель в 2EFLOPS. И, хотя о поддерживаемых El Capitan языках пока ничего не говорится (но мы можем предположить), как и Frontier, Aurora будет программироваться на языках C/C++ и FORTRAN. Может ли быть лучшее свидетельство о языке 50-х годов, чем то, что в 2023 году на нем будут работать самые требовательные приложения в мире?

В мире высокопроизводительных вычислений FORTRAN остается очень важной рабочей лошадкой.
В мире высокопроизводительных вычислений FORTRAN остается очень важной рабочей лошадкой.

Итак, какие же преимущества FORTRAN способствовали его использованию в настоящее время и как в этом отношении он соотносится с более современными языками? По словам Рафика, "FORTRAN - это язык высокого уровня, что дает компилятору больше возможностей для оптимизации. Примером тому может служить конструкция указателей. FORTRAN позволяет пользователю указывать цели, к которым может обращаться указатель. Это позволяет компилятору построить более точный анализ алиасинга, чем в других языках, таких как C, в которых указатели могут адресоваться к чему угодно". Остается только гадать, вызовут ли Python и Java столь благожелательные отзывы через полвека.

Комментарии (22)


  1. unreal_undead2
    17.10.2023 07:55
    +5

    Если вы хотите попробовать свои силы в кодинге на FORTRAN 1957, то компилятора FORTRAN для IBM 704 вы не найдете.

    Вот тут - https://github.com/rhobbie/Mkf2 - инструкции как найти и запустить.


  1. SpiderEkb
    17.10.2023 07:55
    +1

    Использование FORTRAN также изменилось: вместо того, чтобы использовать его для написания всего приложения, теперь он чаще используется для написания вычислительных ядер для приложения. Другие языки, такие как C/C++ или Python, используются для написания пользовательского интерфейса или другого кода, вызывающего вычислительное ядро.

    Это то, о чем я давно пытаюсь сказать - когда требуется высокая эффективность, рационально не закладываться на один единственный язык "который может все", но разбивать задачу на части и для реализации каждой части использовать тот инструмент (специализированный язык), который позволит получить максимальную эффективность.

    И для этого должны быть специальные механизмы типа LLVM или ILE (интегрированная языковая среда), реализованная на middleware платформе IBM i (AS/400) где для низкоуровневых вещей удобно использовать С/С++, а для реализации коммерческой бизнес-логики и работы с БД - специализированные COBOL (поддерживается, но мало используется) или RPG (более 80% кода там пишется на нем, активно развивается) которые позволяют легко работать с БД как посредством интеграции SQL запросов в код, так и напрямую, поддерживают арифметику с плавающей точкой, датами, временем и нативно поддерживают все типы данных, присутствующие в БД - char, varchar, decimal, numeric, date, time, timestamp, не требуя для работы с ними создания дополнительных объектов или каких-либо преобразований.

    Понятно, что специализированные языки типа Fortran или RPG есть и будут нишевыми и не столь распространёнными как языки общего назначения, но списывать их не стоит и развиваться они будут.


  1. GospodinKolhoznik
    17.10.2023 07:55
    +2

    В то время, как другие домашние компьютеры 80-х годов работали только на
    Basic, Amstrad CPC 464 предлагал в качестве опции CP/M, а значит, и
    FORTRAN.

    При этом на самой фоторгафии красуется надпись BASIC 1.0


  1. Javian
    17.10.2023 07:55
    +1

    В то время, как другие домашние компьютеры 80-х годов работали только на Basic

    У нас свой путь:

    Наконец, третью микросхему занимал интерпретатор языка Фокал (расшифровывается как «формульный калькулятор»). Наличие в ПЗУ Фокала вместо уже стандартного в то время Бейсика служило одной из главных мишеней для критиков БК-0010. Действительно, программ на Бейсике тогда публиковалось огромное количество, а Фокал был известен даже не всем программистам. Однако сам по себе Фокал считался простым и достаточно удобным языком, позволявшим создавать программы любого назначения. И хотя у него имелись некоторые важные отличия от Бейсика, они были направлены на упрощение программирования, так что освоение Фокала выглядело ничуть не более сложным, чем обучение Бейсику.


    1. unreal_undead2
      17.10.2023 07:55
      +1

      Как раз Фокал на БК у меня был первым ЯВУ. Бейсик после него выглядел весьма продвинутым и элегантным )


      1. Bedal
        17.10.2023 07:55
        +1

        очень любил Фокал. Идея блоков в несколько строк, которые можно расставлять в любом порядке - это как раз красиво. Хотя для сколько-нибудь крупной программы, мягко говоря, непрактично :-)

        Очень удобен был для обучения детей - им легче давались эти маленькие блоки с автономным смыслом.


        1. unreal_undead2
          17.10.2023 07:55

          В смысле в любом порядке? Там же чёткая нумерация, и без аналога renum надо было аккуратно нумеровать строчки с каким-то шагом. Ну и арифметический if в стиле фортрана не самая удобная вещь. Впрочем, для программок на страничку, которые на каждом занятии надо набирать заново, это не так критично.


          1. Bedal
            17.10.2023 07:55

            не в смысле "после написания перетасовать", а в смысле можно продумывать каждый блок автономно. Порядок следования неважен, всё равно goto.

            для программок на страничку, которые на каждом занятии надо набирать заново,

            именно. Я его только для обучения детей и использовал.


            1. unreal_undead2
              17.10.2023 07:55

              Разве там после, скажем, 1.90, выполнение не проваливалось автоматом в 2.10 ?


              1. Bedal
                17.10.2023 07:55

                проваливалось. Но этого можно было избежать, я и учил их избегать, чтобы учились декомпозировать, а не писать простынку, в которой быстро путаешься.


                1. unreal_undead2
                  17.10.2023 07:55

                  Учитывая, что обычно изначально код писался с шагом 10 - 1.10,1.20 и т.д. - чтобы при необходимости вставить инструкцию в середину, более-менее осмысленный кусок занимал несколько первых цифр.


                  1. Bedal
                    17.10.2023 07:55

                    это были первые программы детей, в стиле "сделать ритмичное пощёлкивание", сотни возможных строк в блоке хватало. Да и для базовых алгоритмов, вроде обхода дерева в рекурсии или алгоритма сказки "Колобок" - тоже.


                    1. unreal_undead2
                      17.10.2023 07:55

                      Я к тому, что реально (чтобы позволить дописать код в середину) строк в блоке не сто, а десять - это и для "детского" кода маловато. Уже не помню, что тогда писал (дело было в шестом классе в конце 80х), но тетрадный листок програмки занимали. Хотя нас тогда структурированию кода не учили - ладно хоть вообще дали доступ к компам, так то информатика была только в старших классах.


                      1. SpiderEkb
                        17.10.2023 07:55

                        Когда в школе учился, компов еще не было.

                        В институте до компов (ЕС-1033) тоже, естественно, не пускали- "программировали на бумажке" (на бланках, FORTRAN-IV, кстати, "первый моя язык").

                        На компе реальном (СМ-4) уже впервые на работе писал, Fortran-77.

                        Это потом уже появились PC, BASIC, C, позже С++...


                      1. unreal_undead2
                        17.10.2023 07:55

                        Fortran IV на EC 1045 застал в десятом классе - ходил на спецкурс в один из институтов, реальная работа там уже шла на PCшках, ЕСку отдали на съедение школьникам, можно было развлекаться под Примусом в терминале. Хотя ещё за год до нас терминалами пользовались сотрудники, школьники на спецкурсе набивали код на перфокартах.


                      1. Bedal
                        17.10.2023 07:55

                        в учебном размере нет проблемы полностью блок переписать. А декомпозиции (структурирование - это другое) я учил сразу, изначально. Проще было, сам был уже системным программистом с десятком языков в голове - и дети были свои :-)


                      1. unreal_undead2
                        17.10.2023 07:55
                        +1

                        С мембранной клавиатурой оригинального БК 0010 и отсутствием предыдущего опыта работы на какой либо клавиатуре ввод одной строчки - уже серьёзная задача, так что перенабирать код, чтобы освободить место для новой строчки, может быть долго. При том что время занятия ограничено и между занятиями код не сохранялся.


                      1. Bedal
                        17.10.2023 07:55

                        я же и говорю - мне легче было. Всё дома, не проблема. Да и набирать тоже как-то не напрягало.


      1. unclegluk
        17.10.2023 07:55

        Фокал на ДВК. У меня даже были свои дискеты с системой и моими программами. За мной в кабинете информатики даже отдельный компьютер закрепили с дисководом. И я был полностью независим от сервера. Бейсик мало меня затронул, после школы был Турбо Си.


    1. ibnteo
      17.10.2023 07:55

      У Фокала ещё и команды все различались по первым буквам, и можно было вводить лишь первую букву, а дальше печатать что угодно (или ничего), приятель так нашёл случайно команду help, просто тестируя, что будет при вводе разных наборов букв. Бейсику уступал лишь в скорости выполнения, а сам язык поинтереснее будет.


  1. Bedal
    17.10.2023 07:55

    С Не удержусь:

    C присвоение значения "полтора" переменной DO1I:

    DO1I=1.5

    C оператор цикла, выполняющегося пять раз и ограниченного меткой 1:

    DO1I=1,5

    С :-D


  1. DustCn
    17.10.2023 07:55

    Использование FORTRAN также изменилось: вместо того, чтобы использовать его для написания всего приложения, теперь он чаще используется для написания вычислительных ядер для приложения. Другие языки, такие как C/C++ или Python ...

    Здесь у вас ошибка. Между фортраном и С/C++ нет никакой разницы в производительности. Более того, все современные компиляторы транслируют фортран (или С) программу в промежуточное представление, из которого потом через оптимизаторы и кодогенератор получается уже объектник, а после линкера бинарь.

    Кроме того, С/С++ уже давно используется для написания высокопроизводительного кода. Посмотрите в Tensorflow к примеру. Большинство проектов для питон кода для получения производительности на уровне пика железки делает С/C++ кернела и гоняет их или на CPU с тридами или на GPU. Ну или использует сторонние библиотеки типа cuda/mkl/fftw для достижения хорошей производительности. Кстати опять же написанные на C/C++. Из чисто фортрановых либ я могу вспонмить разве что P3DFFT и DBCSR. Остальные же предпочитают не связываться с динозаврами.

    Фортрана, как по мне, главный плюс в том что его не забросили, и он потихоньку развивается. Это позволяет поддерживать тонны старого кода, потихоньку мигрируя его на более современные стандарты. Ну или https://netlib.org/f2c/ если решено не дожидаться перитонита :)