@WisdomButcher

Возможно ли создание языка, который бы пришёл на замену С по производительности?

Всем привет!
Правильно ли я считаю, что С-программы работают быстрее программ на других языках после Ассемблера? И возможно ли теоретически построение более оптимального компилятора, чем у С, в ближайшие годы? При условии хорошего владения языками программистами.
Благодарю за ответы.
  • Вопрос задан
  • 280 просмотров
Пригласить эксперта
Ответы на вопрос 3
saboteur_kiev
@saboteur_kiev
software engineer
Всем привет!

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

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

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

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

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

Опять же. "быстрые программы" это что?
Где-то быстрее Go, где-то С++, где-то чистый асм, где-то даже питон.
Скорость программ обычно не так критична. А конкретный алгоритм можно вылизать почти на всем.
Ответ написан
2ord
@2ord
продвинутый чайник
И возможно ли теоретически построение более оптимального компилятора, чем у С, в ближайшие годы?
Навряд ли. В этот язык вложено много человеко-часов. Поскольку он представляет из себя общепринятый стандарт, то проще доработать расширения для своих нужд, чем разрабатывать компилятор с нуля.

Правильно ли я считаю, что С-программы работают быстрее программ на других языках после Ассемблера?
Не обязательно. Вот взять, к примеру, сравнение Web Framework Benchmarks
https://www.techempower.com/benchmarks/
Программа на C заняла лишь 6-е место в списке.

Что делает C эффективным ("быстрым", но не только)?

Inline-функции
GoTo, ассемблерные вставки
регистровые переменные
адресная арифметика
разные "подсказки" для компилятора, типа векторных инструкций процессора и прочих.

Для того, чтобы заменить язык C, необходимо:
вложить много человеко-часов, создав компилятор, который генерирует код эффективнее C
разработать лучший toolchain, чем имеющийся.

Дополнительные ссылки:
icps.u-strasbg.fr/~bastoul/local_copies/lee.html
ftp.cvut.cz/kernel/people/geoff/cell/ps3-linux-doc...
https://ispc.github.io/
Ответ написан
@blandger
Практически такой же язык уже создан. При этом он является во много раз более безопасным, насколько что, как Майкрософт так и Линукс разработчики внедряют его подержку и компиляцию в существующие кодовые базы.

Его название — Rust.
И да создание языка — это далеко ещё не создание компилятора для такого нового языка и других инструментов.
Это многие человеко-часы, то есть годы разработок.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы