URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 136247
[ Назад ]

Исходное сообщение
"Microsoft переписывает компилятор TypeScript на языке Go"

Отправлено opennews , 12-Мрт-25 09:54 
Андерс Хейлсберг (Anders Hejlsberg), главный архитектор языка TypeScript, в своё время  создавший языки C#, Delphi и Turbo Pascal, представил проект по созданию нового компилятора для TypeScript - typescript-go (tsgo), разрабатываемый на языке Go. Как и старый компилятор новый проект распространяется под лицензией Apache 2.0...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=62861


Содержание

Сообщения в этом обсуждении
"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 09:54 
`Язык Go близок с TypeScript по семантике и структуре кода`
Что блин?)

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено тоже Аноним , 12-Мрт-25 09:58 
Читай "по сравнению с Растом, Лиспом и Брейнфаком..."

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Советский инженер , 12-Мрт-25 13:41 
что их не устоило в C# так толком и не пояснили

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 15:57 
Особо ничем не лучше Джавы и вначале был жёстко привязан к Виндовс

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 12-Мрт-25 17:39 
А как пользователям это поставлять? В go они собирут бинарники для всех нужных платформ и засунут в npm пакет.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 20:57 
Точно так же собираешь бинарники с native aot

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 14-Мрт-25 00:26 
> Точно так же собираешь бинарники с native aot

Какой размер итоговый будет? Что нужно для разработки устанавливать?


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 14-Мрт-25 00:27 
> Точно так же собираешь бинарники с native aot

Ну и еще важный вопрос: как это интегрировать с бандлерами?


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено тоже Аноним , 12-Мрт-25 17:49 
> что их не устоило в C# так толком и не пояснили

Кого "их"? Чувака, который сам и создал С#?
Вряд ли он просто чего-то не знает...


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Советский инженер , 13-Мрт-25 09:16 
> Кого "их"?

приям в статье говорится что портирует команда из 9 человек.
что, не осилил прочитать статью?

> Вряд ли он просто чего-то не знает...

опять же, я не утверждал что чувак чегото не знает.
у меня какраз то притензия что он что-то знает, но не рассказывает.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено тоже Аноним , 13-Мрт-25 10:00 
> приям в статье говорится что портирует команда из 9 человек.

Сильно сомневаюсь, что окончательное решение принималось голосованием.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Карлос Сношайтилис , 12-Мрт-25 10:17 
Это зумеры, сэр.
Они думают, что компилятор может написать только на языке с похожей семантикой.

Тысячи компиляторов/тоанспиляторов/интерпретаторов на С/++, написанных для чего ни попадя, смотрят на них с недоумением.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено freehck , 12-Мрт-25 10:22 
> Они думают, что компилятор можно написать только на языке с похожей семантикой.

Вряд ли. Если человек садится писать новый язык, то первое, что он узнаёт, когда начинает изучать матчасть -- это lex и yacc. А там уж всё очевидно.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Анонимъ , 12-Мрт-25 12:07 
> lex/yacc

Фу, мерзость. Даже полностью вручную лучше, чем это. Ты будто живёшь в мире, отстающем на 10-20 лет.

Для пирсинга лучше взять любой язык, умеющий в ФП в той или иной степени. Haskell, Ocalm, Rust, Clojure. Да даже, простите, Common Lisp лучше подойдёт.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено freehck , 12-Мрт-25 13:29 
>> lex/yacc
> Фу, мерзость. Даже полностью вручную лучше, чем это. Ты будто живёшь в
> мире, отстающем на 10-20 лет.

Не мерзость, а база. )

> Для пирсинга лучше взять любой язык, умеющий в ФП в той или
> иной степени.

Для пирсинга -- лучше обратиться в специализированное заведение. )

> Haskell, Ocalm, Rust, Clojure.

Да ладно, как минимум у трёх из них есть собственные прямые аналоги lex и yacc (а то и не один, как в случае с ocaml). А про кложу я просто не знаю.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аннноним , 12-Мрт-25 14:49 
В хаскеле на парсерных комбинаторах прикольно делать парсеры. Правда для компилятора наверное всё-таки более классический подход использовал бы

