Size: a a a

Compiler Development

2020 April 01

PS

Peter Sovietov in Compiler Development
Doge Shibu
Основная проблема динамически-типизированных языков - это проблемы с рефакторингом реальных кодовых баз на них.

Это выходит очень уж дорогим удовольствием, по сравнению со статически типизированными языками, причем даже по сравнению с далеко не самыми лучшими их представителями.
Да, но тут, к счастью, за многие десятилетия software engineering уже накоплен определенный опыт. Речь, в первую очередь, о языково-ориентированных подходах. Это когда компоненты системы разрабатываются на различных взаимодействующих DSL. Корни подхода можно проследить у Дугласа Энгельбарта в проекте системы NLS, сравнительно недавнюю академическую реализацию — в проекте STEPS Алана Кэя. Переспективы, на мой взгляд, имеет и вариант из Racket, когда на общей примитивно-динамической основе строятся различные eDSL, в том числе и с предметно-ориентированными типами.
источник

p

polunin.ai in Compiler Development
Peter Sovietov
Есть определенная боязнь динамической типизации среди нового поколения разработчиков, которые выросли на C# и Java. Ну и о самих динамических языках у многих превратное представление, по не самым лучшим представителям. К тому же следует понимать, что дело static vs dynamic это не просто вкусовщина. Есть вещи, которые объективно реализуются, как минимум, с большими трудностями, и эти вещи свои для static, и для dynamic.

Ну и конечно в контексте чата основная проблема в том, что далеко не все спорщики видели, как красиво можно написать компилятор на динамическом ЯП :)
обычно обучение на динамически типизированных языках сводится к тому что ты учишься искать где у тебя там несовпадение типов возникло и почему. неудивительно что люди могут побаиваться.
источник

DS

Doge Shibu in Compiler Development
Peter Sovietov
Да, но тут, к счастью, за многие десятилетия software engineering уже накоплен определенный опыт. Речь, в первую очередь, о языково-ориентированных подходах. Это когда компоненты системы разрабатываются на различных взаимодействующих DSL. Корни подхода можно проследить у Дугласа Энгельбарта в проекте системы NLS, сравнительно недавнюю академическую реализацию — в проекте STEPS Алана Кэя. Переспективы, на мой взгляд, имеет и вариант из Racket, когда на общей примитивно-динамической основе строятся различные eDSL, в том числе и с предметно-ориентированными типами.
Ну а тут играет то, что тулинг для любых динамических языков себя показывает ощутимо хуже, чем для статически типизированных, в особенности, когда речь заходит про eDSL и т.п.

Т.к. практически все промышленные IDE для динамических языков недостаточно хорошо работают, чтобы переварить хитрый eDSL для них.
источник

PS

Peter Sovietov in Compiler Development
Doge Shibu
Ну а тут играет то, что тулинг для любых динамических языков себя показывает ощутимо хуже, чем для статически типизированных, в особенности, когда речь заходит про eDSL и т.п.

Т.к. практически все промышленные IDE для динамических языков недостаточно хорошо работают, чтобы переварить хитрый eDSL для них.
Да, так и есть. Подвижки есть в том же проекте Spoofax.
источник
2020 April 02

ИЧ

Илья Чистяков in Compiler Development
Doge Shibu
Основная проблема динамически-типизированных языков - это проблемы с рефакторингом реальных кодовых баз на них.

Это выходит очень уж дорогим удовольствием, по сравнению со статически типизированными языками, причем даже по сравнению с далеко не самыми лучшими их представителями.
Проекты без тестов моветон. А с тестами нет никакой проблемы отрефакторить всё как следует и намного быстрее чем это можно делать на статике.
источник

DS

Doge Shibu in Compiler Development
Илья Чистяков
Проекты без тестов моветон. А с тестами нет никакой проблемы отрефакторить всё как следует и намного быстрее чем это можно делать на статике.
Проекты без тестов - это правда жизни. В особенности, если хоть на чуть-чуть отойти от опен сорса.
источник

p

polunin.ai in Compiler Development
Doge Shibu
Проекты без тестов - это правда жизни. В особенности, если хоть на чуть-чуть отойти от опен сорса.
Не думаю что проект без тестов и тестеров выживет
источник

ИЧ

Илья Чистяков in Compiler Development
Doge Shibu
Проекты без тестов - это правда жизни. В особенности, если хоть на чуть-чуть отойти от опен сорса.
Не встречал таких в работе. А куда можно отойти от опенсорса?
источник

DS

Doge Shibu in Compiler Development
polunin.ai
Не думаю что проект без тестов и тестеров выживет
Я вполне видел такие живые проекты и на динамике и на статике. Ничего, вполне себе жили.
источник

ИЧ

Илья Чистяков in Compiler Development
polunin.ai
Не думаю что проект без тестов и тестеров выживет
+
источник

p

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

DS

Doge Shibu in Compiler Development
Илья Чистяков
Не встречал таких в работе. А куда можно отойти от опенсорса?
Имеется в виду отойти от опен-сорс проектов, где обычно культура написания кода хоть какая-то присутствует.
источник

p

polunin.ai in Compiler Development
Илья Чистяков
Проекты без тестов моветон. А с тестами нет никакой проблемы отрефакторить всё как следует и намного быстрее чем это можно делать на статике.
Рефакторинг на динамике никогда не будет быстрее статики
источник

ИЧ

Илья Чистяков in Compiler Development
polunin.ai
Писать тесты долго, поддерживать большое их количество трудно
А какие варианты есть. Не представляю как можно развивать проект без тестов.
источник

p

polunin.ai in Compiler Development
Илья Чистяков
А какие варианты есть. Не представляю как можно развивать проект без тестов.
Писать только интеграционные тесты
источник

p

polunin.ai in Compiler Development
Ну и нагрузочные, конечно(если важна производительность)
источник

ИЧ

Илья Чистяков in Compiler Development
polunin.ai
Писать только интеграционные тесты
Вот их как раз сложно поддерживать и почти не встречал их.
источник

p

polunin.ai in Compiler Development
Илья Чистяков
Вот их как раз сложно поддерживать и почти не встречал их.
Почему сложно поддерживать?
источник

ИЧ

Илья Чистяков in Compiler Development
polunin.ai
Почему сложно поддерживать?
Основной флоу слишком быстро меняется
источник

p

polunin.ai in Compiler Development
Если их сложно поддерживать, знать архитектура плохо тестируемая. Значит у всего проекта проблемы в целом, и с тестированием в том числе
источник