vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2021-03-25 09:05 pm

Ось чому ми тут усі програмуємо на Сі

Народ проанализировал, какие языки программирования эффективнее по скорости, памяти и энергопотреблению. Си заметно выделяется из толпы. Rust тоже неплох.



Полный текст статьи: https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf
ircicq: (Default)

[personal profile] ircicq 2021-03-26 04:16 am (UTC)(link)
Для полноты Ассемблера не хватает
brumka: (Default)

[personal profile] brumka 2021-03-26 04:21 am (UTC)(link)
Интересно, кто (и где?) пишет на Аде?..
spamsink: (Default)

[personal profile] spamsink 2021-03-26 04:23 am (UTC)(link)
Паскаль у них по памяти на первом месте, потому что в списке нет Форта.
ircicq: (Default)

[personal profile] ircicq 2021-03-26 04:58 am (UTC)(link)
Принято считать что в армии, но там же всё засекречено
ufm: (Default)

[personal profile] ufm 2021-03-26 05:30 am (UTC)(link)
Непонятно как у них Си оказался хуже Go/Паскаля по памяти. Впрочем - я подозреваю как. И это еще больше убеждает, что программирование на Си/Сипипи нужно приравнять к работе с особоопасными веществами и программисты должны получать на это дело специальную лицензию.
mdmx: (Default)

[personal profile] mdmx 2021-03-26 05:49 am (UTC)(link)
Согласен, но думаю что это своего рода читерство.
utochka: ШЁЛКОВАЯ УМНИЦА (Default)

[personal profile] utochka 2021-03-26 06:50 am (UTC)(link)
Give us back our Basic! :-)
ircicq: (Default)

[personal profile] ircicq 2021-03-26 07:30 am (UTC)(link)
По какому формальному признаку это не язык?
spamsink: (Default)

[personal profile] spamsink 2021-03-26 08:10 am (UTC)(link)
В том, что С++ оказался менее эффективным по времени, чем С, нет ничего удивительного. Если на С++ специально писали "высокоуровнево", то вот он и результат. Интересно было бы узнать, насколько ухудшаются значения от компиляции сишной программы С++ным компилятором (для чего могут понадобиться мелкие косметические правки, но этой разницей можно пренебречь).
vit_r: default (Default)

[personal profile] vit_r 2021-03-26 09:33 am (UTC)(link)
Вот так всегда у зелёных. Сколько электричества выделили -- посчитали, сколько программисты во время написания кода тяжёлых вздохов сделали -- не посчитали.

Зато, тема важная. Прямо в номер.
x86128: (Default)

[personal profile] x86128 2021-03-26 09:44 am (UTC)(link)
Предположу что из-за отсутствия правил переписывания термов.
Другими словами из-за того что символьная запись на ассемблере соответствует один в один машинным командам. Язык же программирования предполагает синтез машинных команд по каким либо правилам (оптимизациями вычисления арифметичских операций, удаления мертвого кода, и т.д.).
x86128: (Default)

[personal profile] x86128 2021-03-26 09:49 am (UTC)(link)
Для софта который только работает миллионными тиражами, действительно, параметром можно пренебречь, но если же про разработку прошивок каких-нибудь марсоходов (мелкосерийного всякого), то там больше про "поправил пересобрал запустил", то между компиляцией кода какой-нибудь условной java или kotlin можно и чайку успеть налить :)
vit_r: default (Default)

[personal profile] vit_r 2021-03-26 10:07 am (UTC)(link)
И для марсоходов, и для совфта, который "только работает миллионными тиражами" вопросы надёжности превышают все другие интересы. А оптимизация высоконагруженного кода должна идти руками на уровне ассемблера. Впрочем, даже в банальном SQL перестановка скобочек может привести к падению производительности на два порядка.

Хотя, конечно, и туда пришёл менеджмент с залёной ватой в головах.
ircicq: (Default)

[personal profile] ircicq 2021-03-26 10:46 am (UTC)(link)
Тут можно возразить:

1) Оптимизация - необязательное свойство компилируемых языков

2) Аппаратную оптимизацию выполнения команд производит сам процессор

3) Мы можем писать на ассемблере одной машины, например x86. А исполнитель транслировать код в систему команд ARM. У него огромное пространство для оптимизаций и однозначного соответствия символьной записи нет.
Edited 2021-03-26 10:48 (UTC)

[personal profile] bowhill 2021-03-26 02:16 pm (UTC)(link)
... и DTSS.
utochka: ШЁЛКОВАЯ УМНИЦА (Default)

[personal profile] utochka 2021-03-26 03:15 pm (UTC)(link)
:-)
brumka: (Default)

[personal profile] brumka 2021-03-26 03:42 pm (UTC)(link)
Кажется в '97ом году, в универе, меня учили принципам ООП на примере Ады... Даже пару студенческих проектов на ней написал. Тогда препод нам сетовал, что когда появилась Ада они считали её вторым пришествием, языком будущего. А потом появился С++ и...
Edited 2021-03-26 15:43 (UTC)
spamsink: (Default)

[personal profile] spamsink 2021-03-26 08:07 pm (UTC)(link)
Тогда все эти мерялки не имеют смысла для multi-paradigm languages, потому что результаты зависят от стиля программирования.
spamsink: (Default)

[personal profile] spamsink 2021-03-26 09:39 pm (UTC)(link)
Вот именно. И сишную программу на любом unmanaged языке.
ircicq: (Default)

[personal profile] ircicq 2021-03-26 09:47 pm (UTC)(link)
В расширенном понимании "машина" не обязательно физическая.
По-другом еще называют Runtime.

Программист на Java должен представлять архитектуру JVM.
на C#: CLR.

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

doldonius: (Default)

[personal profile] doldonius 2021-03-27 08:48 am (UTC)(link)
Был, помнится, у покойной ныне DEC славный макроассемблер MACRO-11. Синтезировал, отлично синтезировал. И при этом вполне себе ассемблер.
x86128: (Default)

[personal profile] x86128 2021-03-27 08:59 am (UTC)(link)
И даже если в языке нет goto !
x86128: (Default)

[personal profile] x86128 2021-03-27 09:03 am (UTC)(link)
Еще как возможно, если посмотреть на армию JavaScript-ологов. И любителей запихать JS куда только не попадя - даже на FPGA.
ircicq: (Default)

[personal profile] ircicq 2021-03-27 09:54 am (UTC)(link)
Даже в JS есть 2 различный рантайма: браузер и Node.Js.
Написание программ под них существенно различается.