Roberto Sánchez - Programador .NET/C++

NOTICIAS

Redirección automática HTTPS de Microsoft Edge.

El navegador Edge se suma a la tendencia de priorización de páginas web que utilizan el protocolo HTTPS, tal y como anteriormente hicieron los navegadores Firefox y Chrome. Se priorizarán las conexiones a través de HTTPS en aquellas páginas que ofrezcan la posibilidad pero que también dispongan de una versión sin cifrar en HTTP. Dicho de otra manera: el navegador accederá a un sitio mediante HTTP que tenga implementado HTTPS y redireccionará automáticamente a este último.

La redirección automática como tal no es nada nuevo, de hecho tenía sentido hace años, cuando todavía había muchos sitios web no disponían de conexión cifrada. A día de hoy son pocos los sitios web que no disponen de cifrado HTTPS, al menos, en lo que a sitios serios se refiere, en gran medida por la presión que ha ejercido Google, cuyo buscador penaliza las conexiones sin cifrar. Incluso aquellos que aún mantienen HTTP, la redirección hacia HTTPS suele ser automática a cargo del propio sitio.

Fin de soporte para .NET Framework 4.5.2, 4.6 y 4.6.1.

El 26 de abril de 2022 finalizará el soporte de Microsoft para los paquetes de .NET Framework 4.5.2, 4.6 y 4.6.1. Después de esa fecha se dejará de proporcionar actualizaciones incluidas en las revisiones de seguridad o soporte técnico para estas versiones.

Microsoft toma esta determinación después de considerar que las firmas digitales con certificados de algoritmo SHA-1 ya no son seguras. Por lo tanto, la compañía recomienda la utilización de cualquiera de los paquetes de .NET Framework distintos de los anteriores, para los cuales no se considera fin de soporte en un futuro inmediato. Recomiendan especialmente los paquetes .NET Framework 4.6.2 y 4.8, los cuales son altamente compatibles con los anteriores y han demostrado gran solidez y estabilidad en tiempo de ejecución para las aplicaciones.

A pesar de que las versiones afectadas continuarán siendo funcionales, si se decide la recompilación de aplicaciones a versiones superiores es necesario un análisis en tiempo de ejecución para descartar posibles incompatibilidades o bugs. Asimismo, en aplicaciones que se encuentran en construcción, será necesario un análisis antes de su implementación en tiempo de ejecución en el entorno de producción.

Nueva herramienta de análisis de disco para Windows 10.

Con el paso del tiempo, nuestros ordenadores van acumulando documentos, vídeos, imágenes y otros archivos en nuestro ordenador. A la hora de realizar una limpieza del disco duro, unos de las problemáticas con la que se encuentra el usuario es averiguar cuáles son las carpetas y aplicaciones que están ocupando más espacio. Existen diferentes herramientas gratuitas que te facilitan dicha tarea y te muestran cuáles son los directorios que más espacio están ocupando.

Para que no tengas que recurrir a una aplicación de terceros, Microsoft está trabajando en una nueva herramienta de análisis de disco para Windows 10. Se trata de la función DiskUsage y Microsoft la incluyó en las compilaciones 20277 y 21277 de Windows 10 Insider que fue lanzada hace varias semanas.

DiskUsage es una herramienta para la consola de comandos que se encuentra en la ruta C:\windows\System32\diskusage.exe. Te permite escanear unidades de disco completas o carpetas específicas para mostrar el espacio que ocupan los documentos en nuestro disco duro. Permite de forma más eficaz obtener información acerca de los documentos de nuestro ordenador. Por ejemplo, si deseamos conocer las carpetas que ocupan más de 1 GB en el directorio copias, simplemente hay que ejecutar el comando: diskusage /minFileSize=1073741824 /h c:\copias. Una vez hecho se mostrarán las carpetas que superan ese tamaño, indicando cuántos archivos contiene cada uno de ellos y la ruta en la que puedes encontrar la carpeta en cuestión.

Por el momento, la herramienta está en desarrollo y es posible encontrar algunos errores de funcionamiento que se irán resolviendo. Por el momento, no ha trascendido cuando estará disponible la versión definitiva para Windows 10.

