LINUX.ORG.RU

Обновления компиляторов C, C+, Fortran

 , , , ,


1

10

В конце прошлого начале этого года ряд компаний по традиции обновили своикроссплатформенные компиляторы и дополнительные инструменты, прежде всего для распараллеливания вычислений, для разработки на языках C, C++ и Fortran (в обязательном порядке):

PGI 2020.1. Community Edition версия компилятора выходит пару раз в год и по условиям лицензии ей разрешается пользоваться год с момента выхода. Текущая такая версия PGI CE 19.10.

Intel Parallel Studio XE 2020.

Absoft Pro Fortran 2020 - для разработки только на Fortran.

NAG Fortran Compiller 7.0.

AOCC 2.1 - набор компиляторов на основе llvm 9.0 (clang, flang) с патчами от AMD. Предположу, что в состав входит flang на основе старого проекта, а не переименованный f18, который собираются включить в поставку llvm 11, если снова не опоздают.

Во всех, где это возможно, заявлена полная поддержка C++17, местами продолжили добавлять/обновлять начальную поддержку C++20 и Fortran 2018.

★★★★★

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

Думаем перейти от обучения на Фортране к другому, но всё никак не получается: C слишком низкоуровневый, C++ слишком переусложнённый и многословный, Python слишком медленный, смотрим на Julia...

Sahas ★★★★☆
()
Ответ на: комментарий от Sahas

Посмотрите еще на D. Он продуктивен как Питон, но быстр как С++. Правда он общего назначения, а та же Джулия как раз под научные расчеты заточена и там библиотек побольше должно быть. Однако у D есть еще очень хорошее преимущество - он достаточно просто взаимодействует с кодом на других языках, есть поддержка не только Фортрана, С и С++, но и Питона, и R, той же Джулии.

yetanother ★★
()
Последнее исправление: yetanother (всего исправлений: 1)
Ответ на: комментарий от yetanother

Однако у D есть еще очень хорошее преимущество - он достаточно просто взаимодействует с кодом на других языках, есть поддержка не только Фортрана, С и С++, но и Питона, и R, той же Джулии.

С Си - поверю. А каким образом поддержка остальных языков отличаются от других ЯП? Те же биндинги.

Он продуктивен как Питон, но быстр как С++.

Либ тонет.

RazrFalcon ★★★★★
()
Ответ на: комментарий от Sahas

Думаем перейти от обучения на Фортране к другому, но всё никак не получается

А смысл переходить? Если курс хорошо ложиться на Фортран, то ему и надо учить.

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

А смысл переходить? Если курс хорошо ложиться на Фортран, то ему и надо учить.

Есть несколько причин. В частности:

1) Студенты (те, которым нравится программировать) хотят, чтобы им преподавали «модно-молодёжные» ЯП. Часто от них слышу, что Фортран — это олдскульно и беспонтово.

2) Фортран всё-таки редко используется «на практике», реже того же C++ (в нашей области). Кроме того, хочется готовить специалистов «широкого профиля», а не «программистов на Фортране».

3) Фортран хорош для простых задач, но начинает «раздражать», когда задача усложняется. C++ тут тоже не ахти, но было бы из чего выбирать... :)

4) Фортран — это всё-таки «низкоуровневая числодробилка». Если хочется использовать сторонние библиотеки для каких-то более сложных задач, то, к сожалению, не всегда есть биндинги для Фортрана*.

Конечно, помимо аргументов «контра», немало и «про», но лично мне Фортран не нравится :)

* Я в курсе, что можно вызывать процедуры на C из Фортрана, речь о нативной поддержке

Sahas ★★★★☆
()
Последнее исправление: Sahas (всего исправлений: 1)
Ответ на: комментарий от yetanother

Посмотрите еще на D. Он продуктивен как Питон, но быстр как С++.

Языку куча лет, а до сих пор «не в продакшене». Подозрительно... :)

Sahas ★★★★☆
()
Ответ на: комментарий от Sahas

Ну как это не в продакшене? Не в хайпе - это да. Для этого есть Раст. А в продакшене D уже давно. Есть коммерческие конторы которые построили свою инфраструктуру на нем и продолжают это делать. В общем никаких подозрений тут быть не может.

З.Ы. вообще у D есть конечно, слабые стороны, за что его можно покритиковать, но вот что действительно подозрительно, так то что все кто пытался его на лоре критиковать - все приводили какие-то причины далекие от реальности, ну разве что за редким исключением.

yetanother ★★
()
Ответ на: комментарий от yetanother

Честно, с D не знаком, поэтому не могу сказать, что мне в нём не нравится :)

Но зато знаком с C++ и знаю, что в нём мне не нравится. Вроде бы, с выходом новых стандартов ситуация улучшается, поэтому не очень ясно, чем C++ уступает/будет уступать D в скором времени :)

