Про Фортран и другие языки программирования

Этим летом я выучил новый для себя ЯП (язык программирования) Питон, а потом решил доработать свой собственный ЯП ACL (advanced commаnd language). По русски я его называю Экол, но это никак не приживается. Про все языки программирования я давно и много читал статей и смотрел видео. Но вот в какой-то момент я вдруг решил узнать, а что стало с ЯП Фортран, на котором я программировал много лет назад, то есть в прошлом веке, в 70х, 80х и 90-х годах. В начале того времени все было просто. Компьютеры были большие и общие. То есть для всех один компьютер. Я сам начинал работать еще на компьютере М-20, на котором вообще не было никакого ЯП, только код самого компьютера. А потом был БЭСМ-6 (большая электронно-счетная машина) и на нем был компилятор только одного ЯП, то есть Фортрана. И никаких проблем с выбором языка не было.

В википедии есть такая статья (Хронология языков программирования). Там перечислено очень много языков, начиная с 1837 года. Нужно разделять разработку концепции языка и его реализацию. Реализация Фортрана была выполнена в 1957 году, и он в этом смысле был первым. Реализация языка IPL была выполнена в 1958 году, а затем были Лисп (1959), Кобол (1960) и Алгол (1960). Бейсик появился в 1964, Симула -- в  1967, Forth -- в 1968. У нас в Курчатовском Институте на компьютере М-220 был компилятор с Алгола и я на нем даже немного поработал, но он был медленный и проще было сразу писать программу в коде машины. Было и очень много разных других языков, но я отмечаю только те, которые выжили. В 1969 появился ПЛ/1, я про него слышал, но на нем не работал.

Далее Паскаль появился в 1970, Smalltalk -- в 1972, и в этом же году появился самый известный язык С. В таблице указано очень много языков, про которые никто ничего не знает, но вот IDL я знаю, он появился в 1977. А Матлаб -- в 1978. Поразительно как рано появились многие языки, про которые мы в России узнали много лет спустя, когда появились персональные компьютеры фирмы IBM.  А некоторые и намного позже, хотя уверен, что многие  совсем не знают большинства ЯП. Языки Objective-C и C++ появились в 1983 году. Другие языки -- Постскрипт появился в 1985, Erlang -- в 1987. В том же году появились Математика и Турбо Бейсик. Octave -- в следующем 1988 году. Наконец, в 1991 году появился Питон и Visual Basic, а в 1993 -- Lua. Самый плодовитый год 1995. В нем появились Java, Javascript, PHP, Rubi. И потом уже ничего интересного не появлялось. Точнее появлялись разные C# (2000), VB.NET (2001), Go (2009), Rast (2010), Kotlin (2011), Swift (2014).

В настоящее время существуют онлайн компиляторы некоторых языков. Вот, например, здесь есть выбор ЯП для работы онлайн. Выбор довольно большой, а именно, предлагают такие языки: Аda, Assembly, Bash, C#, C++, C, Clojure, D, Elixir, Erlang, F#, Fortran, Go, Haskell, Java, Javascript, Kotlin, Lisp, Lua, MySql, Node.js, Objective-C, Ocaml, Octave, Oracle, Pascal, Perl, PHP, Prolog, Python, R, Rust, Rubi, Scala, Scheme, Swift, Tcl, Visual Basic. Причем для некоторых языков, например, С указываются разные компиляторы, какие есть в наличии. Для других, например, sql указываются разновидности языка. Я не стал этого делать. Но видно, что языков много. Скорее всего во всех этих языках учитывается только их способность считать. А результаты выдаются в виде чисел или таблиц чисел.

Я сам онлайн компилятор не пробовал. Но вижу, что, например, языка Постскрипт нет, так как он только рисует. И скорее всего нет языков, у которых платные компиляторы, например, Матлаб. Вообще говоря, идея онлайн программирования не такая уж и плохая, особенно для новичков и чтобы познакомиться с основами языка. Нельзя сказать, что все языки одинаковы. Например, я свой Экол тоже написал в начале 90-х, он был мне необходим именно как язык без компиляции. Интерпретатор я написал на Фотране. Дело в том, что в то время Фортран уже умел рисовать с помощью внешних библиотек, но рисунки приходилось делать методом проб и ошибок, и компилировать программу каждый раз (100 раз и более) было очень неудобно и не быстро. Интерпретатор работал намного быстрее.

Интересно, что сейчас я работаю на 5 языках -- Java, Javascript, Postscript, Python, ACL и все эти языки работают через интерпретатор. Только Java при переводе в байт код проверяет код на ошибки, то есть у этого ЯП есть что-то подобное компилятору. Остальные ЯП сразу код исполняют. И все эти языки бесплатные. Среди первых мест в рейтингах сегодня находятся Java, Javascript, Python. А также такие ЯП как С, С#, C++. Фортран уже давно откатился в конец таблицы. Но он есть в списке онлайн компиляторов. И он, оказывается, продолжает развиваться. Я сам работал в стандартах 66, 77, 90. А потом появились стандарты 95, 03, 08, 18. То есть последний стандарт совсем недавно.

Мне стало интересно, и я решил проверить свои старые программы. Последний компилятор, какой у меня был -- это Fortran Power Station 4.0 для Виндовс-95. Он был первый 32-битовый. Оказалось, что он до сих пор работает и в Виндовс-8.1 и в Виндовс-10. Работает и компилятор, и программы, с его помощью сделанные. А старые 16-битовые программы уже не работают. Я перешел с Фортрана на Java в 2003 году. И с тех пор ничего про него не знал. Когда я переходил выбор был между Питоном и Джава. И я не жалею, что выбрал Джава. Питон я узнал только этим летом и он мне не понравился. То есть язык неплохой и во-многом напоминает мой Экол, хотя и различий тоже очень много. Но свой язык удобен тем, что его можно развивать и дополнять, он просто надстройка над Джава. А интерпретатор Питона написан на С и там все сложнее, так как язык чужой и развивать его с помощью языка С совсем не просто.

