Дешевле докупить железа, чем связываться с «программистом-оптимизатором».
Простите, не соглашусь с вами.
Полный цикл расчётной программы считается месяц (чистого времени, календарного — вдвое больше) на самом мощном суперкомпьютере на который хватило денег у организации.
Только переговоры о доступе к другому компьютеру (если деньги свалятся с неба) займут до полугода, а потом ещё очередь.
За какие деньги и какого железа вы предлагаете "докупить"? (-:
Не путайте веб-сервисы для редактирования картинок и расчёты для изделий стоимостью в десятки мегафранклинов.
У Си тоже нет ничего подобного (сколько нибудь распространённого), это не мешает ему быть одним из популярнейших языков.
Да и с трудом представляю себе учёного "фортрано-боя" который с блеском в глазах качает ночами новые модные библиотеки, установить которые вручную он бы не смог (-:
Так фортран компилируется тем же самым gcc.
Потому что gfortran это всего лишь один из бекендов gcc, а Intel Fortran один из бекендов Intel Compilers.
Все опции кодогенерации, доступные для C/C++ доступны и для фортрана.
Суть в том, что математическая программа написанная в лоб на фортране с использованием стандартных средств, как правило будет быстрее программы написанной на С/С++ с использованием %вашей_любимой_библиотеки% даже после небольшой оптимизации.
После серьёзной оптимизации разница будет скорее в пользу С/С++.
По умолчанию инт четырёхбайтный. Можно задать от INTEGER(1) до INTEGER(16) (иногда только 8).На экзотических архитектура не определено.
Автоматического установщика как в новых средах нет.
На чём угодно, нематиматическую часть нет ни малейшего смысла писать на фортране, а в новых стандартах (а по факту и в старых) фортрановские объектники линкуются с C/C++-ными. Так что вполне можно использовать GTest.
Теоретически в новых стандартах есть всё для работы с юникодом. Практически — не видел ни единого случая, когда бы это использовалось. Область применения фортрана бесконечно далека от обработки текстов.
Потому, что в C++ всё это можно сделать тысячей способов, разница в производительности которых может достигать нескольких порядков.
Компиляторы фортрана же предлагают достаточно производительное, унифицированное и простое в использовании решение из коробки.
Например вы можете дать коллеге код на фортране и он сразу же заработает. Можете найти на старой ленте программу написанную неизвестно кем в 1970-х и она скомпилируется с кучей ворнингов, но выдаст точный результат.
C/C++ — более универсальный вариант. Вы можете использовать одну из тысяч библиотек, или написать свой велосипед. Но будьте готовы, что у вашего друга интеграция вашего кода может занять некоторое время потому что используемые библиотеки, их версии, или формат хранения могут быть несовместимы.
Потому, с точки зрения представления алгоритмов, программы на фортране в разы более переносимы чем на любом другом языке. Язык развивался все эти годы именно в этом направлении и это работает.
Скажу больше — математику в абсолютном большинстве школ учили и без знания математической нотации.
Собственно и не математику, а только начала арифметики. Всё что сложнее, изучалось уже в других учебных заведениях, а в школах использовали задания вида:
Если к яблокам Федота прибавить яблоки Авдотьи...
Это и было главной причиной того, что в COBOL такие необычные для нас операторы:
ADD FEDOT-APPLES TO AVDOTYA-APPLES GIVING RESULT
В отличии от появившегося немного ранее FORTRAN:
555 SUMAPL=FEDAPL+AVDAPL
Просто потому, что у этих языков разная целевая аудитория.
Да, в отдельных школах всё это учили и в конце XIX и в начале XX, но массовая аудитория была бесконечно далека от подобных вещей ещё в конце 50-х. Только в начале-середине 60-х математика стала проникать в школу, в основном как результат космической гонки.
Упс… А вот с гитхабом пока дружу не сильно, больше с геритом) Что там нужно было делать, что бы отправить пул реквест вам, а не себе?
Это не сколько перфекционизм, сколько профессиональная деформация.
Когда бегло смотрю на:
res= str(self.kakasi.stdout.readline(), «sjis»).rstrip('\r\n')
Воображение услужливо дорисовывает:
def res= str… # < — начало объявления метода-сеттера в Ruby.
Создал пулл реквест.
Впринципе можно убрать множество продублированного кода, организовав наследование.
Но я бесконечно далёк от темы и боюсь не смогу протестировать изменения)
Простите за критику, но было бы неплохо, если бы вы ознакомились с PEP8 (https://www.python.org/dev/peps/pep-0008/).
В текущем виде код местами практически не читаем.
Вам самому будет намного легче разбираться в нём, если оформление будет пусть даже и не строго по PEP8, но хотя бы единообразно.
Скорее всего да.
Стоящий рядом бак с опилками (или корой) подсказывает, что это пудр-клозет.
Наполнитель поглощает запахи и лишнюю воду, потом его немного подсушивают — и вот готов «сухой порошок» для компостирования или биогаза.
Весь водород плюс подсосанный воздух. И так быстро, что бы всё это спонтанно не загорелось. И что бы двигатель внезапно не поломался. И что бы случайно не подпалил не то, что нужно.
Простите, не соглашусь с вами.
Полный цикл расчётной программы считается месяц (чистого времени, календарного — вдвое больше) на самом мощном суперкомпьютере на который хватило денег у организации.
Только переговоры о доступе к другому компьютеру (если деньги свалятся с неба) займут до полугода, а потом ещё очередь.
За какие деньги и какого железа вы предлагаете "докупить"? (-:
Не путайте веб-сервисы для редактирования картинок и расчёты для изделий стоимостью в десятки мегафранклинов.
У Си тоже нет ничего подобного (сколько нибудь распространённого), это не мешает ему быть одним из популярнейших языков.
Да и с трудом представляю себе учёного "фортрано-боя" который с блеском в глазах качает ночами новые модные библиотеки, установить которые вручную он бы не смог (-:
Так фортран компилируется тем же самым gcc.
Потому что gfortran это всего лишь один из бекендов gcc, а Intel Fortran один из бекендов Intel Compilers.
Все опции кодогенерации, доступные для C/C++ доступны и для фортрана.
Суть в том, что математическая программа написанная в лоб на фортране с использованием стандартных средств, как правило будет быстрее программы написанной на С/С++ с использованием %вашей_любимой_библиотеки% даже после небольшой оптимизации.
После серьёзной оптимизации разница будет скорее в пользу С/С++.
Конечно можно. Но у вашего коллеги из другой организации эта коробка будет другой.
И согласно законам Мерфи, она будет несовместима с вашей.
Потому, что в C++ всё это можно сделать тысячей способов, разница в производительности которых может достигать нескольких порядков.
Компиляторы фортрана же предлагают достаточно производительное, унифицированное и простое в использовании решение из коробки.
Например вы можете дать коллеге код на фортране и он сразу же заработает. Можете найти на старой ленте программу написанную неизвестно кем в 1970-х и она скомпилируется с кучей ворнингов, но выдаст точный результат.
C/C++ — более универсальный вариант. Вы можете использовать одну из тысяч библиотек, или написать свой велосипед. Но будьте готовы, что у вашего друга интеграция вашего кода может занять некоторое время потому что используемые библиотеки, их версии, или формат хранения могут быть несовместимы.
Потому, с точки зрения представления алгоритмов, программы на фортране в разы более переносимы чем на любом другом языке. Язык развивался все эти годы именно в этом направлении и это работает.
Надеюсь это была пасхалка (-:
в Симпсонаху Хейли, если не ошибаюсь.Скажу больше — математику в абсолютном большинстве школ учили и без знания математической нотации.
Собственно и не математику, а только начала арифметики. Всё что сложнее, изучалось уже в других учебных заведениях, а в школах использовали задания вида:
Это и было главной причиной того, что в COBOL такие необычные для нас операторы:
В отличии от появившегося немного ранее FORTRAN:
Просто потому, что у этих языков разная целевая аудитория.
Да, в отдельных школах всё это учили и в конце XIX и в начале XX, но массовая аудитория была бесконечно далека от подобных вещей ещё в конце 50-х. Только в начале-середине 60-х математика стала проникать в школу, в основном как результат космической гонки.
Это не сколько перфекционизм, сколько профессиональная деформация.
Когда бегло смотрю на:
res= str(self.kakasi.stdout.readline(), «sjis»).rstrip('\r\n')
Воображение услужливо дорисовывает:
def res= str… # < — начало объявления метода-сеттера в Ruby.
Прошу прощения за излишние придирки)
Впринципе можно убрать множество продублированного кода, организовав наследование.
Но я бесконечно далёк от темы и боюсь не смогу протестировать изменения)
В текущем виде код местами практически не читаем.
Вам самому будет намного легче разбираться в нём, если оформление будет пусть даже и не строго по PEP8, но хотя бы единообразно.
Стоящий рядом бак с опилками (или корой) подсказывает, что это пудр-клозет.
Наполнитель поглощает запахи и лишнюю воду, потом его немного подсушивают — и вот готов «сухой порошок» для компостирования или биогаза.