Здравствуйте, rudzuk, Вы писали:
R>Вы же в курсе, что Хейлсбрег переписал компилятор TypeScript (с TypeScript) на GO? Вот. Вопрос: почему не на C#?
Почему вообще переписал на внешний язык? node работает не так уж плохо. Игры с компиляцией C++ и Go в WASM и потом замеры попугаев в сравнении с тупо жаваскриптом приводят к удивительным результатам, типа было быстрее, потом в хроме что-то подшаманили- и стало небыстрее.
Скорей всего, какая-то политика и никакого отношения к рациональности не имеет.
Pzz>У меня сейчас возникла потребность вставить в программу на Go некий встроенный скриптинг. По всему получается, что в качестве скриптового языка придется выбрать Питон. А я его терпеть не могу...
Здравствуйте, rudzuk, Вы писали:
M>> Можно же было переосмыслить Дельфю, сделать её в 100 раз круче. Или Дельфя сразу была совершенством?
R>Чего ее переосмысливать, она уже была крутой Никто им за нее исками не угрожал.
Ну, она и щас мега крута, только лишь кхимики пишут на ней
Здравствуйте, Marty, Вы писали:
M> R>Чего ее переосмысливать, она уже была крутой Никто им за нее исками не угрожал.
M> Ну, она и щас мега крута
Она и правда крута, и ее опенсорсный аналог мега-крут. Ни одна среда разработки даже близко не приблизилась к удобству, простоте и скорости разработки.
M> только лишь кхимики пишут на ней
Вот видишь, даже на политологическом сайте нашелся дельфист
Здравствуйте, Marty, Вы писали:
Pzz>>Я надеюсь, что срипты буду не только я писать. А lua в среднем малоизвестен.
M>Да уж поизвестнее, чем Go
Я б поспорил.
Он старше, это да. Говорят, его игровики очень любят, в качестве скриптового языка. Но за пределами этой ниши он не слишком известен.
Pzz>>И потом, у него индексы массивов начинаются с 1, буэ...
M>Хм, не помню такого. Но, может, ошибаюсь.
У него можно задать параметром. По умолчанию (в стандартной конфигурации) — 1. А если сделаешь 0, получишь такой диалект lua, с 0-based массивами.
M>В squirrel вроде с нуля индексы; с одной стороны он сильно похож на lua, но есть классы, можно перегружать арифметические операторы и вроде индексирование, поприятнее луы
Здравствуйте, netch80, Вы писали:
Pzz>>Ну т.е., утиная типизация?
N>Ну да. N>Я не нашёл разницы между этими двумя названиями (может, есть какие-то специфические контексты, но поймать не получилось).
Я просто название "структурная типизация" раньше не слышал. Полез в интернет, а там пишут, что это когда структуры с одинаковым набором и совместимым типом полей между собой совместимы (что может и верно для JS, у него структура — это unordered map, насколько я помню, но неверно для Go, у него струкытура, как в Си).
Предполагается, что создание нативного компилятора и инструментария для TypeScript существенно увеличит скорость сборки, уменьшит потребление памяти и сократит время запуска редакторов кода. Высокая производительность инструментария сделает более удобным процесс разработки в современных редакторах кода, позволит добиться быстрой проверки кода всего проекта, даст возможность реализовать более продвинутые техники рефакторинга и анализа кода, включение которых раньше было слишком затратно в плане потребления ресурсов.
По оценке разработчиков TypeScript, новый инструментарий позволит добиться сокращения времени сборки на порядок. В текущем виде новый вариант компилятора tsc обрабатывает кодовую базу проекта VS Code за 7.5 секунд, в то время как старому компилятору для этой операции требовалось 77.8 секунд. В случае с кодовой базой Playwright загрузка сократилась с 11.1 до 1.1 сек., TypeORM — с 17.5 до 1.3 сек., date-fns с 6.5 до 0.7 сек., tRPC с 5.5 до 0.6 сек., а rxjs c 1.1 до 0.1 сек.
Здравствуйте, netch80, Вы писали:
N>Ну да. N>Я не нашёл разницы между этими двумя названиями (может, есть какие-то специфические контексты, но поймать не получилось).
Так и не должно быть: утиная это жаргонное название структурной.
Здравствуйте, rudzuk, Вы писали:
R>Здравствуйте, gandjustas, Вы писали:
g>> Второй аргумент, который упомянул Андрес в своем 15-минутном анонсе — go имеет возможность управлять memory layout, делать низкоуровневые манипуляции с памятью и делать асинхроноость\параллельность. C# как бы тоже умеет, но что то одно — или асинхронность\параллельность, или низкоуровневые манипуляции. Так как ref структуры нельзя передавать через асинхронные вызовы. Так как C# имеет большую безопасность (safety) по сравнению с go это неизбежно несет ограничения и\или расходы на низкоуровневые операции.
R>Это здорово, а TypeScript такое умеет?
Нет, если бы умел, то какой смысл был бы переписывать на go&
R>Если нет, то почему это должно быть плюсом при портировании?
Потому что это дополнительная возможность оптимизации
g>> R>Ответ немного очевиден: с шарпом и дотнетом что-то не так, раз их папа предпочел изделие конкурента, а не догфудинг. g>> А сами то можете сформулировать что? R>Я же не Хейлсберг и внутреннюю кухню не вижу. Как сторонний наблюдатель я уже неоднократно говорил, что шарп превратился из простого языка в помойку, куда тащат все, чтобы показать движуху.
А как это связано с TypeScript и go?
g>> Давай посмотрим по-другому. g>> А почему не Rust, например? Его активно внутри MS продвигают, я думаю они могли бы больше программистов на расте найти внутри MS. И rust даже быстрее go. R>Все растманы в МС уже заняты переписыванием офисного бэка с шарпа
Что такое офисный бек на шарпе? И зачем его переписывать на rust?
g>> Несмотря на то, что я недолюбливаю Go я могу согласиться, что для портирования (не переписывания) tsc в нативный код go — идеально подходящий существующий мейнстримный язык. R>В действительности, наличие структурной типизации единственный разумный аргумент в пользу GO
Ну и возможность сделать код менее требовательным к памяти и за счет этого более быстрым из-за общей низкоуровневости go.
Здравствуйте, gandjustas, Вы писали:
g> g>> R>Ответ немного очевиден: с шарпом и дотнетом что-то не так, раз их папа предпочел изделие конкурента, а не догфудинг.
g> g>> А сами то можете сформулировать что?
g> R>Я же не Хейлсберг и внутреннюю кухню не вижу. Как сторонний наблюдатель я уже неоднократно говорил, что шарп превратился из простого языка в помойку, куда тащат все, чтобы показать движуху.
g> А как это связано с TypeScript и go?
Скажем так, выбор языка стал немного неожиданным, учитывая персоналии и постоянные рапорты о быстрее-выше-сильнее Такая связь.
g> R>Все растманы в МС уже заняты переписыванием офисного бэка с шарпа
g> Что такое офисный бек на шарпе? И зачем его переписывать на rust?
Здравствуйте, gandjustas, Вы писали:
FR>>Там же упор на то что и в TypeScript и в Go типизация структурная, переписать с нее на обычную номинативную может быть очень трудоемко. FR>>Тут и выбора кроме Go и нет среди хотя бы относительно популярных языков, еще и OCaml бы подошел и практически нет больше кандидатов.
G>Я уж думал что не найду адекватное мнение в этом треде, но оказывается еще есть думающие люди.
G>Хейлсберг даже в 15 минутном анонсе раза три упомянул, что это не переписывание компилятора на другой язык, а портирование, буквально построчный перевод на другой язык, а это возможно только если фичи языка +\- совпадают. То есть целевой язык для переписывания ts должен иметь структурную типизацию интерфейсов и сборщик мусора.
Портирование, прежде всего, дает быстрый результат при годном качестве. Т.е. подозреваю, они именно искали такой вариант. Пилить годы новую версию с нуля это не у всех запала хватит.
Здравствуйте, Sinclair, Вы писали:
S>Сегодня на созвоне обсуждали эту новость. Я упомянул, что причиной стала медленная сборка старым компилятором толстых проектов. Попросил опытных компиляторщиков на С++ угадать, сколько времени собиралось 1.5М строк VS Code. Должно ж быть очень долго, аж пичот, чтобы парни взялись за неблагодарный труд по портированию компилятора. S>Ближайшая оценка была "1 час"
Портирование это очень быстро, относительно других подходов, и позволяет сохранить при этом все вырожденные кейсы коих гугол или близко к этому.
Здравствуйте, Pzz, Вы писали: Pzz>Я просто название "структурная типизация" раньше не слышал.
Очень странно, термину сто лет в обед. Но — бывает, чо уж.
Pzz>Полез в интернет, а там пишут, что это когда структуры с одинаковым набором и совместимым типом полей между собой совместимы (что может и верно для JS, у него структура — это unordered map, насколько я помню, но неверно для Go, у него структура, как в Си).
См. https://go.dev/doc/faq#implements_interface:
A Go type implements an interface by implementing the methods of that interface, nothing more. This property allows interfaces to be defined and used without needing to modify existing code. It enables a kind of structural typing that promotes separation of concerns and improves code re-use, and makes it easier to build on patterns that emerge as the code develops. The semantics of interfaces is one of the main reasons for Go’s nimble, lightweight feel.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, wl., Вы писали:
M>>В squirrel вроде с нуля индексы; с одной стороны он сильно похож на lua, но есть классы
wl.>А в lua разве нет классов? ну либо что-то очень похожего:
wl.>
wl.>
Это эмуляция через таблицы. В squirrel под капотом в принципе то же самое, но там есть синтаксис классов в языке, и это удобнее.
Pzz>Он старше, это да. Говорят, его игровики очень любят, в качестве скриптового языка. Но за пределами этой ниши он не слишком известен.
А за пределами этой ниши он и не нужен. Тем не менее, тебе он нужен тоже именно в таком же качестве — как встройка в свой софт
M>>В squirrel вроде с нуля индексы; с одной стороны он сильно похож на lua, но есть классы, можно перегружать арифметические операторы и вроде индексирование, поприятнее луы
Pzz>Выглядит, как недо-JS...
Возможно. Только он весьма просто интегрируется в плюсовый или сишный проект, не уверен, что это легко можно сделать с JS
Здравствуйте, SkyDance, Вы писали:
BE>>Да вот тоже это удивило. Почему не шарп от МС, а го от гугла? Действительно странно.
SD>Да может челу просто захотелось новый инструмент изучить. SD>Мне вот тоже интересно что-нибудь на Расте написать. Не потому, что язык крутой, а просто любопытно.
Здравствуйте, Marty, Вы писали:
M> M>> только лишь кхимики пишут на ней
M> R>Вот видишь, даже на политологическом сайте нашелся дельфист
M> Я про то, что на ней сейчас пишут только фрики и умственные инвалиды
Марти, ты снова все напутал. Ты пишешь на сисиплюсе, не забывай!
Здравствуйте, rudzuk, Вы писали:
M>> Я про то, что на ней сейчас пишут только фрики и умственные инвалиды
R>Марти, ты снова все напутал. Ты пишешь на сисиплюсе, не забывай!
Я всё верно сказал. Я пишу на плюсах, а тупые фрики — на дельфях