Sahas ★★★★☆
()
Ответ на: комментарий от RazrFalcon

С Си - поверю. А каким образом поддержка остальных языков отличаются от других ЯП? Те же биндинги.

Ну немного странный комментарий. Биндинги нужны для всех языков, включая С. Без них ну никак вообще. Либо мы говорим о разных вещах... За счет развитых возможностей метапрограммирования D позволяет легко решать задачи где нужен boiler plate код. Для биндингов/врапперов само то. Вот например autowrap. Пакет решает задачу использования дишного кода в Питоне, дотнете и экселе. Это, кстати, реально использующийся инструмент одной конторы из финтеха, где обороты на млрд баксов. Они открывают периодически свои наработки. Например алгоритм нелинейной оптимизации.

Либ тонет.

Я глубоко сомневаюсь, что вы даже пытались их найти.

yetanother ★★
()
Ответ на: комментарий от Sahas

Но зато знаком с C++ и знаю, что в нём мне не нравится. Вроде бы, с выходом новых стандартов ситуация улучшается, поэтому не очень ясно, чем C++ уступает/будет уступать D в скором времени :)

Ну тут уже личные предпочтения играют роль. У плюсов есть один серьезный недостаток, который же и достоинство - они тащут легаси. Из-за этого многие вещи они просто вынуждены делать не совсем очевидным и логичным способом, чтобы сохранить обратную совместимость. Так что в этом плане плюсы будут уступать более молодым языкам. Всегда.

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

Побыстрому, навскидку меня привлекают в D следующие моменты:

  • Метапрограммирование в D - просто песня по сравнению с плюсами. Я бы порекомендовал попробовать метапрограммирование в D просто для того, чтобы понял что это такое вообще - я, например, лучше стал понимать плюсовые шаблоны после этого. Мне не хватает в плюсах возможности пробежаться по полям структуры, из-за этого многое приходится писать руками, что увеличивает затраты на сопровождение кода.
  • Быстрая компиляция
  • Сходство с С/С++/Джава - любой сможет начать писать на D в течение получаса, код будет не идиоматический, конечно, но тем не менее. Многие примеры кода из этих языков легко транслируются на D
  • Код более лаконичен чем у тех же плюсов.
  • Сборщик мусора - на этапе прототипирования очень полезен, при этом его не обязательно использовать (интересно что многие, кто критикует D за сборщик мусора, сами его ни разу и не пробовали)

А вот, кстати, отзыв о результатах трехмесячного использования D. Там идет адекватная критика, потому что не все прямо гладко, хотя я не со всем согласен. И вывод:

Conclusion

My hope was that D would offer a sweet spot between Python's ease and speed of development and Rust's performance. And so far this looks like being the case.

yetanother ★★
()

Кроме gcc (включая C++ и fortran, естественно) и Intel ничего не нужно.

hotpil ★★★★
()
Ответ на: комментарий от yetanother

например autowrap

Это генератор биндингов на макросах? Если да, то повторяю вопрос: чем это отличается от других языков? А то вы так говорите, как будто это реализуемо только в D.

Я глубоко сомневаюсь, что вы даже пытались их найти.

Total 1725 packages found.

Было бы где искать.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Это генератор биндингов на макросах?

В D нет макросов.

А то вы так говорите, как будто это реализуемо только в D.

Это, видимо, просто комплекс у вас от того что не про Раст речь? Я нигде ничего такого не имел в виду даже. Можете процитировать, где я это написал?

Было бы где искать.

Ну так и не искали. О каких библиотеках вообще речь то? Без конкретики все ваши слова просто ни о чем. Я понимаю вы бы написали, что вам нужна конкретная библиотека с конкретной функциональностью и такой библиотеки вы не нашли. Но вы просто выдаете свои пожелания за реальность. Что выставляет вас не в очень радужном свете. Хотя вам не привыкать. Еще раз вам сообщаю, что в D вы можете использовать библиотеки написанные на других языках. Без лишних движений. Я понимаю, что RiiR и все такое. Но весь остальной мир живет как бы совсем по другому принципу, в котором синдром NIH не поощряется.

yetanother ★★
()
Ответ на: комментарий от RazrFalcon

По сравнению с плюсами, любой язык - песня.

А вот тут много правды в ваших словах

yetanother ★★
()
Ответ на: комментарий от yetanother

В D нет макросов.

Чем строковые миксины не макросы?

Можете процитировать, где я это написал?

Цитирую второй раз специально для вас:

Однако у D есть еще очень хорошее преимущество - он достаточно просто взаимодействует с кодом на других языках, есть поддержка не только Фортрана, С и С++, но и Питона, и R, той же Джулии.

Если нужно писать биндинги так же как и везде - то где преимущество?

