LINUX.ORG.RU

Производительность C++

 ,


7

13

Как насчёт производительности у C++ по сравнению с C? Мои предположения на текущий момент:

1) Код, не использующий возможности C++ (то есть по сути plain C), скомпилированный C++ компилятором будет иметь абсолютно ту же производительность, что и код на С.

2) Исключения и dynamic_cast медленные. Если нам важна производительность, лучше их не использовать.

3) Класс без виртуальных методов, должен быть по производительности эквивалентен сишной структуре и функциям, обрабатывающим её. Не считая копирования. Нужно везде, где можно использовать передачу по указателю или ссылке (собственно, если в Си делать memmove при передаче структуры в качестве аргумента, то это вызовет примерно такой же оверхед, как дефолтный конструктор копирования С++. Верно?).

4) Класс с виртуальными методами полностью аналогичен пункту 3, но при вызове виртуальных методов добавляется небольшой оверхед. Сишный эквивалент obj->vtable->func(obj, ...). Если сравнивать с plain C кодом, реализующим ООП в той же манере (каждая структура-объект имеет поле, указывающее на структуру, содержащую адреса функций работы с ней), то оверхеда по сравнению с plain C не должно быть.

5) При использовании атрибута класса final (если компилятор поддерживает соответствующий стандарт) даже при наличии виртуальных методов в нём, их вызов будет превращаться в прямые вызовы функций вместо обращения к vtable, если переменная имеет соответствующий тип, а не указатель/ссылка на его предка (который не final).

6) Шаблоны могут привести к разбуханию кода. Впрочем, #define-ы и inline-функции в C++ могут устроить то же самое. Вопрос: будет ли использование шаблона с одинаковыми параметрами создавать 2 копии реализации или же всё-таки компилятор догадается сделать её лишь один раз. А если шаблон используется с одинаковыми параметрами в нескольких объектных файлах? Будет ли реализация расшариваться между ними или у каждого своя?

7) Что насчёт inline-методов класса? (те, которые описываются прямо в момент определения самого класса, внутри блока class). Может ли их реализация расшариваться между модулями или в каждом будет своя копия (допустим, метод слишком длинный, чтобы инлайнится в момент вызова)?

Я не претендую на правоту, какие-то утверждения могут быть ложными. Хотел бы узнать, как обстоят дела на самом деле. А также какие подводные камни я ещё не знаю. Разумеется, речь идёт о последних версиях gcc/clang с включённой оптимизацией не ниже -O2.

★★★★★

Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от eao197

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

Опять ложь :-) В таких случаях разумнее использовать просто C :-)

anonymous
()
Ответ на: комментарий от anonymous

Вряд ли, даже в эмбеддед жабах есть, вроде.

Добавим сюда еще и GC, и станет понятно, почему в Java есть единообразие, а в C++ нет.

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

Давайте на примерах. Что превращает C++ в Java? Что разворачивается при компиляции в хрен знает что? Что тормозит?

eao197 ★★★★★
()
Ответ на: комментарий от tailgunner

Куникс — достаточно серьезный эмбеддед? Что товарищ тейлганнер знает об эмбеддеде? В своем приозерске товарищ тейлганнер разрабатывает f35?

anonymous
()
Ответ на: комментарий от anonymous


ее так любят разработчики ядер, драйверов разработчики драйверов ее любят за то что можно говнокодить, авось итак сойдет

anonymous
()
Ответ на: комментарий от anonymous

Куникс — достаточно серьезный эмбеддед?

На колу мочало, начинай сначала. QNX уже 30 лет, она как бы не старше Си++.

В своем приозерске

Приозерск - это метка, которую узнают те, кому надо. Тебе не надо.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

ее так любят разработчики ядер, драйверов разработчики драйверов ее любят за то что можно говнокодить, авось итак сойдет

Ну как можно говнокодить на цепепе мы прямо здесь убедились уже воочию, когда была представлена parse() возвращающая вместо результата парсина строку с ошибкой :-)

anonymous
()
Ответ на: комментарий от eao197

Да что там далеко ходить, в том же ведре в одном месте код 0 значит нет ошибки, в соседней функции — есть.

mix_mix ★★★★★
()
Ответ на: комментарий от anonymous

Ну как можно говнокодить на цепепе мы прямо здесь убедились уже воочию, когда была представлена parse() возвращающая вместо результата парсина строку с ошибкой :-)

