Size: a a a

Compiler Development

2020 March 15

OS

Oleg Stotsky in Compiler Development
По крайней мере не для всех системных вызовов точно
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
Alex Ф-ф-фэils!🌠︙
И есть либа CppCoro
Или рантайм майкрософта с батарейками корутин
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
Oleg Stotsky
По крайней мере не для всех системных вызовов точно
Вспоминаю aio_read на линухах😢
источник

АВ

Александр Вольнов in Compiler Development
Alex Ф-ф-фэils!🌠︙
Ну инструменты уже есть
Тогда не было. И по остальным пунктам в C++ много всего не хватает, по крайней мере из коробки. И кросскомпиляция под ARM сложнее.
Я не говорю, что Go лучше, в нём куча недостатков, но для каких-то задач типа той, с которой я столкнулся, он подходит на порядок лучше, чем что-либо ещё.
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
Александр Вольнов
Тогда не было. И по остальным пунктам в C++ много всего не хватает, по крайней мере из коробки. И кросскомпиляция под ARM сложнее.
Я не говорю, что Go лучше, в нём куча недостатков, но для каких-то задач типа той, с которой я столкнулся, он подходит на порядок лучше, чем что-либо ещё.
Ну, cppcoro и winrt tools уже долго относительно живут. Но тулинг да, в других языках получш, хотя шланг и студия сейчас очень хорошо улучшают ситуацию
источник

p

polunin.ai in Compiler Development
Александр Вольнов
В C++ горутин пока нет, поэтому на нём в принципе сложно сделать то, что мне нужно было. Я бы может и справился, но кроме меня никто на C++ там не писал и учиться с нуля им было бы нерационально. А на Go мой коллега уже через неделю неплохо стал писать.
А ещё Go хорошо ловит и сообщает об ошибках в рантайме. Почитал лог и видно номер строки и имя файла, где она произошла.
>хорошо ловит ошибки в рантайме
Ошибок в рантайме быть не должно
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
polunin.ai
>хорошо ловит ошибки в рантайме
Ошибок в рантайме быть не должно
У /me дернулся глаз и вспомнился вьетнамский питон
источник

АВ

Александр Вольнов in Compiler Development
Константин
Что значит, не разбирались? Она изучается, максимум, за пол-часа, зато даёт огромный прирост в понимании языка, чей синтаксис задаёт. Это обязательный пункт для нормального построения парсеров, в том числе и без всяких генераторов кода по грамматике. Как документация к языку - это тоже №1 в списке
Как-то руки не дошли, такое иногда случается даже с вещами, которые делаются за полчаса. Мне достаточно было словами описать, что после такого-то токена ожидается такой-то блок, состоящий из того-то и того-то. Я в итоге наверное и описал эту грамматику немного своим вольным языком, который наверняка уже достаточно близок к форме Бэкуса-Наура. Для простой грамматики, как у меня, сойдёт.
источник

К

Константин in Compiler Development
О других подумайте
источник

p

polunin.ai in Compiler Development
Константин
Что значит, не разбирались? Она изучается, максимум, за пол-часа, зато даёт огромный прирост в понимании языка, чей синтаксис задаёт. Это обязательный пункт для нормального построения парсеров, в том числе и без всяких генераторов кода по грамматике. Как документация к языку - это тоже №1 в списке
Это
<if_statement> ::= "if" "(" <expression> ")" <operator>;
?
источник

АВ

Александр Вольнов in Compiler Development
polunin.ai
>хорошо ловит ошибки в рантайме
Ошибок в рантайме быть не должно
Ошибок в рантайме не избежать ни в одном языке. Нужно же как-то обрабатывать, если сервер выдал ошибку или если место на диске кончилось. Или просто логическая ошибка в коде, где на уровне строгой системы типов всё чисто.
источник

АВ

Александр Вольнов in Compiler Development
Константин
О других подумайте
Подумаю, когда буду писать документацию.
источник

p

polunin.ai in Compiler Development
Александр Вольнов
Ошибок в рантайме не избежать ни в одном языке. Нужно же как-то обрабатывать, если сервер выдал ошибку или если место на диске кончилось. Или просто логическая ошибка в коде, где на уровне строгой системы типов всё чисто.
Ошибка в рантайме == программист криворучка сделал баг, а не сервер вернул 404
источник

G

Gymmasssorla in Compiler Development
Александр Вольнов
Ошибок в рантайме не избежать ни в одном языке. Нужно же как-то обрабатывать, если сервер выдал ошибку или если место на диске кончилось. Или просто логическая ошибка в коде, где на уровне строгой системы типов всё чисто.
> Или просто логическая ошибка в коде, где на уровне строгой системы типов всё чисто.

Значит систему типов проработали в коде неправильно
источник

АВ

Александр Вольнов in Compiler Development
polunin.ai
Ошибка в рантайме == программист криворучка сделал баг, а не сервер вернул 404
Баг можно сделать на любом языке с системой типов любой сложности. Достаточно накосячить в какой-нибудь формуле, например реализовать функцию subtract как a+b.
источник

G

Gymmasssorla in Compiler Development
Александр Вольнов
Баг можно сделать на любом языке с системой типов любой сложности. Достаточно накосячить в какой-нибудь формуле, например реализовать функцию subtract как a+b.
Типы с уточнением ("refinement types") от такого спасают.

На F*:

val subtract_proof: a: Int -> b: Int -> c: Int -> Lemma (ensures(с = a - b))
let subtract_proof a b = admit()

(Синтаксис я немного забыл, но не суть)
источник

p

polunin.ai in Compiler Development
Александр Вольнов
Баг можно сделать на любом языке с системой типов любой сложности. Достаточно накосячить в какой-нибудь формуле, например реализовать функцию subtract как a+b.
Пишешь пруф что функция должна возвращать число меньше чем а и б, и компилятор тебе напишет что у тебя неправильная функция
источник

Т8

Т-34 85 in Compiler Development
polunin.ai
Пишешь пруф что функция должна возвращать число меньше чем а и б, и компилятор тебе напишет что у тебя неправильная функция
static_assert()?
источник

G

Gymmasssorla in Compiler Development
Т-34 85
static_assert()?
Ага, вроде того, но обобщённый статик ассерт
источник

Т8

Т-34 85 in Compiler Development
Gymmasssorla
Ага, вроде того, но обобщённый статик ассерт
что имеется в виду? Концепты, что-ли?
источник