;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
Topo
Notícias

IBM pretende ter computador quântico até 2029 e traça roteiro para sistemas maiores

10/06/2025 08h31

Por Stephen Nellis

SAN FRANCISCO (Reuters) - A IBM disse nesta terça-feira que planeja ter um computador quântico prático até 2029 e apresentou as etapas detalhadas que a empresa tomará para chegar lá.

Os computadores quânticos utilizam a mecânica quântica para resolver problemas que levariam milhares de anos ou mais para os computadores clássicos.

No entanto, os computadores quânticos existentes precisam dedicar grande parte de sua capacidade para corrigir erros, de modo que não são, em geral, mais rápidos do que os computadores clássicos.

A IBM, que também disse que pretende ter um sistema muito maior até 2033, planeja construir o computador quântico "Starling" em um data center em construção em Poughkeepsie, no Estado de Nova York, e disse que ele terá cerca de 200 qubits lógicos.

Os qubits são a unidade fundamental da computação quântica, e 200 qubits seriam suficientes para começar a apresentar vantagens em relação aos computadores clássicos.

A IBM está buscando a computação quântica junto de outros gigantes da tecnologia, como Microsoft, Alphabet e Amazon, bem como uma série startups que têm levantado centenas de milhões de dólares em capital.

Todos eles estão lidando com o mesmo problema básico: os qubits são rápidos, mas produzem muitos erros. Os cientistas podem usar alguns dos qubits de uma máquina para corrigir esses erros, mas precisam ter o suficiente para fazer um trabalho útil.

A IBM mudou sua abordagem para esse problema em 2019 e diz que acredita ter encontrado um novo algoritmo que reduzirá drasticamente o número de qubits necessários para a correção de erros.

Em uma entrevista, Jay Gambetta, o vice-presidente responsável pela iniciativa quântica da IBM, disse que os pesquisadores da empresa adotaram uma abordagem diferente da que tinham antes, quando elaboravam a teoria de um método de correção de erros e depois tentavam construir um chip que correspondesse a essa teoria.

Em vez disso, a equipe quântica da IBM analisou quais chips são práticos de construir e, em seguida, criou uma abordagem de correção de erros com base nesses chips. Isso deu à IBM confiança para construir uma série de sistemas entre este ano e 2027 que, por fim, resultarão em sistemas maiores.

Notícias