О каких библиотеках вообще речь то?

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

О каких библиотеках вообще речь то?

Ну допустим нормальный TrueType парсер. Или XML дерево с минимум аллокаций.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Чем строковые миксины не макросы?

Тем что это строковые миксины, а не макросы? Или для вас макросы Раста это те же самые макросы сишного препроцессора?

Однако у D есть еще очень хорошее преимущество - он достаточно просто взаимодействует с кодом на других языках

Если нужно писать биндинги так же как и везде - то где преимущество?

И где здесь сказано, что для D не нужны биндинги? Здесь сказано, что использовать D из другого языка и другой язык из D достаточно просто. Потому что многие вещи в D за счет развитого метапрограммирования могут решаться автоматически что упрощает разработку. Ни С++, ни тот же Раст этим похвастаться не могут. Потому что в плюсах нет той интроспекции. А в Расте в угоду безопасности было принесено все. Вам напомнить историю про wlroots-rs, если не ошибаюсь с именем? Про то, как переписали обратно с Раста на C?

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

Ну так я вам еще раз пишу черным по белому, что D позволяет использовать библиотеки, написанные на других языках, в отличие от вышеупомянутого Раста в большей степени и с меньшей сложностью. И если человек пишет на D, то он имеет в своем распоряжении и дишные, и сишные, и большую часть плюсовых, и библиотеки питона если нужно, и пакеты R, из последнего была поддержка Java кода. Так что тут сравнение явно не пользу Раста, я бы сказал, вряд ли все это богатство будет переписано на Раст.

Ну допустим нормальный TrueType парсер. Или XML дерево с минимум аллокаций.

См. ответ выше

yetanother ★★
()
Последнее исправление: yetanother (всего исправлений: 1)
Ответ на: комментарий от yetanother

Почему у вас так горит? Я про Rust даже не упоминал, а из вас прямо фонтаном бьёт.

Здесь сказано, что использовать D из другого языка и другой язык из D достаточно просто.

И это 4.2 Использовать другие языки из D настолько же просто, как и в других языках. И не важно кто генерирует биндинги: сам язык, макросы или внешние утилиты. В конечно счёте всё сводится к вызову сишного API.

Потому что в плюсах нет той интроспекции.

В других языках есть. Чем они хуже D?

А в Расте в угоду безопасности было принесено все.

Юношеский максимализм?

Вам напомнить историю про wlroots-rs, если не ошибаюсь с именем? Про то, как переписали обратно с Раста на C?

Зачем мне напоминать историю о том, как один человек не осилил написать биндинги? Или он потом за вечер переписал их на D? Может вы просто экстраполируете единичный случай?

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

Вы это пишите уже 10-й раз. Но до конкретики дело так ни разу и не дошло. Одни лозунги типа удобства и продуктивности.

И если человек пишет на D, то он имеет в своем распоряжении и дишные, и сишные, и большую часть плюсовых, и библиотеки питона если нужно, и пакеты R, из последнего была поддержка Java кода.

Вы не поверите, но дёргать сишные, плюсовые и многие другие языки можно не только из D. Но вы, по неясным причинам, утверждаете обратное.

См. ответ выше

Я не вижу ссылок на нужные либы.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

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

Беседовать с хейтерами, которые по существу ничего путного сказать не могут и только засоряют топик в мои планы не входит.

yetanother ★★
()

Тут уже эксперты успели рассказать, что фортран нигде не используется?

yvv ★★☆
()
Ответ на: комментарий от RazrFalcon

но ты то пока кроме балабольства ничего не реализовал.

anonymous
()
Ответ на: комментарий от anonymous

А чего в нём полезного для расчётов появилось со времён ANSI C? Новые фичи можно по пальцам пересчитать.

Вдобавок в сях нет нормальных строк и массивов.

Bimbo
()
Ответ на: комментарий от Bimbo

Вдобавок в сях нет нормальных строк и массивов

Ценность Си в том, что он прекрасно подходит для системного программирования.

Владимир

anonymous
()

clang, flang

Срочно нужна реализация shlang

по условиям лицензии ей разрешается пользоваться год с момента выхода

Эммм, ну и лицензия… Это что за бред в сочетании с Community Edition словосочетанием? Либо ты чего напутал, либо там маркетологи пробили дно в поисках музы уже героин как какао заваривают

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от anonymous

Он подходит только тем, что исторически так сложилось что API у большинства осей сишное. В остальном он убогенький и не удобный.

Bimbo
()
Ответ на: комментарий от Bimbo

В остальном он убогенький и не удобный.

Ну так микроскоп мало подходит для забивания гвоздей да и PHP мало подходит для разработки драйверов, …

Владимир

anonymous
()
Ответ на: комментарий от RazrFalcon

По сравнению с плюсами, любой язык - песня.