Microsoft forzará a actualizar los PC con Windows 10 1903.

Microsoft tiene previsto forzar la actualización de los equipos obsoletos, pero pretende hacerlo con sumo cuidado. De sobra es conocido que las actualizaciones de Windows semestrales traen novedades más o menos importantes, pero en ocasiones pueden producir errores que acaben inutilizando el sistema, como los famosos pantallazos azules o los bucles de reinicios.

Para evitar este tipo de problemas, la compañía adoptará una estrategia muy simple: se trata de comprobar el grado de compatibilidad antes de forzar la actualización de cada equipo. En el caso de que un PC no esté preparado para actualizar a una versión superior, se limitará a instalar la versión 1909.

Aquellos usuarios que ya dispongan de la versión 1909 instalada no recibirán ninguna actualización forzada, por el momento. Para el caso de los usuarios que no actualicen dicha versión, en mayo de 2021 se producirá el final de soporte de ésta. (Actualmente son muchos usuarios que todavía se encuentran anclados en Windows 10 1903.)

Recordamos que estos ciclos de actualizaciones solo afectan a la familia Home y Pro de Windows 10, ya que las versiones Enterprise y Education disponen de ciclos de soporte más longevos.

Gran actualización de Windows 10.

Microsoft está valorando prescindir de la gran actualización de Windows 10 prevista para el primer trimestre de 2021. Normalmente la compañía tiene previstas dos grandes actualizaciones de su sistema operativo Windows 10 al año. Su intención sería retrasarla para finales de 2021 dado que se centrarían en el lanzamiento de Windows 10x a primeros del próximo año.

De esta forma, Windows 10 cambiaría totalmente su programa de actualización para el sistema operativo dado que en principio quieren lanzar primero la versión de Windows 10x y después la actualización para Windows 10 tradicional. El hecho es que para no coincidir una actualización importante para Windows 10 con el lanzamiento de Windows 10x, la compañía retrasaría la actualización del sistema operativo que actualmente conocemos hasta finales de 2021.

Por el momento no han transcendido los cambios al respecto sobre el calendario de actualizaciones para Windows 10, y como se trata únicamente de rumores, habrá que esperar a los próximos meses.

Superordenador de Microsoft.

La compañía Microsoft he creado el superordanador Azure que, en cuanto a su rendimiento y potencial, puede ser situado entre los 5 primeros más potentes del mundo. Cuenta con 285.000 núcleos de procesamiento, 10.000 GPU y conexión de 400 gigabits por segundo. El proyecto ha sido enfocado a dar vida a una inteligencia artificial capaz de procesar datos a una velocidad impensable hasta ahora.

El proyecto ha sido realizado en colaboración con la organización sin ánimo de lucro OpenAI y pretende variar el prisma bajo el que se observan estos equipos. En vez de utilizarlo para una función concreta, como se usan habitualmente, pretenden trabajar en un sistema de inteligencia artificial que posteriormente funcione para otros equipos.

Los responsables del proyecto creen que su superordenador traerá una nueva sofisticación a la inteligencia artificial al lograr que trabaje desde distintos focos y tipos de análisis. Han explicado que, por ejemplo, con los textos conseguirá "absorber profundamente los matices del lenguaje, la gramática, el conocimiento, los conceptos y el contexto como para sobresalir en múltiples tareas: resumir un discurso largo, moderar en chats de juegos on-line, encontrar pasajes relevantes en miles de archivos legales, etc.".

¿Cómo has aprendido a programar?

Atención: el 74% de los programdores son autodidactas. Los datos HackerRank revelan que en la mayoría de los casos los programadores son autodidactas por naturaleza, y no solamente en sus inicios, sino a lo largo de toda su carrera.

Más del 25% de los encuestados empezaron a programar antes de los 16 años, pero esa proporción se dispara entre los desarrolladores de entre 45 y 54 años, de los cuales el 47% ya programaba antes de esa edad. Aquí los legendarios ordenadores de 8 y 16 bits y los primeros PCs fueron los que consiguieron que estos profesionales comenzaran a sentirse atraídos por la programación.

