Size: a a a

Compiler Development

2020 February 12

p

polunin.ai in Compiler Development
Михаил Бахтерев
Эмс. Это личный опыт. Пробовал писать системный код на нём, и не осилил без unsafe. А если у меня поливна кода unsafe, зачем мне остальное?  Объективно можно посравривать код на Rust с кодом на Си, хотя бы в BenchmarksGame. Ну, или Servo с аналогиным куском Chromium.
>не осилил
>Это язык плохой
источник

p

polunin.ai in Compiler Development
K R
Ну другая половина то safe.
Неправильно написанный unsafe ведёт к возможным поломкам в safe коде.
источник

p

polunin.ai in Compiler Development
Михаил Бахтерев
Эмс. Это личный опыт. Пробовал писать системный код на нём, и не осилил без unsafe. А если у меня поливна кода unsafe, зачем мне остальное?  Объективно можно посравривать код на Rust с кодом на Си, хотя бы в BenchmarksGame. Ну, или Servo с аналогиным куском Chromium.
К слову, Discord осилили (не знаю, может у них специфика другая была)
источник

МБ

Михаил Бахтерев in Compiler Development
Yuriy Syrovetskiy
хм, у меня противоположное впечатление. мне проще в голове разбить и понять малое, чем большое
А как разбить, когда нет никаких зацепок? Хорошо, я вижу малый fmap или малый bind, я понимаю, что это монада, функтор и прочее. Но в итоге смысл функции определяется тремя уровнями выше, где она вызывается. При чём, в двух разных call-site-ах он существенно разный. И без анализа этих разных call-site-ов общий смысл кода не понятен. Это затрудняет чтение. Получается некий замаскированный callback-hell. Нужно больше усилий, чтобы попасть с автором кода на одну волну. Может быть, в коллективах это не так заметно.
источник

МБ

Михаил Бахтерев in Compiler Development
polunin.ai
>не осилил
>Это язык плохой
Естественно. А как ещё оценить? Практика - единственный критерий истины. Заумность языка хороша для замерения iq, а не для решения конкретных задач. Если мы хотим сделать хороший, практичный язык, он должен быть легко усваиваемым.
источник

p

polunin.ai in Compiler Development
Михаил Бахтерев
Естественно. А как ещё оценить? Практика - единственный критерий истины. Заумность языка хороша для замерения iq, а не для решения конкретных задач. Если мы хотим сделать хороший, практичный язык, он должен быть легко усваиваемым.
Повторюсь, другие (Mozilla, Discord, Cloudfare) осилили.
источник

МБ

Михаил Бахтерев in Compiler Development
polunin.ai
К слову, Discord осилили (не знаю, может у них специфика другая была)
Интересно всегда посмотреть на реальный код, а не на заявления. Ссылочка есть?
источник

NV

Nikita Vilunov in Compiler Development
Эх, забавно когда некоторые делают громкие заявления, а когда их опровергают, начинают сразу требовать "реальный код"
источник

YS

Yuriy Syrovetskiy in Compiler Development
polunin.ai
1. Для написания новых проектов.
2. Может и для вас, для меня нет. Пишу на c# около полугода, мне его синтаксис до сих пор не нравится.
3. Не понял, что нужно дополнительно описывать? В с++ вы описываете * и & тоже.
4. Я после месяца его изучения мог понять с помощью IDE любую программу, написанную на нем (кроме async-программ, но там свой мир).
1. я говорил о читаемости, а не о новых проектах.
2. ок, пора посмотреть в сторону неалголов, например, Окамль или Рэкет.
3. нет, на С++ я не пишу. а в Хаскеле ничего этого не нужно (есть, но используется редко).
4. спасибо, полезный datapoint
источник

МБ

Михаил Бахтерев in Compiler Development
polunin.ai
Повторюсь, другие (Mozilla, Discord, Cloudfare) осилили.
Так я смотрел код Servo. Это трешак. Советую и вам на досуге почитать.
источник

YS

Yuriy Syrovetskiy in Compiler Development
polunin.ai
Неправильно написанный unsafe ведёт к возможным поломкам в safe коде.
именно поэтому лучше его минимизировать. половина ансэйфа лучше целого
источник

NV

Nikita Vilunov in Compiler Development
Михаил Бахтерев
Так я смотрел код Servo. Это трешак. Советую и вам на досуге почитать.
Трешак — это количество ошибок управления памяти в коде на си, "практичном языке"
источник

