Aun recuerdo hace menos de dos años cuando empece en el mundo de la web, surgieron tantas dudas, intente por varios lados a tratar de aprender lenguajes como html, css, pero sinceramente no buscaba exactamente por donde empezar en cada uno de ellos, y la realidad es que cuando comenzamos a programar para internet, surgen tantas dudas que no sabemos por donde empezar, a todos nos pasa, es la realidad, y bueno, quiero dedicar este post para explicar algunas de las cosas básicas que uno debe de saber antes de tomar el camino del desarrollo web para no morir en el intento y terminar mas confundidos de como empezamos, pero antes, les contaré una breve experiencia.
Cuando quise aprender a programar para web, fue mas que nada una iniciativa originada del hecho de que me di cuenta que programar para escritorio tenia muchas limitaciones, hacer sockets para que todo pudiera conectarse a un servidor no era una gran ventaja, y bueno, un maestro siempre me decía que era muy bueno, que debería comenzar a programar ya para web para hacer sistemas de información que era lo que mas se solicitaba en el campo donde me encontraba.
Y así, quise dar el salto, inicialmente había un lenguaje que era seguro que tenia que aprender, «html», y bueno, comencé a leer cursos de html 4, el normalito, el detalle estaba en que cuando llegaba a la parte de formularios no entendía exactamente ahora que seguía, luego habia etiquetas que nos permitían dar colores, y se supone que eso lo hacia CSS, y era confuso, anteriormente, cuando aprendía lenguajes de programación, era dedicarle de lleno tiempo a ese lenguaje para aprenderlo, pero acá era muy diferente, me decian que aprendiera HTML en conjunto con CSS3, y sinceramente la teoría era muy aburrida, y muy poco explicita.
En fin, así me la pase, luego escuche de JavaScript, de Php, y yo decía, bueno, cuando sepa html y css veré javascript, pero me decían que con javascript manipulaba el html y el css también, y mas confusión, luego la onda de PHP, pelie mucho por no aprenderlo ya que sinceramente soy fan de Python, aunque no conozco de lleno el lenguaje, y cuando empece a ver algo de Php, vi que tambien era código dentro de Html, ¿Para que quieren mas?, me perdí, y no sabia por donde empezar entonces, posteriormente decidí tomar unos cursos en linea de diseño web, y me aclararon muchas de mis dudas, luego lleve uno de backend, uno de frontend, y me certifique en las tres , no fue hasta que empece a desarrollar mis primeros proyectos que entendí bien lo que era un GET, un POST, algo muy confuso para mi en aquel tiempo, ahora, no puede ser más claro, actualmente desarrollo en todos estos lenguajes, y la verdad, super fácil, sin embargo aun veo a muchos de mis amigos peleando con estos conceptos, y bueno, ¿por que no dedicar un post a tratar de resolver esto?.
Bien, primero que nada, hay una cosa que tenemos que entender muy bien:
De manera general, la imagen superior representa como funciona la Web, existe un cliente, que normalmente somos nosotros, que pedimos a un servidor una página web, ahora bien, ¿Cuando sucede esto?, fácil, para que nosotros podamos llevar a cabo una petición web, necesitamos un navegador, ya sea chrome, firefox, iexplorer, safari, opera, un navegador movil, etc, no importa, la idea está en lo siguiente:
Desde nuestro navegador web, nosotros introducimos una url de la siguiente manera: http://serprogramador.es ¿Y que pasa?, el navegador convierte esta serie de palabras en una dirección ip, esta dirección ip, es la dirección de una computadora localizada en algún lugar del mundo que contiene la página que estamos buscando, por ejemplo, nosotros al escribir «http://serprogramador.es», el navegador lo entiende como algo parecido a 234.228.208.123, y se va a internet y empieza a buscar la máquina con esta dirección, cuando la encuentra, ésta máquina, llamada servidor, debe de tomar la petición, y enviar a la máquina que pidio la página, codigo html, css y javascript, y hasta ahí termina el trabajo del servidor, ahora bien, como el cliente pidio la página, el cliente es el que recibe este codigo html, css y javascript, ahora bien, ¿Por que solo html, css, y javascritp?, fácil, por que es lo único que el navegador sabe interpretar, esto tiene que quedar totalmente claro, el navegador web, solo puede leer HTML, CSS y JAVASCRIPT, y la pregunta mas obvia para aquellos que conocen mas o menos que onda es, ¿Y donde queda Php?.
Esto es fácil, Php, Pyhton, Java, .NET, entre otros, son los lenguajes que se encuentran en esa máquina que nosotros estamos llamando servidor, es decir, las cosas funcionan de esta manera:
Los navegadores solo pueden entender HTML, CSS Y JAVASCRIPT, nada más, cuando nuestro navegador le pide a un servidor una página, este lo recibe con un lenguaje de programación, que pueden ser Php, Python, Java o .Net (por ejemplo), vamos a generalizarlo a Php, php recibe la petición, y empieza a crear codigo HTML, con sus variables, sus estructuras de datos de php, etc, pero al final, cuando termine de hacer todo el trabajo, Php tiene que tener listo un documento HTML, y esto normalmente es así, cuando despues de hacer todo lo necesario, Php tenga listo el Html, se lo devuelve al cliente, y al cliente, como hemos mencionado anteriormente, le llega codigo HTML, CSS y JavaScript, ahora bien, la primera vez que explique esto, un amigo me pregunto, como es que cuando algo sale mal, Php manda errores, y se ven en el navegador, esto es sencillo de explicar, Php, como dije, tiene que devolver un HTML, entonces, cuando surge un error, PHP crea una etiqueta DIV, le pone algunos estilos, pone un mensaje de error, y se lo devuelve al cliente, si nosotros observamos un mensaje de error en PHP, veremos que contiene texto plano o codigo HTML, pero al final, eso es lo que tiene que suceder, ahora bien, una duda mas que salio en esto, fue, ¿Como es que uno programa codigo Php en mi maquina y se puede ejecutar sin que haya un servidor?, y esto es también muy fácil de explicar:
Cuando nosotros instalamos herramientas como XAMPP, se configura nuestra maquina como un servidor, es por este motivo, que nosotros tenemos que teclear localhost en el navegador, por que en este momento, el servidor no se encuentra en internet, el servidor es nuestra propia maquina, y lo que nosotros hacemos de teclear codigo php dentro del HTML, accesando a bases de datos, obteniendo información de otros lados, y así, generar lo que al final le enviaremos al navegador,esto es lo que normalmente hace un servidor, pero observemos que cuando ejecutamos una pagina escrita en php, al final, lo que aparece en nuestro navegador, es codigo HTML, CSS y JavaScript, esto, como les dije, tiene que quedar claro, el navegador, solo entiende estos tres lenguajes, y es así, como funciona la Web, nuestro navegador pide una página, un servidor recibe la petición, la procesa, saca datos de bases de datos, arma un documento html, y se lo envia a nuestro navegador.
Una vez entendido esto, la única pregunta que queda por contestar es: ¿Por donde empiezo?, y esto es fácil de responder, programar para internet, no es algo que tengamos que aprender por partes, no podemos aprender html, luego css, luego php, luego javascript, NO, esto no funciona así, para empezar a programar para internet, primero que nada tenemos que entender que es un conjunto de tecnologías, entonces, las tenemos que aprender en conjunto, ahora bien, no las podemos aprender todas de golpe, tenemos que aprender por pequeños conjuntos, ¿y cuales podría ser estos?, fácil, de entrada, tenemos que aprender HTML en conjunto con CSS, posteriormente podemos pulir nuestro CSS en conjunto con JavaScript, y por ultimo, aprendemos Php, el cual, podemos llevar de la mano con JavaScript con tecnologías con Ajax y JSON. De esta manera, podremos aprender todo lo necesario para desarrollar en web, y uno de mis mayores consejos es, una vez que hayamos aprendido algo, no reinventemos la rueda, existen frameworks, librerias y un mundo de herramientas que nos pueden permitir llevar la programación web de una manera fácil y por un buen camino.
Espero que les haya quedado claro, sino, cualquier duda, acá estamos. Saludos.