> Он очень быстр для скриптового языка. Я не понимаю почему кто-то смеет требовать себе какие-то скидки, имеючи при этом адовый jit-компилятор жрущий ресурсов как три gcc. Синдром утенка долбит?
> Или ты его с С сравниваешь?
Можно и с C. А почему я не должен сравнивать с ним? Если C позволяет получить из той же машины в разы больше - значит JS тормозной.
Что до скриптовости - typescript и dart докатились до препроцессинга и чуть ли не половины фазы компиляции, jit компилятор который ресурсов трескает не хуже gcc какого. Только еще и в памяти висит всегда, в отличие от gcc который AOT и после того как закомпилит - отвалит из памяти "навсегда". Жеппоручки имени js даже какие-то эрзацы make родили. Emscripten всякие - изипнулись сделать из js IR, только он полчился такой же бамбуковый как и остальное у веб-макак, вобрав в себя все недостатки технологий без каких либо достоинств.
Я понимаю что скрипткидям хочется ощутить себя взрослыми, на равных с теми кто нормальные тулсы делает, вот и делают самолеты из бамбука. Но летные качества у бамбуковых самолетов - #$%нуться с обрыва. Для сородичей по племени даже это кажется крутым, но работающие турбины у бамбуковых не очень получаются. Лошки таскают воду в хижину на хребте. Потому что не могут даже ветряную мельницу и примитивный водопровод.
> Это позволяет сделать подавляющее количество языков. Сильная типизация это редкость.
> Кстати, в С ее нет.
В си этот момент забавен. Если ты уверен что хочешь доски и гвозди вместе - можно зафорсить. Позволяет избавиться от мозготраха инструментарием там где надо (паскалеобразные нещадно сожрут в такой ситуации мозги и процесс превращается в борьбу с инструментом). На си можно написать бутлоадер который разберет какой-нибудь ELF файл и не поперхнется его разложить в правильные адреса и запустить. Какой у секции ELF уталкиваемой в адрес памяти 0x200000 формальный тип?
А на JS - сначала задолбаешься бамбуковый самолет строить, а потом обнаружишь что он летать не может принципиально. Патамучта двигателя нету и про аэродинамику папуасы не слышали, лол.
> Это недостаток, но гибкость языка позволяет добавить эту возможность,
Только скрипткидиз может что-то такое назвать гибкостью.
> в том числе и в веб.
В результате либ в нормальном виде не сложилось. Сложились бамбуковые самолеты. Почти как настоящие, но летают только с обрыва.
> А как с возможностью отучить С от разделения на .h и .c?
Посмотри на какое-нибудь LZO или UCL от маркуса оберхамера. Старый извращенец тебе и приколы типа .ch файлов покажет. Мало? Ну тогда посмотри на либу lodepng.h. Веселая такая "либа" - состоит из одного .h файла, который просто #include'ится в свою программу.
В си многие вещи не прибиты на гвозди, просто есть некие джентльменские договоренности которые условились соблюдать. Для удобства и возможности реюзать чужой код. У вебмакак даже с этим вышел конкретный факап.
> А оно ему надо?
Компьютеры оперируют значениями от 0 до 255. Есть множество форматов данных использующих полный диапазон значений. Практически любой алгоритм сжатия или шифрования, например. Неиспользование полного диапазона значений сильно нагибает скорость, усложняет кодирование/декодирование и ощутимо раздувает результат в размере (что для например сжатия вообще убивает смысл затеи). И JS получается как бы быстрый и как бы все может. Но даже реализовать на нем декодер формата поддержки которого нет в системе и/или браузере - редкостная джеппа почему-то. Что, утята, ваш бамбуковый самолет почти как настоящий, но летает только с обрыва? :)
> Вон С не умеет нормально работать со строками, выкидывать?
По сравнению с JS он пожалуй не так уж плохо с ними работает. По крайней мере, единственное что требует специальной обработки в дефолтной реализации это код 0x00. Не говоря о том что желающие могут запилить (или подключить запиленное кем-то еще) по вкусу. Нуакули, это ж не js, там можно и строки себе какие удобно запилить и это не будет тормозить, заметим.
А так в порядке порнографии - на JS есть например парсер OSM PBF и прочих vector tiles. И как бы например планета от OSMщиков в XML весит под 300 Гб (да, "текстарь" в треть терабайта, удачи в его редактировании, хаха). А pbf как бы 30Гб. В 10 раз меньше. С vector tiles такая же фигня. Да и мысль выпихнуть весь рендер от и до на клиента оставив серверу только отгрузку статики - забавная по своей наглости. Весь тормозняк достается клиенту, сервер может хоть на raspberry pi работать, если статику vector tile-ов успевает в интерфейс пхать. Смешно же - никаких баз, никакого парсинга. Отгрузка файликов по индексу, а дальше клиент сам вкалывает от и до. Вишенка на торт - ты попробуй код таких штук почитать. Знаешь, на фоне этого даже плюсы покажутся простым и логичным языком. Потому что на JS с бинарными данными работать можно, но - порнографически, особенно если еще и с fallback на случай если нет типизированных массивов. Там вообще крыша съедет.
Чтобы было более дато - в js нет препроцессора. Поэтому никаких аналогов #define там нет. Можно сколхозить эрзац, но самолетик будет бамбуковый. Да что там, const вон запилили. Только он тоже получился как обычно у вебмакак. Зачем нужна константа которая не очень то и констифицирует? Я не понял, честно-честно.
Если у си накопились скелеты в шкафу то в js не мелочатся и сразу выводят вызывающего дикий ужас мутанта. Который в виде скелета будет пожалуй менее стремным ;)