c++ - programar - programacion web que es
¿Dónde debería comenzar a Codificar un navegador web? (5)
Comenzaré respondiendo tu pregunta con otra pregunta.
La pregunta es: ¿qué quieres lograr escribiendo un navegador web?
Cuando Google escribió Chrome, (al parecer) tenían un par de cosas en mente, una de las cuales era mejorar la ejecución de JavaScript, así que construyeron su propia implementación de Javascript (V8), pero usaron los componentes existentes (principalmente WebKit) para la mayoría de descanso.
Aconsejo hacer más o menos lo mismo: piense en lo que está tratando de lograr, y codifique en consecuencia; si un componente existente puede hacer el trabajo, es probable que usarlo sea más fácil que escribir uno nuevo para lograr el mismo . En la medida de lo posible, escriba su propio código solo donde / cuándo / si cree que necesita (y puede) hacer un trabajo sustancialmente mejor que los componentes existentes.
Sin embargo, en última instancia, las partes que usted escribe deben estar regidas por la razón por la que desea hacer esto en primer lugar. Como no nos lo has dicho, es difícil (imposible, realmente) dar un consejo más específico.
Digamos que quiero crear un navegador web.
No es el tipo de Windows Form / High Level Toolkit donde ya hay un Control / Widget WebBrowser que acaba de agregar a su Aplicación. Digamos que quiero crear uno como Mozilla Firefox y Google Chrome con su propio Analizador de Html / CSS (aunque Chrome usa webkit), etc. ¿Dónde debo comenzar a codificarlo? ¿Cuánto debo codificar?
Obviamente no intento crear un "DESDE SCRATCH", por ejemplo, comenzando con una api gfx de bajo nivel, escribiendo mis propios widgets, luego codificando a mano todos los analizadores y todo el lado del cliente y todo lo demás. Simplemente no quiero simplemente incorporar un control de explorador web preconstruido y llamarlo mi propio navegador web. Por lo tanto, tengo la intención de utilizar todas las bibliotecas de terceros que ayudan. Entonces, ¿cuánto debería codificar y dónde comenzar? ¿Qué bibliotecas y Apis pueden ser útiles?
Fundamentalmente, el problema con su pregunta es lo que Steve Jessop identifica: no podemos leer su opinión sobre lo que definitivamente quiere codificar y lo que no desea.
Dicho eso, incluso si supiéramos, debe identificar por qué quiere hacer esto. Si solo quieres un navegador mejor, entonces contribuye a uno de los proyectos existentes.
Si no solo desea un navegador mejor, comience a trabajar en uno de los proyectos existentes. Esto (a) le dará una idea de lo que hay debajo del capó; y (b) significa que puede simplemente modificar la base de código existente para satisfacer sus necesidades, o averiguar cómo escribiría un complemento o lo que sea.
Nunca he codificado un navegador web, pero sugiero algunas cosas:
- Mire otros navegadores web de código abierto (afortunadamente hay algunos, en alguna parte). Vea qué API usaron, cómo implementaron el código. Intenta construir algunos de ellos en tu computadora y revisa el código para ver cómo funcionan.
- Familiarícese con las API utilizadas para HTTP / TCP, etc. que permiten que la computadora se comunique (con un WebGUI) a través de Internet. Conoces las API que te permiten enviar bits y bytes de forma remota.
- Decida a qué tipo de plataforma desea que opere su nuevo navegador y comience a buscar las API que desea usar para la interfaz de usuario visual.
- Buscar libros sobre diseño web? Espero que haya algunos.
Tu no
En serio, Netscape decidió hacer exactamente lo que está haciendo referencia aquí para Netscape 6.
Le tomó tres años a un equipo de ingenieros lograr y el resultado fue basura inutilizable. Y eso fue hace más de una década, antes de tener HTML 5 incluso.
Google tiene un bazillion de dólares y una tonelada de programadores e incluso ellos fueron lo suficientemente inteligentes como para usar una base de código existente (Webkit) para empezar.
En serio, hay demasiadas cosas de las que preocuparse para comenzar a programar desde cero lo que esencialmente es un problema resuelto. Webkit se ejecuta en todas partes.
Tomó un tiempo antes de encontrar suficiente información para responder realmente esta pregunta sin explotar con una respuesta simplista. Llegué a esta página exacta varias veces en mi investigación sobre este tema de programación y quería dejar una respuesta mejor que la que encontré.
Uno de los mejores iniciadores que he encontrado es que Matt se encuentra aquí. http://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html
No es un navegador completo o incluso particularmente completo, pero debería ser suficiente para que sus pies se muevan por el camino correcto.
Ahora la desalentadora parte de la especificación wc3 HTML 5.1 se encuentra aquí. http://www.w3.org/TR/html51/
Recuerde solo tomar una tarea a la vez. Si codifica de principio a fin, debe tener la mayor parte de un navegador. En un año más o menos .................
Terapia existencial: ¿ No estabas esperando un paseo de libros de cocina? HTML 5 es el objetivo actual a partir de (2015) y cualquier proyecto de navegador realmente debería apuntar a ese estándar en lugar de los anteriores para la mayor longevidad. En lo que respecta a la dificultad, un navegador web se encuentra en el extremo del rango de dificultad extrema, ya que tendrá que dominar varias bibliotecas sobre HTML. Además, nadie actualiza su contenido más de lo que están obligados a hacerlo, por lo que hay un montón de código de contenido obsoleto con el que debes lidiar adecuadamente.
Cosas para estudiar: HTML5, PHP, CSS, JavaScript, Flash, DOM y COM.
PD: una buena forma de comenzar a estudiar es compilando Firefox desde su código fuente. Para cuando lo administre, sabrá las preguntas de siguiente nivel que debe hacer.