Подозреваю, что вам не приходилось плотно ни на чистом С программировать, ни на Java.

eao197 ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Я не напутал. Там действительно так указано. Почему community при этом не знаю, наверное они решили, что раз разрешают пользоваться этому самому community, то пусть называется так. А год взяли просто, чтобы стимулировать использовать новые версии и активнее сообщать об ошибках.

grem ★★★★★
() автор топика
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от eao197

Последние два месяца плотно работаю с Си. По сравнению с окаменелым C, C++ намного лучше. Но до современных языков как до луны.

RazrFalcon ★★★★★
()
Ответ на: комментарий от Sahas

в нашей области

Что за область? %)

В РФ с фортраном, как мне видится проблема, прежде всего потому, есть те, кто учил его до 90-х и они знают и продолжают пользоваться только 77-м; в 90-е новые стандарты ещё не успели распространиться и кто мог/хотел перешли на C и C++, - на общем фоне провала численности научных сотрудников. А сейчас и преподавать то его толком некому и имеет смысл одновременно с какими-нибудь курсами численных методов.

grem ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

«У нас тут все джентльмены, мы друг другу на слово верим»

grem ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Думаю, не сильно ошибусь, если предположу, что из «современных» языков вы более-менее знакомы разве что с Rust и Swift.

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

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Апелляция к авторитету? Скучно. Позовите когда в C++ завезут модули (повсеместно, а не только в master ветке компилятора) и реализуют единый, адекватный ПМ. Тогда можно будет что-либо обсуждать.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Позовите когда в C++ завезут модули (повсеместно, а не только в master ветке компилятора)

Раст тоже юзабелен лишь с найтли веткой. Miri и санитайзеры доступны лишь в найтли. А без этого о memory, ub и thread safety не может идти и речи.

https://rust-lang.github.io/rustup-components-history/x86_64-pc-windows-msvc.html

fsb4000 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Апелляция к авторитету?

Демонстрация уровня «авторитетности» человека, который сперва заявляет о том, что любой язык лучше C++, а следом говорит, что C++ намного лучше чистого Си.

eao197 ★★★★★
()
Ответ на: комментарий от grem

Область CFD

Ты абсолютно прав. По сути, преподаётся Fortran-77 с элементами Fortran-90, как раз для численных методов. А я — представитель «нового поколения», мне этот Фортран никаким боком не упёрся :)

Sahas ★★★★☆
()
Ответ на: комментарий от RazrFalcon

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

eao197 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Быть лучше Си - это какая-то спец. олимпиада.

Это ответ тем, кто говорит - «Си устарел».
Наверное не многие понимают ту нишу задач где использование Си полезно.
И они горюют о том, что он мало эффективен для формировании аналитики о количестве бутылок шампанского и остатков количества бубликов на заданную дату.

Владимир

anonymous
()
Ответ на: комментарий от RazrFalcon

Хорошо что разработкой компилятора занимаются не фанатики, а те кто хотят получить действительно безопасное решение. Поэтому и портируют llvm санитайзеры и добавляют в них специфичные для Rust вещи.

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

Вот для примера:

https://github.com/rust-lang/rust/pull/53804

https://github.com/rust-lang/rust/pull/58431

Безопасность важна? Используй санитайзеры, только они дают хоть какую-то гарантию…

fsb4000 ★★★★★
()
Ответ на: комментарий от RazrFalcon

И главное, зачем зависеть от сторонней репы, если нужна определённая версия библиотеки? ПМ можно рассматривать как дополнение к системе сборки, но не более. И уж совсем не как свойство языка.

Я компиляю на компе, а не в облаке. Мне для работы постоянный выход в сеть не нужен.

Надо полагать,что ответ «нет».

grem ★★★★★
() автор топика
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от fsb4000

И? Санитайзер не нужен для сборки. Поэтому конечному пользователю либы без разницы. В отличии от модулей в C++.

Используй санитайзеры, только они дают хоть какую-то гарантию…

Никаких гарантий они не дают. Safe Rust - даёт.

RazrFalcon ★★★★★
()
Ответ на: комментарий от grem

Надо полагать,что ответ «нет».

Ответ «Да», но вам очень хочется прикопаться к столбу.

если нужна определённая версия библиотеки

А если этих либ штук 200? Ручками пердолиться? Спасибо, для этого уже есть C/C++.

И уж совсем не как свойство языка.

Язык без экосистемы/тулинга никому не нужен. См. D.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от Sahas

Область CFD

Тут уже от пристрастий зависит: видел два проекта использующие одинаковые подходы, той лишь разницей, что один считал сжимаемый течения, другой несжимаемые, емнип. Ну и соответственно один на Фортране-90 уже с элементами 2003, второй на C++. Развиваются они одновременно.

grem ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.