«Fortran жив». Почему язык всё ещё важен, хотя давно вышел из моды

0
263
views

Fortran

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, который прекрасно работает и не нуждается в серьёзных изменениях.



ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here