Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

В чем разница C++ и Java-Script

PSeudo Гуру (2592), закрыт 9 лет назад
В чем разница? С С++ знаком достаточно хорошо, но вот на днях начал знакомиться с Java-Script и понял что он практически ничем от плюсов не отличается. Пока только нашел разницу в том что в JS нет типов данных, как таковых. Так в чем же все-таки разница еще?
Лучший ответ
Rollzed Гуру (4231) 9 лет назад
Разница огромная. В JavaScript с данными можно творить что угодно, а C++ -строго типизированный (а по современным меркам - строжайше). В JS можно легко div-у добавить любое свойство и функцию.
В JS нет многопоточности (хотя планируют)
В JS не надо выделять память
JS - интерпритируемый, а C++ -компилируемый
C++ -ООП, а где ООП в JS - я ХЗ (классов вообще нет), и реализована прототипно-ориентированная парадигма. Да и прототипы там достаточно вольные (так как нестрогая типизация данных)
В JS все работает по ссылкам, this зависит от контекста исполнения.
Нет областей исполнения программы (как в C# и новых php)
Нет функции main, выполнение начинается по мере загрузки и наступления событий
JS работает в виртуальной машине, а не во всей ОС
и т. д. и т. п.
artnazarovМыслитель (8972) 9 лет назад
Ну, а что Вы называете классом и ООП? В JS - функция строго говоря это функциональный объект, т. е. функции наследуют свойства объекта. Другими словами, функции JS это функторы. Дальше, функциональные объекты содержат в себе код и связанные с ним данные. Это просто напросто инкапсуляция. Основы ООП - это инкапсуляция, полиморфизм и наследование. Это тоже есть в JS. Т. е. JS - это полноценный ООП язык с сильным акцентом на динамическую типизацию и функциональную составляющую.
artnazarovМыслитель (8972) 9 лет назад
Дальше, претензией ООПшников является отсутствие множественного наследования. Но, указывая на это, они забывают, что множественное наследование приводило к серьезным проблемам с разработкой софта. В результате была осознана Diamond problem и рекомендовано использовать mixins и interfaces (архитекторами с именем вроде Хейльсберга). А в JS это есть, как и механизм рефлексии, когда мы методы у объекта можем получить (и даже заменить в runtime).
artnazarovМыслитель (8972) 9 лет назад
Вы так говорите, будто бы в С++ уже pointers/references убрали. В Ecma6 есть модули, есть блоки выполнения и блочные переменные и т. п. OS - сервис управления задачами и ресурсами, приложение в любом случае выполняется в среде OS, так же как сценарии JS или байткод Java внутри VM. Или MS перестала EPM / App Sandboxes поддерживать? А может быть IL/JIT/HAL нельзя с С++ совмещать? Да вроде совмещают. В Церне с их бешенными информационными потоками.
artnazarovМыслитель (8972) 9 лет назад
А распределение памяти в js доступно для критических нагрузок. Есть Static memory management, low level struct types, object pooling, preallocating и т. п. Если Вы с этим не сталкивались, это не значит, что оптимизаций нет. А про потуги сделать удобной динамическую типизацию с помощью templates - ну и что получилось, что-то человекочитаемое? Чем оно яснее машинного кода? Оно на декларации похоже? Так что без слез на функторы с++ посмотреть нельзя.
Rollzed Гуру (4231) По этому и предыдущим двум коментам: Вы, конечно, многое знаете и все такое... но почитать то, что Вы пишите в совокупе - Господи, какую ахинею Вы несете!!! Зачем? За что??? И как Вас поймет человек, который искренне хочет узнать в разница языков, чтобы найти себя в программировании и развиваться умственно и духовно? Зачем Вы сыплите кучей непонятных малоизвестных слов, понятий и словосочетаний?
Остальные ответы
Просветленный (26673) 9 лет назад
А разницу в том, что эти языки реализованы под совсем разные платформы и для совсем разных целей, и библиотеки поэтому совсем разные, - вы вообще не замечаете?

И да, JavaScript, а не Java-Script. С Java у него такое же сходство, как у барабанной перепонки с барабаном.
user51942Оракул (50733) 9 лет назад
тащемта, если судить по принципу действия, то у барабанной перепонки с барабаном сходства больше
Просветленный (26673) Сходство в стиле кода. Первая { пишется на той же строке, а не на новой. Названия функций/переменных с маленькой буквы, классов - с большой. Integer полностью написан вроде и там и там... По-видимому, JavaScript специально назвали так, чтобы пропиарить Java за счет таких вот нубов. Это было в рамках договора Netscape и Sun Microsystems (а Java тогда их была). Уместнее будет так: Java is to Javascript what Car is to Carpet.
Максим Искусственный Интеллект (218748) 9 лет назад
Проще сказать, что у них общего, потому что совершенно разные языки и применение. JavaScript это скриптовой язык для web страниц (не путать с java). C++ это объектно-ориентированный язык для того, чтоб писать полноценные программы и компилировать в машинный код.
Aljebro Просветленный (27114) 9 лет назад
Хоть бы ту же википедию прочли https://ru.wikipedia.org/wiki/JavaScript , как раз с С сравнивается, хотя раз он у вас "практически не отличается", то, может и не помочь.
Melfin Мыслитель (8207) 9 лет назад
не думаю, что вы хорошо знаете плюсы, если задаете такие вопросы... Даже уверен.
Артур Погодин Гуру (3677) 2 года назад
JavaScript очень легкий, но на нем слишком сложно делать огромные проекты или приложения работающие с системой. С++ очень сложный, но на нем можно сделать все что угодно
Похожие вопросы