;(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; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // 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(); })();
  • AssineUOL
Topo

George Boole Matemático inglês

2 de novembro de 1815, Lincoln (Inglaterra)

8 de dezembro de 1864, Cork (Irlanda)

Da Página 3 Pedagogia & Comunicação

05/06/2009 03h58

Filho de família modesta, George Boole estudou por conta própria, dedicando-se ao aprendizado do grego e do latim. Dos 16 aos 34 anos ensinou em escolas elementares, dirigindo, por vários anos, a que ele próprio fundou. Mostrou grande interesse pela matemática e leu as obras de alguns mestres, como Laplace e Legendre.

Percebendo a importância da teoria dos invariantes, escreveu, a propósito, um trabalho para o Jornal Matemático de Cambridge. Publicou, em seguida, uma série de trabalhos, recebendo, em 1844, a Royal Medal. Em 1849 foi nomeado professor de matemática do recém-fundado Queen's College, de Cork, na Irlanda.

George Boole é um dos iniciadores da moderna lógica simbólica. Pensador cheio de idéias originais, suas obras não foram, a princípio, bem acolhidas. No entanto, muito cedo se mostraram fecundas, lançando as bases do que viria a ser uma disciplina autônoma.
 

Invariantes algébricos

Em 1841, Boole colocou o resultado que Lagrange encontrou sobre os invariantes como caso particular de um teorema a propósito de invariantes algébricos: uma transformação linear homogênea das variáveis, em uma forma quadrática, leva a uma nova forma, cujo discriminante é igual ao da forma original - excetuado um fator que só depende dos coeficientes da transformação.

Esse teorema é considerado como o ponto de partida da teoria dos invariantes algébricos. E o estudo levado a efeito por Boole, valendo-se de operadores diferenciais lineares, conduziu à grande síntese de Lie: invariantes são funções que permanecem inalteradas nas transformações infinitesimais de certos grupo.

Há um pensamento norteador na produção de Boole, tanto em lógica quanto em matemática: o trabalho matemático depende de um tratamento formal dos símbolos, desconsiderados os seus significados - idéia que acabaria conduzindo Boole à tentativa de ajustar o padrão matemático às relações de caráter lógico.

Através de um simbolismo apropriado, inspirado na álgebra, Boole esboça um processo para exprimir as conexões lógicas em termos de equações. o a o, o matemático cria uma álgebra das classes que difere, em essência, das versões comuns da álgebra moderna.

Boole mostra de que modo as fórmulas do seu sistema assumem formas mais simples que as da álgebra comum, particularmente em virtude da lei x2 = x. Essa lei, que provocou o espanto de seus predecessores, não constituiu obstáculo para Boole, na sua tentativa de construir analogias sugestivas.

Em verdade, dizia ele, a lei podia receber uma interpretação quantitativa, bastando fazer x = 1 ou x = 0. Nesse caso, 1 seria o "universo" (o "universo do discurso", como seria mais tarde denominado).

Reduzindo a lógica à matemática, Boole inspirou o movimento logicista, defendido por Bertrand Russell e seus discípulos, que sustentaria o oposto, ou seja, que a matemática não aria de um prolongamento da lógica. De qualquer forma, a aproximação entre matemática e lógica resultaria em benefícios consideráveis para as duas disciplinas.

As opiniões variam quanto à significação dos trabalhos de Boole para a lógica. Alguns autores dão grande valor às suas realizações. De outra parte, há os que não apreciam a sua abordagem e as técnicas utilizadas. Para Bertrand Russell, Boole "descobriu a matemática pura" com seu livro As leis do pensamento.
 

Enciclopédia Mirador Internacional