Size: a a a

Compiler Development

2020 February 02

AT

Alexander Tchitchigin in Compiler Development
Михаил Бахтерев
ATS - эффективный, но стройный? Там же дичь дикая в синтаксисе. Читать этот код даже с поллитрой очень тяжело. Система типов там, конечно, кое что гарантирует, но не всё, особенно в арифметике. Поэтому код вычитывать надо, а это легко выворачивает мозг наизнанку.

Судьба Rust лично мне не очень понятна. Он концептуально тяжелее Си. При чём, в неправильном месте: на нём тяжело писать эффективные алгоритмы на сложных структурах данных. А борется он с теми проблемами, которые в мире Си легко решает POSIX-операционка. Rust, поэтому, хорошо было бы нацеливать на что-нибудь типа Boot 2 Gecko, в котором можно говорить: хопа-хопа, смотрите, у нас тут нет ядра и барьеров между userspace и железом. Но тогда у пользователей надо отбирать unsafe, а без unsafe в Rust ещё тяжелее.

Легче в таком Boot 2 Gecko писать на JavaScript. При чём, не факт, что будет потеря производительности. JavaScript нынче удивительно хорош. В общем, мне кажется, Rust будет нишевым языком. А следующая операционка будет жабаскриптовой. Вон там автор Android пилит что-то такое уже.
А Google тем временем развивает Fuchsia тихой сапой... 😄
источник

KR

K R in Compiler Development
Зигохистоморфный Препроморфизм
при том тесты на абсурдность, что это функция и что она вызываема :D
Ну да. Нет ничего хуже бизнес логики на Питоне или JS.

Видно как жизнь утекает на совершеннейшую чепуху.
источник

ЗП

Зигохистоморфный Препроморфизм in Compiler Development
Alexander Tchitchigin
А Google тем временем развивает Fuchsia тихой сапой... 😄
это же замена андроиду?)
источник

AT

Alexander Tchitchigin in Compiler Development
Михаил Бахтерев
ATS - эффективный, но стройный? Там же дичь дикая в синтаксисе. Читать этот код даже с поллитрой очень тяжело. Система типов там, конечно, кое что гарантирует, но не всё, особенно в арифметике. Поэтому код вычитывать надо, а это легко выворачивает мозг наизнанку.

Судьба Rust лично мне не очень понятна. Он концептуально тяжелее Си. При чём, в неправильном месте: на нём тяжело писать эффективные алгоритмы на сложных структурах данных. А борется он с теми проблемами, которые в мире Си легко решает POSIX-операционка. Rust, поэтому, хорошо было бы нацеливать на что-нибудь типа Boot 2 Gecko, в котором можно говорить: хопа-хопа, смотрите, у нас тут нет ядра и барьеров между userspace и железом. Но тогда у пользователей надо отбирать unsafe, а без unsafe в Rust ещё тяжелее.

Легче в таком Boot 2 Gecko писать на JavaScript. При чём, не факт, что будет потеря производительности. JavaScript нынче удивительно хорош. В общем, мне кажется, Rust будет нишевым языком. А следующая операционка будет жабаскриптовой. Вон там автор Android пилит что-то такое уже.
Это как раз примета полного размытия понятия "системное программирование" - для кого-то это сложные эффективные структуры и алгоритмы, для кого-то - бутлоадеры, для кого-то - микроядра, для кого-то - компиляторы, а для кого-то и микросервисы. 🤷‍♀
источник

E

Eugene in Compiler Development
K R
Без статической типизации люди обречены писать тесты.
без тестов даже с формальной верификацией не обойтись
источник

AT

Alexander Tchitchigin in Compiler Development
Зигохистоморфный Препроморфизм
это же замена андроиду?)
Да хрен его знает чему это замена, но на "следующую операционку" очень может потянуть.
источник

KR

K R in Compiler Development
Eugene
без тестов даже с формальной верификацией не обойтись
Да, спасибо, мы знаем. Но речь не о том.
источник

МБ