В функциональных языках парсить текст всё же удобно. На Лиспе не пробовал, хоть Лисп мне и нравится за красоту, а вот Хаскелл классный


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено warlock66613 , 12-Мрт-25 20:49 
yacc становится серьёзной обузой когда нужны вменяемые сообщения об ошибках.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:55 
>Они думают, что компилятор может написать только на языке с похожей семантикой.

Нет. Они портируют проект (по стечению обстоятельств являющийся компилятором) с одного языка на другой.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Жироватт , 12-Мрт-25 11:24 
Компилятором?
Разве на выходе не pure-js?
Это тогда уж транспилятор.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 11:50 
Поумничал, да? Транспиляторы - подмножество компиляторов. Алсо, https://github.com/microsoft/TypeScript/tree/main/src/compiler

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Жироватт , 12-Мрт-25 12:40 
Не любо - не слушай.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 11:28 
>> Это зумеры, сэр.

Вы в курсе, кто такой Андерс Хейлсберг?


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 11:45 
> Вы в курсе, кто такой Андерс Хейлсберг?

Так для этого ж надо новость читать. Ну его - лучше сразу в комментарии ринуться со своим ценным экспертным мнением.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 12-Мрт-25 17:09 
> Это зумеры, сэр.

Андерс Хейлсберг (Anders Hejlsberg) зумер?


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 20:24 
Ну не милленниал же, хотя с возрастом и не такое бывает

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено nw , 12-Мрт-25 17:10 
Удивительно, что находятся люди, которые плюсуют фигню, которую Вы написали. Думаю, что у Anders Hejlsberg чуть больше экспертизы, чем у Вас. Его трудно назвать "зумером"

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Карлос Сношайтилис , 12-Мрт-25 21:17 
С Андерсем всё понятно как раз – дяденька хочет поэкспериментировать за счёт MS. Ноль процентов осуждения, сто процентов понимания.

Я дал оценку окружающим коллегам, у которых вопросов не возникало.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 13-Мрт-25 07:26 
Не льсти себе, ты не "оценку дал", а продемонстрировал своё неумение читать. Мало того, что ты упустил Андерса, так ты ещё упустил специфику задачи перед ним стоящую. Задача _переписать_ компиль с typescript на что-нибудь побыстрее. Не написать с нуля, а переписать. А вот чтобы переписывать, полезно выбрать язык близкий к тому, на чём уже написано.

Или может это не неумение читать? Может ты просто не в теме, и не представляешь себе как такие вещи делаются и с какими проблемами приходится сталкиваться?


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 21:16 
> Это зумеры, сэр.

"Андерс Хейлсберг (Anders Hejlsberg), главный архитектор языка TypeScript, в своё время создавший языки C#, Delphi и Turbo Pascal..."

Главный зумер, да.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:00 
Когда человек умеет работать только молотком, все вокруг становится гвоздями.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Лев , 13-Мрт-25 06:05 
И при чем тут схожесть и не схожесть языка, на котором будет делаться компилятор, с языком, для которого будет делаться компилятор???

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:01 
После раста, нода/яваскрипт/тайпскрипт кажется чем-то плюшевым, игрушечным, непродуманным. Например, попробуйте создать TCP-сервер и слушать порт 8000. В нормальных языках/платформах это просто вызов bind/listen и обработка ошибки. Но не в ноде. No, sir. В ноде, чтобы поймать ошибку listen или дождаться ее выполнения, надо:

1. Навесить на сервер обработку listening.
2. Навесить на сервер обработку error.
3. Оба обработчика должны сработать лишь один раз (server.once()).
4. Во время listening резольвим промис.
5. Во время error режектим промис.
6. И вот только теперь можно вызывать server.listen().

Ощущение, что дизайнер ноды осилил только паттерн event emitter, так что он впендюрил его всюду.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:03 
JavaScript гениальный и самый быстрый. Ты просто делаешь что–то не так либо не можешь постичь суть.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:12 
> В ноде, чтобы поймать ошибку listen или дождаться ее выполнения, надо:

Спешите видеть, разработчик впервые в жизни познает асинхронное программирование без блокировки IO и записывает это в минусы!


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:35 
Асинхронщина здорового человека:

    let listener = TcpListener::bind(&addr).await?;

