Pull to refresh

Comments 15

Это же не goto. Это просто именованный блок или цикл, внутри которого можно попроситься прыгнуть либо в самое начало этого блока, либо в самый конец. Перекрещивать блоки, само собой, нельзя. Прыгнуть в произвольное место тоже невозможно. Так что за грань добра, зла и блочного программирования яваскриптовые метки не выходят.

Но настоящий джамп внутри функции очень бы пригодился при портировании вот таких вот мудрёных штук, как бизоний скелет, или лексер сложного языка. Когда встречаю goto в Си, сразу кровь в жилах стынет — КАК это всё распутывать? :)
Ясное дело, что в сгенерированном коде нет сильных требований к читаемости. Но ведь фактически в github.com/kung-fu-tzu/bison-lalr1.js/blob/master/calculator.js continue goto_loop; работает как goto? Т. е. цикл for(;;) {...} // won't reach here работает не столько как цикл, сколько как средство обеспечения прыжка нужное место.
За реализацию goto там отвечает switch. А for там таки просто бесконечный цикл.
Когда накоплю тестов, обязательно заменю switch на что-то пошустрее и понагляднее.
Для подобных целей мне удалось использовать самый обычный bison/flex и связку из clang и emscripten. Вот немного сумбурная запись в блоге, где я описал, как это можно сделать: http://alex-ac.blogspot.ru/2013/04/javascript-emscripten-lexyacc.html

Да, в этом случае есть дополнительные этапы, вроде компиляции в llvm биткод и трансляции его в javascript, зато действия по подготовке кода минимальны — нужно только написать простенькую обертку (никаких шаблонов на m4).
Собственно, вот оно и происходит: весь функционал, годами наработанный в POSIX и остальном, потихоньку мигрирует из С в Яваскрипт. К чему это придёт, вроде уже довольно очевидно. Ява, Шарп и прочие, конечно останутся, но будут заметно вытеснены не очень молодым, но очень бойким Яваскриптом. Это становится тем более очевидным, чем более эффективную динамическую компиляцию допиливают монстры вроде Гугл.
Насчёт вытеснить, ИМХО, погорячились — применимость языка определяется не только по производительности, но чаще всего по наличию и качеству нужного для разработки инструментария.

У яваскрипта даже с отладчиками под некоторые платформы есть проблемы, а что касается библиотек и RAD IDE я вообще молчу.
Вы извините, но давать оценку количеству и качеству инструментария в любой внятной дискуссии можно только приводя конкретные факты. И обсуждая с позиции фактов: с чем сравниваем, какие классы инструментариев, какой список возможностей по каждому, число пользователей. И прочие объективные параметры. А вы, при всём уважении, пытаетесь свести к религиозному спору.
Спишу это на дурной пример создания кафедры теологии в одном известном светском вузе.
да, «будет одно сплошное телевидение» ©
Вы точно внимательно читали комментарий?
Ява и шарп эти наработки POSIX просто берут «как есть» и грузят в своё адресное пространство. Ява через JNI, шарп через P/Invoke.
Да, они используют, грубо говоря, код С. Яваскрипт имеет тенденцию реализовать всё самостоятельно. Чувствуете разницу? Она тонкая, но она есть.
Кроме того, Яваскрипт исполняется почти всеми браузерами и, что ещё важнее, обслуживает в них DOM, что в перспективе может стать «точкой сборки» разномастных интерфейсов под разные платформы.
Я нигде не говорил, что ничего другого не останется. Все будут, у каждого будет своя ниша. Но я предполагаю, что ниша Яваскрипта будет увеличиваться, в том числе, отчасти, за счёт упомянутых языков.
Шарп-то моложе джаваскрипта:)
не очень молодым, но очень бойким Яваскриптом
Sign up to leave a comment.

Articles