Size: a a a

Compiler Development

2020 February 27

C

Charm in Compiler Development
EgorBo
забавно что 2ое из 3ех сейчас в JetBrains :)
а куда ещё в Питере идти? 🙂
источник

E

EgorBo in Compiler Development
Charm
а куда ещё в Питере идти? 🙂
vk? 😛
источник

FO

FORTRAN ONE LOVE in Compiler Development
EgorBo
vk? 😛
уже мыло
источник

AZ

Alexander Zaitsev in Compiler Development
го обратно к компиляторам вернемся
источник

AS

Aλexander Syrotenko in Compiler Development
Мне интерес к компиляторостроению привил @shipilev своими докладами. До этого мне в универе рассказывали про CS (за что спасибо, сильно пригодилось и пригождается) и как на 4-ом спринге лабы делать.
источник

K

Kakadu in Compiler Development
Alexander Tchitchigin
В C# vs F# vs OCaml есть :?
- tagged union
- возможность использовать объекты без классов
- автоматический вывод типов для переменных
- приоритет на программирование на иммутабельных данных
- компиляция в standalone без необходимости тащить на клиента пару гигов рантайма
lex/yacc из коробки в базовой поставке

Я не в смысле споров, просто интересуюсь стоит ли связываться с тем же шарпом. Ни один не видел вживую, только камл чутьчуть потыркал.
К уже высказанному стоит упомянуть, что
1) F#,OCaml есть, в C# пока не ввели. Вообще, когда узнаешь про GADT, то начинаешь их хотеть много где, но они есть пока только в OCaml
2) OCaml +, C# отчасти +, так как там нельзя в анонимные объекты добавлять методы и возвращать их из фукнций (т.е. они в некотором смысле локальны)
3) Нужно хотеть автоматический вывод типов в принципе, а не только для переменных. OCaml с этим справляется чаще, чем F#, а тот чаще чем C#
4) F# и OCaml +.
5) Hello world на OCaml  занимает 300 Кб + 3,5 МБ libc и прочего (которые ещё может быть можно застрипать)
6) lexyacc есть везде, но для OCaml стоит брать menhir, а для .NET YaccConstructor. Но лично я за парсер-комбинаторы

Ещё стоит обратить внимание

В F# вливается мало времени, так что запросто можно встретить, что идиоматичный функциональный код компилируется в какой-то отстой, который тормозит. Могу вспомнить пару историй, но может их уже пофиксили
источник

FO

FORTRAN ONE LOVE in Compiler Development
Alexander Zaitsev
го обратно к компиляторам вернемся
где взять IBM XL C/C++ compiter?
источник

AZ

Alexander Zaitsev in Compiler Development
FORTRAN ONE LOVE
где взять IBM XL C/C++ compiter?
у вендора
источник

Т8

Т-34 85 in Compiler Development
Kakadu
К уже высказанному стоит упомянуть, что
1) F#,OCaml есть, в C# пока не ввели. Вообще, когда узнаешь про GADT, то начинаешь их хотеть много где, но они есть пока только в OCaml
2) OCaml +, C# отчасти +, так как там нельзя в анонимные объекты добавлять методы и возвращать их из фукнций (т.е. они в некотором смысле локальны)
3) Нужно хотеть автоматический вывод типов в принципе, а не только для переменных. OCaml с этим справляется чаще, чем F#, а тот чаще чем C#
4) F# и OCaml +.
5) Hello world на OCaml  занимает 300 Кб + 3,5 МБ libc и прочего (которые ещё может быть можно застрипать)
6) lexyacc есть везде, но для OCaml стоит брать menhir, а для .NET YaccConstructor. Но лично я за парсер-комбинаторы

Ещё стоит обратить внимание

В F# вливается мало времени, так что запросто можно встретить, что идиоматичный функциональный код компилируется в какой-то отстой, который тормозит. Могу вспомнить пару историй, но может их уже пофиксили
А можно пример, когда C# не может вывести тип?
источник

E

EgorBo in Compiler Development
Т-34 85
А можно пример, когда C# не может вывести тип?
для ретурн тайпов, полей и лямбд навскидку
источник

Т8

Т-34 85 in Compiler Development
EgorBo
для ретурн тайпов, полей и лямбд навскидку
Ну ретурн для безопасности сделано, шоб случайно не то не вернуть.

Для полей с инициализацией при описании?
источник

E

EgorBo in Compiler Development
хотя лично я противник автовывода типа, для меня он позволителен когда прям ну 100% понятно что под автовыводом прячется конкретный тип. т.е.

var offer = new OfferDto();
ок

var offer = getOffer();
не ок.

но это всегда приводит к холиварам, так что не буду продолжать -_-
источник

Т8

Т-34 85 in Compiler Development
EgorBo
хотя лично я противник автовывода типа, для меня он позволителен когда прям ну 100% понятно что под автовыводом прячется конкретный тип. т.е.

var offer = new OfferDto();
ок

var offer = getOffer();
не ок.

но это всегда приводит к холиварам, так что не буду продолжать -_-
Никто и не советует его при любых обстоятельствах использовать. Когда удобно, тогда и берёшь
источник

K

Kakadu in Compiler Development
Т-34 85
А можно пример, когда C# не может вывести тип?
На сколько я понимаю, то в C# как и в scala не разрешено писать var в типах-параметрах метода. Или уже разрешили?
источник

А

Алексей in Compiler Development
EgorBo
хотя лично я противник автовывода типа, для меня он позволителен когда прям ну 100% понятно что под автовыводом прячется конкретный тип. т.е.

var offer = new OfferDto();
ок

var offer = getOffer();
не ок.

но это всегда приводит к холиварам, так что не буду продолжать -_-
жуткое желание вступить в холивар
источник

E

EgorBo in Compiler Development
Т-34 85
Никто и не советует его при любых обстоятельствах использовать. Когда удобно, тогда и берёшь
это ты так думаешь что не советует, у многих программистов это маниакальное желание
источник

E

EgorBo in Compiler Development
Kakadu
На сколько я понимаю, то в C# как и в scala не разрешено писать var в типах-параметрах метода. Или уже разрешили?
надеюсь, никогда не разрешат
источник

Т8

Т-34 85 in Compiler Development
Kakadu
На сколько я понимаю, то в C# как и в scala не разрешено писать var в типах-параметрах метода. Или уже разрешили?
Вроде нельзя. И это правильно, оно не нужно. И даже вредно
источник

Т8

Т-34 85 in Compiler Development
EgorBo
это ты так думаешь что не советует, у многих программистов это маниакальное желание
Сами виноваты, если так делают. Компилятор не должен надевать на программиста смирительную рубашку, дабы он не наворотил дел
источник

K

Kakadu in Compiler Development
У меня есть гипотеза, почему люди могут быть против, но я думаю, что грамотной ide с подсветкой типов можно этот косяк нивелировать
https://user-images.githubusercontent.com/5861043/34639325-1d1da3b2-f2c5-11e7-908c-ba66a5f15ad4.jpg
источник