Насколько популярным является С++ для создания веб-сайтов или веб-приложений?

Я не знаю, почему этот вопрос прослушивает меня, но время от времени я возвращаюсь к мысли - почему бы не сделать сайты на С++? Пока я ничего не знаю (кроме слухов об Yahoo). Большинство из них используют PHP, Java или ASP.NET. Некоторые из них построены на Ruby или Python, но даже это меньшинства.

В то же время, глядя на StackOverflow, кажется, что С++ по-прежнему является очень популярным языком со многими написанными в нем проектами. Почему не для веб-страниц?

Итак - что вы знаете об этой теме? Есть ли веб-сайты, написанные на С++? Существуют ли какие-либо рамки/библиотеки, которые помогают это делать? Вы когда-нибудь это делали? Если да, вы столкнулись с какими-либо фундаментальными проблемами, и могли бы вы порекомендовать это другим?

Ответ 1

Я в первую очередь программист на С++, поэтому я не намереваюсь использовать его как slam на С++, когда я говорю, что С# и Java - это гораздо более современные языки, которые лучше подходят для 99% разработки приложений, которые вы хотите сделать. Недостаток С#/Java/и т.д. заключается в том, что пользователям нужны большие громоздкие временные ряды, установленные на их ПК, и если ваши пользователи не имеют их, они должны будут их установить. Поэтому обычно лучше писать потребительские приложения на С++, где будет мало зависимостей, а бабушке не нужно будет выяснять, как установить .NET framework 3.0.

Для веб-приложений ваш пользователь просто будет использовать веб-браузер, чтобы вы могли писать на любой языковой платформе. Так почему бы не написать на современном, лучшем языке?

(опять же, перед тем, как программисты С++ перепрыгивают на меня, позвольте мне сказать, что я был программистом на С++ в течение более 15 лет. Было бы глупо игнорировать, что современные языки намного проще и лучше для большинства приложений. )

Ответ 2

Просто я получил большой интерес в C++ после реализации проблемы производительности с помощью PHP. (Я в первую очередь программист PHP).

Преимущества, которые я видел

  • Рядом с аппаратным языком (который добавляет производительности).

  • Поддержка ООП (Да, вам просто нужно читать лучше книги, чтобы объяснить это вам.)

  • Чрезвычайно легкий, требует меньших ресурсов сервера (экономит вам много затрат)

  • Что касается управления памятью, это действительно не проблема. В С++ есть вещи, которые позволяют вам автоматически управлять памятью (интеллектуальные указатели и share_ptr).

Я начал с CppCMS Web Development Framework.

Мне потребовалось немного обучения, чтобы привыкнуть к С++, но, наконец, я там:)

Он (С++) просто заставляет вас быть более организованным. Да, более организованный, чем Java, потому что вы не можете быть беззаботным здесь о создании объектов, вам нужно их удалить. Но, как уже упоминалось, умные указатели на С++ помогают вам сделать это автоматически.

Если это кажется слишком большим, стоит того. Предполагая, что вы планируете использовать С++ Web Development, думая о долгосрочных аспектах. Для краткосрочных целей для этой цели служат такие языки, как PHP (или любой язык веб-разработчиков).

О CppCMS:

  • Поддерживает конструкции, такие как обмен между С++ и HTML кодом, например использование тегов <?php ?> между html. Вы можете использовать свой обычный HTML-текст между языком шаблонов этой структуры. Это является основным преимуществом, когда вы предоставляете свой код дизайнерам пользовательского интерфейса.

  • Поддерживает отдельную компиляцию представлений, поэтому изменение представлений не потребует компиляции всего проекта, аналогичные изменения только в основных файлах Business Logic, не потребует повторной компиляции файлов вида. Это похоже на концепцию сервлетов и JSP файлов Java.

  • Его кросс-платформенная:)

my2c.

Ответ 3

Я рекомендую использовать С++ webtoolkit Wt (произносится Witty), http://www.webtoolkit.eu/.