так можно и на яве, и на другом языке
я лишь уточнил почему драйвера линупса и С, а не драйвера и С++

anonymous
()
Ответ на: комментарий от eao197

Что превращает C++ в Java?

Исключения? Во что разворачиваются исключения, как они устроены? Как-то я читал про них, и создалось впечатление, что там все архисложно. Ну а уж бенчмарки явно показывают, что исключения очень тормозят при выбросе.

Что разворачивается при компиляции в хрен знает что?

Исключения, rtti, boost так вообще такое нагромождение шаблонов, что при любой ошибке вываливается трейсбек на десять листов и ты уже не знаешь, как это дебажить. Хватает там проблем своих.

anonymous
()
Ответ на: комментарий от tailgunner

QNX уже 30 лет

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

anonymous
()
Ответ на: комментарий от anonymous

Очень индивидуально.

Очень. Я как-то ради хохмы фрагмент очень простого кода отрефакторил, в демонстрационных целях (простой вариант, не простой вариант).

Так вот, чего я не понимаю, когда вижу подобный простой, но объемный код, так это откуда у людей берется столько старания и терпения для его написания. А потом и сопровождения.

А у них, полагаю, обратная ситуация: они не считают нужным усложнять свой код.

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

eao197 ★★★★★
()
Ответ на: комментарий от anonymous

Ну если бы хоть раз в жизни с ней сталкивался

Я с ней сталкивался. Первый раз - во времена QNX 2.x и Ditto. Слышал о Ditto?

ее несколько раз целиком переписывали

Выбрасывали _весь_ код? Откуда информация, чем можешь подтвердить?

а куникс 4 и куникс 6 — две разные операционки

QNX4 - это год ~94, ЕМНИП. Очень свежо.

профессионалам такое знать не нужно

В общем, да. Но я знаю.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от anonymous

так можно и на яве, и на другом языке

Не совсем :-) Вот такая сигнатура выглядит просто не правильно в принципе:

std::string parse(const std::string&) noexcept;
по причине того, что конструктор std::string может сгенерировать исключение :-) Т.е. мало того, что вместо исключений - возврат значения, так ещё и возврат такого значения, что при конструировании которого может быть исключение :-) Такие вот библиотеки :-) Лол :-)

anonymous
()
Ответ на: комментарий от anonymous

Исключения?

У Страуструпа, в его книге «Язык программирования C++» была отдельная глава, в которой он сравнивал три разных стратегии для индикации ошибок:

- возврат заведомо неправильного значения (например, nullptr в результате fopen) + выставление глобального кода ошибки (errno, SetLastError);

- возврат кода ошибки (значение возвращается через out-параметры или каким-то другим образом);

- исключения.

У каждого подхода есть свои достоинства и недостатки. В частности, две первых стратегии в принципе не работают с перегрузкой операторов.

Огромный плюс C++ в том, что он позволяет выбрать для своего проекта не просто любую из них, а и любое их сочетание. В отличии от других языков, где стратегии жестко зафиксированы.

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

Ну а уж бенчмарки явно показывают, что исключения очень тормозят при выбросе.

Да, очень тормозят. Поэтому в определенных предметных областях их просто запрещают.

А там, где не запрещают, рекомендуют пользоваться с умом. Например, не порождать исключения в ситуациях, кода «ошибка» возникает с большой частотой.

Исключения, rtti, boost так вообще такое нагромождение шаблонов, что при любой ошибке вываливается трейсбек на десять листов и ты уже не знаешь, как это дебажить.

Складывается ощущение, что вы просто не умеете их готовить :)

Опять же, boost не единственная в мире библиотека, под свои нужды можно подобрать что-то попроще. Ну а если из boost-а приходится использовать что-то уникальное (например, boost.multiindex), то поверьте, сделать это по-другому и столь же эффективно в общем случае будет отнюдь не проще.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

У них есть достаточно много терпения, внимания, старательности и времени.

Дело не только в этом. Просто есть уровни абстракции, всекаешь? Когда пишешь веб, трахаться с байтами не хочется вообще, хочется оперировать строками, абстрактными типами данных или объектами. А когда ты работаешь с железом, буферами и байтами, нагромождение абстракций нужно не всегда. И иногда проще писать код ближе к железу, когда ты сразу смотришь на сишный код и сразу представляешь, во что оно скомпилируется, метки там, условные переходы. Люди в 2016 году выбирают си и ассемблер не потому, что им захотелось, а потому что для их задачи оно реально проще. Другого рода простота.

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

