Pull to refresh

Comments 24

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

При этом на БК-0010 (Фокал же по сути только на нем был) был процессор "форкнутый" pdp-11 и на нем обалденный ассемблер с удобными командами и адресацией, гораздо более приятный ассемблера x86-совместимого.

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

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

DO1I=1.5

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

DO1I=1,5

С :-D

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

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

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

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

Эх молодость моя. См1210 и её кривой Фортран. Всё массивы передаются в функцию по значению. И месяцы его правки чтобы изменить на передачу по ссылке. Зато модель реактора ввр 400 заработала в реальном времени 😇

Sign up to leave a comment.

Articles