Эта структура (со встроенным сервером приложений) позволяет вам создавать веб-приложения с точки зрения виджетов и соединений с сигналами/слотами, а также оставляет большую часть паутины в руках библиотеки. Результирующие приложения являются объектно-ориентированными, строго типизированными и прекрасно поддерживаемыми. Библиотека автоматически определяет возможности браузера и использует правильный способ рендеринга сайта, избегая ошибок браузера.

Я не намерен начинать языковые войны, но Wt написан в современном стиле С++, который не должен приводить к утечкам памяти и другим неудачам, которые всегда были связаны с приложениями С++. Я согласен с обоснованностью вашего заявления: почему бы не написать веб-приложения на С++? С++ так же хорош, как и любой другой язык. Это не вопрос производительности, это вопрос стиля.

Ответ 4

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

Веб-сайты могут быть написаны на других языках, но называть компоненты, написанные на С++, например, для хруста числа. Но основная логика сайта редко написана на С++.

Ответ 5

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

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

Ответ 6

У меня был разговор о двухлетнем прошлом с инженером ex Yahoo по этому вопросу, поскольку я слышал тот же слух.

Он сказал, что исторически отношение Yahoo заключалось в том, чтобы создавать очень оптимизированные приложения на С++, в то время как их конкуренты (Facebook, Google) склонны использовать тот, который когда-либо говорил на высоком уровне, позволял им быстрее выполнять работу.

Поверхность этого заключалась в том, что система, которую он построил, использовала 10 серверов, в то время как эквивалентная система Google требовала 100+ (это было его утверждение, что я не могу проверить его). Недостатком было то, что их время выхода на рынок было намного дольше, и было намного сложнее заставить программистов ускориться с системой и внедрить новые функции, и все кодировщики должны были быть абсолютно класса A1, чтобы иметь возможность работать в системе.

Его мнение заключалось в том, что неспособность признать правило "Тот, кто выполняет самые быстрые победы", была одной из причин, по которым Yahoo теряли почву.

Ответ 7

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

Я сделал веб-страницу в C, которая давно обрабатывает некоторые изображения на загружаемых изображениях. Это было довольно впечатляюще, но, думая сейчас, я мог бы быть более продуктивным, разделяя материал обработки изображений как утилиту cli, которая вызывается из php/perl/все, что у вас есть.

Также люди не хотят самостоятельно управлять памятью. Почти как собаки Павлова, большинство из нас обучено плакать, когда мы слышим слово "указатель" на протяжении всей нашей жизни программирования. Поэтому ручное управление памятью просто "плохо" для веб-программирования. Однако это не такая уж большая проблема для простого старого CGI. Для вашего CGI, вероятно, потребуется вся память, которую он выделил на протяжении всего своего короткого срока службы, и просто позвольте ОС освободить его. Это может быть не так для контейнера приложения (в любом случае это зависит от реализации).

Культура вокруг С++ более разнообразна, чем относительно новые языки, используемые в Интернете (например, python, ruby, более новые версии php, заметное исключение - perl, что касается того, чтобы делать вещи по-другому) благодаря своей общей сфере и возрасту, нет очевидное "это должно быть сделано так, как этот", который новичок может быстро подобрать и начать.

Конечно, есть вещи, которые упрощают веб-программирование на С++, но в основном они ориентированы на встроенные системы. В любом случае у вас нет большого выбора, если вы программируете небольшую встроенную систему, чем ручное управление памятью и выдавливаете последние доступные циклы.

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

Ответ 8

Вот несколько веб-сайтов, которые могут вас заинтересовать:

http://cppcms.com/wikipp/en/page/main

http://www.webtoolkit.eu/wt

http://binarytiers.org/

http://www.micronovae.com/CSP.html

http://www.seastar-project.org/

http://developer.capeclear.com/gsoap

http://www.roguewave.com/products-services/hydraexpress