Сложные абстракции и на сишке прекрасно строятся, см гном, вопрос в сложности абстракций и их количестве. Где-то проще использовать плюсы, где-то они практически не нужны.

Кстати, у тебя код на плюсах везде. И вот такой говнокод на плюсах почти в очень многих плюсовых проектах. Зайди на багтрекер квартуса, там миллионы багов. Или загляни в кьюти. Средства в крестах может и есть, но не спасает как-то, люди массово строчат говнокод, может язык сложный слишком, может не успевают за стандартами, может консерватизм.

anonymous
()
Ответ на: комментарий от anonymous

Вот такая сигнатура выглядит просто не правильно в принципе:

Звиздец в том, что в picojson нет такой сигнатуры. Функции parse, к которым вы из-за дебилизма прикопались, выглядят вот так:

template <typename Iter>
Iter parse(value& out, const Iter& first, const Iter& last, std::string* err);

std::string parse(value& out, const std::string& s);

std::string parse(value& out, std::istream& is);
Но ведь важно насрать смайликами, а не разобраться что к чему.

eao197 ★★★★★
()
Ответ на: комментарий от tailgunner

QNX4 - это год ~94, ЕМНИП. Очень свежо.

О том и речь, куникс 4 старый, куникс 6 кардинально переписан. Почему нейтрино на кресты не переписали? Все тупые, один тейлганнер шарит? Как этот мир еще с катушек без тебя не слетел?

Выбрасывали _весь_ код?

Кардинально новое ядро с новым аби/апи? Видимо, судя по дровам от нетбзд и апи.

anonymous
()
Ответ на: комментарий от eao197

Звиздец в том, что в picojson нет такой сигнатуры.

Вот именно, и это ещё одна проблема цепепе :-) Ведь ты уже так много слов сказал в пользу обоснования API упомянутой либы, дескать, такой API используют те, кому исключения использовать нельзя :-) Но ведь если этот API предназначен для тех, кому нельзя использовать исключения должен на это указывать явно с помощью специально предназначенной для этого языковой конструкции noexcept, а этого нет :-) И остаётся теперь ждать, стандарта в котором noexcept будет объявлен deprecated, и вот тогда действительно будет полный «звиздец», как ты сказал :-) Лол :-)

anonymous
()
Ответ на: комментарий от anonymous

Почему нейтрино на кресты не переписали?

Нейтрино в каком смысле - само микроядро? Не знаю. Возможно, оно слишком маленькое, чтобы заморачиваться. Остальную ОС? Там наверняка большая часть кода из QNX4.

Все тупые, один тейлганнер шарит?

Мне льстит, что ты допускаешь такую возможность.

Выбрасывали _весь_ код?

Кардинально новое ядро с новым аби/апи? Видимо

То есть неизвестно. Я вот думаю, что даже в ядре^WProcess Manager в QNX6 есть значительная часть кода QNX4.

судя по дровам от нетбзд и апи

Вообще не довод.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Когда пишешь веб, трахаться с байтами не хочется вообще, хочется оперировать строками, абстрактными типами данных или объектами.

В С все это есть?

А когда ты работаешь с железом, буферами и байтами, нагромождение абстракций нужно не всегда.

Кто заставляет их лепить?

Люди в 2016 году выбирают си и ассемблер не потому, что им захотелось, а потому что для их задачи оно реально проще. Другого рода простота.

Что заставляет вас думать, что люди в 2016-ом году что-то более менее понимают в C++?

Я вот наблюдаю, что уже лет 10 про C++ народ знает лишь какие-то городские легенды. А уж если и берутся что-то писать, что получается либо чистый C, либо Java, но в синтаксисе C++ (с голыми указателями, забытыми delete, возвратом ссылок на временные объекты и т.д.).

Т.е. реально про возможности C++ не знают, но мнение имеют. А из этого мнения выходит, что проще взять C, чем C++.

Тут еще множество факторов можно вспомнить. Например, количество ресурсов, которое было вбухано в известные проекты (вроде того же ядра Linux-а). Особенности специалистов, которые занимаются драйверами (многие из них просто научившиеся программировать железячники). И т.д., и т.п. Включая и то, что миром ядер ОС и драйверов спектр областей для ЯП не ограничивается.