Para los desarrolladores más jóvenes esa experiencia es distinta, y los que tienen entre 18 y 24 años han empezado más tarde: sólo el 20% había programado antes de los 16 años, lo que parece indicar que hoy en día la programación es menos un hobby y más un campo en el que claramente hay una orientación muy profesional.

Uno de los datos más destacables de ese estudio es esa voluntad de aprender por sí mismos todo tipo de nuevas plataformas. En la encuesta se reveló que 2 de cada 3 desarrolladores tienen un título universitario en carreras técnicas, pero lo sorprendente es que 3 de cada 4 no habían aprendido a programar durante sus estudios: lo habían hecho de forma autodidacta.

¿Por qué aprender C++?

Si estás pensando en aprender C++, en este artículo verás las ventajas de este lenguaje tan versátil y por qué se sigue utilizando ampliamente en el mundo de la programación.

Ventajas de C++.

Las principales ventajas de C++ sobre otros lenguajes de programación son las siguientes:

- Tiene un altísimo rendimiento.

- A pesar de tener más de 20 años, es un lenguaje que se está utilizando constantemente y que ha estado siendo modernizado y desarrollado durante todo este tiempo.

- Es multiplataforma.

Lenguaje de alto rendimiento.

Es capaz de desarrollar un altísimo rendimiento por varios motivos:

- Permite hacer llamadas directamente al sistema operativo.

- Es un lenguaje compilado para cada plataforma.

- Tiene muchísimos parámetros de optimización.

- Tiene acceso directo a la memoria, que además puede ser controlada directamente por el programador.

- Tiene una integración directa con el lenguaje ensamblador, tanto que incluso permite la escritura de código fuente ensamblador embebido dentro del código fuente C++.

Lenguaje moderno y actualizado.

C++ permite, entre otras muchas cosas:

- Programación basada en objetos.

- Crear datos complejos.

- Definir operaciones sobre esos datos complejos.

- Relacionar estos datos complejos entre ellos.

- Realizar programación genérica y plantillas.

- Implementar múltiples patrones de diseño.

- Sobrecarga de operadores y métodos.

Desventajas de C++.

Evidentemente, al igual que cualquier otro lenguaje de programación, C++ también tiene sus costes:

- Necesita de una compilación diferente para cada plataforma.

- Debido a su longevidad y amplio alcance, es un lenguaje muy extenso y posee muchísimas líneas de código fuente.

- Su depuración es bastante complicada.

Resumen.

A pesar de ssus desventajas, C++ es tan interesante que permite programar en lenguaje de alto nivel y, en caso de necesitarlo, bajar incluso al bajo nivel incrustando lenguaje ansamblador.

Diez reglas de oro para un código de calidad.

Escribir código fuente de calidad es mucho más que conocer un lenguaje de programación. Es como escribir una buena novela: no es suficiente saber escribir bien, es también necesario tener grandes conocimientos de estilos literarios. PAra que el código fuente de un programa llegue a las cotas más altaas de calidad, es necesario cumplir varios requisitos que podemos resumirlos en las siguientes diez reglas de oro del código de calidad:

Regla 1: no duplicar.

No hay ninguna situación o contexto que justifique duplicidades de código fuente, absolutamente ninguna. Evidentemente (y esto es de primaria de programación) cualquier operación que se deba repetir en más de una ocasión debe estar contenida en un método aparte al que se llamará cada vez que sea necesaria su realización, aunque para ello sea necesario declararlo como un método estático para acceder a él desde varios puntos de la aplicación.

Sobra decir que el principal problema del código fuente duplicado es que si hay que realizar un cambio en él, debe ser neceario su cambio en todas y cada una de sus repeticiones, lo que aumenta el riesgo de errores y bugs que a la larga pueden ser muy costosos de solventar.

Regla 2: documentar.

Ya no me refiero a comentar líneas, práctica que a mi personalmente no me gusta mucho. Me refiero a la documentación XML del código fuente, que en la plataforma .NET nos permite un método estandarizado de documentación de los métodos, clases, etc. del código fuente.