Михаил Бахтерев in Compiler Development
K R
Без статической типизации люди обречены писать тесты.
Кто сказал? Есть разные методы проверять код. Для того же ЖабаСкрипта пишут машины абстрактных состояний с SMT-солверами и блэкджеком (в смысле, фаззированием) и находят всякие разные тонкие ошибки, которые системы типов не всегда видят. Кроме того, типы не гарантируют от ошибок. Тесты нужны почти всегда.
источник

AT

Alexander Tchitchigin in Compiler Development
Eugene
без тестов даже с формальной верификацией не обойтись
Не все тесты одинаково полезны...
источник

E

Eugene in Compiler Development
K R
Да, спасибо, мы знаем. Но речь не о том.
а о чём?
источник

KR

K R in Compiler Development
Eugene
а о чём?
«Счастье не в деньгах, а в их количестве»; с тестами аналогично, только наоборот.
источник

KR

K R in Compiler Development
Михаил Бахтерев
Кто сказал? Есть разные методы проверять код. Для того же ЖабаСкрипта пишут машины абстрактных состояний с SMT-солверами и блэкджеком (в смысле, фаззированием) и находят всякие разные тонкие ошибки, которые системы типов не всегда видят. Кроме того, типы не гарантируют от ошибок. Тесты нужны почти всегда.
Блин, ну это же воронка поиска ошибок. Набор сит. Проверка синтаксиса, типы, тесты, afl

Если убрать самое грубое сито, отдуваться придётся остальным.
источник

МБ

Михаил Бахтерев in Compiler Development
K R
Блин, ну это же воронка поиска ошибок. Набор сит. Проверка синтаксиса, типы, тесты, afl

Если убрать самое грубое сито, отдуваться придётся остальным.
Зачем человека заставлять делать работу машины? Если бы тесты надо было бы писать исключительно вручную, тогда да. Но сейчас же есть всякие спеки и квикчеки. Пишем высокуровневую спецификацию, а машина находит прямо строчку, где if неправильный. Удобнее и быстрее. И вот это быстрее - оно критично людям. Поэтому ЖабаСкрипт торжествует... К сожалению.
источник

KR

K R in Compiler Development
Михаил Бахтерев
Зачем человека заставлять делать работу машины? Если бы тесты надо было бы писать исключительно вручную, тогда да. Но сейчас же есть всякие спеки и квикчеки. Пишем высокуровневую спецификацию, а машина находит прямо строчку, где if неправильный. Удобнее и быстрее. И вот это быстрее - оно критично людям. Поэтому ЖабаСкрипт торжествует... К сожалению.
Вопрос на засыпку - в инженерии у всего есть положительная и отрицательная сторона. Какие отрицательные черты тестов?
источник

E

Eugene in Compiler Development
Михаил Бахтерев
Зачем человека заставлять делать работу машины? Если бы тесты надо было бы писать исключительно вручную, тогда да. Но сейчас же есть всякие спеки и квикчеки. Пишем высокуровневую спецификацию, а машина находит прямо строчку, где if неправильный. Удобнее и быстрее. И вот это быстрее - оно критично людям. Поэтому ЖабаСкрипт торжествует... К сожалению.
зачем тогда вообще писать код? пишем спецификацию и генерируем из неё сразу машинный код, круто же
источник

E

Eugene in Compiler Development
K R
Вопрос на засыпку - в инженерии у всего есть положительная и отрицательная сторона. Какие отрицательные черты тестов?
их нужно писать, они занимают лишнее время, они могут быть неполными или ошибочными, а значит бесполезными или вредными...
источник

KR

K R in Compiler Development
Eugene
их нужно писать, они занимают лишнее время, они могут быть неполными или ошибочными, а значит бесполезными или вредными...
А поддержка?
источник

МБ

Михаил Бахтерев in Compiler Development
K R
Вопрос на засыпку - в инженерии у всего есть положительная и отрицательная сторона. Какие отрицательные черты тестов?
Ну. В таком вот варианте - ресурсоёмкость.
источник

E

Eugene in Compiler Development
K R
А поддержка?
поддержка стоит денег
источник

KR

K R in Compiler Development
Eugene
поддержка стоит денег
Её тоже надо вписать.
источник