
SirLouen
VIP
Eta
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Suscripción a IA
Hay un tema que he visto que sale muy regularmente, y es mucha gente preguntándose cual es la mejor opción para empezar a programar hoy en día.
Precisamente este tema empecé a escribirlo con relación a este otro:
forobeta.com
En el cual, el compañero, no tenía muy claros los principios que giran en torno al mundo de la programación hoy en día.
Este artículo que escribo a continuación solo trata de simplificar para poder explicar mejor la diferencia que existe entre un lenguaje de programación (PHP, Java, o Phyton) y un Framework (Laravel, Symfony, Spring, Struts o Django)
En este caso voy a centrarme en PHP dado que es la temática del tema que he cogido de referencia. Pero es posible sustituir donde digo PHP por Java o Python y donde digo Symfony, por Spring o Django)
En primer lugar hay que dejar claro algo: una cosa es el lenguaje de programación y otra forma es la estructura que gira entorno a ese lenguaje
PHP es el lenguaje de programación que da sentido a todo.
Pero una vez empiezas a conocer como funciona PHP en su esencia, dependiendo de a lo que te quieras dedicar te acabarás dando cuenta de dos cosas:
Entonces, a lo largo de la historia, se propusieron varias soluciones:
Generalmente la solución NUMERO 1, es la "documentación de código". Cuanto más documentación, más fácil será retomar un proyecto que llevas 1 año sin tocar, y más fácil será que otra persona colabore o pueda trabajar con tu código.
Pero también surgieron otras propuestas para resolver estos dos problemas. Una de ellas son los famosos Frameworks Modelo-Vista-Controlador o MVC. Estos frameworks permiten, crear todo un nuevo mundo de métodos y constructos entorno a un lenguaje ya existente y resuelven esos dos problemas anteriormente mencionados básicamente haciendo que todo lo que programes, tenga un orden bastante estricto.
Existen muchos Frameworks, como todos los que mencioné en mensajes anteriores, pero Laravel y Symfony son los más populares. Cuando yo te hablo de aprender Laravel no digo que PHP deba abandonarse. Porque si no se tienen unos amplios conocimientos de PHP, básicamente NO SE PUEDE UTILIZAR Laravel.
Laravel es un framework que se fundamenta en el lenguaje de programación PHP.
El problema es que programar en PHP desde 0, es algo muy arcaico, es de programador de muy bajo nivel. Es decir: coger un fichero en blanco y empezar a programar ahí sin más, es un error a día de hoy muy grande, salvo casos puntuales, como si el objetivo es hacer un microservicio muy sencillo
Siguiendo en la linea de PHP, hay más opciones, pero una muy popular es Wordpress y a la vez muy denostada. La mayoría de los programadores noveles, piensan que Wordpress, es un sistema sencillito para hacerle la vida fácil a los que no saben programar. Pero esto es debido a que la mayoría de la gente no se ha tomado el tiempo para profundizar en la estructura de Wordpress, la cual con el tiempo, acaba pareciendose incluso a la de un Framework como Laravel y Symfony.
En primer lugar es necesario olvidarase del backend y lo tipico cuando uno instala un Wordpress.
Aquí yo me voy a centrar en el Codex: https://codex.wordpress.org
Wordpress como todo en esta vida, tiene varias ventajas y desventajas
Wordpress es PHP 100%, esto lo tenemos claro.
Por tanto si sabes programar en PHP y entiendes el codex de Wordpress, empezarás a crear cosas nuevas en cuestión de días.
Su principal ventaja, es al mismo tiempo su principal desventaja: La comunidad. La comunidad te facilita un millón de soluciones que te simplifican cualquier trabajo. Pero muchas de ellas están muy mal programadas, por tanto, si eliges mal, puedes retrasar tu trabajo. Hay cientos de soluciones increiblemente buenas, y otras tantas miles que son una basura. Con experiencia, uno aprende a seleccionar correctamente y quedarte con lo mejor.
Y esto tiene que ver con uno de los principales problemas que hay en el mundo de la programación: volver a programar lo que ya está programado por otros.
Un ejemplo
Imagínate que quieres hacer una Web que va a ser una casa de apuestas de deportes.
Para este ejemplo voy a tomar tres alternativas:
1. Hacerla en PHP puro, desde 0.
2. Utilizar un Framework como Symfony
3. Utilizar Wordpress
Vamos a plantear una serie de componentes fundamentales que debe tener la casa de apuestas:
1. Un sistema de usuarios
2. Un sistema de pagos
3. El sistema de apuestas en sí
4. Un enlace con algún sistema que recoja los partidos automáticamente de diferentes fuentes via REST
5. Una API para poder ofrecer la información a una App que construiremos en un futuro para Android y para iOS
Y seguramente habran varias cosas más que se me olviden, como lo relativo al frontend.
Pero por simplificar al máximo, vamos a quedarnos con esos 5 componentes de momento.
Si empiezas a programar en PHP puro vas a tener 5 problemas: tener que crear los 5 elementos prácticamente desde 0.
En cambio si decides ir con Symfony o con Wordpress tienes medio camino ya hecho:
1.El sistema de usuarios: Ambas plataformas ofrecen un sistema de usuarios bastante potente, totalmente probado y con muy bajo riesgo de ataque (inyecciones de SQL principalmente). Además incluyen opciones para integración de login social en cuestión de minutos. En cambio si tu esto tienes que programarlo en PHP puro desde 0, vas a tardar un montón de tiempo
2. El sistema de pagos: más de lo mismo: paypal, stripe, etc... todas tienen integraciones ya para ambos sistemas. Ejemplo para Symfony: https://jmspaymentcorebundle.readthedocs.io/en/stable/
Si bien existen librerias para PHP que facilitarían estos dos elementos un poco si decides ir por el camino del PHP puro, el mantenimiento de estas librerias es totalmente odioso. Quizá esto podría resolverse con Composer, pero aún así, con un muy bajo nivel de integración, las largas horas de programación están garantizadas, frente a los apenas minutos con los que puedes conseguir el mismo resultado con Symfony o Wordpress.
Por mi experiencia, apenas puedo contar con los dedos de una mano, las veces que he visto a un programador en PHP puro que use un controlador de repositores tipo Composer. ¿Por qué? Porque empezar con PHP es un claro indicio de novatez. Aquel que ya se toma la molestia en incoporar un repo, automaticamente se va a plantear dar un salto a un Framework por motivos obvios. El paso no es fácil, pero el esfuerzo de aprender a utilizarlo merece la pena.
3. El sistema de apuestas: No existe un sistema de apuestas bueno ni para Wordpress ni para Symfony obviamente. Esto es el elemento más diferenciador de nuestra página por tanto tendremos que currarnoslo desde cero en cualquiera de los casos. Así que en este aspecto, los tres metodos estarían en igualdad de condiciones.
4. La conexión con API de terceros: Con el tema de las API aquí el claro ganador es Symfony. Los MVC tienen una integración con API brutal que simplifica de sobremanera todo el sistema.
En wordpress no está tan mal, porque tiene bastantes Helper Functions: https://codex.wordpress.org/HTTP_API que también simplifican la historia, aunque no de forma tan potente como un Framework generalmente
En cambio en PHP Puro toca volver a guisárselo desde 0 al 100% casi. Bastante molesto y muchas horas de programación.
En PHP Puro, quizá tendrías que tirar de alguna librería, con los problemas que comentamos anterior (si vas con Composer, lo mismo te salvas de darle mantenimiento a la misma)
5. API propia:
Wordpress, tiene una API pero solo para su estructura interna, así que te tocaría desarrollar una API desde 0
Con PHP Puro te toca desarrollar una API desde 0
Pero aquí Symfony vuelve a ganar: No solo tienes la opción de montarte un microservicio con Sylex espificamente orientado a ofrecer esta API sino que el propio Symfony tambien ofrece una plataforma para crear API en un momento.
¿Como se traduce todo esto en tiempo de programación?
Imaginate que fueras un programador PHP senior, que ya conoce ampliamente Wordpress, Symfony y obviamente sabe programar en PHP puro
Si te pones ahora mismo a programar esta web y dedicas exactamente el mismo tiempo todos los días, el tiempo de ejecución podría ser:
A) Si eliges Wordpress, podrías tardar entre 1 y 2 meses
B) Si eliges Symfony podrías tardar entre 2 y 3 meses
C) Si eliges PHP Puro, tardarías entre 4 y 6 meses
Esto descontando que en Wordpress y en Symfony, todo el código quedará, por lo general, decenas de veces más limpio, organizado y cualquiera podrá ayudarte en un futuro. En PHP puro, a no ser que dediques muchisimo tiempo en organizar y estructurar la información y sobre todo una enorme cantidad de tiempo en documentarla, lo más probable es que al cabo del tiempo se acabe convirtiendo más en un problema que en una solución
Así que con esto puedes hacerte una idea de por qué todo el mundo que se dedica al mundo empresarial, ha ido abandonado paulatinamente la programación en PHP pura y decantandose por otras soluciones de trabajo.
Como dije al principio, tanto Wordpress, Symfony y Laravel todo se basa en PHP.
Lo hagas como lo hagas, en todos los casos vas a usar montones de funciones iguales que se podrian reutilizar perfectamente de un sistema a otro.
Pero una de las grandes diferencias está en la comunidad: En Wordpress y en Symfony hay decenas de sistemas que ya funcionan, que ya estan adaptados y que su incorporación es inmediata. En cambio en PHP Puro tienes que empezar por cada paso que des, prácticamente desde 0, lo que se acaba convirtiendo en un auténtico calvario
Conclusión
Si acabas de llegar al mundo de la programación y estás aprendiendo entonces PHP es básico y fundamental para empezar.
Pero si ya se tienen unos conocimientos intermedios de PHP, entonces la recomendación como puedes ver, es que pases a un framework, como Symfony o Laravel
O incluso te plantees leerte a fondo el Codex de Wordpress. Para mi Wordpress es el camino fácil cuando quiero hacer una web eficiente, cuando cuento con pocos recursos (es decir, que no hay un equipo de varios programadores) y cuanto menos se tenga que reinventar la rueda, mejor. Yo simplemente valoro mi tiempo y mi trabajo. Y si puedo dedicar 2 horas en vez de 6, créeme que prefiero dedicar 2. Me da igual como, pero en este caso, el fin, justifica los medios.
Obviamente para hacer este artículo lo más corto posible, he ido por lo fácil, simplificando todo al máximo. Hay cientos de consideraciones a tener en cuenta. Pero a día de hoy, no existe un solo escenario bajo mi punto de vista, en el que merezca la pena desarrollar un proyecto en PHP puro desde 0 (o en ningún lenguaje), salvo una aplicación muy exclusiva, que solo va a hacer una sola función y apenas va a requerir un solo fichero con apenas un centenar de líneas, y se requiera la máxima eficiencia posible. Pero salvo esto, para el resto de los escenarios, lo ideal es empezar con una buena base de trabajo, sea un Microframework como Sylex, o un framework más avanzado como Laravel o incluso, como he comentado, Wordpress.
Espero que haya quedado claro el tema, pero si hay alguna cuestión sobre este tema estaré abierto a darle respuesta.
Precisamente este tema empecé a escribirlo con relación a este otro:
¿Lenguaje alternativo a PHP? (que sea mejor o igual)
Hola. Primero aclarar que quiero un lenguaje de programacion que me permita hacer programas o aplicaciones para la web (nada de escritorio ni movil). Por ejemplo hacer un chat, un cms desde cero, formularios, encuestas, etc. Tengo nivel medio en php pero alguien me metio la idea de probar con...
Este artículo que escribo a continuación solo trata de simplificar para poder explicar mejor la diferencia que existe entre un lenguaje de programación (PHP, Java, o Phyton) y un Framework (Laravel, Symfony, Spring, Struts o Django)
En este caso voy a centrarme en PHP dado que es la temática del tema que he cogido de referencia. Pero es posible sustituir donde digo PHP por Java o Python y donde digo Symfony, por Spring o Django)
En primer lugar hay que dejar claro algo: una cosa es el lenguaje de programación y otra forma es la estructura que gira entorno a ese lenguaje
PHP es el lenguaje de programación que da sentido a todo.
Pero una vez empiezas a conocer como funciona PHP en su esencia, dependiendo de a lo que te quieras dedicar te acabarás dando cuenta de dos cosas:
- Es muy difícil mantener el código (esto pasa en TODOS los lenguajes, no es algo exclusivo de PHP)
- Es muy difícil compartir el código (igualmente esto pasa en todos los lenguajes
Entonces, a lo largo de la historia, se propusieron varias soluciones:
Generalmente la solución NUMERO 1, es la "documentación de código". Cuanto más documentación, más fácil será retomar un proyecto que llevas 1 año sin tocar, y más fácil será que otra persona colabore o pueda trabajar con tu código.
Pero también surgieron otras propuestas para resolver estos dos problemas. Una de ellas son los famosos Frameworks Modelo-Vista-Controlador o MVC. Estos frameworks permiten, crear todo un nuevo mundo de métodos y constructos entorno a un lenguaje ya existente y resuelven esos dos problemas anteriormente mencionados básicamente haciendo que todo lo que programes, tenga un orden bastante estricto.
Existen muchos Frameworks, como todos los que mencioné en mensajes anteriores, pero Laravel y Symfony son los más populares. Cuando yo te hablo de aprender Laravel no digo que PHP deba abandonarse. Porque si no se tienen unos amplios conocimientos de PHP, básicamente NO SE PUEDE UTILIZAR Laravel.
Laravel es un framework que se fundamenta en el lenguaje de programación PHP.
El problema es que programar en PHP desde 0, es algo muy arcaico, es de programador de muy bajo nivel. Es decir: coger un fichero en blanco y empezar a programar ahí sin más, es un error a día de hoy muy grande, salvo casos puntuales, como si el objetivo es hacer un microservicio muy sencillo
Siguiendo en la linea de PHP, hay más opciones, pero una muy popular es Wordpress y a la vez muy denostada. La mayoría de los programadores noveles, piensan que Wordpress, es un sistema sencillito para hacerle la vida fácil a los que no saben programar. Pero esto es debido a que la mayoría de la gente no se ha tomado el tiempo para profundizar en la estructura de Wordpress, la cual con el tiempo, acaba pareciendose incluso a la de un Framework como Laravel y Symfony.
En primer lugar es necesario olvidarase del backend y lo tipico cuando uno instala un Wordpress.
Aquí yo me voy a centrar en el Codex: https://codex.wordpress.org
Wordpress como todo en esta vida, tiene varias ventajas y desventajas
Wordpress es PHP 100%, esto lo tenemos claro.
Por tanto si sabes programar en PHP y entiendes el codex de Wordpress, empezarás a crear cosas nuevas en cuestión de días.
Su principal ventaja, es al mismo tiempo su principal desventaja: La comunidad. La comunidad te facilita un millón de soluciones que te simplifican cualquier trabajo. Pero muchas de ellas están muy mal programadas, por tanto, si eliges mal, puedes retrasar tu trabajo. Hay cientos de soluciones increiblemente buenas, y otras tantas miles que son una basura. Con experiencia, uno aprende a seleccionar correctamente y quedarte con lo mejor.
Y esto tiene que ver con uno de los principales problemas que hay en el mundo de la programación: volver a programar lo que ya está programado por otros.
Un ejemplo
Imagínate que quieres hacer una Web que va a ser una casa de apuestas de deportes.
Para este ejemplo voy a tomar tres alternativas:
1. Hacerla en PHP puro, desde 0.
2. Utilizar un Framework como Symfony
3. Utilizar Wordpress
Vamos a plantear una serie de componentes fundamentales que debe tener la casa de apuestas:
1. Un sistema de usuarios
2. Un sistema de pagos
3. El sistema de apuestas en sí
4. Un enlace con algún sistema que recoja los partidos automáticamente de diferentes fuentes via REST
5. Una API para poder ofrecer la información a una App que construiremos en un futuro para Android y para iOS
Y seguramente habran varias cosas más que se me olviden, como lo relativo al frontend.
Pero por simplificar al máximo, vamos a quedarnos con esos 5 componentes de momento.
Si empiezas a programar en PHP puro vas a tener 5 problemas: tener que crear los 5 elementos prácticamente desde 0.
En cambio si decides ir con Symfony o con Wordpress tienes medio camino ya hecho:
1.El sistema de usuarios: Ambas plataformas ofrecen un sistema de usuarios bastante potente, totalmente probado y con muy bajo riesgo de ataque (inyecciones de SQL principalmente). Además incluyen opciones para integración de login social en cuestión de minutos. En cambio si tu esto tienes que programarlo en PHP puro desde 0, vas a tardar un montón de tiempo
2. El sistema de pagos: más de lo mismo: paypal, stripe, etc... todas tienen integraciones ya para ambos sistemas. Ejemplo para Symfony: https://jmspaymentcorebundle.readthedocs.io/en/stable/
Si bien existen librerias para PHP que facilitarían estos dos elementos un poco si decides ir por el camino del PHP puro, el mantenimiento de estas librerias es totalmente odioso. Quizá esto podría resolverse con Composer, pero aún así, con un muy bajo nivel de integración, las largas horas de programación están garantizadas, frente a los apenas minutos con los que puedes conseguir el mismo resultado con Symfony o Wordpress.
Por mi experiencia, apenas puedo contar con los dedos de una mano, las veces que he visto a un programador en PHP puro que use un controlador de repositores tipo Composer. ¿Por qué? Porque empezar con PHP es un claro indicio de novatez. Aquel que ya se toma la molestia en incoporar un repo, automaticamente se va a plantear dar un salto a un Framework por motivos obvios. El paso no es fácil, pero el esfuerzo de aprender a utilizarlo merece la pena.
3. El sistema de apuestas: No existe un sistema de apuestas bueno ni para Wordpress ni para Symfony obviamente. Esto es el elemento más diferenciador de nuestra página por tanto tendremos que currarnoslo desde cero en cualquiera de los casos. Así que en este aspecto, los tres metodos estarían en igualdad de condiciones.
- Pero en el caso de Wordpress, podrías crear un plugin específicamente para esto.
- En Symfony, te crearías un Modulo, es decir, una vista, un modelo y un controlador específico para este elemento, con lo cual, todo quedaría perfectamente estructurado
- Y en PHP Puro, dependiendo lo organizado que seas, con suerte podrás crear algo lo suficientemente estructurado, para que lo sigas entendiendo tu dentro de 1 año o alguien que quiera ayudarte en el proceso.
4. La conexión con API de terceros: Con el tema de las API aquí el claro ganador es Symfony. Los MVC tienen una integración con API brutal que simplifica de sobremanera todo el sistema.
En wordpress no está tan mal, porque tiene bastantes Helper Functions: https://codex.wordpress.org/HTTP_API que también simplifican la historia, aunque no de forma tan potente como un Framework generalmente
En cambio en PHP Puro toca volver a guisárselo desde 0 al 100% casi. Bastante molesto y muchas horas de programación.
En PHP Puro, quizá tendrías que tirar de alguna librería, con los problemas que comentamos anterior (si vas con Composer, lo mismo te salvas de darle mantenimiento a la misma)
5. API propia:
Wordpress, tiene una API pero solo para su estructura interna, así que te tocaría desarrollar una API desde 0
Con PHP Puro te toca desarrollar una API desde 0
Pero aquí Symfony vuelve a ganar: No solo tienes la opción de montarte un microservicio con Sylex espificamente orientado a ofrecer esta API sino que el propio Symfony tambien ofrece una plataforma para crear API en un momento.
¿Como se traduce todo esto en tiempo de programación?
Imaginate que fueras un programador PHP senior, que ya conoce ampliamente Wordpress, Symfony y obviamente sabe programar en PHP puro
Si te pones ahora mismo a programar esta web y dedicas exactamente el mismo tiempo todos los días, el tiempo de ejecución podría ser:
A) Si eliges Wordpress, podrías tardar entre 1 y 2 meses
B) Si eliges Symfony podrías tardar entre 2 y 3 meses
C) Si eliges PHP Puro, tardarías entre 4 y 6 meses
Esto descontando que en Wordpress y en Symfony, todo el código quedará, por lo general, decenas de veces más limpio, organizado y cualquiera podrá ayudarte en un futuro. En PHP puro, a no ser que dediques muchisimo tiempo en organizar y estructurar la información y sobre todo una enorme cantidad de tiempo en documentarla, lo más probable es que al cabo del tiempo se acabe convirtiendo más en un problema que en una solución
Así que con esto puedes hacerte una idea de por qué todo el mundo que se dedica al mundo empresarial, ha ido abandonado paulatinamente la programación en PHP pura y decantandose por otras soluciones de trabajo.
Como dije al principio, tanto Wordpress, Symfony y Laravel todo se basa en PHP.
Lo hagas como lo hagas, en todos los casos vas a usar montones de funciones iguales que se podrian reutilizar perfectamente de un sistema a otro.
Pero una de las grandes diferencias está en la comunidad: En Wordpress y en Symfony hay decenas de sistemas que ya funcionan, que ya estan adaptados y que su incorporación es inmediata. En cambio en PHP Puro tienes que empezar por cada paso que des, prácticamente desde 0, lo que se acaba convirtiendo en un auténtico calvario
Conclusión
Si acabas de llegar al mundo de la programación y estás aprendiendo entonces PHP es básico y fundamental para empezar.
Pero si ya se tienen unos conocimientos intermedios de PHP, entonces la recomendación como puedes ver, es que pases a un framework, como Symfony o Laravel
O incluso te plantees leerte a fondo el Codex de Wordpress. Para mi Wordpress es el camino fácil cuando quiero hacer una web eficiente, cuando cuento con pocos recursos (es decir, que no hay un equipo de varios programadores) y cuanto menos se tenga que reinventar la rueda, mejor. Yo simplemente valoro mi tiempo y mi trabajo. Y si puedo dedicar 2 horas en vez de 6, créeme que prefiero dedicar 2. Me da igual como, pero en este caso, el fin, justifica los medios.
Obviamente para hacer este artículo lo más corto posible, he ido por lo fácil, simplificando todo al máximo. Hay cientos de consideraciones a tener en cuenta. Pero a día de hoy, no existe un solo escenario bajo mi punto de vista, en el que merezca la pena desarrollar un proyecto en PHP puro desde 0 (o en ningún lenguaje), salvo una aplicación muy exclusiva, que solo va a hacer una sola función y apenas va a requerir un solo fichero con apenas un centenar de líneas, y se requiera la máxima eficiencia posible. Pero salvo esto, para el resto de los escenarios, lo ideal es empezar con una buena base de trabajo, sea un Microframework como Sylex, o un framework más avanzado como Laravel o incluso, como he comentado, Wordpress.
Espero que haya quedado claro el tema, pero si hay alguna cuestión sobre este tema estaré abierto a darle respuesta.