Contenido
Buscar
Computación
Computación: En 10 años la Inteligencia Artificial reemplazará a los programadores humanos
La realidad que Applegate predice de hecho existe en alguna medida desde hace tiempo, y no porque la IA haya tomado por asalto la programación de computadoras.
// ——————————————————————————————————————————-
// PHOTOSWIPE
var initPhotoSwipeFromDOM = function(gallerySelector) {
// parse slide data (url, title, size …) from DOM elements
// (children of gallerySelector)
var parseThumbnailElements = function(el) {
var thumbElements = el.childNodes,
numNodes = thumbElements.length,
items = [],
figureEl,
linkEl,
size,
item;
for(var i = 0; i < numNodes; i++) {
figureEl = thumbElements[i]; //
// include only element nodes
if(figureEl.nodeType !== 1) {
continue;
}
linkEl = figureEl.children[0]; // element
size = linkEl.getAttribute(‘data-size’).split(‘x’);
// create slide object
item = {
src: linkEl.getAttribute(‘href’),
w: parseInt(size[0], 10),
h: parseInt(size[1], 10)
};
if(figureEl.children.length > 1) {
//
item.title = figureEl.children[1].innerHTML;
}
if(linkEl.children.length > 0) {
// thumbnail element, retrieving thumbnail url
item.msrc = linkEl.children[0].getAttribute(‘src’);
}
item.el = figureEl; // save link to element for getThumbBoundsFn
items.push(item);
}
return items;
};
// find nearest parent element
var closest = function closest(el, fn) {
return el && ( fn(el) ? el : closest(el.parentNode, fn) );
};
// triggers when user clicks on thumbnail
var onThumbnailsClick = function(e) {
e = e || window.event;
e.preventDefault ? e.preventDefault() : e.returnValue = false;
var eTarget = e.target || e.srcElement;
// find root element of slide
var clickedListItem = closest(eTarget, function(el) {
return (el.tagName && el.tagName.toUpperCase() === ‘FIGURE’);
});
if(!clickedListItem) {
return;
}
// find index of clicked item by looping through all child nodes
// alternatively, you may define index via data- attribute
var clickedGallery = clickedListItem.parentNode,
childNodes = clickedListItem.parentNode.childNodes,
numChildNodes = childNodes.length,
nodeIndex = 0,
index;
for (var i = 0; i = 0) {
// open PhotoSwipe if valid index found
openPhotoSwipe( index, clickedGallery );
}
return false;
};
// parse picture index and gallery index from URL (#&pid=1&gid=2)
var photoswipeParseHash = function() {
var hash = window.location.hash.substring(1),
params = {};
if(hash.length < 5) {
return params;
}
var vars = hash.split('&');
for (var i = 0; i < vars.length; i++) {
if(!vars[i]) {
continue;
}
var pair = vars[i].split('=');
if(pair.length getThumbBoundsFn section of documentation for more info
var thumbnail = items[index].el.getElementsByTagName(‘img’)[0], // find thumbnail
pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
rect = thumbnail.getBoundingClientRect();
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width};
}
};
// PhotoSwipe opened from URL
if(fromURL) {
if(options.galleryPIDs) {
// parse real index when custom PIDs are used
// http://photoswipe.com/documentation/faq.html#custom-pid-in-url
for(var j = 0; j < items.length; j++) {
if(items[j].pid == index) {
options.index = j;
break;
}
}
} else {
// in URL indexes start from 1
options.index = parseInt(index, 10) – 1;
}
} else {
options.index = parseInt(index, 10);
}
// exit if index not found
if( isNaN(options.index) ) {
return;
}
if(disableAnimation) {
options.showAnimationDuration = 0;
}
// Pass data to PhotoSwipe and initialize it
gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);
gallery.init();
};
// loop through all gallery elements and bind events
var galleryElements = document.querySelectorAll( gallerySelector );
for(var i = 0, l = galleryElements.length; i < l; i++) {
galleryElements[i].setAttribute('data-pswp-uid', i+1);
galleryElements[i].onclick = onThumbnailsClick;
}
// Parse URL and open gallery if it contains #&pid=3&gid=1
var hashData = photoswipeParseHash();
if(hashData.pid && hashData.gid) {
openPhotoSwipe( hashData.pid , galleryElements[ hashData.gid – 1 ], true, true );
}
};
// execute above function
initPhotoSwipeFromDOM('.my-gallery');
// ======================================
// FIN SCRIPTS PHOTOSWIPE
// ======================================
CIUDAD DE MÉXICO (apro).-El fundador del Club de la Computación Creativa, Mathew Applegate, ha dicho: “Estoy enseñando a la última generación de programadores. Estamos esperando que la Inteligencia Artificial nos desplace muy pronto” (https://www.bbc.com/news/uk–england–suffolk–68228209). Y la declaración de Applegate tiene sentido de cierta manera, pues hoy la IA está entrando en prácticamente todos los dominios de la actividad humana: música, literatura, video, animaciones, imágenes, juegos, etcétera.
Por ejemplo, hoy tenemos –cuando se trata de imágenes– de sistemas automáticos que pueden generar prácticamente fotografías de personas, objetos, fondos, en la posición que queramos, sonriendo, enojados, etcétera. De pronto la generación de todas estas imágenes deja en claro que la creatividad se está acercando a la IA a pasos agigantados. Lo mismo puede verse en los videos, o en combinaciones de fotos que se convierten en videos donde se ven a dos personas que nunca se han visto, abrazándose o mejor aún, videos donde una persona de cierta edad abraza a su propio yo con 20 años más. Vamos, la realidad digital está haciendo cosas increíbles e inesperadas.
Sin embargo, todo esto se debe al desarrollo de herramientas de la IA, particularmente de las redes neuronales, que gracias al acceso de millones de datos, muchos temas y problemas imposibles de resolver hace 40 años sean hoy una realidad. Por ejemplo, a finales de los años 80s del siglo pasado, se quería escribir software que pudiese leer una nota periodística y convertirla en un resumen. La tarea es ingrata porque tiene que ver con información del mundo exterior, es decir, qué es lo que le importa a las personas que leen una nota en particular. Por ello la tarea se veía sino imposible, muy difícil.
No obstante esto, es evidente que si el cerebro humano puede hacer resúmenes, debe haber alguna manera para que la máquina lo resuelva y entonces entra la IA generativa, que toma un sinfín de datos y de alguna manera los cataloga y enlaza con otros brincándose así el problema de la información del mundo exterior. El resultado es que tenemos hoy sistemas que permiten –con bastante precisión– hacer resúmenes de notas del periódico.
Pero si nos acercamos a la programación, no sé si el panorama es tan simple. La realidad es que desde hace muchos años se ha buscado que las propias máquinas generen su propio software pero hasta ahora los resultados son ínfimos. Y es que la lógica de programación tiene un nivel de abstracción que permite a los programadores a escribir el código que haga una tarea en particular. Desde luego, si buscamos un pedazo de código que haga una tarea rutinaria, lo más probable es que hasta chatGGPT pueda danos con una solución bastante aproximada a lo que necesitamos, y eso ya de por sí es una gran ayuda.
El asunto es que en la medida que los programas de computadora se hacen más sofisticados, más neuronas tienen que aplicar los programadores y por ende, los resultados que puedan dar los sistemas automáticos serán –al menos por un largo tiempo– meras aproximaciones. De hecho, no imagino a una máquina escribiendo un sistema como Waze o Google Maps, que requiere de tanta interacción de diversas partes de la tecnología, computadora y/o teléfono móvil, acceso a GPS, acceso por ende a tres satélites para que ubiquen nuestra posición en tiempo real, así como también todo un sistema gráfico que permita desplegar los mapas de las calles, aquellas que muestran más tráfico o las calles por las que podemos llegar a nuestro destino más rápidamente y eso sin contar con sistemas inteligentes que tracen las mejores rutas. Este problema es atacado por un grupo de programadores y habla de las dificultades que significa conjuntar tanta tecnología en un producto de software.
La realidad que Applegate predice de hecho existe en alguna medida desde hace tiempo, y no porque la IA haya tomado por asalto la programación de computadoras. Ya hay cientos de miles de bibliotecas para ayudar a los programadores a no inventar el hilo negro una vez más: ¿Que se necesita un editor de textos tipo block de notas? Simple, ya hay más de una biblioteca con todas las funciones necesarias para hacer esta tarea en media hora. ¿Que necesitamos un programa que dibuje diferentes tipos de gráficas en la pantalla? Existen decenas de bibliotecas para ejecutar esta tarea. Así que dicho de otra manera, la propia ciencia de la computación se ha encargado de crear todo el código necesario, con los mecanismos adecuados para poderlo re-usar, ahorrándonos mucho trabajo.
Lo que sí podrá pasar en un futuro no muy lejano será probablemente lo que dice Applegate: “Están entrenando la IA en el repositorio de GitHub, en donde hay miles y miles de líneas de código, muchas de ellas muy bien escritas y muchas otras muy malas, pero en donde la IA será capaz de determina las mejores prácticas a usar”.
Quizás no hay que ver con temor estos desarrollos. Bien podríamos tener más tiempo libre los seres humanos y poner a las máquinas a trabajar esos algoritmos que se harán falta en el futuro.
Comentarios
Otras Noticias
// autoTrigger on scroll until after the third request is loaded
$(‘.scroll’).jscroll({
autoTriggerUntil: 3,
loadingHtml: ‘Cargando mas noticias… ‘,
nextSelector: ‘.boton-ver-mas’,
});
window._taboola = window._taboola || [];
_taboola.push({
mode: ‘thumbnails-a-3×2’,
container: ‘taboola-mobile-below-article-thumbnails’,
placement: ‘Mobile Below Article Thumbnails’,
target_type: ‘mix’
});
// Obtener todos los elementos con clase .col-md-12
var colElements = document.querySelectorAll(‘.col-md-12’);
// Iterar sobre cada elemento
colElements.forEach(function(element) {
// Verificar si tiene un hijo inmediato con clase .titulo-region
var tituloRegion = element.querySelector(‘.titulo-region’);
if (tituloRegion) {
// Agregar la clase .is-sticky al elemento padre
element.classList.add(‘is-sticky’);
}
});
// Obtener el elemento article dentro de .fila-especial-v2 .p50
var articleElement = document.querySelector(‘.home .fila-especial-v2 .p50 article’);
// Obtener el texto del elemento .z-foto .bajada p
var bajadaText = articleElement.querySelector(‘.z-foto .bajada p’).textContent;
// Crear un nuevo elemento para mostrar el texto obtenido
var textoElement = document.createElement(‘p’);
textoElement.textContent = bajadaText;
// Obtener el elemento .z-txt .titulo dentro del article
var tituloElement = articleElement.querySelector(‘.z-txt .titulo’);
// Insertar el nuevo elemento al final del article
articleElement.appendChild(textoElement);