YS

Yuriy Syrovetskiy in Compiler Development
Михаил Бахтерев
А как разбить, когда нет никаких зацепок? Хорошо, я вижу малый fmap или малый bind, я понимаю, что это монада, функтор и прочее. Но в итоге смысл функции определяется тремя уровнями выше, где она вызывается. При чём, в двух разных call-site-ах он существенно разный. И без анализа этих разных call-site-ов общий смысл кода не понятен. Это затрудняет чтение. Получается некий замаскированный callback-hell. Нужно больше усилий, чтобы попасть с автором кода на одну волну. Может быть, в коллективах это не так заметно.
лучше когда автора заставляют это делать коллеги на ревью.

в целом согласен, есть такая проблема. мы с ней справляемся, но она есть.
источник

МБ

Михаил Бахтерев in Compiler Development
Nikita Vilunov
Эх, забавно когда некоторые делают громкие заявления, а когда их опровергают, начинают сразу требовать "реальный код"
Я же говорю: я жрец культа Бертрана Рассела и Линуса Торвальдса :) Единственный для меня критерий истинности - практика. Ну. Потому что я математикой занимаюсь и примерно представляю, в какой астрал можно улететь без привязки к реальности.
источник

NV

Nikita Vilunov in Compiler Development
Михаил Бахтерев
Я же говорю: я жрец культа Бертрана Рассела и Линуса Торвальдса :) Единственный для меня критерий истинности - практика. Ну. Потому что я математикой занимаюсь и примерно представляю, в какой астрал можно улететь без привязки к реальности.
А какой код показывать-то? Проприетарный код сливать вам никто не будет, в сферу ядер ОС вход для новых проектов слишком тяжел для любого языка, а остальные опенсурсные проекты можно найти и самостоятельно
источник

NV

Nikita Vilunov in Compiler Development
Раст, к счастью, в первую очередь далеко не математически-обоснованный язык, а именно практико-ориентированный, который был создан решить самые распространенные проблемы с памятью. Не знаю где тут вообще про астрал можно подумать, это ж не Идрис
источник

МБ

Михаил Бахтерев in Compiler Development
Nikita Vilunov
Трешак — это количество ошибок управления памяти в коде на си, "практичном языке"
Эмс... Си не существует в вакууме. Для него давно есть куча средств анализа кода на такие ошибки. Как, например, в языках со сборкой мусора есть куча средств статического анализа кода, чтобы мусора генерировать по-минимуму. Проблема Rust в том, что он заставляет человека делать работу машины, при чём, весьма неэффективно, требуя жертвовать и выразительностью, и, что более непростительно, сложностью структур данных. Вот последнее прямо видно почти в любом коде на Rust. Поэтому и желание его осиливать пропадает.
источник

NV

Nikita Vilunov in Compiler Development
Михаил Бахтерев
Эмс... Си не существует в вакууме. Для него давно есть куча средств анализа кода на такие ошибки. Как, например, в языках со сборкой мусора есть куча средств статического анализа кода, чтобы мусора генерировать по-минимуму. Проблема Rust в том, что он заставляет человека делать работу машины, при чём, весьма неэффективно, требуя жертвовать и выразительностью, и, что более непростительно, сложностью структур данных. Вот последнее прямо видно почти в любом коде на Rust. Поэтому и желание его осиливать пропадает.
Звучит классно, пока не сталкиваешься с очередной бажиной из-за оверфлоу буффера в очередном софте. Как такое можно объяснить, раз Си не существует в вакууме?
источник

МБ

Михаил Бахтерев in Compiler Development
Nikita Vilunov
А какой код показывать-то? Проприетарный код сливать вам никто не будет, в сферу ядер ОС вход для новых проектов слишком тяжел для любого языка, а остальные опенсурсные проекты можно найти и самостоятельно
Так вот я и смотрел этот код. Говорю: не впечатляет. Либо куча unsafe, либо очень топорные, неэффективные структуры данных.
источник

YS

Yuriy Syrovetskiy in Compiler Development
Nikita Vilunov
Раст, к счастью, в первую очередь далеко не математически-обоснованный язык, а именно практико-ориентированный, который был создан решить самые распространенные проблемы с памятью. Не знаю где тут вообще про астрал можно подумать, это ж не Идрис
в Расте, к счастью, достаточно хорошо с математикой. практика показывает, что без математического обоснования практика огребает баги
источник