Quiero comenzar un lenguaje de programación web en C. ¿Qué debo hacer?

Ya es posible hacer programación web con C usando CGI. Go también es otro lenguaje que tiene azúcares sintácticos C arrojados con otros lenguajes y puede hacer mucho.

Qué problema estás tratando de resolver. Es inútil simplemente agregar un intérprete porque ya hay muchos idiomas disponibles que resuelven una variedad de problemas

Java o .NET : un lenguaje corporativo de elección de aspirantes. Ambas son plataformas establecidas y siguen siendo un arma de elección para la mayoría. A medida que se prueban y prueban, es muy fácil convencer a cualquier gerencia para cualquier proyecto nuevo. Pero apestan en innovación, son lentos para adaptarse a las últimas tendencias, especialmente .NET
Ruby on Rails : marco de pila completa con código mínimo y bootstrapping
Python y sus marcos : hay una variedad disponible que puede imitar desde Perl / CGI básico hasta Ruby on Rails. Al igual que Ruby, puedes hacer mucho con un código mínimo en Python
Node.js : intenta resolver problemas de subprocesos múltiples al proporcionar un modelo de programación sin bloqueo de un solo subproceso, alto rendimiento y fácilmente escalable
Python / Tornado : imita Node.js pero de mala manera
Ir : lo contrario de Node.js con sus propios azúcares. Es un lenguaje infernal diseñado con Multi-threading en mente. Al igual que node.js, es altamente escalable y puede hacerlo automáticamente en la mayoría de los casos.

Entonces, si está resolviendo algo más allá de esto, continúe. O, si solo quiere aprender a crear analizadores e intérpretes, continúe.

luego comience con YACC / Bison.

1) Primero cree el analizador que transformará su código a C / CGI o C ++ / CGI o Java
2) Una vez que esté satisfecho, puede definir un lenguaje / representación intermedio a su alrededor, en función de los problemas que está tratando de resolver.
3) Luego piense en diseñar la VM o el Intérprete que tomará el código intermedio y lo ejecutará.

Palabra al sabio
1) los desarrolladores web están perdiendo interés en los lenguajes de bajo nivel, razón por la cual los lenguajes y marcos mencionados anteriormente aparecieron en primer lugar. También hay marcos que te ayudarán a crear un sitio web con un mínimo esfuerzo como WordPress, Django, Drupal.
2) Tanto Node.js & Go son altamente escalables y pueden abordar eficazmente el problema C10K con la implementación correcta.
3) Si creas algo que incluso un tonto puede usar, solo los tontos lo usarán. No cree un lenguaje solo porque piense que hay mejores formas de hacerlo. Encuentre un problema persistente que lo esté molestando y busque soluciones existentes, si no lo satisfacen, continúe y cree algo. Angular, Node.js, Ruby on Rails, todos se esforzaron por abordar un problema primero antes de convertirse en algo. Ahora ponen las barras para los demás.

Entonces, cada vez que alguien hace una pregunta, tengo que volver a preguntar, ¿qué estás tratando de lograr? Con varios millones de personas trabajando en el desarrollo de software en todo el mundo, y el desarrollo web es uno de los principales segmentos, si todavía no hay algunas opciones buenas y obvias para usar C para el desarrollo web, tal vez se haya considerado, probablemente probado y en gran medida rechazado.

Como mencionó específicamente PHP, probablemente se dé cuenta de que ya hay muchos entornos de desarrollo web que se parecen a C. Python, JavaScript (a través de Node), incluso Java y C # todos descienden de C, y pueden tener un aspecto similar, especialmente si Evitas sus características modernas.

Si realmente quieres codificar en C, no estoy seguro de que buscaría un intérprete de C. Todo el mindhare ha estado en JavaScript. Probablemente desee implementar su código en archivos DLL / objetos compartidos y usar CGI, o tal vez un servidor web ligero, incrustado de código abierto basado en C / C ++ que pueda extender.

Pero, para no adelantarme, primero volvería a la pregunta original. ¿Por qué?

Lea Lisp en piezas pequeñas.

El título exacto de este libro significa “Lisp in Small Pieces”. Este libro cubre Lisp, Scheme y otros dialectos relacionados, su interpretación, semántica y compilación. Para resumir en pocas cifras: 500 páginas, 11 capítulos, 11 intérpretes y 2 compiladores.

Si bien se trata de dialectos lisp, las mismas tecnologías se aplican a la construcción de otros idiomas.

Aunque sea una advertencia, después de leer el libro, podría reconsiderar la parte “como PHP”. PHP no es lo mejor o lo más interesante del mundo.

