programas programacion programa ejemplos comandos basica c++ web-applications

programacion - programa c++



¿Qué tan popular es C++ para hacer sitios web/aplicaciones web? (28)

No sé por qué esta pregunta me está molestando, pero una y otra vez vuelvo a la idea: ¿por qué no crear sitios web en C ++? Hasta ahora no conozco ninguno (excepto un rumor sobre Yahoo). La mayoría usa PHP, Java o ASP.NET. Algunos están basados ​​en Ruby o Python, pero incluso esos son minorías.

Al mismo tiempo, mirando a StackOverflow, parece que C ++ sigue siendo un lenguaje muy popular con muchos proyectos escritos en él. ¿Por qué no para páginas web?

Entonces, ¿qué sabes sobre este tema? ¿Hay sitios web escritos en C ++? ¿Hay marcos / bibliotecas que ayuden a hacer esto? ¿Lo has hecho alguna vez? En caso afirmativo, ¿se encontró con algún problema fundamental y se lo recomendaría a otros?


Formulario aquí: http://www.jroller.com/craiger/entry/where_are_all_the_c

Craig Tataryn escribió: Hola Bjarne, soy profesionalmente un programador de Java y me preguntaba
alguna cosa. En el mundo de Java, tenemos Sun y Sun (o un comité) produce especificaciones para cosas que beneficiarían a Java
ecosistema (si puedo usar esta terminología kitschy). Entonces, dos
las especificaciones se produjeron de importancia para el desarrollador de la aplicación web:

Especificación de Java Servlet Especificación de páginas del servidor Java

Dentro de la especificación de Servlet, Sun definió el marco de referencia para lo que es una "aplicación web" y cómo, si se creara un contenedor de aplicaciones web, podrían hacerlo siguiendo esta especificación.

Por supuesto, esto se encendió como un fuego salvaje, y si a uno le gusta o no le gusta Java, las especificaciones configuraron un ambiente agradable que cultivó Java como un lenguaje web (me atrevo a decir "de elección") para los desarrolladores.

