M. Ridcully wrote: ↑07 Oct 2020 22:16
Вячеслав Викторович wrote: ↑07 Oct 2020 20:13
мне кажется вы заблуждаетесь, ява ничем не медленне ц. Собственно всё зависит от алгоритма, правильный алгоритм будет работать примерно одинаково. Вот давайте решите любимую задачу Крис-Крис с литкода на Ц и сравним насколько она в десять раз работает быстрее, чем на яве.
А Дед Мороз - существует?
Алгоритм важен, никто не спорит, и литкод именно про алгоритмы. Но когда судят про "правильность" алгоритма, обычно имеют в виду абстракцию - cost model.
Реальные программы исполняются не на абстрактных моделях, а на вполне себе физическом железе. И учитывать особенности этого железа часто не менее важно, чем алгоритм. C++ изначально создавался как язык, на котором - при необходимости - можно спуститься на как угодно низкий уровень без необходимости что-то кодить на ассемблере. Другим важным пинципом в C++ является zero cost abstractions (и хотя в реальности это не всегда абсолютно так, но очень близко). Балодаря этим двум принципам правильная программа на C++ будет всегда не медленнее (а обычно - быстрее) программы, написанной на любом другом языке.
А теперь расскажите про Деда Мороза.
Железо становится всё более быстрым и дешевым, а труд программистов всё более дорогим. ФБ идёт против этих тенденций, надеясь сэкономить на
спичках железе. Ну окей, понятно. Но когда то же железо станет настолько дешевым, что затраты на программистов станут дороже? Даже на триллионах запросов. Что тогда, переписывать с ц на
яву го или хаскел?
Собственно задача низкоуровневой оптимизации - это задачи компилятора и/или виртуальной машины. Их совершенствование идёт постоянно и даже со специализацией для различных задач.
Собственно там и надо прилагать усилия, а не оптимизировать на низком уровне каждую отдельную программу.
Ну и скажем, есть ещё один аспект - это функциональная сложность. У ФБ - она скажем не самая высокая. Есть много областей, где функциональность более обширна, но требования к производительности не столь высоки.
Так вот, если есть тенденция к расширению функциональности ФБ, то долгосрочная стратегия фокус на Ц - с этой точки тоже проигрышная.