Асинхронщина курильщика:

    const { promise, resolve, reject } = Promise.withResolvers();

    const handleListening = () => {
      server.off("error", handleError);
      resolve();
    };

    const handleError = (error) => {
      server.off("listening", handleListening);
      reject(error);
    };

    server.once("listening", handleListening);
    server.once("error", handleError);

    // Вроде ничего не забыли. И теперь, перекрестясь...
    server.listen(port, host);
    await promise;


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 11:02 
неумение готовить websocket'ы в ноде это, то что отличает "здорового" человека от того, кто умеет:

const app = uWS.App().get('/*', () => {}).listen(port, () => {})


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Карлос Сношайтилис , 12-Мрт-25 16:37 
И эти люди ругают синтаксис раста...

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено _hide_ , 12-Мрт-25 11:49 
Здорового -- это тому, кто не париться?

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 14:40 
Потому что оно так с node 0.1, где колбэки колбэками погоняли. Легаси, сэр...

Всегда обертываю так, чтобы получить api, похожее на то, что в Rust (с библиотекой neverthrow получается очень rust-like). Такую обертку и на npm найти можно, но я не любитель leftpad-ов, мне и самому несложно 10 строк кода написать.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено cheburnator9000 , 12-Мрт-25 14:57 
Что случится со здоровым человеком если у него появится ошибка с TcpListener?

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Вася Пупкин , 12-Мрт-25 15:33 
вопросик в конце выражения говорит о том, что ошибка будет проброшена наверх по стеку вызовов. но если хотите, можете и тут обработать, разрешаю.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 15:53 
Дальнейший код выполнен не будет, обрати внимание на символ "?" в конце await. В ноде код будет выполняться так, словно ошибки нет, потому что она еще не возникла (возникнет позже).

Заходишь на официальный сайт ноды, копируешь хелловорлд из главной страницы, меняешь порт на недопустимый (например 1000, который требует рута) и вставляешь в конце console.log("Этот console.log выполнился даже после того, как нода не смогла забиндиться к порту 1000."). Сделать await не получится, потому что у listen дурацкий апи, возвращающий вместо промиса черт-те что.

Обрати внимание на стектрейс, с какого места падает. Падает с абсолютно нелогичного места в связи с автомагией ноды крашить все приложение, если любой (любой!) event emitter не имеет обработчика error на момент его возникновения.

    import { EventEmitter } from "node:events";
    const ee = new EventEmitter();
    ee.emit("hello");
    console.log("Этот console.log() будет выполнен");
    ee.emit("error");
    console.log("Этот console.log() выполнен НЕ будет: нода за тебя решила, что тут надо грохать сразу весь процесс.");

И вот таким образом оформлена вся стд либа ноды. Всюду неприятные сюрпризы, и никогда нет уверенности, что ты подписался на все возможные источники ошибок. Нода -- это современный пхп.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено cheburnator9000 , 13-Мрт-25 21:29 
ну пистец какая гениальность.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 13:47 
В нормальном асинхронном программирование код отличается от синхронного только наличием await'ов. А навешивание коллбеков - это даже не программирование вообще, это мастурбация.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 16:47 
api node старше хипстерских await.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено morphe , 12-Мрт-25 10:39 
> Ощущение, что дизайнер ноды осилил только паттерн event emitter, так что он впендюрил его всюду.

Потому что когда в ноде была сеть, в JS ещё не было Promise/async/await

А event emitter удобнее чем колбеки у каждого метода, тем более что не везде эти колбеки относятся к конкретно методу


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено freehck , 12-Мрт-25 11:41 
> После раста, нода/яваскрипт/тайпскрипт кажется чем-то плюшевым, игрушечным, непродуманным.

Это ощущение обычно проходит после изучения N-ного языка.

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


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Вася Пупкин , 12-Мрт-25 15:36 
так можно же осознанно и игрушечный язык выбирать там где это уместнее. но от этого он неигрушечным не становится. нет противоречия

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено freehck , 12-Мрт-25 17:11 
> так можно же осознанно и игрушечный язык выбирать там где это уместнее.
> но от этого он неигрушечным не становится. нет противоречия

А никто ни про какие противоречия и не говорил.