eao197 ★★★★★
()
Ответ на: комментарий от anonymous

Но ведь если этот API предназначен для тех, кому нельзя использовать исключения должен на это указывать явно с помощью специально предназначенной для этого языковой конструкции noexcept, а этого нет

Ну вы бы почитали про noexcept хотя бы. Может перестали бы дно пробивать.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Я вот наблюдаю, что уже лет 10 про C++ народ знает лишь какие-то городские легенды. А уж если и берутся что-то писать, что получается либо чистый C, либо Java, но в синтаксисе C++ (с голыми указателями, забытыми delete, возвратом ссылок на временные объекты и т.д.).

Т.е. за 10 лет наблюдений ты так и не увидел стремление людей писать на C++ :-) Интересно, о чём это тебе говорит? :-)

Т.е. реально про возможности C++ не знают, но мнение имеют.

Мнение такое, что идиоматично и правильно писать на нём дорого и долго, потому то и

А из этого мнения выходит, что проще взять C, чем C++.

PS. Ещё C++ строчку во время компиляции так и не научился генерировать несмотря на заявления экспертов о том, что «компилятору C++ передаётся больше информации, чем компилятору C» :-)

anonymous
()
Ответ на: комментарий от eao197

Ну вы бы почитали про noexcept хотя бы.

А что из сказанного в части noexcept не верно? :-)

anonymous
()
Ответ на: комментарий от eao197

В С все это есть?

Нет, веб на си пишет только эдди. На крестах тоже, кстати, кроме страуструпа мало кто пишет, наверное.

Я вот наблюдаю, что уже лет 10 про C++ народ знает лишь какие-то городские легенды.

Ну то есть маргинальный язык?

Тут еще множество факторов можно вспомнить.

Можно. Но главное, си = высокоуровневый ассемблер, и иногда (достаточно часто, судя по TIOBE), людям просто нужен высокоуровневый ассемблер.

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

Что касается легенд, ну, тут виноваты собсна разработчики стандарта. Нужен не просто язык, а язык с идиологией, с представлением об идиоматичном коде. А когда как хочу, так и пишу, люди пишут. Получается, как в твоем примере — лютый говнокод. Следующие поколения смотрят на это и у них встают волосы дыбом. А все потому что представления о правильном коде если и были, то они менялись постоянно, от си с сахарком для структур до лямбд и запрета исключений. Вот и имеем помойку, которую люди сторонятся.

anonymous
()
Ответ на: комментарий от anonymous

Мнение такое, что идиоматично и правильно писать на нём дорого и долго

Идиоматично _и_ правильно как раз проще.

auto p(make_unique<Foo>())

вместо

auto p(new Foo());

...

delete p; // не нужно с unique_ptr
tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от anonymous

Нет, веб на си пишет только эдди. На крестах тоже, кстати, кроме страуструпа мало кто пишет, наверное.

Google, Facebook, как минимум. Еще туча совсем мелких проектиков, которые используют разработки вроде Wt для Web-морд на разных умных устройствах. А если еще и WebAssembly взлетит, то для C++ место найдется не только на бэк-энде.

Ну то есть маргинальный язык?

Вы уж определитесь, доверяете ли вы TIOBE или нет (хотя в приличных компаниях за упоминание TIOBE бьют кандилябром). По показаниям TIOBE С++ более чем мейнстрим.

Это сложный язык, который должен использоваться в определенных прикладных нишах. И таки 70% нынешних разработчиков эти ниши совсем не упали.

Да, но зачем, когда есть акка или эрланг.

Затем, что стоимость развертывания и эксплуатации прожорливого софта на Akka или Erlang может быть дороже, чем аналога на C++. В некоторых случаях. Подчеркну отдельно: в некоторых случаях.

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

Ну а кто пихает? Речь в данной теме по поводу C vs C++. Пока что эти языки плотно делят между собой одни и те же ниши.

eao197 ★★★★★
()
Последнее исправление: eao197 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Интересно, о чём это тебе говорит?

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

Мнение такое, что идиоматично и правильно писать на нём дорого и долго

Ниже tailgunner уже показал, что правильно писать как раз и не долго, и не дорого.

eao197 ★★★★★
()
Ответ на: комментарий от tailgunner

Идиоматично _и_ правильно как раз проще.

Так вроде это же ты как раз и пользуешься picojson? :-)