La documentación, además de ser estandarizada según el sistema para .NET, debe ser sencilla y clara, orientada principalmente para que lo entienda cualquier otro programador además del autor. Hay que tener presente que cuando un proyecto queda "muerto" durante un tiempo, puede ser muy difícil el estudio del código fuente si no está correctamente documentado.

Regla 3: priorizar la herencia de clases.

La herencia es una de las principales características de la programación orientada a objetos, y es también un modo más de ahorro y simplificación de código fuente. Cualquier aplicación medianamente complicada que no haga uso de la herencia es que no está bien construida y caerá en duplicidades innecesarias. Para aplicar una buena estructura de herencia es necesario, antes de comenzar a escribir una sola línea de código, plantear correctamente el esquema de la aplicación e insertar la herencia allí donde sea necesaria.

Regla 4: revisión de código.

Cuántas veces hemos publicado una aplicación que hemos visto que aparentemente funciona correctamente y después hemos comprobado bugs no detectados en el proceso de prueba. Para evitarlo, además de un completo proceso de prueba, es necesario revisar el código profundamente, especialmente en aquellas áreas más susceptibles de errores. Es un proceso largo y tedioso, pero eliminará errores que a la larga pueden darnos muchos problemas.

Regla 5: un método - una acción.

No debes construir métodos que realicen más de una acción concreta. La definición de "acción concreta" serás tú el que la determine en consecuencia con las necesidades del proceso, pero básicamente queda claro que un método únicamente debe realizar una acción concreta. Esto nos repercutirá positivamente de dos maneras: métodos no excesivamente largos, y facilidad de reutilización.

Regla 6: código fácilmente entendible.

Es evidente, pero aun así, cuántas veces hemnos escrito código fuente excesivamente complicado porque la tarea a realizar también era excesivamente complicada. El objetivo es que, aunque la tarea a realizar sea muy compleja, el código sea lo más simplificado y sencillo de entender posible. De no lograrlo, debes estudiar la manera de simplificar ese código lo más posible, pues de lo contrario, a la larga, cualquier cambio en él será una tarea complicadísima.

Si para entender plenamente el funcionamiento de un método relativamente complicado debes emplear más de 5 ó 10 minutos, entonces es que ese método necesita simplificación y claridad.

Regla 7: piensa antes de escribir.

Como ya he dicho antes cuando me refería a la herencia. Es importante tener claro el esquema y la estructura de la aplicación. Es común en muchos desarrolladores comenzar a escribir código a o loco, y cuántas veces hemos acabado eliminando o modificando sustancialmente lo ya escrito en un principio... Piensa bien cómo hacer las cosas y luego escribe sobre seguro.

Regla 8: nombres con significación.

Los nombres de los atributos, propiedades, métodos, clases, etc. deben tener una significación clara respecto a su funcionalidad. Por ejemplo, si tenemos una propiedad llamada 'Connected' que evalúa el estado de conexión de la aplicación con un determinado dispositivo, este mismo nombre nos da una clara idea de su funcionalidad, y sería absurdo ponerle otro nombre como 'Conn', 'cnntd', 'DisCon', etc.

Regla 9: reutilización.

O dicho de otra manera, hacer uso de la no duplicación del código fuente. Cualquier aplicación medianamente complicada realizará unas determinadas acciones de forma repetitiva en muchas ocasiones. Para reutilizar ese código, debe estar escrito de forma genérica, es decir, que sea posible llamarlo desde donde sea necesario y que cumpla correctamente su función independientemente de donde sea llamado.

Regla 10: depuración.

Depura el código fuente una y otra vez, detenidamente, despacio, sin prisas, comprobando todas y cada una de las ramas de acción de la aplicación. Una parte del funcionamiento puede parecernos trivial y sencilla y solamente con escribirla parecemos estar seguros de su correcto funcionamiento, pero luego nos damos cuenta de un error absurdo que nos compromete cuando lo menos lo esperamos.

Revisa, revisa y vuelve a revisar. Y si tenemos alquien que pueda revisar la aplicación "desde fuera" mejor, pues será alguien no condicionado por el esquema mental del funcionamiento de ese código fuente y será más fácil encontrar bugs no detectados.