Проблема тут только в том, что понятие "игрушечности" не определено никак, в отличие от стоимости разработки и стоимости поддержки.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено al , 12-Мрт-25 12:04 
Жабаскрипт, это чтобы анимированные снежинки на веб-страничке были и чтобы в формах автодополнение, а остальное - от лукавого.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Сталин , 12-Мрт-25 14:57 
Как там в нулевых? Закупай биткоин в конце десятелетия на все деньги.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:20 
А после любого языка с GC, Rust чувствуется небезопасным.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 15:00 
Наоборот, в том же go после rust ощущение дискомфортные, потому что помимо очищения непосредственно памяти есть и другие ресурсы. Например, нужно вручную освободить лок, не забыть вручную прописать defer с релизом. Также в рантайме постоянно ловятся проблемы нулевыми указателями. Rust от этого избааляет во время компиляции.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Вася Пупкин , 12-Мрт-25 15:38 
Ну неее.. после дружелюбного ржавого компилятора попробуй написать мультипоточный мемори-сейф код какой-нибудь жабе или шарпах. совсем обратное чувство.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 13-Мрт-25 07:39 
GC -- это иллюзия безопасности. Во-первых, gc сам по себе не избавляет от выхода за границы массива или от разадресации нуля. Единственная задача, которую он гарантированно решает (теоретически), это отсутствие мемликов. Некоторые вещи, относящиеся к safety он делает попроще, по сравнению с каким-нибудь C, но не решает этих проблем. А поскольку gc как правило сочетается с динамической типизацией, то это порождает аж целый новый огромный класс ошибок, которые бьют граблями в рантайме, и поэтому отлов этих ошибок упирается в проблему останова.

Штуки типа TypeScript указывают на то, что люди наконец начали понимать, что динамическая типизация отстой, и может у нас появятся хорошие языки с gc без динамической типизации. Но это сложно, потому что gc для своей работы требует информации о типах значений в рантайме, значит динамическая типизация уже как бы есть, и поэтому требуется очень высокий уровень самодисциплины от разработчиков языков, чтобы спрятать эту динамическую типизацию от разработчика.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Вездеход , 12-Мрт-25 14:20 
На js точно так же можно создавать tcp-сервер:
Bun.listen({ port: 8000, socket: { data(socket, data) {}, error(socket, error) {} }});

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аннноним , 12-Мрт-25 14:47 
По легенде Джаваскрипт накожен Бренданом Айком за 10 дней чтобы что-то было. А в итоге вон какую экосистему породил

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 12-Мрт-25 17:45 
> После раста, нода/яваскрипт/тайпскрипт кажется чем-то плюшевым, игрушечным, непродуманным. Например, попробуйте создать TCP-сервер и слушать порт 8000. В нормальных языках/платформах это просто вызов bind/listen и обработка ошибки. Но не в ноде. No, sir. В ноде, чтобы поймать ошибку listen или дождаться ее выполнения, надо

Во-первых, сранивать язык и платформу не вполне корректно. Во-вторых, это вопрос исключительно апи. Все node, bun и deno скрывают listen где-то под капотом. Видимо так удобнее им. Вряд ли их авторы не понимают bind/listen.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:03 
Почему не на Rust?

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Карлос Сношайтилис , 12-Мрт-25 10:20 
Потому что семантика раста не похожа на TS, написано же.

(почему должна быть похожа – вопрос не ко мне)


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Anonim , 12-Мрт-25 10:49 
Потому что затраты меньше, перепроектировать с нуля с учетом Rust-специфики (нет GC, например) или тупо портировать файл за файлом. И речь не о TS, как языке, а о конкретном коде TS компилятора, который близок к обычному коду на Go.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 11:53 
Затраты на Rust сильно больше и они никогда не окупятся.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:22 
Потому, что ни только Раст следит за безопасностью работы с памятью

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено _ , 12-Мрт-25 17:48 
Но это - другое! Понимать надо! :)

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 11:19 
Потому что нет сборщика мусора. А JS - это язык на сборщике мусора.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 13:48 
Наличие сборщика мусора в языке никак не коррелирует с необходимостью наличия сборщика мусора в его компиляторе.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 13-Мрт-25 16:22 
... если сам компилятор не написан на языке со сборкой мусора.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:27 
Выбирая Go, мы определенно знали, что будут люди, которые спросят, почему мы не выбрали Rust. Это хороший вопрос, потому что Rust — отличный язык, и, если нет других ограничений, это сильный выбор при написании нового нативного кода.