Tengo muchos amigos que son programadores de C ++, así que les pregunté qué tipo de marco utilizan para crear aplicaciones de Internet. O bien a) no escriben aplicaciones web b) escriben su propio marco ( http://labs.wexussoftware.com/ ) o c) usan Ruby on Rails. La última opción me fue descrita como "usar la herramienta adecuada para el trabajo"

Supongo que la respuesta que estoy buscando es: ¿por qué C ++ no ha penetrado en la frontera de las aplicaciones web? ¿Falta una entidad para escribir un
especificación para tal cosa? En mi Google, no puedo encontrar frameworks de aplicaciones web comerciales para C ++. Simplemente no lo entiendo porque produciría algunas aplicaciones de webapps bastante rápidas y conocedoras de los recursos.

Usted tiene la respuesta en la primera línea "Java tiene Sun" o quizás más correctamente "Sun tiene Java". Es decir, había una organización dispuesta a pagar decenas de millones de dólares por el desarrollo respaldado por más docenas de dólares para marketing. La comunidad C ++ nunca tuvo eso. En cambio, muchas organizaciones construyeron herramientas para áreas que consideraron importantes para sus propios clientes.

En consecuencia, la comunidad C ++ no tiene marcos masivos (a menos que cuente CORBA), solo aplicaciones (generalmente aplicaciones masivas, como Amazon, Google, eBay y Amadeus).

Hay un montón de C ++ "detrás de escena", por ejemplo, software financiero, sistemas integrados, juegos, infraestructura (por ejemplo, CORBA, JVM), sistema operativo. Ver mi página de aplicaciones. Simplemente no hay un mecanismo para que eso se vea (como la pequeña taza de café de Java).


Según mi lectura, la razón por la que C ++ no se usa es porque no hay muchas opciones buenas para lanzar rápidamente un script de C ++. CGI es notoriamente lento y usualmente elimina cualquier beneficio de rendimiento que pueda obtenerse al usar C ++. Además, los lenguajes modernos tienen máquinas virtuales (.NET, Java, etc.) o intérpretes que siempre se están ejecutando de forma efectiva y pueden despachar instancias de programas nuevas de forma rápida y sin supervisión / intervención del kernel. Además, estos tipos de middleware son adecuados para trabajar con un servidor para ejecutar el mismo programa repetidamente y para una gran cantidad de clientes de red.

Si bien un programador podría dar cuenta de todas las cosas que hacen estas VM / intérpretes, sería difícil hacerlo mejor o más rápido. Además, estos lenguajes proporcionan un desarrollo mucho más rápido y las mejoras en las capas de middleware benefician directamente a su proyecto.


¿Por qué no crear sitios web en C ++? Porque C ++ es un lenguaje de bajo nivel para la programación del sistema.

No debe pensar en dependencias circulares ni en modelos de objetos cuando crea un sitio web; no le gana nada, ya que probablemente el cuello de botella sea la red o la base de datos.


Aparte del sitio web de búsqueda de Google , la configuración original de Amazon ("Tradición # 1": el mejor vínculo que puedo encontrar) o eBay desde ''97 hasta 2002 (PDF, páginas 9-14), no es común en absoluto. Porque, como ya se señaló, en realidad no fue diseñado para esto. Pero no es una mala idea usar C ++ para implementar algunos servicios web (aunque sin compatibilidad XML incorporada, es probable que envíe datos por cable en otros formatos ) a los que su sitio puede llamar.

Si está en IIS, puede usar el servidor ATL .

Si quisiera hacerlo de todos modos, necesitaría un sistema de plantillas (plantilla de Google , desde arriba) y una capa de acceso a la base de datos . También querrá leer sobre cómo conectarse a su servidor web (utilizando ISAPI en IIS, módulos Apache) si va a pasar parámetros como parte del URI (es decir, como "parte / de / el / ruta / a / el / comando "). Puedes usar CGI si pasas parámetros solo a través de GET o POST.


C ++ es un lenguaje de propósito general ... pero ASP, PHP, etc. fueron diseñados para hacer sitios web, por lo que se convirtieron en lenguajes realmente populares para la web. Muchas personas que "crecieron" con ASP (y tal vez PHP) se movieron a ASP.NET (por lo que VB.Net y C #).

No soy un chico de Java, así que no estoy seguro de por qué ese idioma en particular llegó a ser popular en la web. Estoy pensando porque era (y es) popular en las universidades y porque Java fue uno de los primeros idiomas en obtener algunos buenos juegos de herramientas para la web.


Estoy seguro de que en realidad hay algunos sitios que usan C ++ como back-end, sin embargo, espero que esos sean principalmente sitios más antiguos.Por ejemplo, yo sé una escuela en el Reino Unido que se basa en un motor de C ++, no se puede decir que conozco la motivación detrás de ella, pero es definitivamente posible. Si no me equivoco es incluso posible utilizar el código C ++ a través de IIS como módulos, que debe darle algunas ventajas sobre escribir la aplicación de servidor completa a sí mismo.

Es dudoso que alguien podría recomendar el uso de C ++, sin embargo, podría tener bastantes ventajas de rendimiento para algunas aplicaciones. No obstante, es probable que también hacen que sea mucho más complicado; lenguas ''diseñado para la Web'' venir con tantas funciones y optimizaciones de la caja, probablemente estaría (en parte) reinventar la rueda.


Francamente, hay mejores idiomas para usar en relación con el desarrollo de aplicaciones web. Algunos se basan en C / C ++ (PHP viene a la mente) pero básicamente son una abstracción por encima de C / C ++.

No hay nada que te impida usar C ++ en un entorno CGI, pero es mucho más difícil. Sería mucho más fácil usar un lenguaje que tenga las características necesarias para el desarrollo de aplicaciones web integradas (como el manejo de sesiones / cookies y la generación de solicitudes / respuestas).

Con eso dicho, escribí una aplicación basada en C para interactuar con una base de datos de terceros que admitía una aplicación web basada en PHP. Tenían API en PHP y C, pero la API de PHP era completamente lenta, así que escribí una aplicación C que fue llamada por PHP.


Lo usamos en mi último trabajo casi exclusivamente. Funcionó bien, aunque utilizamos nuestro motor de página web propio (como ASP o PHP, pero nuestro propio brebaje), que probablemente no usaría en el futuro por una variedad de razones. Esos sitios son en vivo en todo el mundo, y hay muchas posibilidades de que haya utilizado uno antes (no puedo dar muchos más detalles debido a NDA).

Sin embargo, para responder a su pregunta, C ++ es un excelente lenguaje multiuso, y eso incluye la creación de un servidor web. Para crear contenido dinámico, es posible que tenga que hacer algo de trabajo pesado, pero no me sorprendería que existan marcos de aplicaciones web C ++ disponibles para que los use.


Me sorprendería si C ++ se utiliza en las compilaciones de sitios web nuevos. Solía ​​usarlo para hacer componentes COM para MTS en los días en que el ASP vanilla y el servidor de transacciones eran la manera de hacer las cosas, pero ahora hay otros lenguajes y marcos mucho más eficientes en los que basar el desarrollo mucho más rápido.


No es popular porque nadie se molestó en escribir un sistema de plantilla decente para él, lo cual no es tan difícil.

Por cierto, el propio servidor web de Google (del encabezado http: "Servidor: gws") está escrito en C ++.


Principalmente soy un programador de C ++, así que no pretendo que sea un slam en C ++ cuando digo C # y Java son idiomas mucho más modernos, más adecuados para el 99% del desarrollo de aplicaciones que desea hacer. La desventaja de C # / Java / etc. es que los usuarios necesitan grandes tiempos de ejecución voluminosos instalados en sus PC, y si sus usuarios no los tienen, entonces tendrán que instalarlos. Por lo tanto, generalmente es mejor escribir aplicaciones de consumo en C ++, donde habrá pocas dependencias y la abuela no tendrá que averiguar cómo instalar .NET Framework 3.0.

Para las aplicaciones web, su usuario simplemente usará un navegador web para que pueda escribir en la plataforma de idiomas que desee. Entonces, ¿por qué no escribir en un lenguaje moderno y mejor?

(De nuevo, antes de que los programadores de C ++ salten sobre mí, déjenme decirles que he sido un programador de C ++ principalmente por más de 15 años. Sería una tontería ignorar que los lenguajes modernos son mucho más fáciles y mejores para la mayoría del desarrollo de aplicaciones).


Puedes hacer cualquier cosa en cualquier idioma. Es una cuestión de usar la herramienta correcta para el trabajo. Dado que los sitios web son principalmente sobre procesamiento de cadenas, tiene sentido utilizar un lenguaje que tenga el procesamiento de cadenas como una fortaleza. Otro inconveniente es que no hay ninguna / muchas herramientas de C ++ para ayudar.
Dicho esto, no hay nada de malo en escribir un código de procesamiento de números de fondo en C ++ y luego usar otro idioma para conectarlo a la web. Hacemos esto con una simulación paralela de trabajo pesado que se ejecuta en clústeres de 100 a 10000 nodos.


Sospecho que en estos días, C ++ podría usarse en servidores web integrados; como puede encontrar en un enrutador. He notado un marco de desarrollo web C ++ llamado Wt .


Una gran cantidad de desarrollo web se reduce a la consulta de bases de datos y la manipulación de cadenas. Ambos son más fáciles de hacer en un lenguaje dinámico que en C ++. La razón principal para usar C ++ sería la eficiencia, aunque la mayoría de los sitios no necesitan tanta eficiencia.

Los sitios web pueden estar escritos en otros idiomas, pero los componentes de llamada escritos en C ++, digamos para el cálculo de números. Pero la lógica principal de un sitio rara vez se escribe en C ++.


Tengo un par de sitios web de "área de clientes" que en realidad son DLL ISAPI escritos en C ++, por lo que definitivamente es factible. Todavía los usamos porque estamos construyendo sobre código realmente antiguo (pero funcional) y también porque podemos distribuir el dll a nuestros distribuidores sin que ellos vean el código fuente subyacente.

Pero tengo que aceptar que es una manera muy torpe de construir un sitio web. Además, el soporte para las DLL ISAPI ha estado cayendo muy rápido. Visual Studio 2008 ya no los admite (no sé nada de 2005) y es una verdadera molestia habilitarlos en Vista.

Es una solución posible si solo conoces C ++ y HTML, pero definitivamente hay mejores alternativas.


Recomiendo usar C ++ webtoolkit Wt (pronunciado Witty), en http://www.webtoolkit.eu/ .

Este marco (con servidor de aplicaciones integrado) le permite diseñar aplicaciones web en términos de widgets y conexiones de señal / ranura, y deja gran parte de la red en manos de la biblioteca. Las aplicaciones resultantes están orientadas a objetos, estrictamente tipadas y perfectamente mantenibles. La biblioteca detecta automáticamente las capacidades del navegador y utiliza la forma correcta de renderizar el sitio, evitando los errores del navegador.

No es mi intención comenzar una guerra de idiomas, pero está escrito en un estilo moderno de C ++, que no necesita dar lugar a fugas de memoria y otros contratiempos que siempre se han asociado con las aplicaciones de C ++. Estoy de acuerdo con la validez de su declaración: ¿por qué no escribir aplicaciones web en C ++? C ++ es tan bueno como cualquier otro idioma. No es una cuestión de rendimiento, es una cuestión de estilo.


Creo que la única razón para no crear una aplicación web en C ++ es la falta de bibliotecas (es decir, bibliotecas conocidas). No veo qué tipo de manipulación de cadenas, redes o acceso a la base de datos no podría hacerse en C ++.

Una gran ventaja de elegir C ++ es que si ya tiene mucho código C / C ++ en su empresa, evita introducir otro idioma , que viene con su propio IDE, biblioteca estándar, bibliotecas escritas a medida, peculiaridades y limitaciones del lenguaje de programación, peculiaridades de la biblioteca, perfiladores, etc.


Consulte el SDK de Native Client de Google para usar un código nativo (por ejemplo, C, C ++) para crear aplicaciones web que se ejecutan en versiones recientes de Chromium.


Hay mucha desinformación con respecto a C ++ en estas publicaciones.

En primer lugar, si utiliza constructores, destructores y asignación de pila correctamente, casi nunca tendrá que lidiar con problemas de memoria, realmente no es tan malo en absoluto.

En segundo lugar, las bibliotecas de C ++ Boost son increíbles. Boost es fácil de usar, las bibliotecas están bien diseñadas y hay bibliotecas escritas para prácticamente cualquier necesidad.

En tercer lugar, C ++ es más moderno que la mayoría de las alternativas. En realidad, los únicos idiomas que pueden competir por función son Python y Haskell (el mejor lenguaje aún). Como ejemplo, Java acaba de obtener soporte real para cierres. Bien, hay una gran diferencia entre el tiempo de compilación y las características dinámicas, pero estoy divagando.

Diría que lo único que mantiene a c ++ atrás es que, inicialmente, requiere un poco de esfuerzo mental; eso, y sesgos de 15 años basados ​​en versiones antiguas de un lenguaje en constante evolución.

Habiendo dicho eso, iría con Python para el desarrollo web.

editar: también vale la pena mencionar que C ++ tiene el mejor depurador en el negocio con Visual Studio.


Tuve una conversación hace dos años con un ex ingeniero de Yahoo sobre este tema, ya que había escuchado el mismo rumor.

Dijo que, históricamente, la actitud de Yahoo era construir aplicaciones muy optimizadas en C ++, mientras que sus competidores (Facebook, Google) tendían a usar el lenguaje de alto nivel que les permitía hacer el trabajo más rápido.

Lo bueno de esto fue que el sistema que construyó utilizó 10 servidores, mientras que el sistema equivalente de Google requirió más de 100 (este fue su reclamo, no tengo forma de verificarlo). La desventaja era que su tiempo de comercialización era mucho más largo y era mucho más difícil conseguir que los programadores se familiarizaran con el sistema e introducir nuevas características y todos los codificadores tenían que ser absolutamente de grado A1 para poder trabajar en el sistema.

Su opinión era que no reconocer la regla de "El que itera gana más rápido" fue una de las razones por las cuales Yahoo estaba perdiendo terreno.


Con el fin de escribir sitios web en C ++, sólo hay que ser un programador. Esto no sucede en todos los idiomas, esto es, precisamente, la belleza de PHP y Ruby. Se requieren pocos conocimientos de programación.

A veces, los programadores pueden utilizar estas lenguas modernas para mejorar su productividad, y aquí es donde los marcos se hacen a mano. Con C ++ marcos web como WT o BinaryTiers , los programadores pueden escribir páginas y aplicaciones web complejas en pocos minutos como si estuvieran usando PHP o Ruby.

Un ejemplo de esto es Lovingsports , una red social totalmente escrito en C ++ utilizando el Marco BinaryTiers aplicación Web


ahora tiene otra opción: node.native .it es un puerto para node.js

código de ejemplo se ve así:

#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(); }


Hicimos una vez c-lib personalizada para crear una aplicación basada en c para que funcione con fcgid para obtener una excelente capacidad de manejo de solicitudes. pero, no fue nada fácil. y requirió muy buena financiación y razones para hacerlo. hoy en día, es más barato escribir en php y obtener hardware decente para soportarlo. pero, en algunos casos extremos, la opción c / c ++ vale la pena


Aprendí c / c ++ en la escuela y trabajé en aplicaciones visuales básicas. Me encantó la interfaz gráfica de usuario y los eventos, sin embargo, hubo momentos en los que desea manejar los datos utilizando una estructura de datos c ++. Entonces el enlace es una buena opción. Los productos de Microsoft ofrecen tanto, ¿por qué reinventar la rueda?

Sin embargo, soy nuevo en el aprendizaje del desarrollo web. Sin embargo, me gustan algunas de las cosas que .net está haciendo; todo está fuera de la caja, supuestamente ahorra tiempo, pero paso más tiempo tratando de encontrar la caja correcta. Entonces, es un tipo diferente de curva de aprendizaje.

Creo que la razón por la que algunas aplicaciones reemplazaron c / c ++ es fácil de reconocer, y es una curva de aprendizaje. Puedo armar un sitio web con html, b interactúa con una base de datos, scripts para manejar esta interacción.

Pero no veo por qué c ++ se elimina como una herramienta de programación de back-end. Me gustó el comentario sobre el uso de php para llamar a un programa de c ++. Me preguntaba cómo se puede hacer eso. ¿Y cómo compartir un objeto o pasar un objeto a c ++ utilizando este método?

Supongo que antes de comenzar cualquier proyecto de investigación, qué hace qué primero ayudará a eliminar la crisis cuando chocas contra una pared y descubres que no puedes hacer nada.


C ++ tiene poca compatibilidad con la manipulación de texto (en términos de soporte integrado) y se trata de manipular y formatear texto en la web. Además, el cuello de botella de rendimiento es, en la mayoría de los casos, base de datos y red, por lo que no importa mucho si se escribe en un lenguaje más rápido.

Hice una página web en C que hace un poco de procesamiento de imagen en imágenes cargadas hace mucho tiempo. Fue bastante eficiente, pero pensando ahora, podría haber sido más productivo separando las cosas de procesamiento de imágenes como una utilidad cli que se llama desde php / perl / lo que sea que tengas a mano.

Además, las personas no quieren administrar la memoria ellos mismos. Casi como los perros de Pavlov, la mayoría de nosotros estamos entrenados para llorar cuando escuchamos la palabra "puntero" a lo largo de nuestra vida de programación. Entonces, la administración manual de la memoria es simplemente "mala" para la programación web. Sin embargo, no es un gran problema para el antiguo CGI. Su CGI probablemente necesitará toda la memoria que asignó durante toda su corta vida y simplemente dejar que el sistema operativo la libere. Puede que no sea el caso para un contenedor de aplicaciones (depende de la implementación de todos modos).

La cultura alrededor de C ++ es más variada que los lenguajes relativamente nuevos utilizados en la web (como python, ruby, versiones más recientes de php, excepción notable es perl, que trata de hacer las cosas de otra manera) gracias a su alcance general y edad, no hay una obvia " se debe hacer de esta manera "que un novato puede recoger rápidamente y comenzar.

Por supuesto, hay cosas que facilitan la programación web con C ++, pero se centran principalmente en sistemas integrados. De todos modos, no tiene muchas opciones si está programando para un pequeño sistema integrado que no sea la gestión manual de la memoria y exprima los últimos ciclos disponibles.

Los indicadores son bastante simples cuando el tiempo se gasta en ellos. En pocas palabras, los punteros permiten evitar copiar objetos grandes una y otra vez. Es una gran mejora para el rendimiento y puede ser fácil de seguir si se implementa correctamente.



También hay otra biblioteca de bibliotecas POCO C ++ . Lo usé para uno de mis proyectos universitarios, es bastante bueno. También hay una buena documentación para empezar, puedes encontrarla aquí


Simplemente, he ganado mucho interés en C++ después de darme cuenta del problema de rendimiento con PHP . (Soy principalmente un programador de PHP ).

Las ventajas que vi

  • Cerca del lenguaje de hardware (que se suma al rendimiento).

  • Admite OOP en gran medida (Sí, solo necesita leer mejores libros para explicar esto).

  • Extremadamente ligero, necesita menos recursos del servidor (le ahorra un montón de costo)

  • En cuanto a la gestión de la memoria, eso realmente no es un problema. Hay cosas en C ++ que le permiten administrar la memoria automáticamente (punteros inteligentes y share_ptr específicamente).

Empecé con el Marco de Desarrollo Web de CppCMS .

Me llevó un poco aprender a acostumbrarme a C ++, pero finalmente estoy allí :)

(C ++) solo te lleva a estar un poco más organizado. Sí, más organizado que Java, porque aquí no se puede descuidar la creación de objetos, es necesario eliminarlos. Pero como ya se mencionó, los punteros inteligentes en C ++ te ayudan a hacerlo automáticamente.

Si esto parece demasiado, vale la pena. Asumiendo que está planeando usar C ++ Web Development pensando en los aspectos a largo plazo. Para objetivos a corto plazo, los lenguajes como PHP (o cualquier lenguaje de desarrollo web) cumplen esta función.

Acerca de CppCMS:

  • Admite construcciones como el intercambio entre C ++ y HTML Code, como el uso de etiquetas <?php ?> Entre html. Puede usar su texto html sin formato entre el lenguaje de plantillas de este marco. Esto es una ventaja principal cuando le das tu código a los diseñadores de UI.

  • Admite la compilación de vistas por separado, por lo que un cambio en las vistas no requerirá que compile todo el proyecto; similar, solo cambios en los archivos básicos de Business Logic, no requerirá que vuelva a compilar los archivos de vista. Es como el concepto de Servlets y archivos JSP de Java.

  • Es multiplataforma :)

my2c.