Primero, no lo hagas 🙂
Javascript es un lenguaje de programación web bastante potente para el cliente. Solía ​​ser interpretado, pero después de mucho trabajo de personas brillantes para acelerarlo, ahora solo finge.
Hay muchos idiomas del lado del servidor con una increíble integración web.
La mayoría de estos son mejores en casi todos los sentidos para PHP, así que no lo conviertas en tu punto de referencia,

Dado que rendirse no es una opción, lo saludo señor.

Si te refieres a un lenguaje del lado del cliente, podrías tomar prestada mucha funcionalidad de la función js eval.
Si te refieres a un lenguaje apropiado del lado del servidor, las otras excelentes respuestas aquí tienen muchos consejos sobre cómo hacerlo.
Lo único que agregaré como sugerencia es separar el lenguaje de la implementación lo antes posible, y eso significa escribir un programa PHP / lo que sea, haciendo uso de su función eval, para burlarse de su idioma sin exagerar en el código. Esto lo mantendrá divertido.

Después de eso va bien y te sientes bien, entra en bison et al como sugiere Paolo.

Supongo que ya examinó PHP / Perl / Ruby / * y consideró que no todos son adecuados para alguna tarea. 😎

Comience definiendo un propósito para tal lenguaje. Puede ser procesamiento de texto o interacción de base de datos o algunos cálculos. Si elige todo lo anterior, piense por qué no usaría, por ejemplo, Perl.
Eso debería darle una idea de cuál sería la sintaxis, las partes internas y las circunstancias de la llamada.

A continuación, defina la sintaxis. Puede escribir el analizador sintáctico por su cuenta, pero recomendaría bison / yacc: generará un código analizador en C para usted (si escribe un BNF para él). Piénselo dos veces si desea usar funciones de programación funcionales.

Una vez que tenga el analizador, comience a implementar la funcionalidad principal. Intente utilizar bibliotecas externas en lugar de escribir las suyas propias, siempre que sea posible. No dude en consultar los códigos fuente de los idiomas existentes, puede obtener ideas sobre cómo implementar ciertos lugares en los suyos. En el proceso, sería bueno mantener un conjunto de pruebas unitarias en ese nuevo lenguaje para ver si agregar una nueva función / comando no interrumpe nada existente.

Finalmente, tendría que pensar en una forma en que el servidor web pasaría las solicitudes a su código. Puede ser a través de la ejecución de CGI o mediante el complemento apache o sin embargo. No recomendaría agregar detalles de manejo del protocolo HTTP en el núcleo del lenguaje / tiempo de ejecución, al menos no hasta que el lenguaje sea un poco estable (mantener 2 proyectos independientes a la vez podría ser difícil).

Quizás el mejor enfoque es mirar uno o más de la gran cantidad de lenguajes de secuencias de comandos ya inventados, cuyo código fuente está disponible. Si no puedes aprender de leerlos, entonces no aprenderías tratando de hacer otro más desde cero en C.

Agregado: ahora he leído suficientes comentarios sobre otras respuestas para tener una mejor idea de su comprensión y motivaciones. Aprecio su creatividad e interés en la idea de un sistema que no necesariamente se queda dentro de las cajas de las que habla la gente. A veces necesitamos un replanteamiento innovador. Lo que noto acerca de todas las personas que implementan suficientes ideas para que realmente puedan vender su producto (SO, navegador web integrado con secuencias de comandos integradas mejoradas y todo), es que generalmente no se vuelven populares por la razón: I Lo llamaré apoyo popular. Veo un pequeño artículo aquí y allá que muestra que un tipo inventó algo y demuestra que es tan sorprendente que el mundo hubiera cambiado, pero el artículo apenas se ve y el producto ya se estaba quedando en el camino o abandonado.

A menudo me preguntaba, ¿qué podría haber hecho el chico diferente para tener éxito? Se trata de publicidad en realidad. Si planea venderlo primero y no ir a código abierto hasta después de que se haya financiado lo suficientemente bien por ventas / contratos (la impresión que obtuve de algunas respuestas de comentarios), entonces necesita ver por qué algunas de estas cosas gratuitas como Python, jQuery, Apache , NodeJS … todo despegó y en realidad obtendría una financiación significativa a pesar de ser ya de código abierto. Creo que la clave está en encontrar los nichos de los que se hablaría y se buscaría mucho. Algo que haría que su proyecto se destaque. Ponga en marcha el ajetreo, entonces es posible que ni siquiera necesite esperar antes de abrir código abierto, y aún así obtener compañías que hagan ofertas para que puedan beneficiarse de su proyecto.

El problema que veo hasta ahora es que al menos aquí en este momento no se mencionan las razones para destacarse, por lo que no se debe crear exageración ni zumbido. ¿Cuál será el nicho sin llenar?

