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)
Для полноты Ассемблера не хватает
mdmx: (Default)

[personal profile] mdmx 2021-03-26 05:49 am (UTC)(link)
Согласен, но думаю что это своего рода читерство.
ircicq: (Default)

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

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

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

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

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

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

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.
Написание программ под них существенно различается.