Идиоматично и правильно - это когда для выражения идей программист использует специально предназначенные для этого средства языка, а при их отсутствии, зарекомендовавшие себя приёмы (читай паттерны), а не мучается придумыванием или выбором окольных путей из десятка возможных вариантов :-) Понятно, что полёт фантазии может быть высоким, а вот придерживаться того же ООП и паттернов - это долго и дорого :-) А уж о метапрограммировании и заикаться не стоит, ибо спонсоров, которые мне бы платили за месяцы переваривания шаблонов, нема :-)

anonymous
()
Ответ на: комментарий от anonymous

говнокод на Си++ писать проще, чем нормальный код, поэтому Си++ говно

okay.jpg

tailgunner ★★★★★
()
Ответ на: комментарий от eao197

Ниже tailgunner уже показал, что правильно писать как раз и не долго, и не дорого.

Так писать может любой, идиома не только в смарт-поинтерах :-)

О том, что миллионы мух не могут ошибаться.

Забавно, но такой же ответ любят давать лисперы, когда речь заходит о маргинальном Лиспе :-)

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

Ещё более, чем забавно, но такие слова я слышал, кажется, от Пола Грэма, знаменитого лиспера :-) С каких пор эксперт по C++ повторяет за лисперами? :-)

anonymous
()
Ответ на: комментарий от eao197

Еще туча совсем мелких проектиков, которые используют разработки вроде Wt для Web-морд на разных умных устройствах.

А ты сам то эту Wt пробовал? :-) Попробуй сделать с её помощью хотя бы аналог ЛОРа :-) За громкими возможностями, часто заявляемыми разработчиками, стоит тьма багов, как правило, которые ещё больше усложняют и замедляют разработку готового продукта :-) Попробуй, ага :-)

anonymous
()
Ответ на: комментарий от anonymous

Так писать может любой

Практика показывает, что не любой.

С каких пор эксперт по C++

Я не эксперт, мне можно.

Попробуй сделать с её помощью хотя бы аналог ЛОРа

Специально для малолетних дебилов: «используют разработки вроде Wt для Web-морд на разных умных устройствах

eao197 ★★★★★
()
Ответ на: комментарий от eao197

ISO8583

Кулхацкеры бы оценили, например.

PDU из GSM 03.40 или 04.11

Уже есть, не уверен, что именно оно, но Osmocom, OpenBTS, YateBTS(коммерческий продукт выложили, и считают, что так можно заработать), и таки да, ажиотаж уже создается:
https://2ch.hk/ra/res/193769.html
https://2ch.hk/ra/res/229812.html

Правда непонятно, кто и с какой целью его создает... Но интерес к теме есть и последние два года — нарастает.

Тут, кстати, недавно была серия совещаний всяких чиновников на тему «как нам обустроить Россию и закрыть доступ к сотовым сетям в учреждениях ГУИН», скорее всего ноги оттуда же растут...

FIX

Шо за зверь?

shkolnick-kun ★★★★★
()
Последнее исправление: shkolnick-kun (всего исправлений: 4)
Ответ на: комментарий от eao197

Я не эксперт, мне можно.

За 20 лет программирования на C++ не стать по нему экспертом?! :-) Ого :-)

Специально для малолетних дебилов: «используют разработки вроде Wt для Web-морд на разных умных устройствах.»

Вроде как не эксперт за 20 лет практики по собственному признанию, а других обзываешь :-) Логика превратилась в nullptr :-)

anonymous
()
Ответ на: комментарий от eao197

Facebook

Про гугл не знаю, фейсбук на пыхе.

https://www.quora.com/What-is-Facebooks-architecture-6

WebAssembly взлетит, то для C++ место

Сдается мне, 99,(9)% веб-ассембли кода будет генериться не из с++ кода.

Еще туча совсем мелких проектиков, которые используют разработки вроде Wt для Web-морд на разных умных устройствах.

И какое процентное соотношение всего этого к жабе, пыху, питону, рубям и т д?

В некоторых случаях. Подчеркну отдельно: в некоторых случаях.

Можно пример. Учитывая, что сервак стоит дешевле месячной зп одного программиста, мне даже интересно.

плотно делят между собой одни и те же ниши.

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

anonymous
()
Ответ на: комментарий от anonymous

Сдается мне, 99,(9)% веб-ассембли кода будет генериться не из с++ кода.

