{"id":252016,"date":"2022-07-08T11:22:56","date_gmt":"2022-07-08T11:22:56","guid":{"rendered":"https:\/\/teknomers.com\/es\/por-que-los-desarrolladores-odian-cambiar-las-versiones-de-idioma\/"},"modified":"2022-07-08T11:22:57","modified_gmt":"2022-07-08T11:22:57","slug":"por-que-los-desarrolladores-odian-cambiar-las-versiones-de-idioma","status":"publish","type":"post","link":"https:\/\/teknomers.com\/es\/por-que-los-desarrolladores-odian-cambiar-las-versiones-de-idioma\/","title":{"rendered":"Por qu\u00e9 los desarrolladores odian cambiar las versiones de idioma"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div id=\"articlebody\">\n<div class=\"separator\" style=\"clear: both\"><\/div>\n<p>El progreso impulsa la tecnolog\u00eda hacia adelante.  Pero el progreso tambi\u00e9n tiene un costo: al agregar nuevas capacidades y caracter\u00edsticas, la comunidad de desarrolladores ajusta constantemente los componentes b\u00e1sicos.  Eso incluye los lenguajes fundamentales utilizados para codificar soluciones tecnol\u00f3gicas.<\/p>\n<p>Cuando los componentes b\u00e1sicos cambian, el c\u00f3digo detr\u00e1s de la soluci\u00f3n tecnol\u00f3gica tambi\u00e9n debe cambiar.  Es un ejercicio desafiante y lento que agota los recursos.  Pero, \u00bfy si hay una alternativa?<\/p>\n<h2 style=\"text-align: left\">El problema: leer el c\u00f3digo que escribi\u00f3 otra persona<\/h2>\n<p>Demos un paso atr\u00e1s y echemos un vistazo a uno de los desaf\u00edos fundamentales en el desarrollo: editar el c\u00f3digo de otra persona.  Est\u00e1 bien editar el c\u00f3digo que acaba de escribir o que escribi\u00f3 hace un par de semanas.  Pero editar su propio c\u00f3digo escrito hace a\u00f1os, no importa el c\u00f3digo de otra persona, esa es una historia diferente.<\/p>\n<p>Las reglas de estilo de c\u00f3digo internas pueden ayudar, pero siempre hay convenciones de nomenclatura extra\u00f1as para variables y funciones, o elecciones inusuales para algoritmos.  Podr\u00eda decirse que la capacidad de un programador para leer c\u00f3digo es una habilidad clave, pero es dif\u00edcil para todos.<\/p>\n<p>Los desarrolladores llaman al proceso de edici\u00f3n de c\u00f3digo antiguo &#8220;refactorizaci\u00f3n&#8221; y es un proceso que com\u00fanmente introduce nuevos errores o problemas de rendimiento.  Por eso, retroceder y editar el c\u00f3digo antiguo, bueno, eso es lo \u00faltimo que la mayor\u00eda de los equipos de desarrollo quieren hacer, especialmente cuando el c\u00f3digo base existente se ejecuta de manera estable y est\u00e1 haciendo su trabajo.<\/p>\n<h2 style=\"text-align: left\">Es un verdadero dolor de cabeza, pero a veces no hay alternativa<\/h2>\n<p>La refactorizaci\u00f3n es algo que todo desarrollador quiere evitar durante el mayor tiempo posible porque puede parecer una p\u00e9rdida de tiempo.  No obstante, los desarrolladores deben refactorizar de vez en cuando por una variedad de razones, y una de las razones m\u00e1s comunes se debe a los cambios en los componentes b\u00e1sicos del desarrollador.<\/p>\n<p>Eso incluye cambios en los lenguajes de programaci\u00f3n utilizados para crear software, que inevitablemente evolucionan con el tiempo.  Las nuevas versiones de un idioma a menudo dejar\u00e1n de lado las viejas formas de hacer las cosas e introducir\u00e1n nuevas funciones.  Si los desarrolladores no adoptan la nueva versi\u00f3n de idioma, quedan excluidos del nuevo conjunto de caracter\u00edsticas. <\/p>\n<p>Sin embargo, el c\u00f3digo existente generalmente necesita un ajuste para ejecutarse en la nueva versi\u00f3n del lenguaje, y eso implica un proceso de refactorizaci\u00f3n.  Y ese es el enigma: para adoptar la versi\u00f3n nueva y m\u00e1s avanzada de un lenguaje, los desarrolladores deben refactorizar, y en el camino gastar\u00e1n una gran cantidad de esfuerzo y romper\u00e1n todo tipo de cosas inesperadas, introduciendo nuevos errores en una aplicaci\u00f3n que estaba funcionando bien.<\/p>\n<p>Peor a\u00fan, la refactorizaci\u00f3n por s\u00ed sola no le brinda las ventajas de la nueva versi\u00f3n del idioma, sino que necesita volver a desarrollar su base de c\u00f3digo para aprovechar las mejoras.  De lo contrario, a pesar de ajustar el c\u00f3digo para que se ajuste a la nueva versi\u00f3n del idioma, estar\u00e1 donde sol\u00eda estar: una base de c\u00f3digo que se ejecuta en una nueva versi\u00f3n del idioma, pero sin caracter\u00edsticas nuevas. <\/p>\n<h2 style=\"text-align: left\">Los proveedores suelen dejar que los usuarios finales se encarguen de ello.<\/h2>\n<p>Puede parecer un ejercicio sin sentido pero, con la marcha constante del cambio tecnol\u00f3gico, a menudo hay pocas opciones al respecto: sus socios tecnol\u00f3gicos eligen por usted.<\/p>\n<p>Digamos que acabamos de pasar de Python 2.7 a Python 3.0.  Si est\u00e1 desarrollando sus aplicaciones internamente, tiene el control total y puede hacer el cambio o no hacerlo.  Los desarrolladores, por otro lado, bien pueden decidir dejar las cosas como est\u00e1n.  Si una aplicaci\u00f3n se desarrolla y se ejecuta en Python 2.7, el desarrollador simplemente lo dejar\u00e1 as\u00ed y les dir\u00e1 a los usuarios que se desarroll\u00f3 una aplicaci\u00f3n para Python 2.7, sin soporte para otras versiones.<\/p>\n<p>Puede dejar a los usuarios en una situaci\u00f3n dif\u00edcil: permanecer en la versi\u00f3n anterior de Python 2.7 para acomodar la aplicaci\u00f3n, dejando atr\u00e1s el progreso, o cambiar a Python 3.0 y correr el riesgo de una serie de incompatibilidades con las aplicaciones.<\/p>\n<h2 style=\"text-align: left\">El resultado neto: un gran riesgo de seguridad<\/h2>\n<p>Los lenguajes de programaci\u00f3n (y sus variadas bibliotecas) no son inmunes a las vulnerabilidades de seguridad.  Cuando surgen estas vulnerabilidades, los desarrolladores pueden imponerle una actualizaci\u00f3n de la versi\u00f3n de idioma. <\/p>\n<p>Pero estas actualizaciones no se limitar\u00e1n a correcciones de errores simples: provocar\u00e1n la desaprobaci\u00f3n de las construcciones del lenguaje con nuevas construcciones incorporadas, y eso obligar\u00e1 a los desarrolladores a realizar los movimientos de hacer cambios en el c\u00f3digo existente, nuevamente con todos los problemas potenciales que trae.<\/p>\n<p>La situaci\u00f3n empeora a\u00fan m\u00e1s cuando piensa en el efecto compuesto de las bibliotecas incluidas.  Despu\u00e9s de los cambios de idioma, estas bibliotecas tambi\u00e9n deben actualizarse, pero si los autores no actualizan una de las bibliotecas en uso, el desarrollador no podr\u00e1 usarla despu\u00e9s de actualizar el resto del c\u00f3digo a una versi\u00f3n m\u00e1s reciente, lo que nuevamente lleva a m\u00e1s escritura de c\u00f3digo. <\/p>\n<p>Es f\u00e1cil ver a d\u00f3nde lleva todo esto: m\u00e1s esfuerzo, riesgos adicionales de introducir errores&#8230; y una reticencia a seguir refactorizando para acomodar las actualizaciones.  \u00bfPr\u00f3ximo?  Las actualizaciones simplemente no se realizan, lo que significa que las cargas de trabajo dependen de componentes b\u00e1sicos inseguros y obsoletos.<\/p>\n<p>La historia es similar a lo que vemos en todo el mundo de la tecnolog\u00eda, ya que los componentes b\u00e1sicos antiguos y vulnerables dejan la puerta abierta a los ataques cibern\u00e9ticos.  Sin embargo, est\u00e1n surgiendo algunas buenas noticias. <\/p>\n<h2 style=\"text-align: left\">\u00bfHay una soluci\u00f3n mejor?<\/h2>\n<p>Tome los sistemas operativos no compatibles, por ejemplo.  En el pasado, cuando <a rel=\"nofollow noopener\" href=\"https:\/\/www.centos.org\/centos-linux-eol\/\" target=\"_blank\">un sistema operativo lleg\u00f3 al final de su vida \u00fatil<\/a>, la \u00fanica opci\u00f3n era actualizar a un sistema operativo m\u00e1s nuevo: una inversi\u00f3n importante y llena de riesgos.  El resultado neto es que muchas organizaciones conf\u00edan en sistemas operativos sin parches ni soporte, incluso para cargas de trabajo cr\u00edticas.  Si no tiene aplicaciones actualizadas, debido a que los desarrolladores no refactorizar\u00e1n las bases de c\u00f3digo antiguas, no puede mover sus aplicaciones a sistemas operativos m\u00e1s nuevos que no son compatibles con las versiones anteriores del lenguaje y, por lo tanto, romper la aplicaci\u00f3n.<\/p>\n<p>Afortunadamente, este escenario cambi\u00f3 a medida que <a rel=\"nofollow noopener\" href=\"https:\/\/tuxcare.com\/extended-lifecycle-support\/\" target=\"_blank\">El soporte al final de la vida es ahora una realidad para muchos sistemas operativos Linux.<\/a>lo que significa que las organizaciones pueden ganar tiempo para migrar de un sistema operativo no compatible a un sistema operativo con soporte oficial del proveedor, sin correr ning\u00fan riesgo de seguridad.<\/p>\n<p>\u00bfSe puede hacer algo similar para las versiones de idiomas?  \u00bfUna forma de &#8220;actualizar&#8221; efectivamente un tiempo de ejecuci\u00f3n de idioma con las \u00faltimas correcciones de seguridad y, al mismo tiempo, no cambiar el funcionamiento de esa versi\u00f3n de idioma o bibliotecas espec\u00edficas, eliminando as\u00ed la necesidad de refactorizar?<\/p>\n<p>Repetir lo que se ha logrado para los sistemas operativos y aplicarlo a las versiones de idiomas les dar\u00e1 a los desarrolladores un enorme respiro, reduciendo la necesidad de refactorizar continuamente.  A su vez, existe una mayor probabilidad de que las cargas de trabajo se ejecuten de forma segura. <\/p>\n<p>\u00bfEs posible?  Bueno, lo que se logr\u00f3 para los sistemas operativos se puede expandir a otras \u00e1reas.  Mira este espacio.<\/p>\n<p><\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/thehackernews.com\/2022\/07\/why-developers-hate-changing-language.html\" rel=\"nofollow noopener\" target=\"_blank\">ttn-es-57<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El progreso impulsa la tecnolog\u00eda hacia adelante. Pero el progreso tambi\u00e9n tiene un costo: al agregar nuevas capacidades<\/p>\n","protected":false},"author":1,"featured_media":252017,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[4657,4656,4661,2545,4664,34683,4662,25733,4668,246,4667,36,4654,4658,4659,4653,4655,23651,231,4663,387,4666,4665,11116,4660],"class_list":["post-252016","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tecnologia","tag-actualizaciones-ciberneticas","tag-actualizaciones-de-seguridad-cibernetica","tag-ataques-ciberneticos","tag-cambiar","tag-como-hackear","tag-desarrolladores","tag-filtracion-de-datos","tag-idioma","tag-la-seguridad-informatica","tag-las","tag-las-noticias-de-los-hackers","tag-los","tag-noticias-ciberneticas","tag-noticias-de-hackers","tag-noticias-de-pirateria","tag-noticias-de-seguridad-cibernetica","tag-noticias-de-seguridad-cibernetica-hoy","tag-odian","tag-por","tag-programa-malicioso-ransomware","tag-que","tag-seguridad-de-informacion","tag-seguridad-de-la-red","tag-versiones","tag-vulnerabilidad-de-software"],"_links":{"self":[{"href":"https:\/\/teknomers.com\/es\/wp-json\/wp\/v2\/posts\/252016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/teknomers.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/teknomers.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/teknomers.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/teknomers.com\/es\/wp-json\/wp\/v2\/comments?post=252016"}],"version-history":[{"count":0,"href":"https:\/\/teknomers.com\/es\/wp-json\/wp\/v2\/posts\/252016\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/teknomers.com\/es\/wp-json\/wp\/v2\/media\/252017"}],"wp:attachment":[{"href":"https:\/\/teknomers.com\/es\/wp-json\/wp\/v2\/media?parent=252016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/teknomers.com\/es\/wp-json\/wp\/v2\/categories?post=252016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/teknomers.com\/es\/wp-json\/wp\/v2\/tags?post=252016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}