В те годы главными разработчиками компиляторов для Фортрана были Интел и Майкрософт. Так как я работал в Виндовс, то для меня был интересен только Майкрософт. Оказалось, что он в 1998 году отказался от Фортрана. Сейчас есть компилятор от Интел, но платный и вместе со средой разработки, а также бесплатный GNU Fortran, поддерживающий стандарт 95 и некоторые свойства более поздних стандартов. Я на всякий случай себе его скачал, может и пригодится когда-нибудь. Что меня удивило из этой информации, так это то, что С++ появился намного раньше Java. А я считал Java первым ЯП с чистым ООП (объектно ориентированным программированием). Я не знаю точно, но слышал, что С++ отличается от С именно тем, что в нем есть ООП. Тогда получается, что Java -- не первый ЯП с ООП.

Интересно, что язык Javascript я выучил в 1998 году, то есть вскоре после его создания. И с того времени у меня есть свой сайт в интернете. В то время Java тоже была в интернете и могла делать намного больше интересных вещей. Потом ее выгнали из браузеров по соображениям безопасности. Но это всегда так говорят, когда хотят кого-то обмануть. А на самом деле просто чистая конкуренция. По такой же причине выгнали и Адоб флэш технологию и язык Action Script. Его выгнали так, что и следов не осталось. Но зато сам Javascript стал более развитым и уже может делать то, что делали Java и Action Script.

В 2003 году я ушел с Фортрана как раз по той причине, что хотя он и умел уже программировать графику и интерфейсы, но делал он это очень плохо. Приходилось писать очень много лишнего кода в виде интерфейсов между ЯП и командами операционной системы. При этом использовались библиотеки языка С, а результат, то есть внешний вид программы, был весьма посредственным. Картинки показывались только в bmp формате, который я не любил. Я уже вовсю работал в интернете и мне нужен был формат jpg, gif. Я сейчас говорю как раз о компиляторе Fortran Power Station 4.0, который у меня сохранился. Какое-то время я спасался тем, что написал программу vkps.exe, которая текстом записывала картинки на языке Постскрипт, а потом их можно было смотреть в любой ОС.

Эта программа, кстати, до сих пор работает и не такая плохая. Хотя сейчас я на Java и ACL написал более продвинутые программы -- генераторы постскрипт ррисунков. Тандем Фортран+Постскрипт спасал меня во время работы за границей в системе Юних. Некоторые из моих программ там до сих пор работают. И вот Java мне поравилась тем, что она не зависит от ОС, то есть одинаково работает как минимум в трех системах -- Виндовс, Эппл и Линукс. И у нее есть возможность менять внешний вид, но я привык к тому, который она сама и сделала. Вместе с Java я узнал много всяких новых понятий и методов. Но у этого языка были и недостатки. Уж очень длинные имена у команд и переменных.

Но я решил эту проблему очень просто. Перекодировал интерпретатор своего языка с Фортрана на Джаву и получил новый язык ACL. На Фортране мой язык назывался по другому -- КВик. Это звучало как быстрый, и одновременно составлялось из первых букв моей фамилии и имени Кон ВИКтор. Язык ACL использует в готовом виде некоторые элементы интерфейса, приготовленные на Java, он записывается более компактно и у него совсем другая организация памяти. Фактически я отказался от ООП в разработке, но использовал ООП в готовых элементах разработки. Сам язык служит просто посредником между пользователем и Джавой. Он управляет готовыми объектами, но сам их не создает.

Хотя и это не совсем так. В нем есть графика в полной мере и есть отклик на реакцию пользователя при взаимодействии с картинкой. И можно просто нарисовать любой интерфейс и получить любой отклик. Такие элементы интерфейса ACL делать позволяет. И делает это более простым и быстрым способом. А что касается расчетов, то как и в любом языке через интерпретатор, они делаются сразу с массивами. Это есть в Питоне и даже есть в Фортране. Но в Java этого нет, хотя бы в старых версиях, с какими я работаю.

В свое время Фортран был удобен тем, что на нем были написаны все программы для решения математических задач. Готовый код для решения таких задач до сих пор продается фирмой NAG. Но уже не только на Фортране, а и на многих других языках. Ну и такие программы, как Матлаб и Октэйв это все делают при компактной записи. И плюс графика. Потом это все переписали в ЯП Питон. И сейчас у Фортрана нет таких преимуществ. Однако более крупные и специальные проекты расчетов сложных задач все равно написаны и пишутся на Фотране. Частично просто по инерции. Фортран считался самым быстрым ЯП для математтических расчетов. Наверно так оно и было и даже видимо и сейчас так и есть. Но фокус в том, что за последние годы быстрота процессоров выросла настолько, что уже нет смысла заниматься оптимизацией. Многие задачи и так быстро считаются.

Ведь нет никакой разницы во времени расчета между одной десятой и одной милионной долями секунды. Это все равно быстро. Человек быстрее реагировать не умеет. А раньше разница была, потому что если все умножить на 1000 имеем 100 и 0.001 секунды. И это совсем не одно и то же. И теперь Фортран необходим только для супер-сложных задач. Правда я знаю таких людей, которые и простую задачу решают сложным способом, на который надо в 1000 раз больше времени. Ведь важен еще и способ решения, точнее, алгоритм. Люди разные и каждый живет как умеет.

.


.
 



  Внимание! Сайт оптимизирован под браузер Google Chrome.