Size: a a a

Compiler Development

2020 February 12

AN

Alex Naraito in Compiler Development
Михаил Бахтерев
Всегда работает - это опасное заблуждение. И нет, про 50 строк не преувеличение. Я посчитал
Я видел и на оборот
источник

AN

Alex Naraito in Compiler Development
Но там не c, а c++
источник

p

polunin.ai in Compiler Development
Михаил Бахтерев
Всегда работает - это опасное заблуждение. И нет, про 50 строк не преувеличение. Я посчитал
>опасное заблуждение
У меня пару раз программа работала неправильно после компиляции за полгода.
>Я посчитал
Можно пример тогда?
источник

AN

Alex Naraito in Compiler Development
Но алгоритм почти один и тот же
источник

G

Gymmasssorla in Compiler Development
Михаил Бахтерев
Опять же. Призываю посмотреть код для классических структур данных на Си и на Rust. И таки увидеть, сколько в Rust добавляется семантического шума. Там, где на Си пишется 10 строк кода, на Rust пишется 50. И большинство - это дополнительные копирования или переупаковки данных для успокоения чекера. Может, это и норм. Критерии у всех разные. Но как бы не понятно, чем именно segfault страшнее всех прочих fault-ов и сигналов, которые существуют в реальном мире.
> И большинство - это дополнительные копирования или переупаковки данных для успокоения чекера.
А можно и не делать лишних копирований и использовать unsafe.
источник

G

Gymmasssorla in Compiler Development
Михаил Бахтерев
Всегда работает - это опасное заблуждение. И нет, про 50 строк не преувеличение. Я посчитал
Можете показать код?
источник

AN

Alex Naraito in Compiler Development
Размеры кода зависят от программиста
источник

AN

Alex Naraito in Compiler Development
В большенстве случаев
источник

AN

Alex Naraito in Compiler Development
Хотя есть и исключения, признаю
источник

МБ

Михаил Бахтерев in Compiler Development
polunin.ai
>опасное заблуждение
У меня пару раз программа работала неправильно после компиляции за полгода.
>Я посчитал
Можно пример тогда?
Реализация BTreeMap
источник

AN

Alex Naraito in Compiler Development
Есть много алгоритмов и один из них это не показатель, а лишь пример, что так может быть
источник

G

Gymmasssorla in Compiler Development
Михаил Бахтерев
Реализация BTreeMap
Вы лучше покажит код на Си и сразу код на Rust. Релизации BTreeMap разные бывают
источник

AN

Alex Naraito in Compiler Development
А вот простые вещи на rust выходили кароче, но это синтетическое сравнение
источник

YS

Yuriy Syrovetskiy in Compiler Development
в С вообще нет полиморфного Btree, особенно во стандартной библиотеке. с чем сравнивать?
источник

λ

λоλторт in Compiler Development
Михаил Бахтерев
Реализация BTreeMap
Часто BTreeMap реализуете?
источник

G

Gymmasssorla in Compiler Development
Yuriy Syrovetskiy
в С вообще нет полиморфного Btree, особенно во стандартной библиотеке. с чем сравнивать?
С кастингом к void *?
источник

МБ

Михаил Бахтерев in Compiler Development
Ну. Можно посмотреть на библиотеку реализаций динамисеских структур данных: графы, списки, деревья - везде примерно одно и то же. Не... На а как ожидать иного? Чекер нужно удовлетворять, а для этого нужно клонировать
источник

AN

Alex Naraito in Compiler Development
Я не разу(новичёк что сказать)
источник

p

polunin.ai in Compiler Development
Михаил Бахтерев
Ну. Можно посмотреть на библиотеку реализаций динамисеских структур данных: графы, списки, деревья - везде примерно одно и то же. Не... На а как ожидать иного? Чекер нужно удовлетворять, а для этого нужно клонировать
>клонировать
Если вам не жалко памяти, клонируйте сколько вздумается
источник

G

Gymmasssorla in Compiler Development
Михаил Бахтерев
Ну. Можно посмотреть на библиотеку реализаций динамисеских структур данных: графы, списки, деревья - везде примерно одно и то же. Не... На а как ожидать иного? Чекер нужно удовлетворять, а для этого нужно клонировать
https://doc.rust-lang.org/src/alloc/collections/btree/map.rs.html

Где клонирование лишнее?
источник