Портируемость (то есть возможность создать новую кодовую базу, алгоритмически похожую на текущую) всегда была ключевым ограничением, когда мы думали о том, как это сделать. Мы перепробовали массу подходов, чтобы получить представление, которое сделало бы этот подход к портированию осуществимым в Rust, но все они либо имели неприемлемые компромиссы (производительность, эргономика и т. д.), либо сводились к стратегиям типа "напиши свой собственный GC". Некоторые из них были близки к цели, но часто требовали использования большого количества небезопасного кода, и, казалось, не существует большого количества комбинаций примитивов в Rust, которые позволили бы эргономично портировать код JavaScript (что неудивительно, если сформулировать это таким образом — большинство языков не считают приоритетом облегчение портирования с JavaScript/TypeScript!).

В конце концов, у нас было два варианта — сделать полный рерайт с нуля на Rust, что могло занять годы и привести к несовместимой версии TypeScript, которую никто не смог бы использовать, или просто сделать порт на Go и получить что-то пригодное для использования примерно через год и иметь что-то чрезвычайно совместимое с точки зрения семантики и чрезвычайно конкурентоспособное с точки зрения производительности.

И даже не совсем ясно, в чем будет преимущество этого (помимо того, что не придется отвечать на множество вопросов "Почему вы не выбрали Rust?"). Мы по-прежнему хотим иметь четко разделенную поверхность API, чтобы наши варианты реализации оставались открытыми, поэтому недостатки Go в плане взаимодействия не имеют особого значения. Go обладает отличной генерацией кода и отличным представлением данных, как и Rust. Go обладает отличными примитивами параллелизма, как и Rust. Производительность на одном ядре находится в пределах погрешности. И хотя можно было бы добиться некоторого прироста производительности, используя небезопасный код в Go, мы получили отличную производительность и использование памяти, не используя никаких небезопасных примитивов.

На наш взгляд, Rust добился огромных успехов в достижении своих целей, но "легкость портирования на Rust с этой конкретной кодовой базы JavaScript" очень рационально не является одной из его целей. Это не является целью и для Go, но в нашем случае, учитывая то, как мы написали код до сих пор, он оказался довольно хорош в этом.

https://www.reddit.com/r/typescript/comments/1j8s467/comment...


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено деанон , 13-Мрт-25 21:29 
Это надо же, они ещё и оправдываться перед фанатиками за то, что их выбор был обусловлен не трендами и личными предпочтениями, а, прости Господи, техническими и экономическими ограничениями

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено User , 12-Мрт-25 15:27 
По тому, что задача "написания компилятора" по своим НФТ\ограничениям не относится к задачам "системного программирования" в чистом виде - тут у тебя нет долгоиграющих процессов, обрабатывающих недоверенные данные из внешних источников с ограничениями по производительности, не позволяющими использовать GC.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 12-Мрт-25 17:46 
> Почему не на Rust?

Даже Андерс Хейлсберг его не смог осилить.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Bottle , 12-Мрт-25 10:06 
Ехал Тайпскрипт через Джаваскрипт, который ехал через плюсы, а теперь ехал тайпскрипт через гошечку, чтобы ехать через джаваскрипт, чтобы ехать на плюсах.
В итоге оверхед оверхедом погоняет на всех этапах разработки.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:13 
Как раз часть оверхеда убирают.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено 12yoexpert , 12-Мрт-25 10:14 
дааа? и каким же образом?

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:18 
В новости написано.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Bottle , 12-Мрт-25 13:07 
...взамен добавляя ненужную сложность в разработку.
А могли бы wasm'ом пользоваться, а не костыли городить вокруг медленного джаваскрипта. Сколько его не ускоряй, а динамическая типизация не сделает его компилируемым языком.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Молодой Смузихлёб , 13-Мрт-25 18:10 
Сколько десятилетии прошло, а всё ругают "медленный" Джаваскрипт. Да он побыстрее ваших ПитоновДжав будет!

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено 12yoexpert , 12-Мрт-25 10:13 
и всё это при разработке парсит IDE на джаве, которая на плюсах

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Bottle , 12-Мрт-25 13:17 
Ну ладно IDE, оно, как говорится, выполняет свою, особую задачу, но сам TypeScript и его поддержка становится тем ещё весельем.
То есть, нужно знать JavaScript, TypeScript, Go, чтобы компилятор работал, не говоря уже о знаниях компиляции. А ещё надо знать то, как именно Хром, Лиса и Сафари этот самый джаваскрипт исполняют, а это требует знание C++, потому что разные реализации имеют разные баги, лол.
В итоге проект для глубокого понимания без появления ошибок в процессе требует профессионального знания всех четырёх языков. А теперь найдите мне такого специалиста, который это умеет, может, практикует вместе с компиляторостроением.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено User , 12-Мрт-25 15:34 
И не говорите! Безумие какое-то! Ведь никто другой не пишет для своего языка компиляторов на C++, не использует в своей писанине ассемблерных вставок, не транслирует это писево в "промежуточное представление на языке C", не требует изучения каких-то особых языков для сборки проекта, не...
Oh, shi! Да это же ДРУГОЕ!!!

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено нейм , 12-Мрт-25 10:46 
> we’ve begun work on a native port of the TypeScript compiler and tools.