Empieza a leer artículos de tecnología, te ayudaré mucho, según yo. Leer los artículos o los periódicos te motivará a hacer las cosas obviamente programando, y al mismo tiempo leer un buen libro Let Us C u otro, no solo leer, tratar de escribir los códigos por tu cuenta. Leer Algoritmos de Cormen.

Creo que te gustaría estos enlaces

Ganador del concurso de Twitter como servicio

La fundadora de Alfred, Marcela Sapone, tiene 29 años.

Entonces, lo obvio es una aplicación C que funciona a través de CGI. Sin embargo, existen graves cuellos de botella en el rendimiento. Lea los documentos de apache / IIS (¿fCGI quizás?).

¿No tendría más sentido usar un lenguaje orientado a objetos? Esta no es realmente mi área, pero realmente no veo el beneficio de C específicamente (aunque me encantaría saber si hay beneficios).

Simplemente intente usar C Web Framework, como Raphers DanielWaterworth / Raphters

¿Quiere decir que quiere escribir un intérprete de lenguaje en C que se utilizará para aplicaciones web? Guay.

Primero deberá comenzar a definir su sintaxis como una gramática (el formato canónico se denomina Backus-Naur Form). Luego debe proceder a escribir un lexer y un analizador sintáctico. En C, es probable que desee utilizar Lex y YACC (las implementaciones gratuitas de GNU serían Flex y Bison). Una vez que haya terminado su analizador y lexer, tendrá una manera de pasar del código fuente a un árbol de análisis. Ahora tendrá que ejecutar la lógica del árbol de análisis y producir su salida (probablemente, un HTML, XML, JSON o cualquier salida).

En este punto, podría usar su idioma como intérprete CGI, que es la forma más simple y rápida de obtener un idioma para hacer cosas específicas de la web.

¡Feliz pirateo!

La respuesta más fácil, si desea que la velocidad de C esté incrustada en un servidor web, es usar http://www.gwan.com/ .

Tiene soporte incorporado para ejecutar C (y otros 15 lenguajes, incluidos Go y Scala) como servlets de velocidad extremadamente alta.

Su comercialización reclama 750k + solicitudes manejadas por segundo. Sin embargo, están probando en localhost, por lo que seguramente estarás obligado por la velocidad de tu conexión a Internet. Pero no es malo que el sistema no tenga básicamente ninguna posibilidad de terminar en CPU debido al servidor web.

Si realmente quieres crear un lenguaje de script tipo C que se interprete, bueno, ¿por qué quieres hacer eso? C tiene muy poca ventaja cuando se trata de cuerdas.

Pero otras respuestas abordan cómo hacerlo, así que dejaré que esas respuestas se mantengan.

More Interesting

Quiero ser programador web. ¿Cuáles son algunos idiomas que debo saber para maximizar mis posibilidades de ser empleado?

Quiero tomar mis habilidades de diseño web y convertirlas en sitios web reales. ¿Qué debo aprender a codificar primero?

¿Cómo promover un complemento de WordPress de recargo? Qué sitios se pueden colocar en la publicación del complemento

Si quiero hacer un anuncio en mi sitio web en PHP que sea visible insertando detalles en la base de datos (MySQL), ¿cómo puedo hacerlo?

¿Debo aprender el lenguaje JavaScript completo o es mejor aprender algunos relacionados con el desarrollo web en caso de que quiera convertirme en desarrollador web?

Tengo una aplicación web basada en PHP / CSS / JS. ¿Hay alguna forma de convertirlo en un proyecto CMS o adaptarlo para usarlo en un marco?

Si tengo dos o más archivos JavaScript en mi página web, ¿se aplicarán las variables para un archivo JavaScript a todos los archivos JavaScript?

Quiero crear un catálogo de productos en WordPress sin comercio para más de 30000 productos, ¿qué complemento debo usar?

Tenía mi sitio web desarrollado en el extranjero. ¿Qué debe probarse durante una auditoría para determinar si fue desarrollada por buenos estándares y directrices de codificación?

He sido aceptado en el desarrollo web inicial de HappyFunCorp. 'Academia de tecnología'. ¿Cómo es trabajar allí?

Quiero crear una startup. La idea es muy simple, quiero crear eventos como en YELP pero en mi región. Sin embargo, de acuerdo con los términos de privacidad de Yelp, no puedo usar el contenido del servicio (Yelp). ¿Cuáles son las formas legales de usar el contenido de Yelp?

¿Cuáles son los principales puntos débiles que queremos resolver cuando va a la agencia de desarrollo web?

Necesito crear un servicio web que muestre la entrada de un usuario a otros usuarios. ¿Cómo hago esto? Diseño sitios web pero nada como esto todavía.

¿Cómo los desarrolladores web independientes valoran sus proyectos?

Quiero convertir mi sitio web en una tienda para otros. ¿Cuál es el mejor script que puedo usar?