Re: [PHP-ES] Antes y despúes
[email protected] (Satyam) Sun, 19 Oct 2025 18:10:52 +0200
| Newsgroups | php.general.es |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--------------Nrms2kHjEl2p6bfukGe6G0nK
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
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ía tengo más claro que hemos complicado demasiado algo que
>> antes era sencillo. Programar una página web en PHP (sí, el de toda
>> la vida) sigue siendo, a día de hoy, una de las formas más rápidas,
>> estables y eficaces de levantar un proyecto funcional./
>> /No hace falta un stack de 10 tecnologías 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,
>> Webpack, 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ón, sino de recordar que la tecnología debe
>> simplificar, no enredar. A veces lo más eficiente sigue siendo lo más
>> simple. /*/¡PHP vive!/*/"/
>>
>
> Celebro la viñeta.
>
> ¿Qué factores podemos encontrar que han encaminado el desarrollo a
> este problema?
> ¿Componentes de terceros, gratuitos pero con ánimo de lucro?
> ¿Pereza de escribir código?
> ¿Uso 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álida, en las encuestas
de Stack Overflow muestran que todavía casi un 19% de quienes
completaron la encuesta usa PHP:
https://survey.stackoverflow.co/2025/technology/#most-popular-technologies
. La encuesta muestra muchos lenguajes, muchos de ellos no
necesariamente relacionados con los desarrollos para WEB así que,
excluyendo los que no son aplicables, PHP no está tan mal ubicado.
Pero, como decía, cuál lenguaje usar "depende".
JavaScript surgió para ofrecer interactividad del lado del cliente. Sin
JavaScript, Google Maps no existiría ni toda la familia de aplicaciones
on-line de Google: Mail, Docs, Sheets, Slides.
Tampoco habrían existido utilitarios como JQuery que nos ofrecieron por
primera vez acceder a esas posibilidades de interacción que antes no
teníamos. Por ejemplo:
* Validar campos de datos del lado del cliente (aunque, por seguridad,
debamos también hacerlo del lado del servidor). Nadie quiere hacer
un /submit/ de un formulario de 100 campos para, después de unos
segundos, enterarse de que había 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ún 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ó, paso a paso, a partir de allí. Veamos algunas de las
tecnologías listadas más arriba.
Era muy habitual programar en PHP en el servidor y JavaScript en el
cliente. NodeJS permitió que el mismo lenguaje se usara en ambos
lados. 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ó también la posibilidad de que el mismo código se usara en ambos
lados. Por ejemplo, una librería de validación de datos. Ya no era
necesario tener dos funciones en dos lenguajes distintos para validar,
digamos, una fecha esté entre ciertos límites, o que una cantidad sea
positiva y menor a, digamos, 1000. Las mismas funciones de JavaScript
se podían usar en el cliente y en el servidor.
Al popularizarse muchos de estos 'paquetes' de funciones, apareció el
NPM que no es un lenguaje de programación 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áquina del desarrollador en un lugar convenido donde NodeJS los pueda
encontrar con facilidad.
WebPack, el veterano de los empaquetadores, surgió porque no es
aceptable transmitir enormes programas a través de líneas de
comunicación de baja velocidad. Para ello es importante 'minimizarlo'.
Si nosotros enviamos JQuery a nuestros clientes, lo hacemos con la
versión minimizada, no el fuente completo, que ocupa mucho más espacio.
WebPack ofrece lo mismo para nuestros programas. Pero, también ofrece
mucho más.
Por ejemplo, separar la aplicación en lo que llaman "chunks" (pedazos)
de tal manera que, por ejemplo, no se cargue cierta funcionalidad (por
ejemplo, validación de datos) en una página que no la necesita. La
aplicación, en lugar de ser monolítica se separa en "chunks" más
pequeños que se cargan bajo demanda.
También ofrece "tree-shaking", literalmente "sacudir el árbol" esto es,
analizar el código fuente para ver cuáles funciones de las librerías
cargadas (gracias al NPM) se usan y cuales no. Lo del árbol viene a
cuenta de que las dependencias de unas funciones con otras se pueden
diagramar como un árbol donde a partir del punto de entrada principal de
la aplicación, la raíz del árbol, se desprenden las funciones que se
usan y las que esas funciones usan, formando así un árbol. Si se cargan
varios utilitarios, va a haber funciones que no se usan. Estas
funciones quedan desconectadas del árbol principal y, por ello, al
"sacudir el árbol", estas ramas se caen.
Obviamente, nada de esto es necesario en un programa que se ejecuta en
el servidor, el intérprete de PHP tiene acceso directo a todos los
recursos en el servidor, pero cuando el código ha de enviarse a través
de conexiones de internet al cliente, que puede no tener un buen ancho
de banda, reducir el tamaño de lo que se transmite importa, y mucho.
Vite es una versión más moderna del WebPack, mucho más eficiente 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ón que está programando y, al
detectar un cambio en cualquier archivo, inmediatamente transmite el
cambio al navegador y efectúa los cambios sin que el desarrollador tenga
que refrescar la pantalla. Esto no se aplica sólo a JavaScript. Si un
desarrollador está trabajando con doble monitor, puede desarrollar en
una pantalla y ver la página 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á el cambio en el navegador de inmediato, habiéndolo
convertido a puro CSS de ser necesario.
React/Redux es uno de tantos paquetes de manejo de la interfaz gráfica
en el cliente y los datos que muestra. Está perdiendo adeptos pues hay
actualmente opciones mucho más simples, compactas y, por ello más
rápidas. 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ón con los datos (Redux) que facilita
un alto grado de interactividad.
El conjunto React/Redux es, quizás, lo más cuestionable y si se quiere
prescindible de todo lo mencionado. Cuando se lanzó, cubría una gran
cantidad de agujeros en performance y compatibilidad que tenían los
navegadores. Ya no existe la pelea entre Internet Explorer y NetScape y
sus muchas versiones que hacía temblar al desarrollador ante la
posibilidad de qué se podía hacer y qué no con cada uno. Ahora, la
compatibilidad está casi asegurada y las facilidades propias de los
navegadores aumentan día a día. Quién habría soñado hace unos años
escribir, por ejemplo,
<input type="number" placeholder="1.0" step="0.01" min="0" max="10" />
Finalmente, TypeScript, un lenguaje basado en el JavaScript pero que
agrega la posibilidad de declarar los tipos de los datos (de allí 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úmero. TypeScript
permite declarar los tipos de las variables y los tipos de los
parámetros de las funciones y el tipo de valor que devuelve. Esto
permite detectar errores en el programa cuando se está desarrollando y
no cuando se esté probando o, peor aún, cuando esté en producción.
Esto es particularmente útil en el caso del uso de paquetes de
terceros, cargados, por ejemplo, de NPM donde uno puede tener la duda de
si tal parámetro de una función acepta o no un string numérico, o cuáles
parámetros son opcionales. Editores como el VsCode interpretan los
archivos de tipos que genera el TypeScript para el Intellisense, que
provee ayuda inmediata mientras se escribe el código.
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ón de ser y, dependiendo del tipo de
aplicación, la envergadura del equipo de programación y la amplitud del
mercado a que está destinada, muchas de estas herramientas, o sus
descendientes, están justificadas, como también lo está el PHP en muchas
otras.
Saludos
Satyam
--------------Nrms2kHjEl2p6bfukGe6G0nK
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><br>
</p>
<div class="moz-cite-prefix">On 10/19/25 08:33, Narcis Garcia wrote:<br>
</div>
<blockquote type="cite"
cite="mid:[email protected]">El
19/10/25 a les 6:30, Alma Guevara Castro ha escrit:
<br>
<blockquote type="cite">
<br>
*Fuente: Naiker.codes*
<br>
/"Cada día tengo más claro que hemos complicado demasiado algo
que antes era sencillo. Programar una página web en PHP (sí, el
de toda la vida) sigue siendo, a día de hoy, una de las formas
más rápidas, estables y eficaces de levantar un proyecto
funcional./
<br>
/No hace falta un stack de 10 tecnologías 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, 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ón, sino de
recordar que la tecnología debe simplificar, no enredar. A veces
lo más eficiente sigue siendo lo más simple. /*/¡PHP vive!/*/"/
<br>
<br>
</blockquote>
<br>
Celebro la viñeta.
<br>
<br>
¿Qué factores podemos encontrar que han encaminado el desarrollo a
este problema?
<br>
¿Componentes de terceros, gratuitos pero con ánimo de lucro?
<br>
¿Pereza de escribir código?
<br>
¿Uso de plantillas para el aspecto visual? <br>
<br>
</blockquote>
<p>Hola Narcis, interesantes preguntas. </p>
<p>Creo que, como todo en la vida, la respuesta suele ser
"depende". Es obvio que PHP sigue siendo una alternativa muy
válida, en las encuestas de Stack Overflow muestran que todavía
casi un 19% de quienes completaron la encuesta usa PHP:
<a class="moz-txt-link-freetext" href="https://survey.stackoverflow.co/2025/technology/#most-popular-technologies">https://survey.stackoverflow.co/2025/technology/#most-popular-technologies</a>
. La encuesta muestra muchos lenguajes, muchos de ellos no
necesariamente relacionados con los desarrollos para WEB así que,
excluyendo los que no son aplicables, PHP no está tan mal
ubicado. Pero, como decía, cuál lenguaje usar "depende".</p>
<p>JavaScript surgió para ofrecer interactividad del lado del
cliente. Sin JavaScript, Google Maps no existiría ni toda la
familia de aplicaciones on-line de Google: Mail, Docs, Sheets,
Slides.</p>
<p>Tampoco habrían existido utilitarios como JQuery que nos
ofrecieron por primera vez acceder a esas posibilidades de
interacción que antes no teníamos. Por ejemplo:</p>
<ul>
<li>Validar campos de datos del lado del cliente (aunque, por
seguridad, debamos también hacerlo del lado del servidor).
Nadie quiere hacer un <i>submit</i> de un formulario de 100
campos para, después de unos segundos, enterarse de que había 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ún 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ó, paso a paso, a partir de allí. Veamos algunas de
las tecnologías listadas más arriba.</p>
<p>Era muy habitual programar en PHP en el servidor y JavaScript en
el cliente. NodeJS permitió que el mismo lenguaje se usara en
ambos lados. 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ó también la posibilidad de que el mismo
código se usara en ambos lados. Por ejemplo, una librería de
validación de datos. Ya no era necesario tener dos funciones en
dos lenguajes distintos para validar, digamos, una fecha esté
entre ciertos límites, o que una cantidad sea positiva y menor a,
digamos, 1000. Las mismas funciones de JavaScript se podían usar
en el cliente y en el servidor.</p>
<p>Al popularizarse muchos de estos 'paquetes' de funciones,
apareció el NPM que no es un lenguaje de programación sino un
sitio de web <a class="moz-txt-link-freetext" href="https://www.npmjs.com/">https://www.npmjs.com/</a> con una biblioteca de estos
programas y un utilitario que permite bajar estos utilitarios e
instalarlos en la máquina del desarrollador en un lugar convenido
donde NodeJS los pueda encontrar con facilidad.</p>
<p>WebPack, el veterano de los empaquetadores, surgió porque no es
aceptable transmitir enormes programas a través de líneas de
comunicación de baja velocidad. Para ello es importante
'minimizarlo'. Si nosotros enviamos JQuery a nuestros clientes,
lo hacemos con la versión minimizada, no el fuente completo, que
ocupa mucho más espacio. WebPack ofrece lo mismo para nuestros
programas. Pero, también ofrece mucho más. </p>
<p>Por ejemplo, separar la aplicación en lo que llaman "chunks"
(pedazos) de tal manera que, por ejemplo, no se cargue cierta
funcionalidad (por ejemplo, validación de datos) en una página que
no la necesita. La aplicación, en lugar de ser monolítica se
separa en "chunks" más pequeños que se cargan bajo demanda. </p>
<p>También ofrece "tree-shaking", literalmente "sacudir el árbol"
esto es, analizar el código fuente para ver cuáles funciones de
las librerías cargadas (gracias al NPM) se usan y cuales no. Lo
del árbol viene a cuenta de que las dependencias de unas funciones
con otras se pueden diagramar como un árbol donde a partir del
punto de entrada principal de la aplicación, la raíz del árbol, se
desprenden las funciones que se usan y las que esas funciones
usan, formando así un árbol. Si se cargan varios utilitarios, va
a haber funciones que no se usan. Estas funciones quedan
desconectadas del árbol principal y, por ello, al "sacudir el
árbol", estas ramas se caen. </p>
<p>Obviamente, nada de esto es necesario en un programa que se
ejecuta en el servidor, el intérprete de PHP tiene acceso directo
a todos los recursos en el servidor, pero cuando el código ha de
enviarse a través de conexiones de internet al cliente, que puede
no tener un buen ancho de banda, reducir el tamaño de lo que se
transmite importa, y mucho.</p>
<p>Vite es una versión más moderna del WebPack, mucho más eficiente
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ón que está programando y, al detectar un cambio en
cualquier archivo, inmediatamente transmite el cambio al navegador
y efectúa los cambios sin que el desarrollador tenga que refrescar
la pantalla. Esto no se aplica sólo a JavaScript. Si un
desarrollador está trabajando con doble monitor, puede desarrollar
en una pantalla y ver la página 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á el cambio en el navegador de
inmediato, habiéndolo convertido a puro CSS de ser necesario.</p>
<p>React/Redux es uno de tantos paquetes de manejo de la interfaz
gráfica en el cliente y los datos que muestra. Está perdiendo
adeptos pues hay actualmente opciones mucho más simples, compactas
y, por ello más rápidas. 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ón con los datos (Redux) que facilita un alto
grado de interactividad. </p>
<p>El conjunto React/Redux es, quizás, lo más cuestionable y si se
quiere prescindible de todo lo mencionado. Cuando se lanzó,
cubría una gran cantidad de agujeros en performance y
compatibilidad que tenían los navegadores. Ya no existe la pelea
entre Internet Explorer y NetScape y sus muchas versiones que
hacía temblar al desarrollador ante la posibilidad de qué se podía
hacer y qué no con cada uno. Ahora, la compatibilidad está casi
asegurada y las facilidades propias de los navegadores aumentan
día a día. Quién habría soñado hace unos años escribir, por
ejemplo,</p>
<pre><input type="number" placeholder="1.0" step="0.01" min="0" max="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í 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úmero. TypeScript permite declarar los tipos de las
variables y los tipos de los parámetros de las funciones y el tipo
de valor que devuelve. Esto permite detectar errores en el
programa cuando se está desarrollando y no cuando se esté probando
o, peor aún, cuando esté en producción. Esto es particularmente
útil en el caso del uso de paquetes de terceros, cargados, por
ejemplo, de NPM donde uno puede tener la duda de si tal parámetro
de una función acepta o no un string numérico, o cuáles parámetros
son opcionales. Editores como el VsCode interpretan los archivos
de tipos que genera el TypeScript para el Intellisense, que provee
ayuda inmediata mientras se escribe el código.</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ón de ser y, dependiendo del
tipo de aplicación, la envergadura del equipo de programación y la
amplitud del mercado a que está destinada, muchas de estas
herramientas, o sus descendientes, están justificadas, como
también lo está el PHP en muchas otras.</p>
<p>Saludos</p>
<p>Satyam</p>
<p><br>
</p>
<p><br>
</p>
</body>
</html>
--------------Nrms2kHjEl2p6bfukGe6G0nK--