Из оригинальной новости


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Минона , 12-Мрт-25 10:58 
А там ниже еще процессор где CISC транслируется в RISC.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:26 
В жизни бы не стал писать компиляторы на го. Он же совсем к этому не приспособлен. Неудобно. На окамле самое то.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Ъ , 12-Мрт-25 12:14 
ANTLR4+Go вполне удобен

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 12-Мрт-25 17:49 
> На окамле самое то.

Интересно увидеть сравнения производительности нового typescript-go с flow.

А изначально вроде ts (strada) был на f#? По крайей мере один из разработчиков был разработчиком f# как гласит Википедия. А ранние версии https://github.com/microsoft/TypeScript-DOM-lib-generator были на f# (можно посмотреть по истории).


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено BeLord , 12-Мрт-25 20:49 
Что значит удобно? Это не технический параметр. Я могу понять вот на языке Х компилятор пишется за Y дней/часов/лет, а на языке Z за Y*N дней/часов/лет. А что такое удобно мне лично не понятно.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 13-Мрт-25 04:14 
Любой компилятор по факту работает рекурсивно с деревьями. В функциональных языках, где есть паттерн матчинг это гораздо удобнее делать.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 13-Мрт-25 10:25 
Легко можно описывать на уровне типов структуру ast и потом это всё разворачивать и рабоать с этим. Со всеми гарантиями, что ты обработал все варианты. Как без вменяемых алгебраических типов данных работать с этим я не представляю.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 13-Мрт-25 10:28 
Промазал. Это ответ BeLord-у

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Витюшка , 12-Мрт-25 10:28 
Самое забавное что именно на Rust пересели большинство трансплайлеров, билдеров, линтеров и т.п. в мире Typescript.

Решение крайне сомнительное.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено нейм , 12-Мрт-25 10:38 
Просто сигма-чад архитектор тайпскрипта показал всем этим задавакам с растом где их место.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено _ , 13-Мрт-25 18:38 
Что то (наверное жизненный опыт?) мне подсказывает что такого уровня людям ... им "с прибором" на мнения за бортом, он "сам себе энциклопедия" :)
Он кстати может и на расте сделать, если ему будет интересно.

PS: Если бы все ржавчики были Андерсами Хейлсбергами ... я бы наверное сильно больше времени на раст тратил бы :)

PPS: Всё равно новость не в тренде :) Какое то чуйство что нам не всё сказали :)))


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:45 
Когда программистам делать нечего, они проекты переписывают на другом языке.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:55 
Там не переписывание с нуля, а скорее прямая трансляция с целью повышения производительности. Большинство кода строчка к строчке совпадает, код просто транслирован в другой синтаксис.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 11:38 
Им надо было транспайлер писать. Заодно избавили бы мир от ноде.жс

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 10:53 
Наконец-то Hugo для замороченных тем не будет тащить npm

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено turbo2001 , 12-Мрт-25 11:25 
Выглядит как жирный плевок в сторону C#

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 11:52 
Даже внутри Майкрософт с шарпом все ясно.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:05 
неужели ты залез внутрь? и как там в aнусе?

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:44 
а вот портанули бы MAUI на линух, всё было бы кучеряво

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 11:33 
>Go ближе к TypeScript по семантике и структуре кода, что позволяет сохранить при портировании существующие шаблоны

