[PHP-ES] Re: [PHP-ES] Antes y despĂșes
[email protected] (Pablo Siciliano) Mon, 20 Oct 2025 10:10:27 -0300
| Newsgroups | php.general.es |
|---|---|
| Message-ID | <CADQBSUNkn5u0yBKPW46Vrq=BnOPBoeTFxf2tmkBXhpKYxrD2wg@mail.gmail.com> |
--00000000000072643f064196cfaf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hola. Antes que nada, que bueno ver a alguien de "aquella vieja guardia" por aca. Complementando tu analisis que me parece excelente, creo que hay que poner no solo el foco en la utilizaci=C3=B3n de cada pieza de tecnolog=C3=ADa que= usamos, sino tambi=C3=A9n un para qu=C3=A9 hist=C3=B3rico: Hist=C3=B3ricamente la g= ran mayor=C3=ADa de los desarrolladores web (Al menos medidos por el n=C3=BAmero) evoluciona en su trabajo hasta un punto donde considera que "ya sabe" y no sigue evolucionando ni en cuanto a tecnolog=C3=ADa ni en cuanto a desaf=C3=ADos q= ue buscan. Por eso es tan com=C3=BAn la discusi=C3=B3n por ejemplo acerca de si son = =C3=BAtiles las matem=C3=A1ticas: Una vez me dijeron en un foro "Yo para centrar un div no necesito matem=C3=A1ticas y con eso gano un mont=C3=B3n de dinero al a=C3= =B1o". Tu "depende para que" debe necesariamente incluir que quiz=C3=A1s el 80% de= los programadores sigan el hype tecnol=C3=B3gico no por necesidad real, que imp= lica un an=C3=A1lisis puntual de las cosas que vas a hacer sino porque no se qui= eren "quedar a fuera del mercado". Todo ese mecanismo sociocultural termina en un c=C3=B3digo caro, con muchos recursos innecesarios, generalmente mal usa= dos y muy dif=C3=ADcil de mantener. Muchas veces con c=C3=B3digo que si fue escri= to muy r=C3=A1pido (Lo cual es una obvia ventaja) porque utiliza en general soluci= ones ya standard para problemas de moda ... Que as=C3=AD queda! (Y que no resist= e el avance de las bibliotecas que lo formaron, cualquiera de los presentes que halla tenido que actualizar un sitio hecho con Laravel o Angular de mas de cinco o seis a=C3=B1os de hecho puede avalar lo que digo) La verdad toma muchos a=C3=B1os de pr=C3=A1ctica formar a alguien que en se= rio pueda pasar verdaderamente r=C3=A1pido de una tecnolog=C3=ADa en otra y usarlas c= omo corresponde. Ojala ahora estemos usando para eso la IA. Slds. Pablo. On Sun, Oct 19, 2025 at 1:14=E2=80=AFPM Satyam <[email protected]> wrote= : > > On 10/19/25 08:33, Narcis Garcia wrote: > > El 19/10/25 a les 6:30, Alma Guevara Castro ha escrit: > > > *Fuente: Naiker.codes* > /"Cada d=C3=ADa tengo m=C3=A1s claro que hemos complicado demasiado algo = que antes > era sencillo. Programar una p=C3=A1gina web en PHP (s=C3=AD, el de toda l= a vida) > sigue siendo, a d=C3=ADa de hoy, una de las formas m=C3=A1s r=C3=A1pidas,= estables y > eficaces de levantar un proyecto funcional./ > /No hace falta un stack de 10 tecnolog=C3=ADas ni un curso intensivo de > dependencias para mostrar datos en pantalla o conectar con una base de > datos. Pero parece que ahora todo tiene que pasar por React, Node, Webpac= k, > NPM, Typescript, Redux, Vite ... con el respeto que se merecen./ > /Y en muchos casos, no aporta valor real al usuario, solo complica el > desarrollo, la curva de aprendizaje y el mantenimiento. No se trata de > rechazar la innovaci=C3=B3n, sino de recordar que la tecnolog=C3=ADa debe > simplificar, no enredar. A veces lo m=C3=A1s eficiente sigue siendo lo m= =C3=A1s > simple. /*/=C2=A1PHP vive!/*/"/ > > > Celebro la vi=C3=B1eta. > > =C2=BFQu=C3=A9 factores podemos encontrar que han encaminado el desarroll= o a este > problema? > =C2=BFComponentes de terceros, gratuitos pero con =C3=A1nimo de lucro? > =C2=BFPereza de escribir c=C3=B3digo? > =C2=BFUso de plantillas para el aspecto visual? > > Hola Narcis, interesantes preguntas. > > Creo que, como todo en la vida, la respuesta suele ser "depende". Es > obvio que PHP sigue siendo una alternativa muy v=C3=A1lida, en las encues= tas de > Stack Overflow muestran que todav=C3=ADa casi un 19% de quienes completar= on la > encuesta usa PHP: > https://survey.stackoverflow.co/2025/technology/#most-popular-technologie= s > . La encuesta muestra muchos lenguajes, muchos de ellos no necesariament= e > relacionados con los desarrollos para WEB as=C3=AD que, excluyendo los qu= e no > son aplicables, PHP no est=C3=A1 tan mal ubicado. Pero, como dec=C3=ADa,= cu=C3=A1l > lenguaje usar "depende". > > JavaScript surgi=C3=B3 para ofrecer interactividad del lado del cliente. = Sin > JavaScript, Google Maps no existir=C3=ADa ni toda la familia de aplicacio= nes > on-line de Google: Mail, Docs, Sheets, Slides. > > Tampoco habr=C3=ADan existido utilitarios como JQuery que nos ofrecieron = por > primera vez acceder a esas posibilidades de interacci=C3=B3n que antes no > ten=C3=ADamos. Por ejemplo: > > - Validar campos de datos del lado del cliente (aunque, por seguridad, > debamos tambi=C3=A9n hacerlo del lado del servidor). Nadie quiere ha= cer un > *submit* de un formulario de 100 campos para, despu=C3=A9s de unos > segundos, enterarse de que hab=C3=ADa un error en el segundo campo. > - Llenar un <select> basado en otro, por ejemplo, llenar el de > municipio en base a la provincia seleccionada. > - Activar o desactivar campos opcionales seg=C3=BAn otras opciones en = el > formulario. > > Todo esto es posible hacerlo del lado del cliente en JavaScript sin que > haya necesidad de enviar todos los datos al servidor y esperar una > respuesta del mismo. > > La cosa creci=C3=B3, paso a paso, a partir de all=C3=AD. Veamos algunas = de las > tecnolog=C3=ADas listadas m=C3=A1s arriba. > > Era muy habitual programar en PHP en el servidor y JavaScript en el > cliente. NodeJS permiti=C3=B3 que el mismo lenguaje se usara en ambos la= dos. > De pronto no fue necesario tener alguien en el equipo que supiera los > trucos de PHP y otro que supiera los trucos de JavaScript. Surgi=C3=B3 t= ambi=C3=A9n > la posibilidad de que el mismo c=C3=B3digo se usara en ambos lados. Por > ejemplo, una librer=C3=ADa de validaci=C3=B3n de datos. Ya no era necesa= rio tener > dos funciones en dos lenguajes distintos para validar, digamos, una fecha > est=C3=A9 entre ciertos l=C3=ADmites, o que una cantidad sea positiva y m= enor a, > digamos, 1000. Las mismas funciones de JavaScript se pod=C3=ADan usar e= n el > cliente y en el servidor. > > Al popularizarse muchos de estos 'paquetes' de funciones, apareci=C3=B3 e= l NPM > que no es un lenguaje de programaci=C3=B3n sino un sitio de web > https://www.npmjs.com/ con una biblioteca de estos programas y un > utilitario que permite bajar estos utilitarios e instalarlos en la m=C3= =A1quina > del desarrollador en un lugar convenido donde NodeJS los pueda encontrar > con facilidad. > > WebPack, el veterano de los empaquetadores, surgi=C3=B3 porque no es acep= table > transmitir enormes programas a trav=C3=A9s de l=C3=ADneas de comunicaci= =C3=B3n de baja > velocidad. Para ello es importante 'minimizarlo'. Si nosotros enviamos > JQuery a nuestros clientes, lo hacemos con la versi=C3=B3n minimizada, no= el > fuente completo, que ocupa mucho m=C3=A1s espacio. WebPack ofrece lo mis= mo para > nuestros programas. Pero, tambi=C3=A9n ofrece mucho m=C3=A1s. > > Por ejemplo, separar la aplicaci=C3=B3n en lo que llaman "chunks" (pedazo= s) de > tal manera que, por ejemplo, no se cargue cierta funcionalidad (por > ejemplo, validaci=C3=B3n de datos) en una p=C3=A1gina que no la necesita.= La > aplicaci=C3=B3n, en lugar de ser monol=C3=ADtica se separa en "chunks" m= =C3=A1s peque=C3=B1os > que se cargan bajo demanda. > > Tambi=C3=A9n ofrece "tree-shaking", literalmente "sacudir el =C3=A1rbol" = esto es, > analizar el c=C3=B3digo fuente para ver cu=C3=A1les funciones de las libr= er=C3=ADas > cargadas (gracias al NPM) se usan y cuales no. Lo del =C3=A1rbol viene a= cuenta > de que las dependencias de unas funciones con otras se pueden diagramar > como un =C3=A1rbol donde a partir del punto de entrada principal de la > aplicaci=C3=B3n, la ra=C3=ADz del =C3=A1rbol, se desprenden las funciones= que se usan y > las que esas funciones usan, formando as=C3=AD un =C3=A1rbol. Si se carg= an varios > utilitarios, va a haber funciones que no se usan. Estas funciones quedan > desconectadas del =C3=A1rbol principal y, por ello, al "sacudir el =C3=A1= rbol", estas > ramas se caen. > > Obviamente, nada de esto es necesario en un programa que se ejecuta en el > servidor, el int=C3=A9rprete de PHP tiene acceso directo a todos los recu= rsos en > el servidor, pero cuando el c=C3=B3digo ha de enviarse a trav=C3=A9s de c= onexiones de > internet al cliente, que puede no tener un buen ancho de banda, reducir e= l > tama=C3=B1o de lo que se transmite importa, y mucho. > > Vite es una versi=C3=B3n m=C3=A1s moderna del WebPack, mucho m=C3=A1s efi= ciente y con > varias opciones extra. Nuevamente, al igual que NPM, o WebPack, Vite no = es > un lenguaje de desarrollo, es un utilitario para facilitar el desarrollo. > Por ejemplo, le ofrece al desarrollador una suerte de mini-servidor de > donde probar la aplicaci=C3=B3n que est=C3=A1 programando y, al detectar = un cambio en > cualquier archivo, inmediatamente transmite el cambio al navegador y > efect=C3=BAa los cambios sin que el desarrollador tenga que refrescar la > pantalla. Esto no se aplica s=C3=B3lo a JavaScript. Si un desarrollador= est=C3=A1 > trabajando con doble monitor, puede desarrollar en una pantalla y ver la > p=C3=A1gina de web en el otro. Si cambia un atributo de CSS en el fuente= , que > puede ser en puro CSS, SASS, SCSS, LESS o tantos otros, ver=C3=A1 el camb= io en > el navegador de inmediato, habi=C3=A9ndolo convertido a puro CSS de ser > necesario. > > React/Redux es uno de tantos paquetes de manejo de la interfaz gr=C3=A1fi= ca en > el cliente y los datos que muestra. Est=C3=A1 perdiendo adeptos pues hay > actualmente opciones mucho m=C3=A1s simples, compactas y, por ello m=C3= =A1s r=C3=A1pidas. > De la misma manera que tradicionalmente el JQuery nos salvaba de los > peligros de manipular el DOM directamente, React (o Vue, Svelte, HTMX, > Angular, Solid y un largo etc) nos ofrece una forma de codificar la > interfaz de usuario y su relaci=C3=B3n con los datos (Redux) que facilita= un > alto grado de interactividad. > > El conjunto React/Redux es, quiz=C3=A1s, lo m=C3=A1s cuestionable y si se= quiere > prescindible de todo lo mencionado. Cuando se lanz=C3=B3, cubr=C3=ADa un= a gran > cantidad de agujeros en performance y compatibilidad que ten=C3=ADan los > navegadores. Ya no existe la pelea entre Internet Explorer y NetScape y s= us > muchas versiones que hac=C3=ADa temblar al desarrollador ante la posibili= dad de > qu=C3=A9 se pod=C3=ADa hacer y qu=C3=A9 no con cada uno. Ahora, la compa= tibilidad est=C3=A1 > casi asegurada y las facilidades propias de los navegadores aumentan d=C3= =ADa a > d=C3=ADa. Qui=C3=A9n habr=C3=ADa so=C3=B1ado hace unos a=C3=B1os escribi= r, por ejemplo, > > <input type=3D"number" placeholder=3D"1.0" step=3D"0.01" min=3D"0" max=3D= "10" /> > > Finalmente, TypeScript, un lenguaje basado en el JavaScript pero que > agrega la posibilidad de declarar los tipos de los datos (de all=C3=AD el > prefijo Type) en el nombre. Un grave problema del JavaScript es que > cualquier variable puede aceptar cualquier clase de datos. Esto abre la > posibilidad de que una variable pueda contener un tipo de dato imprevisto= , > por ejemplo, un texto en lugar de un n=C3=BAmero. TypeScript permite dec= larar > los tipos de las variables y los tipos de los par=C3=A1metros de las func= iones y > el tipo de valor que devuelve. Esto permite detectar errores en el > programa cuando se est=C3=A1 desarrollando y no cuando se est=C3=A9 proba= ndo o, peor > a=C3=BAn, cuando est=C3=A9 en producci=C3=B3n. Esto es particularmente = =C3=BAtil en el caso > del uso de paquetes de terceros, cargados, por ejemplo, de NPM donde uno > puede tener la duda de si tal par=C3=A1metro de una funci=C3=B3n acepta o= no un > string num=C3=A9rico, o cu=C3=A1les par=C3=A1metros son opcionales. Edi= tores como el > VsCode interpretan los archivos de tipos que genera el TypeScript para el > Intellisense, que provee ayuda inmediata mientras se escribe el c=C3=B3di= go. > > > Creo que todos coinciden en que la enorme variedad de lenguajes (JSX, > TypeScript) y utilitarios (WebPack, NPM) es abrumadora para el > desarrollador, pero tienen su raz=C3=B3n de ser y, dependiendo del tipo d= e > aplicaci=C3=B3n, la envergadura del equipo de programaci=C3=B3n y la ampl= itud del > mercado a que est=C3=A1 destinada, muchas de estas herramientas, o sus > descendientes, est=C3=A1n justificadas, como tambi=C3=A9n lo est=C3=A1 el= PHP en muchas > otras. > > Saludos > > Satyam > > > > --00000000000072643f064196cfaf Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Hola. Antes que nada, que bueno ver a alguien de "aqu= ella vieja guardia" por aca.<div><br></div><div>Complementando tu anal= isis que me parece excelente, creo que hay que poner no solo el foco en la = utilizaci=C3=B3n de cada pieza de tecnolog=C3=ADa que usamos, sino tambi=C3= =A9n un para qu=C3=A9=C2=A0hist=C3=B3rico: Hist=C3=B3ricamente la gran mayo= r=C3=ADa=C2=A0 de los desarrolladores web (Al menos medidos por el n=C3=BAm= ero) evoluciona en su trabajo hasta un punto donde considera que "ya s= abe" y no sigue evolucionando ni en cuanto a tecnolog=C3=ADa ni en cua= nto a desaf=C3=ADos=C2=A0que buscan.</div><div><br></div><div>Por eso es ta= n com=C3=BAn la discusi=C3=B3n por ejemplo acerca de si son =C3=BAtiles las= matem=C3=A1ticas: Una vez me dijeron en un foro "Yo para centrar un d= iv no necesito matem=C3=A1ticas y con eso gano un mont=C3=B3n de dinero al = a=C3=B1o".</div><div><br></div><div>Tu "depende para que" de= be necesariamente incluir que quiz=C3=A1s el 80% de los programadores sigan= el hype tecnol=C3=B3gico no por necesidad real, que implica un an=C3=A1lis= is puntual de las cosas que vas a hacer sino porque no se quieren "que= dar a fuera del mercado". Todo ese mecanismo sociocultural termina en = un c=C3=B3digo caro, con muchos recursos innecesarios, generalmente mal usa= dos y muy dif=C3=ADcil de mantener. Muchas veces con c=C3=B3digo=C2=A0que s= i fue escrito muy r=C3=A1pido (Lo cual es una obvia ventaja) porque utiliza= en general soluciones ya standard para problemas de moda ... Que as=C3=AD = queda! (Y que no resiste el avance de las bibliotecas que lo formaron, cual= quiera de los presentes que halla=C2=A0tenido que actualizar un sitio hecho= con Laravel o Angular de mas de cinco o seis a=C3=B1os de hecho puede aval= ar lo que digo)=C2=A0=C2=A0</div><div><br></div><div>La verdad toma muchos = a=C3=B1os de pr=C3=A1ctica formar a alguien que en serio pueda pasar verdad= eramente r=C3=A1pido de una tecnolog=C3=ADa en otra=C2=A0y usarlas como cor= responde. Ojala ahora estemos usando para eso la IA.=C2=A0=C2=A0</div><div>= <br></div><div>Slds.</div><div>Pablo.</div></div><br><div class=3D"gmail_qu= ote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sun, Oc= t 19, 2025 at 1:14=E2=80=AFPM Satyam <<a href=3D"mailto:[email protected]= m.ar">[email protected]</a>> wrote:<br></div><blockquote class=3D"gma= il_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,2= 04,204);padding-left:1ex"><u></u> =20 =20 =20 <div> <p><br> </p> <div>On 10/19/25 08:33, Narcis Garcia wrote:<br> </div> <blockquote type=3D"cite">El 19/10/25 a les 6:30, Alma Guevara Castro ha escrit: <br> <blockquote type=3D"cite"> <br> *Fuente: Naiker.codes* <br> /"Cada d=C3=ADa tengo m=C3=A1s claro que hemos complicado dema= siado algo que antes era sencillo. Programar una p=C3=A1gina web en PHP (s=C3= =AD, el de toda la vida) sigue siendo, a d=C3=ADa de hoy, una de las formas m=C3=A1s r=C3=A1pidas, estables y eficaces de levantar un proyecto funcional./ <br> /No hace falta un stack de 10 tecnolog=C3=ADas ni un curso intensiv= o de dependencias para mostrar datos en pantalla o conectar con una base de datos. Pero parece que ahora todo tiene que pasar por React, Node, Webpack, NPM, Typescript, Redux, Vite ... con el respeto que se merecen./ <br> /Y en muchos casos, no aporta valor real al usuario, solo complica el desarrollo, la curva de aprendizaje y el mantenimiento. No se trata de rechazar la innovaci=C3=B3n, sino de recordar que la tecnolog=C3=ADa debe simplificar, no enredar. A vec= es lo m=C3=A1s eficiente sigue siendo lo m=C3=A1s simple. /*/=C2=A1PHP= vive!/*/"/ <br> <br> </blockquote> <br> Celebro la vi=C3=B1eta. <br> <br> =C2=BFQu=C3=A9 factores podemos encontrar que han encaminado el desar= rollo a este problema? <br> =C2=BFComponentes de terceros, gratuitos pero con =C3=A1nimo de lucro= ? <br> =C2=BFPereza de escribir c=C3=B3digo? <br> =C2=BFUso de plantillas para el aspecto visual?=C2=A0<br> <br> </blockquote> <p>Hola Narcis, interesantes preguntas.=C2=A0=C2=A0</p> <p>Creo que, como todo en la vida, la respuesta suele ser "depende".=C2=A0 =C2=A0Es obvio que PHP sigue siendo una al= ternativa muy v=C3=A1lida, en las encuestas de Stack Overflow muestran que todav=C3= =ADa casi un 19% de quienes completaron la encuesta usa PHP: <a href=3D"https://survey.stackoverflow.co/2025/technology/#most-popular-te= chnologies" target=3D"_blank">https://survey.stackoverflow.co/2025/technolo= gy/#most-popular-technologies</a> .=C2=A0 La encuesta muestra muchos lenguajes, muchos de ellos no necesariamente relacionados con los desarrollos para WEB as=C3=AD que= , excluyendo los que no son aplicables, PHP no est=C3=A1 tan mal ubicado.=C2=A0 Pero, como dec=C3=ADa, cu=C3=A1l lenguaje usar "d= epende".</p> <p>JavaScript surgi=C3=B3 para ofrecer interactividad del lado del cliente.=C2=A0 Sin JavaScript, Google Maps no existir=C3=ADa ni toda = la familia de aplicaciones on-line de Google: Mail, Docs, Sheets, Slides.</p> <p>Tampoco habr=C3=ADan existido utilitarios como JQuery que nos ofrecieron por primera vez acceder a esas posibilidades de interacci=C3=B3n que antes no ten=C3=ADamos. Por ejemplo:</p> <ul> <li>Validar campos de datos del lado del cliente (aunque, por seguridad, debamos tambi=C3=A9n hacerlo del lado del servidor).=C2= =A0 =C2=A0Nadie quiere hacer un <i>submit</i> de un formulario de 100 campos para, despu=C3=A9s de unos segundos, enterarse de que hab=C3= =ADa un error en el segundo campo.</li> <li>Llenar un <select> basado en otro, por ejemplo, llenar el de municipio en base a la provincia seleccionada.</li> <li>Activar o desactivar campos opcionales seg=C3=BAn otras opciones = en el formulario.</li> </ul> <p>Todo esto es posible hacerlo del lado del cliente en JavaScript sin que haya necesidad de enviar todos los datos al servidor y esperar una respuesta del mismo.</p> <p>La cosa creci=C3=B3, paso a paso, a partir de all=C3=AD.=C2=A0 Veamo= s algunas de las tecnolog=C3=ADas listadas m=C3=A1s arriba.</p> <p>Era muy habitual programar en PHP en el servidor y JavaScript en el cliente.=C2=A0 NodeJS permiti=C3=B3 que el mismo lenguaje se usara= en ambos lados.=C2=A0 De pronto no fue necesario tener alguien en el equipo que supiera los trucos de PHP y otro que supiera los trucos de JavaScript.=C2=A0 Surgi=C3=B3 tambi=C3=A9n la posibilidad de que e= l mismo c=C3=B3digo se usara en ambos lados.=C2=A0 Por ejemplo, una librer=C3= =ADa de validaci=C3=B3n de datos.=C2=A0 Ya no era necesario tener dos funcion= es en dos lenguajes distintos para validar, digamos, una fecha est=C3=A9 entre ciertos l=C3=ADmites, o que una cantidad sea positiva y menor a= , digamos, 1000.=C2=A0 =C2=A0Las mismas funciones de JavaScript se pod= =C3=ADan usar en el cliente y en el servidor.</p> <p>Al popularizarse muchos de estos 'paquetes' de funciones, apareci=C3=B3 el NPM que no es un lenguaje de programaci=C3=B3n sino = un sitio de web <a href=3D"https://www.npmjs.com/" target=3D"_blank">htt= ps://www.npmjs.com/</a> con una biblioteca de estos programas y un utilitario que permite bajar estos utilitarios e instalarlos en la m=C3=A1quina del desarrollador en un lugar convenid= o donde NodeJS los pueda encontrar con facilidad.</p> <p>WebPack, el veterano de los empaquetadores, surgi=C3=B3 porque no es aceptable transmitir enormes programas a trav=C3=A9s de l=C3=ADneas d= e comunicaci=C3=B3n de baja velocidad. Para ello es importante 'minimizarlo'.=C2=A0 Si nosotros enviamos JQuery a nuestros c= lientes, lo hacemos con la versi=C3=B3n minimizada, no el fuente completo, que ocupa mucho m=C3=A1s espacio.=C2=A0 WebPack ofrece lo mismo para nues= tros programas. Pero, tambi=C3=A9n ofrece mucho m=C3=A1s.=C2=A0=C2=A0</p> <p>Por ejemplo, separar la aplicaci=C3=B3n en lo que llaman "chunk= s" (pedazos) de tal manera que, por ejemplo, no se cargue cierta funcionalidad (por ejemplo, validaci=C3=B3n de datos) en una p=C3=A1g= ina que no la necesita.=C2=A0 La aplicaci=C3=B3n, en lugar de ser monol=C3=AD= tica se separa en "chunks" m=C3=A1s peque=C3=B1os que se cargan baj= o demanda.=C2=A0=C2=A0</p> <p>Tambi=C3=A9n ofrece "tree-shaking", literalmente "sac= udir el =C3=A1rbol"=C2=A0 esto es, analizar el c=C3=B3digo fuente para ver cu=C3=A1les funcione= s de las librer=C3=ADas cargadas (gracias al NPM) se usan y cuales no.=C2= =A0 Lo del =C3=A1rbol viene a cuenta de que las dependencias de unas funcion= es con otras se pueden diagramar como un =C3=A1rbol donde a partir del punto de entrada principal de la aplicaci=C3=B3n, la ra=C3=ADz del = =C3=A1rbol, se desprenden las funciones que se usan y las que esas funciones usan, formando as=C3=AD un =C3=A1rbol.=C2=A0 Si se cargan varios util= itarios, va a haber funciones que no se usan.=C2=A0 Estas funciones quedan desconectadas del =C3=A1rbol principal y, por ello, al "sacudir = el =C3=A1rbol", estas ramas se caen.=C2=A0 =C2=A0</p> <p>Obviamente, nada de esto es necesario en un programa que se ejecuta en el servidor, el int=C3=A9rprete de PHP tiene acceso direct= o a todos los recursos en el servidor, pero cuando el c=C3=B3digo ha de enviarse a trav=C3=A9s de conexiones de internet al cliente, que pued= e no tener un buen ancho de banda, reducir el tama=C3=B1o de lo que se transmite importa, y mucho.</p> <p>Vite es una versi=C3=B3n m=C3=A1s moderna del WebPack, mucho m=C3=A1= s eficiente y con varias opciones extra.=C2=A0 Nuevamente, al igual que NPM, o WebPack, Vite no es un lenguaje de desarrollo, es un utilitario para facilitar el desarrollo.=C2=A0 Por ejemplo, le ofrece al desarrollador una suerte de mini-servidor de donde probar la aplicaci=C3=B3n que est=C3=A1 programando y, al detectar un cambio en cualquier archivo, inmediatamente transmite el cambio al navegador y efect=C3=BAa los cambios sin que el desarrollador tenga que refresc= ar la pantalla.=C2=A0 Esto no se aplica s=C3=B3lo a JavaScript.=C2=A0 Si= un desarrollador est=C3=A1 trabajando con doble monitor, puede desarroll= ar en una pantalla y ver la p=C3=A1gina de web en el otro.=C2=A0 Si camb= ia un atributo de CSS en el fuente, que puede ser en puro CSS, SASS, SCSS, LESS o tantos otros, ver=C3=A1 el cambio en el navegador de inmediato, habi=C3=A9ndolo convertido a puro CSS de ser necesario.</p= > <p>React/Redux es uno de tantos paquetes de manejo de la interfaz gr=C3=A1fica en el cliente y los datos que muestra.=C2=A0 Est=C3=A1 p= erdiendo adeptos pues hay actualmente opciones mucho m=C3=A1s simples, compact= as y, por ello m=C3=A1s r=C3=A1pidas.=C2=A0 De la misma manera que tradi= cionalmente el JQuery nos salvaba de los peligros de manipular el DOM directamente, React (o Vue, Svelte, HTMX, Angular, Solid y un largo etc) nos ofrece una forma de codificar la interfaz de usuario y su relaci=C3=B3n con los datos (Redux) que facilita un alto grado de interactividad.=C2=A0 =C2=A0</p> <p>El conjunto React/Redux es, quiz=C3=A1s, lo m=C3=A1s cuestionable y = si se quiere prescindible de todo lo mencionado.=C2=A0 Cuando se lanz=C3=B3= , cubr=C3=ADa una gran cantidad de agujeros en performance y compatibilidad que ten=C3=ADan los navegadores. Ya no existe la pelea entre Internet Explorer y NetScape y sus muchas versiones que hac=C3=ADa temblar al desarrollador ante la posibilidad de qu=C3=A9 s= e pod=C3=ADa hacer y qu=C3=A9 no con cada uno.=C2=A0 Ahora, la compatibilidad est= =C3=A1 casi asegurada y las facilidades propias de los navegadores aumentan d=C3=ADa a d=C3=ADa.=C2=A0 Qui=C3=A9n habr=C3=ADa so=C3=B1ado hace un= os a=C3=B1os escribir, por ejemplo,</p> <pre><input type=3D"number" placeholder=3D"1.0" = step=3D"0.01" min=3D"0" max=3D"10" /></pre= > <p>Finalmente, TypeScript, un lenguaje basado en el JavaScript pero que agrega la posibilidad de declarar los tipos de los datos (de all=C3=AD el prefijo Type) en el nombre. Un grave problema del JavaScript es que cualquier variable puede aceptar cualquier clase de datos.=C2=A0 Esto abre la posibilidad de que una variable pueda contener un tipo de dato imprevisto, por ejemplo, un texto en lugar de un n=C3=BAmero.=C2=A0 TypeScript permite declarar los tipos = de las variables y los tipos de los par=C3=A1metros de las funciones y el ti= po de valor que devuelve.=C2=A0 Esto permite detectar errores en el programa cuando se est=C3=A1 desarrollando y no cuando se est=C3=A9 p= robando o, peor a=C3=BAn, cuando est=C3=A9 en producci=C3=B3n.=C2=A0 =C2=A0Es= to es particularmente =C3=BAtil en el caso del uso de paquetes de terceros, cargados, por ejemplo, de NPM donde uno puede tener la duda de si tal par=C3=A1metr= o de una funci=C3=B3n acepta o no un string num=C3=A9rico, o cu=C3=A1le= s par=C3=A1metros son opcionales.=C2=A0 =C2=A0Editores como el VsCode interpretan los a= rchivos de tipos que genera el TypeScript para el Intellisense, que provee ayuda inmediata mientras se escribe el c=C3=B3digo.</p> <p><br> </p> <p>Creo que todos coinciden en que la enorme variedad de lenguajes (JSX, TypeScript) y utilitarios (WebPack, NPM) es abrumadora para el desarrollador, pero tienen su raz=C3=B3n de ser y, dependiendo del tipo de aplicaci=C3=B3n, la envergadura del equipo de programaci=C3= =B3n y la amplitud del mercado a que est=C3=A1 destinada, muchas de estas herramientas, o sus descendientes, est=C3=A1n justificadas, como tambi=C3=A9n lo est=C3=A1 el PHP en muchas otras.</p> <p>Saludos</p> <p>Satyam</p> <p><br> </p> <p><br> </p> </div> </blockquote></div> --00000000000072643f064196cfaf--