Re: фреймворки на C++
От: 11molniev  
Дата: 03.09.15 20:52
Оценка: 2 (1) +5 :))
Здравствуйте, lpd, Вы писали:

lpd>Соседний топик "java vs. c++" навевает вопрос причин отсутствия фреймворков(вроде Spring, Struts) и

lpd>серверов приложений на C++.

Во что я ввязываюсь...

Основным посылом прошлого топика было:
— отсутствие универсальной, распределенной, переносимой и т.д. системы сборки (являющейся стандартом де факто и работающей под все платформы и проекты). Причины отсутствия очевидны.
— отсутствие признанных стандартом библиотек (хотя нынче boost и qt претендуют на это) покрывающих большинство потребностей. Там где у Java одна-две приличных и распространенных библиотеки, у C++ десяток вариантов, не все из которых можно назвать законченным решением. И каждый пользуется, к чему душа ближе.
— Java библиотеки проще в эксплуатации, положил куда надо и все работает. Для C++ у каждой свой подход, что-то требует cmake, что-то собирается через autotools/nmake, где-то своя система сборки. Где то мега скрипт не работоспособный без установленных perl, python & ruby. В итоге, что бы включить библиотеку в проект надо обязательно почитать README/INSTALL и понять что с ней делать. Для кроссплатформенных решений легко могут выплыть разные средства сборки и куча подводных камней. Плюс каждая OS & Arch — требует собственный билд (а зачастую просто копию библиотеки).
— Стандартная библиотечка Java побогаче.
В итоге C++ тупо менее удобен Java когда мы говорим о внешних зависимостях и извращениях со сборкой. И тупо быстрей когда у нас одна математика (и если руки не из жопы).

lpd>Представляются возможными такие причины:

lpd>1) В Java по-умолчанию предоставляются стандартные переносимые функции вроде управления потоками.
lpd>Все эти функции доступны без дополнительной настройки и линковки, что полезно для больших проектов,
lpd>в которых не удобно для каждого развертывания линковать 5-10 библиотек вроде pthread, boost и пр.
выше.
lpd>2) У JVM есть преимущество безопасности при исполнении кода, т.к. VM контролирует доступ при каждом обращении
lpd>приложения к памяти. По-моему, это единственное существенное преимущество JVM перед компилируемым кодом. Впрочем, безопасность выполнения кода можно обеспечить на C++ средствами ОС (виртуальная память, процессы).
Память это всего лишь один из ресурсов, помимо нее есть соединения сетевые с СУБД, файловые дескрипторы и прочие радости. И там особой разницы между C++ и Java нет. Плюс умные указатели.
lpd>3) Java лучше интегрирован с браузерами.
Это вы мало пользовали Java в браузерах. Когда все эти "write once run everywhere" приложения тупо не работают с новыми JRE или требуют строго 32 JRE или старого браузера и т.д.
Нынче лучше всех интегрирован JavaScript.
lpd>При различиях в производительности приложений на C++ и Java удивляет, что на C++ до сих пор нет заметных
lpd>фреймворков.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.