При этом в оригинальном видео вообще нет примеров, только два экрана с простыней if'ов, которые можно точно так же на любом языке переписать.

И кстати почему не на C#?


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 11:38 
Для господ, которым лень переходить по ссылкам:

>[оверквотинг удален]
>> This choice is basically a language preference of Typescript team and also an attempt to please the ts/js community which cheers adoption of Rust / Go in js tooling.
>> My opinion is that C# ticks all the boxes and would do a better job than Go.
>> But TS team acknowledged they would be better Go developers than they would be C# developers.
>> They want to build this with TS / JS community not with .NET Community.
>> Also, there was an issue with their justification:
>> They shouldn't have said C# is sub-par, but they should have been honest:
>> We think we are better Go developers and we like Go more than C#. And I think that would have been acceptable.
>> Trying to justify with technical arguments that don't hold, pisses some C#/.NET old timers.
>> Overall Go is not a bad choice, but I believe you would have achieved same or better results with C# if you opted for it.
>> Also I think C#/.NET teams would have happily cleared any bumps in your way.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено turbo2001 , 12-Мрт-25 12:03 
Это рассуждения мимокрокодила, а не официальная позиция.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:37 
Да, был не прав, сорян. Выглядело так, будто он разбирается.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 13:29 
OOP
cross-platform issues
shared memory concurrency

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 11:50 
Полностью верное и безоговорочно правильное решение.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:06 
глупости. нужно было сразу сделать альтернативу typescript, который сам по себе не нужон

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:06 
Java надо было.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 13:50 
Не надо.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено _ , 12-Мрт-25 17:55 
>Java надо было.

20 лет назад. А теперь - не факт.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:10 
Да это просто Майкрософт и Гугл друг другу подлизывают, чтобы вместе двигать свой корпоративный Rust.

Это чисто политика, тут нет никакой другой реальной причины, а все заявленные - обыкновенный лживый предлог.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено деанон , 13-Мрт-25 21:39 
А миром правят масоны

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:24 
Автор C#, который Хейлсберг, будучи и автором TS сам принял решение переписать на go. Люди на гитхабе в афиге, Хейлсберг оправдывается, что это не навязанное решение, а они так решили — говорит в варианте «начнём портирование один-к-одному с минимумом переписывания» го им подошла больше, при этом в отличие от питона получили не замедление, а ускорение (правда всего 3x и больше за счёт многопоточности).
Раст отмели, поскольку пришлось бы переделать всё. Почему отмели дотнет — непонятно, на многословность не спишешь, а вот по производительности потеряли прилично. Злые языки говорят, что мс сейчас под теми же людьми, что и гугель и начальство будет планомерно внедрять общие зонды, сам де дотнет привычным к яве индусам не интересен.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:43 
привычным к яве индусам и голагне с тупоскриптом не интересны, ты выдыхай уже

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 12-Мрт-25 17:14 
Точно, на презентации Хейлсберг часто моргает, наверняка индусы взяли его в заложники и заставляют переписывать на go.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено деанон , 13-Мрт-25 21:43 
Индусы заставляют его переписывать, чтобы он заставлял переписывать индусов и таким образом стимулируют экономическое развитие Индии, чтобы Индия ставила палки в колеса Китаю

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 13-Мрт-25 22:35 
> чтобы Индия ставила палки в колеса Китаю

