Fortran не особо жалуют в сообществе программистов. Многие считают его громоздким и устаревшим, а программирование на нём сравнивают с поездкой на работу в экипаже, запряжённом лошадьми. Ресурс Words and Buttons рассмотрел, насколько правдивы мифы об этом языке программирования. Dev.by публикует перевод статьи.
В рамках одного из конкурсов по оптимизации кода, который инициировало NASA, требовалось выполнить задачу на языке Fortran. Многие считали, что проект даже не смогут запустить из-за отсутствия участников. Проект действительно не запустили, только по прямо противоположной причине: кандидатов оказалось настолько много, что агентство просто не уложилось бы в срок.
Но Fortran не настолько сложен и не потерял свою актуальность. Эти заблуждения породил как раз тот факт, что он отлично справляется с тем, для чего предназначался: сделать обработку больших объёмов числовых данных простой и эффективной. Fortran используют учёные и инженеры (не-программисты), и для них работающее решение задачи важнее красивого кода.
Именно это породило миф о сложности языка. И в основном код на Fortran действительно сложен. Но только потому, что:
- задача, которую он решает, сложна;
- код пишут не программисты, а специалисты в какой-либо предметной области.
Fortran достаточно прост, чтобы узкие специалисты могли писать на нём плохой код, который даёт хорошие результаты.
Что касается «старомодности», текущий стандарт языка — Fortran 2008, а следующим будет Fortran 2018, выход которого ожидается в ближайшее время. Язык понемногу, но постоянно обновляется. Главным сдерживающим фактором является его миссия: оставаться доступным для классических инженеров.
Однако сегодня в Fortran уже есть модули, объекты, дженерики и встроенная поддержка параллельных вычислений. Его возможности стабильно расширяются под давлением современного мира.
Fortran по-прежнему не имеет равных в структурном программировании, но при этом имеет функции, которых нет в мейнстримовых С-подобных языках, например прерывание или продолжение цикла из вложенного цикла.
rows: do i = 1, 10 columns: do j = 1, 10 if (a(i, j) == 0.) exit rows ... enddo columns enddo rows |
В нём есть оператор case
с диапазонами.
integer :: temp_c ! Temperature in Celsius! select case (temp_c) case (:-1) write (*,*) 'Below freezing' case (0) write (*,*) 'Freezing point' case (1:20) write (*,*) 'It is cool' case (21:33) write (*,*) 'It is warm' case (34:) write (*,*) 'This is Texas!' end select |
В нём можно использовать массив указателей для доступа к другому массиву.
real, dimension(5) :: a = [ 2, 4, 6, 8, 10 ] integer, dimension(2) :: i = [ 2, 4 ] print *, a(i) ! prints 4. 8. |
Здесь можно найти краткое введение в современный Fortran.
Вопрос в том, почему сегодня язык «ушёл в подполье». По мнению Words and Buttons, с ним произошло то же, что происходит со «старыми» программистами. Большинство из них остаётся в профессии, но численно они уступают молодому поколению, растворяясь в общей массе: количество разработчиков удваивается каждые пять лет. Однако это явление свойственно только сфере разработке ПО, а пользователи Fortran — преимущественно инженеры, и их численность не растёт в геометрической прогрессии. Это значит, что аудитория Fortran (предыдущие поколения и молодые инженеры) остаётся примерно на том же уровне, что и 30-40 лет назад, когда Fortran был в самом расцвете сил.
Можно сказать, что таковым он был всегда — слишком бурно развивалась окружающая обстановка. Языки приходят и уходят, но чтобы построить исправный самолёт, для математических вычислений инженеры всё равно выберут старый добрый Fortran, который прекрасно работает и не нуждается в серьёзных изменениях.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.