http://www.linuxpromagazine.com/online/news/web_application_with_c_and_fastcgi?category=13426

Поиск в Google С++ для веб-приложений поможет вам.

Удачи.

Ответ 9

Форма здесь: http://www.jroller.com/craiger/entry/where_are_all_the_c

Крейг Татарин писал: Привет, Bjarne, я профессионал Java-программист и задавался вопросом
что нибудь. В мире Java у нас есть Солнце и Солнце (или коммиты)  дает спецификации для вещей, которые принесли бы пользу Java
eco-system (если я могу использовать эту терминологию kitchy). Итак, два спецификации были сделаны значимыми для веб-приложения Разработчик:

Спецификация сервлетов Java Спецификация страниц сервера Java

В спецификации Servlet Sun определила базовую структуру для чего "Веб-приложение" является и каким образом, если нужно создать веб-приложение контейнер, они могли бы сделать это, следуя этой спецификации.

Конечно, это поймало, как дикий огонь, и нравится ли ему или не нравится Java, спецификации настраивают приятную среду, которая культивирует Java как веб-язык (смею сказать "по выбору" ) для разработчиков.

У меня много друзей, которые являются программистами на C++, поэтому я спросил их как какой тип структуры они используют для создания веб-приложений. Oни либо а) не писать веб-приложения; б) написали свои собственные рамки (http://labs.wexussoftware.com/) или c) использовать Ruby on Rails. Последний вариант был описан мне как "использовать правильный инструмент для задания"

Я предполагаю, что ответ, который я ищу, - почему С++ не проник в границы веб-приложений? Не хватает ли организации для написания спецификации для такой вещи? В моем googling я даже не могу найти системные веб-приложения для С++. Я просто не понимаю потому что это создаст довольно быстрый, ресурсосберегающий webapps.

У вас есть ответ в первой строке "Java Sun" или, возможно, больше правильно "Sun имеет Java". То есть, была организация, желающая заплатить десятки миллионов долларов за развитие, поддержанное более десятками долларов для маркетинга. У сообщества С++ этого никогда не было. Вместо этого многие организации создали инструменты для областей, которые они считают важными для своих клиентов.

В результате сообщество С++ не имеет массивных рамок (если только вы считаете CORBA), просто приложения (обычно массовые приложения, такие как как амазонка, google, ebay и amadeus).

Существует много С++ "за кулисами", например. финансовое программное обеспечение, встроенные системы, игры, инфраструктуру (например, CORBA, JVM), ОС. Смотрите мой страницы приложений. Просто нет механизма для этого (например, Java чашка кофе).

Ответ 10

В этих сообщениях так много дезинформации относительно С++.

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

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

В-третьих, С++ более современна, чем большинство альтернатив. Действительно, единственными языками, которые могут конкурировать по каждой функции, являются Python и Haskell (лучший язык пока). В качестве примера, Java только сейчас получает реальную поддержку для закрытия. Хорошо, там большое различие между временем компиляции и динамическими функциями, но я отвлекаюсь.

Я бы сказал, что единственное, что держит С++ назад, это то, что сначала требуется немного умственных усилий; это и 15-летние предубеждения, основанные на старых версиях постоянно развивающегося языка.

Так что, сказав это, я поеду с Python для веб-разработки.

edit: Также стоит упомянуть, что С++ имеет лучший отладчик в бизнесе с Visual Studio.

Ответ 11

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

Ответ 12

С++ - это язык общего назначения... но ASP, PHP и т.д. были разработаны для создания веб-сайтов, поэтому они стали популярными языками для Интернета. Многие люди, которые "выросли" с ASP (и, возможно, PHP), перешли на ASP.NET(поэтому VB.Net и С#).

Я не парень Java, поэтому я не уверен, почему этот язык стал популярным в Интернете. Я думаю, потому что он был (и есть) популярен в университетах и ​​потому, что Java была одним из первых языков, чтобы получить действительно хорошие инструментальные средства для Интернета.

Ответ 13

Я подозреваю, что в эти дни С++ может использоваться во встроенных веб-серверах; например, вы можете найти в маршрутизаторе. Я заметил одну инфраструктуру веб-разработки С++ под названием Wt.

Ответ 14

Помимо веб-сайт поиска Google, оригинальная настройка Amazon ( "Традиция №1": лучшая ссылка, которую я могу найти) или eBay с '97 по 2002 год (PDF, страницы 9-14), это не общий вообще. Потому что, как уже указывалось, для этого он не был разработан. Но неплохо использовать С++ для реализации некоторых веб-сервисов (хотя без встроенной поддержки XML вы скорее всего отправите данные по проводке в другие форматы), которые ваш сайт может затем вызвать.

Если вы работаете в IIS, вы можете использовать ATL Server.

Если вы все равно хотите сделать это, вам понадобится система шаблонов (Google ctemplate, сверху) и уровень доступа к базе данных. Вы также хотели бы узнать, как подключиться к вашему веб-серверу (используя ISAPI в IIS, модулях Apache), если вы собираетесь передавать параметры как часть URI (то есть, как "part/of/the/путь/к/команде/" ). Вы можете использовать CGI, если вы используете параметры передачи только через GET или POST.

Ответ 15

теперь у вас есть другой выбор: node.native.it порт для node.js

Пример кода выглядит так:

#include <iostream>
#include "http.h"
using namespace native::http;

int main()
{
    http server;
    if(server.listen("0.0.0.0", 8080, [](request& req, response& res){
        res.set_status(200);
        res.set_header("Content-Type", "text/plain");
        res.end("C++ FTW\n");
    })) std::cout << "Server running at http://0.0.0.0:8080/" << std::endl;

    return native::run();
}

Ответ 16

Честно говоря, для разработки веб-приложений лучше использовать языки. Некоторые из них основаны на C/С++ (PHP приходит на ум), но в основном это абстракция выше C/С++.

Ничего не мешает вам использовать С++ в среде CGI, но это намного сложнее. Было бы намного проще использовать язык, на котором есть функции, необходимые для разработки веб-приложений (например, обработка сессий/файлов cookie и генерация запросов/ответов).

С учетом сказанного я написал приложение на основе C для взаимодействия с сторонней базой данных, которая поддерживает веб-приложение на основе PHP. У них были API-интерфейсы в PHP и C, но PHP API был полностью способ замедлить, поэтому я написал приложение C, которое вызывается PHP.

Ответ 17

Вы можете делать что угодно на любом языке. Это вопрос использования правильного инструмента для работы. Поскольку веб-сайты в основном связаны с обработкой строк, имеет смысл использовать язык, который имеет строчную обработку в качестве силы. Еще один недостаток заключается в том, что не существует каких-либо инструментов С++. Тем не менее, нет ничего плохого в написании кода кода конца хэнд-кода на С++, а затем с использованием другого языка для его взаимодействия с Интернетом. Мы делаем это с помощью некоторого мощного параллельного моделирования, которое работает с кластерами от 100 до 10000 node.

Ответ 18

Мы использовали его на моей последней работе почти исключительно. Он работал хорошо, хотя мы использовали собственный собственный движок веб-страниц (например, ASP или PHP, но и нашу собственную смесь), которую я, вероятно, не буду использовать в будущем по целому ряду причин. Эти сайты живут по всему миру, и есть хороший шанс, что вы использовали его раньше (я не могу дать больше деталей из-за NDA).

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

Ответ 19

Из моего чтения причина, по которой С++ не используется, заключается в том, что не так много хороших вариантов для быстрого запуска С++ script. CGI, как известно, медленный, и обычно он убирает все преимущества производительности, которые могут быть получены при использовании С++. Кроме того, современные языки имеют либо виртуальные машины (.NET, Java, и т.д.), Либо интерпретаторы, которые эффективно работают всегда и могут быстро отправлять и запускать новые экземпляры программы без контроля/вмешательства ядра. Кроме того, эти типы промежуточного программного обеспечения хорошо подходят для работы с сервером для повторного выполнения одной и той же программы и большого количества сетевых клиентов.

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

Ответ 20

Это не популярно, потому что никто не удосужился написать для него приличную систему шаблонов, что не так сложно.

Кстати, собственный веб-сервер Google (из http-заголовка: "Сервер: gws" ) написан на С++.

Ответ 21

Запустите Google Native Client SDK, чтобы использовать собственный код (например, C, С++) для создания веб-приложений, которые запускаются в последних версиях Chromium.

Ответ 22

мы создали один раз пользовательский c-lib для создания приложения на основе c для работы с fcgid, чтобы получить превосходную мощность обработки запросов. но это было далеко не просто. и потребовалось очень хорошее финансирование и причина для этого. в настоящее время дешевле писать в php и получать приличное оборудование для его поддержки. но в некоторых крайних случаях это вариант c/С++, который стоит того, что он

Ответ 23

Я был бы удивлен, если С++ будет использоваться в любых новых веб-сайтах. Я использовал его для того, чтобы сделать COM-компоненты для MTS еще в те дни, когда ванильный ASP и сервер транзакций - это способ сделать что-то, но есть гораздо более эффективные языки и фреймворки, которые теперь опережают, что значительно ускоряет разработку.

Ответ 24

Почему бы не сделать сайты на С++? Поскольку С++ является языком низкого уровня для системного программирования.

Вы не хотите думать о круговых зависимостях и объектных моделях при создании веб-сайта - он ничего не получает, поскольку узким местом, вероятно, является сеть или база данных.

Ответ 25

У меня есть пара сайтов "клиентских зон", которые на самом деле являются библиотеками ISAPI, написанными на С++, поэтому это определенно выполнимо. Мы по-прежнему используем их, потому что мы строим поверх действительно старого (но работающего) кода, а также потому, что мы можем распространять DLL на наших дистрибьюторов, не видя основной исходный код.

Но я должен согласиться с тем, что это действительно неуклюжий способ создания веб-сайта. Кроме того, поддержка ISAPI DLL очень быстро падает. Visual Studio 2008 больше не поддерживает их (я не знаю о 2005), и это настоящая боль, чтобы включить их в Vista.

Это возможное решение, если вы знаете только С++ и HTML, но есть определенные альтернативы.

Ответ 26

Я изучил c/С++ в школе и работал над визуальными базовыми приложениями. Мне нравились графический интерфейс и события, однако были случаи, когда вы хотите обрабатывать данные с использованием структуры данных С++. Таким образом, соединение является хорошим вариантом. Продукты Microsoft предлагают так много, поэтому заново изобрести колесо.

Однако я новичок в изучении веб-разработки. Однако мне нравятся некоторые вещи .net делает; все из коробки, возможно, экономит время, но я трачу больше времени на поиск нужной коробки. Таким образом, это другой вид кривой обучения.

Я думаю, что причина, по которой некоторые приложения заменяли c/С++, легко распознать, и это кривая обучения. Я могу собрать веб-сайт с html, b взаимодействует с базой данных, скриптами для обработки этого взаимодействия.

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

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

Ответ 27

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

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

Ответ 28

Чтобы писать веб-сайты на С++, вам просто нужно быть программистом. Это не происходит на всех языках, это как раз и красота PHP и Ruby. Они требуют немного навыков программирования.

Иногда программисты могут использовать эти современные языки для повышения своей производительности, и вот здесь становятся удобными. С веб-фреймами С++, такими как WT или BinaryTiers, программисты могут писать веб-сайты и сложные веб-приложения через несколько минут, как если бы они использовали PHP или Ruby.

Примером этого является Lovingsports, сайт социальной сети, полностью написанный на С++, с использованием BinaryTiers Web Application Framework