Понятно теперь почему го: много китайских проектов пишут на расте.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:38 
Я правильно понял, что npm install typescript теперь будет либо качать непонятный блоб с go с домашней странички какого-нибудь анонима из микрософт, либо качать исходники go и компилировать его?

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 15:28 
Ещё один стал о чем-то догадываться.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 13-Мрт-25 04:17 
Просто уже собранные бинари как делает flow на ocaml.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 12:46 
Сначала, вместо того чтобы писать на JavaScript, но при этом отработать зарплату, придумали TypeScript. Теперь парят всем мозг с требованием переделать компилятор, чтобы продолжить генерировать JavaScript и продолжить получать зарплату. А ведь могли просто писать на JavaScript!
Чего только не придумаешь, лишь бы ничего не делать... и получать зарплату.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 14:21 
Кому - всем? От кого требуют? Как много вопросов и как мало ответов.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 14:12 
Отиличное решение, а когда закончите перепишите Go на TypeScript...

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 15:08 
Остался один шаг чтобы понять, что Typescript - вообще не нужен.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 15:14 
Нет, вот он как-раз таки нужен. Если тебе интересно комментарии писать вместо типов - пиши

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 13-Мрт-25 21:25 
Для таких целей прекрасно подойдёт ocaml, reasonml, rescript, выбирай по вкусу

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 15:27 
Нативная поддержка тайпскрипта должна появится в браузерах.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 15:51 
почему ещё не сделал?

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 16:35 
Так дорогой давай стандарт для начала. Вот у JavaScript он есть. Правда не американских браузеров нет, но все-же.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено th3m3 , 12-Мрт-25 16:40 
Давно не следил за этим болотом, но если не ошибаюсь, там речь шла не про поддержку TS в браузере, а поддержку статичной типизации в ванильном js, что сделает ненужным TS в принципе.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 12-Мрт-25 18:46 
> поддержку статичной типизации в ванильном js

Вроде как собираются добавить поддержку указания типов и их игнор в рантайме по аналогии с аннотациями типов в питоне.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено fuggy , 13-Мрт-25 12:49 
Так у JS нет не рантайма, он же не компилируемый. А аннотации, так это же уже было в flow. Так и в чём смысл, если просто будет происходить затирание аннотаций, как в "компиляторе" flow или просто игнор в рантайме, это же не повлияет на отлов ошибок. А вот TypeScript, если убрать из него Any как раз позволяет добавить статическую типизацию поверх динамического языка.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 12-Мрт-25 18:45 
Хотели сказать нативная поддержка go?

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 15:15 
Меня лично устраивает текущий TypeScript

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Нуину , 12-Мрт-25 18:45 
Ой. Ну тогда срочно отменяем все.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Я , 12-Мрт-25 17:03 
сначала typescript на go, потом go на typescript, а там глядишь сделают rustoscript с nodecargo

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 18:49 
конечно сделают, причём 100500 различных вариаций, другим способом безработицу не победить

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 19:28 
>Андерс Хейлсберг

Ученик Никлауса Вирта. Если Майкрософт именно его задействовал, то это серъёзно. Очень серъёзно.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 20:58 
Мда, а свой же .net с native aot даже не рассмотрели

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Ruslan , 13-Мрт-25 10:19 
Скорее всего потому, что размер транспилятора получился бы огромным из-за рантайма навороченного и большой BCL. Даже с trim’ом.

Тот случай, когда инструмент подбирают под задачу, а не из фанатизма.  


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено zionist , 12-Мрт-25 21:45 
По-моему это победа Go.

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 12-Мрт-25 22:39 
Компилятор для языка на другом языке? Это все, что нужно знать про язык.

Лучше уж вскод переписали бы тогда.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 13-Мрт-25 14:44 
По-вашему, какой-нибудь gfortran следует писать на фортране?

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 13-Мрт-25 18:29 
Да. Это же не интерпретатор, к нему и требования соответствующие.

Если он не может решить эту задачу, тогда зачем его вообще рассматривать вместо:
- Go.
- C.
- Cpp.
- C#.
- Rust.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено _ , 13-Мрт-25 18:46 
Потому что TS создавался для удобного написания другого класса программ? Не?
Ну как скажешь! :)

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 13-Мрт-25 18:59 
Ну, доверие это точно подрывает.

Кстати, у них в полиси написано, что никакие оптимизации они не вкручивают в него и не планируют, это полностью на плечах v8.

Так что фактически это тулза для ide. И, справедливости ради, там это реально помогает.

Хотя, некоторые вообще съезжают с него. https://www.opennet.dev/opennews/art.shtml?num=59729

Думаю, с развитием ecma спецификации, сие поделие можно будет в мусорку отправить.


"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 13-Мрт-25 21:27 
Теперь осталось выкинуть typescript не только из компилятора, но и из другх мест, куда его успели внедрить

"Microsoft переписывает компилятор TypeScript на языке Go"
Отправлено Аноним , 13-Мрт-25 23:27 
> Исходный компилятор TypeScript написан на языке TypeScript и транслируется в JavaScript,
> что создаёт проблемы с масштабированием при использовании в очень больших проектах.

Может, им просто на Go перейти всей толпой и не заниматься - вон тем?