А из чего еще? Какие еще широко распространенные языки умеют в нативную компиляцию?

tailgunner ★★★★★
()
Ответ на: комментарий от shkolnick-kun

Уже есть, не уверен, что именно оно

Я немного про другое. Есть области, разработки в которых нужны большому количеству разработчиков. Например, regexp-ы или упомянутый здесь json. Соответственно, когда regexp-либо или json-либо выкладывается в OpenSource, то большое количество народу понимает что это и зачем. Соответственно, если либа получилась удачной, то будут пользователи, будут контрибьюторы и стоимость владения этим кодом для всех снизится.

А есть области, в которых работает ну тысяча или пару тысяч человек во всем мире. Ну выйдет какая-то OpenSource либо для такой области. Желающих поюзать нахаляву найдется несколько десятков. И наверняка какие-то фич-реквесты пойдут. Но вот с контрибьторами дело будет хуже. Посему стоимость владения не только не снизится, но может и возрастет. Откуда встанет вопрос: а нафига было открывать?

Шо за зверь?

https://ru.wikipedia.org/wiki/Financial_Information_eXchange

eao197 ★★★★★
()
Ответ на: комментарий от tailgunner

А из чего еще? Какие еще широко распространенные языки умеют в нативную компиляцию?

V8 компилирует JavaScript в нативный код :-) Ты не знал? :-) Как он был главным языком в вебе, так и останется :-)

anonymous
()
Ответ на: комментарий от eao197

используют разработки вроде Wt для Web-морд на разных умных устройствах.

Ну там и си активно используется, та же luci, поди, еще популярнее. Речь шла про веб в целом, а не одностраничные мордочки для микроволновок.

anonymous
()
Ответ на: комментарий от anonymous

V8 компилирует JavaScript в нативный код :-) Ты не знал? :-)

V8 - JIT-компилятор. Ты не знал?

Как он был главным языком в вебе, так и останется :-)

Надо быть реально улыбчивым дурачком, чтобы предложить компилировать JS в Web Assembly.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

А из чего еще?

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

anonymous
()
Ответ на: комментарий от tailgunner

V8 - JIT-компилятор. Ты не знал?

Первый слышу, ибо оно всегда было и есть, что «V8 compiles JavaScript to native machine code (IA-32, x86-64, ARM, or MIPS ISAs; has also been ported to PowerPC[7] and IBM s390[8][9] for use in servers)» https://en.wikipedia.org/wiki/V8_(JavaScript_engine) :-)

Надо быть реально улыбчивым дурачком, чтобы предложить компилировать JS в Web Assembly.

Надо реально отстать от жизни, чтобы предположить иначе :-)

anonymous
()
Ответ на: комментарий от anonymous

Про гугл не знаю, фейсбук на пыхе.

Во-первых, PHP не сам HTTP парсит. Во-вторых, погуглите про HipHop и HHVM от Facebook.

Сдается мне, 99,(9)% веб-ассембли кода будет генериться не из с++ кода.

Вот поживем и увидим.

Можно пример. Учитывая, что сервак стоит дешевле месячной зп одного программиста, мне даже интересно.

Разница в стоимости устройства (для примера можно взять даже виртуалки у хостеров) может составлять 2-3 и более раз. Когда счет устройств идет на тысячи, это выливается в приличные суммы.

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

Если сравнивать с нишами какого-нибудь Python-а, JavaScript-а или VisualBasic-а, то разница не большая.

Меня лично больше интересуют не драйвера или части ядра, а ПО промежуточного слоя, вроде HTTP-серверов, MQ-брокеров, СУБД и т.д. Тут C и C++ на одном поле играют. А местами и с Java/Erlang конкурируют.

eao197 ★★★★★
()
Ответ на: комментарий от anonymous

Ну вот если запилят быстры компиляторы для шарпа, жавы,

Кто, зачем? Насколько я вижу, его пилят под существующие нативные компиляторы, а это Си и Си++ без вариантов.

жабаскрипта

фейспалм

Иначе не взлетит просто.

Ну да, а если в брузере можно будет запустить Kafka - тогда о-го-го.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Речь шла про веб в целом

А разве такая штука существует?

eao197 ★★★★★
()
Ответ на: комментарий от tailgunner

Ну понятно... о компиляторах ты читал в Википедии.

Понятно, что ты облажался :-) V8 компилирует JavaScript-код в нативный код :-)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.