Evolución de la Computación¶
Para hablar sobre la historia de la computación, es necesario empezar hablando de cómo empezó la computación a nivel personal.
Ordenadores
- Años 40: Ordenadores personales "armario".
- Años 50: Servidores con múltiples clientes a modo de ordenador personal (KVM).
- Años 80: Ordenadores personales sobremesa.
- 2007...: Dispositivos móviles
Y en lo relativo a la web, como han ido evolucionando la conexión por red entre varias computadoras.
Redes
- Finales 80's - Primera mitad 90's: LAN sin conexiones exteriores.
- Segunda mitad 90's: Internet.
Con la incorporación de Internet a la vida cotidiana, aparecen unas aplicaciones cliente/servidor las cuales facilitan la transmisión de información. Tradicionalmente, en estas aplicaciones era necesario codificar la propia aplicación para la transmisión de datos. Sin embargo, en este caso las aplicaciones ya vienen dadas (navegadores web) y lo que se "programa" es el contenido a enviar.
Aparece entonces también la distinción entre frontend y backend:
- Frontend: Parte de la aplicación que interactúa con el usuario (lado cliente).
- Tipos de letra, colores, efectos del ratón, teclado, movimientos, desplazamientos, efectos visuales...
- Backend: El interior de la aplicación.
- Servidores, bases de datos, aplicación en sí...
Estadísticas¶
Estimaciones
Es imposible conocer a ciencia cierta estadísticas de uso de cualquier cosa en la web. Los datos mostrados aquí se basan en estimaciones y datos publicados en buena fé por algunas fuentes. Es por esto que, aunque parezca que cierta tecnología sea dominante, en realidad esté obsoleta hoy en día o pueda incluso representar vulnerabilidades de seguridad.
Se aprecia también un cambio de tendencia en cuanto al tipo de dispositivo dominante. En el último año caen las ventas de dispositivos en general, pero afectando en mayor medida a los ordenadores y tablets:
Device Type | 2021 Shipments (Millions) | 2021 Growth (%) | 2022 Shipments (Millions) | 2022 Growth (%) |
---|---|---|---|---|
PC | 342 | 11.0 | 310 | -9.5 |
Tablet | 156 | -0.8 | 142 | -9.0 |
Mobile Phone | 1567 | 5.0 | 1456 | -7.1 |
Total Devices | 2065 | 5.5 | 1907 | -7.6 |
En cuanto a otras estadísticas de uso, se pueden destacar las siguientes:
Sistemas operativos más usados por clientes web
- Android (o basado en): 40.76%
- Windows: 31.63%
- Apple iOS: 16.52%
Sistemas operativos de escritorio más usados para navegar
- Windows: 73.72%
- macOS: 15.33%
- Desconocido: 6.67%
Sistemas operativos más usados para alojar páginas web
- Unix: 80.5%
- Windows: 19.8%
Evolución del Frontend¶
Hasta los primeros años 2000, la tecnología usada estaba restringida a lo más básico de los estándares HTML, CSS y JavaScript. La construcción de una aplicación web se limitaba a:
- Escribir y guardar el código en un editor de texto plano.
- Abrir localmente, mediante un navegador los ficheros escritos, para chequear su correcto funcionamiento.
- Desplegar los ficheros en un servidor web.
En el 2007 Apple presenta el iPhone 3, y la computación doméstica se traslada a al bolsillo. Esto tiene varias implicaciones:
- Nuevos formatos de pantalla, totalmente incompatibles.
- Nuevas versiones de navegadores que incluyen algunas etiquetas y otras no a medida que se va estandarizando.
- Nuevas aplicaciones que incluyen contenido multimedia, cada vez más utilizado, redes sociales, localización.
- Nuevos desarrollos, más completos compitiendo con las apps de los móviles.
- Necesidad de reducción de ancho de banda y surgimiento de aplicaciones SPA.
Luego, en el 2018, Google cambia su algoritmo de posicionamiento hacia una política "Mobile First Indexing". Esto significa que Google mostrará en los dispositivos móviles las páginas que estén optimizadas para móviles, antes que otras que no lo están. Por tanto, la responsividad (capacidad de una página para responder a cambios de tamaño) se hace más importante.
Como consecuencia de todos estos cambios, la codificación de la página web se vuelve extremadamente compleja. Como solución, el JavaScript se convierte en protagonista en el desarrollo y aparecen nuevos frameworks y librerías.
Nombre | Año | Creador | Tipo | Lenguaje |
---|---|---|---|---|
jQuery | 2006 | John Resig | Library | JavaScript |
Backbone | 2010 | Jeremy Ashkenas | Library | JavaScript |
AngularJS | 2010 | Misko Hevery (Google) | Framework | JavaScript |
Bootstrap | 2011 | Mark Otto, Jacob Thornton | Library | CSS/JavaScript |
Ember | 2011 | Yehuda Katz | Framework | JavaScript |
React | 2013 | Jordan Walke (Facebook) | Library | JavaScript |
Vue | 2014 | Evan You (Google) | Framework | JavaScript |
Angular | 2016 | Framework | JavaScript | |
Svelte | 2016 | Rich Harris | Framework | JavaScript |
A pesar de la aparición de tantas nuevas opciones, jQuery sigue siendo el más dominante en todo el histórico de páginas web. Sin embargo, en los últimos años sí que se aprecia como tecnologías más modernas van tomando terreno al facilitar el desarrollo de estas páginas más complejas.
Como consecuencia de esta evolución, la programación web en 2020 se ha orientado más a la elección de herramientas de desarrollo que a la codificación en sí, por lo que se prima el uso de cajas negras.
Herramienta | Uso |
---|---|
Angular Material UI | Formularios |
Redux / MobX | Manejo de flujos y control de estados |
D3 | Manipulación DOM |
Moment.js | Formateo de fechas |
React DnD | Drag & Drop Interfaces |
La lengua más utilizada a día de hoy sigue siendo el inglés, con más del 55% del share.
Evolución del Backend¶
El backend está muy influenciado por las preferencias del lenguaje de programación, utilizados por los programadores.
Preferencia en lenguajes de programación según IEEE 2022 (normalizado)
- Python: 100%
- C: 96.8%
- C++: 88.58%
- C#: 86.99%
- Java: 70.22%
Según el ranking TIOBE, se aprecia como Java deja de ser el más predominante los últimos años en favor de Python y C. Sin embargo, estos rankings son de programación genéricos. Mirando exclusivamente el desarrollo de backends, encontramos las siguientes preferencias:
Lenguajes más usados en backends
- PHP: 78.1%
- ASP.NET: 7.9%
- Ruby: 6.0%
- Java: 3.7%
- Scala: 2.3%
PHP es el lenguaje predominante, pero no es el mejor en cuanto a rendimiento con alto tráfico. En este caso, Java y ASP.NET se comportan de mejor manera.
En cuanto a los servidores de backend, también hay unos claros predominantes:
Servidores más utilizados
- Nginx: 34.0%
- Apache: 33.1%
- Cloudflare Server (proxy virtual, requiere de otro servidor por detrás): 20.1%
Desarrollo¶
A la hora de desarrollar aplicaciones web, se usarán estos 3 componentes en la asignatura:
- Frontend
- HTML
- CSS
- JavaScript (.jQuery, Bootstrap)
- Backend
- Java (JSP)
- Web Server
- Apache
- Tomcat