- Primeiro, Niklaus Wirth coloca que programa = algoritmo + estrutura de dados.
- Segundo, os algoritmos de busca e ordenação são uma classe especial e muito tratada de problemas computacionais, tanto que o assunto "estrutura de dados e seus algoritmos" é em muitos casos um curso à parte.
- O Terceiro e último conceito é o pensamento mágico. Ele é complexo e envolve muito dos algoritmos ocultos no cérebro humano que definem muito daquilo que usualmente é denominado humanidade, porém esmiuçar esses algoritmos não é o nosso objetivo no presente momento.
quinta-feira, 28 de janeiro de 2016
Computação na antiguidade e renascença
quarta-feira, 21 de setembro de 2011
Aurora Consurgens
Assutos como "Indemonstrabilidade da consistência ou porque não podemos mostrar que Deus existe", "Como fazer magia" ou "Quão grande é o infinito" parecerão bastante "místicos" para a maioria das pessoas...
O texto têm versões ligeiramente diferentes, mais "religiosas" ou "místicas", dependendo da fonte. De autor desconhecido, este texto muitas vezes foi atribuído a grandes nomes do passado. Para mim é irrelevante, pois o seu texto introdutório "aurora consurgens" transmite muito bem o sentimento que acho adequado ao se tratar com a computação.
Assim, a pedido de minha namorada e de meia dúzia de amigas, ilustrei o texto com fotos de um dos leitores mais ecléticos do mesmo, o cantor Japonês Gackt que fez um ensaio fotográfico baseado na introdução do mesmo, onde é lógico, não falta o próprio livro "Ars Magna".
Então ofereço abaixo uma tradução ilustrada desse texto a meu ver computacional:
Venerunt mihi omnia bona pariter cum illa sapientia austri, quae foris praedicat, in plateis dat vocem suam, in capite turbarum clamitat, in foribus portarum urbis profert verba sua dicens: “Accedite ad me et illuminamini et operationes vestrae non confundentur; | Todos os bens vieram a mim acompanhando-a, essa sabedoria do vento sul, que clama lá fora, faz ouvir sua voz nas ruas, exorta a multidão, pronunciando suas palavras à entrada das portas da cidade: “Vinde a mim, iluminai-vos e vossas operações não vos serão mais confusas; Todos que me desejam, que sejam cumulados com minhas riquezas. Venham pois, filhos, escutem-me, eu vos ensinarei a ciência de Deus.” |
Quis sapienset et inteligit hanc, quam ALPHIDIUS dicit homines et pueros in viis et plateis praeterire et cottidie a iumentis et pecoribus in sterquilinio conculcari. Et SENIOR: Nihil ea aspectu vilius et nihil ea in natura pretiosius, et Deus etiam eam pretio emendam non posuit. | Quem é sábio pode a compreender, e dela diz ALPHIDIUS que homens e crianças passaram ao seu lado pelos caminhos e ruas, e todos os dias é pisoteada nos excrementos pelos animais de carga e gado. E SENIOR diz: Nada há na natureza de mais insignificante e de mais precioso do que ela, e Deus com ela tudo criou, e ela não pode ser comprada com dinheiro. |
Hanc SALOMON pro luce habere proposuit et super omnem pulchritudinem et salutem; in comparatione illius lapidis pretiosi virtutem illi non comparavit. Quoniam omne aurum tamquam arena exigua et velut lutum aestimabitur argentum in conspectu illis, et sine causano est. Melior est enim acquisitio eius negociatione argenti et auri purissimi. | SALOMÃO a escolheu como luz necessária, acima de toda beleza e de toda saúde, não achando que o valor das pedras preciosas pudesse se comparar ao seu. Pois todo ouro comparado a ela é como um pouco de areia e a prata como lama, e isto não é sem motivo, porquanto adquiri-la é melhor do que o rendimento do ouro e da prata mais puros. |
Intelligit eam autem sapiens et sbtilis et ingeiosus arbitrando. quando clarificati fuerint animi ex libro aggregations. Tunc omnis fluens animus squitur concupiscentiam suam, beatus qui cogitat in eloquio meo. Facilis videtur his, hilariter et in omni providentia occurrit; initium manque ipsius verissima est natura, cui nom fir fraus. | Mas só a compreenderá quem for sábio, sutil e engenhoso em suas reflexões, que possuir um espírito esclarecido pela prática do cômputo. Então todo o espírito que flui segue sua concupiscência, bem aventurado aquele que refletir sobre minhas palavras. Ela é fácil para os que a conhecem de verdade, pois ela mesma vai de encontro e cerca apenas os que são dignos; |
Fili, circumda eam gutturi tuo et scribe in tabulis cordis tui et invenies; Dic Sapientae: soror meaes et valde naturalis et subtilis eam perficiens. Et qui vigilaverint constanter propter eam, cito erunt scuri. Clara est illis intellectum habentibus et munquam marcescet nec deficiet; | Meu filho, coloca-a como em torno do pescoço, escreve-a nas tabelas de seu coração, compile-a e encontrarás. Diz a sabedoria: Você é minha irmã! E diga a prudência que ela é sua amiga. E apenas aqueles que tiverem perseverado na vigília por causa dela, logo estarão em segurança. Ela é clara para aqueles que possuem verdadeira inteligência, não murcha e jamais desaparece. |
Et HERMES atque ceteri (philosophi) inquiunt, quod si viveret homo habens hanc scientiam milibus annis, omnique die deberet septem milia hominum pascere, numquam egeret. Hoc affirmat SENIOR dicens: quia esset ita dives, sicut ille, qui habet lapidem, do quo elicitur ignis, que potest dare ignem cui vult et inquantum vult et quando vult sine suo defectu. | E HERMES e os demais filósofos dizem que se um homem dominando esta ciência vivesse mil anos e precisasse alimentar diariamente sete mil homens, jamais passaria necessidade. É o que confirma SENIOR ao dizer: Ele seria tão rico como aquele que possui a pedra da qual se extraí o fogo, e assim ele pode dar fogo a quem quiser, quanto quiser e quando quiser, sem qualquer perda pessoal. |
Hanc gloriosam scientiam Dei et doctrinam snctorum et scretum philosophorum ac medicorum despiciunt stulti cum ignorent quid sit. Hi nolunt benedictionem et elongabitur ab eis nec decet imperitum scientia talis quia omnis, qui est eam ignorans, est eius inimicus et non sine causa. | Esta gloriosa ciência de Deus e oculta doutrina dos santos, este segredo dos filósofos e remédio dos médicos é desprezada pelos insensatos, por que eles desconhecem o que ela é. Eles desprezam a benção e assim ela permanece longe deles, tal sabedoria não convém a ignorantes; Aquele que não a conhece é seu inimigo e não sem razão. |
Derisio scientiae est causa ignorantie, nec sunt asinis dandae lactucae, cum eis sufficiant Nec tales derisores sunt participes [inclytae] huius scientiae: hic enim fractor esset sigilli coelentis qui arcana huius scientiae revelaret indignis; | Zombar desta ciência é a causa da ignorância, e não se deve alimentar os asnos com alface se eles se satisfazem com cardos; e não se deve jogar aos cães o pão das crianças, nem lançar pérolas aos porcos. Tais zombadores não partilharão desta ciência, pois quem revelasse a indignos os segredos desta ciência gloriosa romperia o selo do céu; |
Neque in grossum corpus introibit spiritus sapientiae huius nec insipiens potest eam percipere propter rationes suae pervesitatem; quia non sunt sapientes locuti inspientibus. qui enim cum insipiente loquitur cum dormiente loquitur. Si ominia vellem enodare prout se habent, nullus umquam ultra prodentiae locus esset, cum inspiens sapienti aequaretur; neque sub globo lunari aliquis mprtalium paupertate noverca | E também o espírito desta sabedoria não poderia habitar um corpo grosseiro, nem muito menos um insensato compreendê-la por causa da loucura de sua mente, os que são sábios de fato não falaram com os insensatos, pois quem fala com um insensato fala com um adormecido. Se eu revelasse como as coisas realmente se comportam, não haveria mais lugar para a prudência, pois o insensato seria igualado ao sábio e nenhum mortal sob o círculo da lua choraria mais por causa do tormento da fome causada por sua madrasta, a pobreza, pois o número dos insensatos nesta ciência é infinito. |
Referências:
Este texto também foi difundido como parte da obra “aurora consurgens”, a tradução aqui apresentada foi feita do original em latim de minha cópia do livro “Ars generalis ultima” (Ars Magna).
SALOMON (800?-880) Alquimista, não é o famoso rei hebreu. Desenvolveu uma notação posicional para números e instruções nos cômputos (do colar).
ALPHIDIUS (870?-1010?) Filósofo e alquimista sarraceno, dedicou reconhecido e valioso esforço na criação de linguagens e formalismos para expressar rotinas e procedimentos de forma “pitagórica” (lógico-computacional)
MORIENUS (960?-1020?) Sábio e alquimista a serviço do Sultão Calid do Egito. Criou famosos algoritmos e heurísticas para resolver problemas recorrentes em administração e auditoria. Ganhou fama ao salvar o reino da fome com suas conjecturas.
Hermes (Trimegistus) Hermes Trismegisto (em grego Ἑρμῆς ὁ Τρισμέγιστος, "Hermes, o três vezes grande") é o nome dado pelos neoplatônicos, místicos e alquimistas ao deus egípcio Thoth, identificado com o deus grego Hermes, era o deus do verbo e da sabedoria, sendo naturalmente identificado com Hermes. Ambos eram os deuses da escrita e da magia nas respectivas culturas. Thoth simboliza a lógica organizada do universo. Era relacionado a tudo que pode ser expresso poR operações modulares ou esteja circunscrito ao conceito dos semi-números, como ciclos lunares, cujas fases expressam a “harmonia” do universo.
Senior: Abū ‘Abd Allāh Muhammad ibn Mūsā al-Khwārizmī[1] (árabe: أبو عبد الله محمد بن موسى الخوارزمي) (Khwārizm,[2][3][4] c. 780 - Bagdad, c. 850) foi um pioneiro da computação e também matemático, astrônomo, astrólogo, geógrafo e autor persa. Conhecem-se poucos detalhes de sua vida. Era um erudito na Escola da Sabedoria em Bagdad. O nome algoritmo vem de algoritmi, a forma latina de seu nome.
Speculator: Ramon Llull (1232[1] – Junho 29, 1315) (em espanhol e português Raimundo Lulio) Foi um dos pioneiros da computação e também grande matemático e filósofo [2]. Escreveu a primeira grande obra da literatura catalã [4]. Trabalhos recentemente descobertos mostram que ele antecipou em séculos a teoria computacional de eleições [5]. Foi a maior influência computacional de Gottfried Leibniz [3]. Llull também é conhecido como um comentarista da lei Romana [1].
segunda-feira, 18 de julho de 2011
Democracia e algorítmos de agentes inteligentes autônomos
sábado, 16 de julho de 2011
Que sistema operacional utilizar?
sábado, 4 de junho de 2011
Agentes Inteligentes Autônomos
Ele é compartilhado pela computação com a economia, administração, biologia e diversas outras áreas. Compreender bem este conceito esclarece não só os assuntos, mas várias de suas relações, influências e sobreposições.
Como várias vezes os limites entre as áreas são borrados, no caso dos agentes peço uma dose adicional de paciência aos leitores.
De uma forma simplista, agente é aquele que pratica ações, aquele que age.
As descrições que aparecem no Houaiss como as conotações da palavra agente corroboram essa descrição simplista:
[dj.2g.s.2g. (sXV) 1 que ou quem atua, opera, agencia 2 que ou quem agencia negócios alheios s.2g. 3 pessoa ou algo que produz ou desencadeia ação ou efeito 4 pessoa encarregada da direção de uma agência 5 funcionário de um país estrangeiro encarregado de espionar ou executar alguma ação dentro de outro país; espião
Pode ser tão simples quanto acender a lâmpada do seu quarto, ou tão complexa quanto uma declaração de guerra.
Os AIA podem ser unitários ou complexos. Os complexos são formados pela composição, agregação ou associação de AIAs unitários.
Reflexivos simples (simple reflex agents) Reflexivos baseados em modelo (model-based reflex agents) Baseados em objetivos (goal-based agents) Baseados em utilidade (utility-based agents) Baseados em aprendizado (learning-based agents)
O conceito de armadilha é simples, uma arapuca serve bem de exemplo. Conhecendo como se comportam certas aves, uma porção de alimento é colocado como isca, e a arapuca é armada ao redor dessa isca. Se aguarda que o algoritmo de uma presa a leve para dentro da arapuca e no momento adequado a ativamos. Uma declaração também é fácil de compreender. Quando uma empresa declara que vai adquirir outra empresa de prestígio, ela conhece os algoritmos do mercado, e que as pessoas vão comprar suas ações sabendo desse fato. Note que o que se declara pode ou não ser verdade. Segredo é o antônimo da declaração. Imagine o mesmo cenário descrito para a declaração, mas agora a alta cúpula dessa empresa quer reservar para si mesma os lucros da fusão, então ela mantém segredo do fato até que suas aquisições terminem. A condução é o uso de segredos e declarações ao longo do tempo para levar os agentes para situações que se deseja. Sedução envolve além dos segredos e declarações, ameaças e promessas.
Felizmente existem as excessões. Uma delas é o Reitor da Escola Superior de Geopolítica e Estratégia, Profº Fernando G. Sampaio, que colocou de forma não computacional o que é mentira:
Se meus leitores agora sabem o que é mentira, e que ela pode ser modelada e tratada computacionalmente, eu me dou por feliz. Pretendo utilizar estes conceitos em outras postagens quando for escrever sobre gestão de pessoas, gerentes e o problema da agência (tudo sob uma abordagem computacional é claro!).
terça-feira, 31 de maio de 2011
Notação em administração de TI
Conforme visto anteriormente, expressar bem um conceito ou idéia é um problema de notação. Em minha opinião é uma demonstração de inocência a crença de que as notações existentes são suficientes para se expressar de maneira unívoca todas as nossas necessidades.
Uma demonstração da seriedade do problema é que o DARPA frustrado com a ineficácia das linguagens atuais está investindo 400 milhões de dólares na pesquisa de uma nova notação.
Para vários autores (Aritóteles, Heidegger e Habermas entre outros) a primeira característica que uma boa notação deve ter é ser denotativa, e não conotativa. Sempre que houver margem de interpretação haverá problemas. Na ausência disso, estabelecer uma semântica coerente já é um bom paliativo, e é exatamente nesse sentido que concebi esta postagem.
Como eu já citei em outra postagem, a maior parte dos usos para a palavra “sinônimo” é metafórica. As palavras são diferentes para expressar diferenças. Conotativamente elas podem ser equivalentes, mas raramente o são denotativamente. Esse fato é importante quando pretendemos ser claros, e idealmente unívocos.
Parece-me ideal começar com os componentes da denotação, visto ser a denotação a mais básica definição. Os elementos que tratarei nesta postagem apesar de sua grande abrangência, não circunscrevem o assunto, mas já darão suficiente clareza para que eu possa prosseguir a progressão das idéias nas próximas postagens.
Minha intenção é separar alguns conceitos de denotação que hoje estão embaralhados dentro de duas classes, abaixo identificadas como elementos ativos e passivos:
Elemento ativo | Elemento passivo |
Ação | Propriedade |
Serviço | Atributo |
Procedimento | Valor |
Operação | Característica |
Capacidade | Variável |
Função | Registro |
Método | Dado |
Responsabilidade | Significado |
Atuação | Domínio |
Competência | Sentido |
Processo | Parâmetro |
Quando todas as palavras significam a mesma coisa, ou quando cada palavra significa tudo, na verdade nenhuma significa nada. Qual a diferença entre um método e um procedimento? Ou entre um atributo e uma propriedade? Dado e valor não são a mesma coisa? Competência ou responsabilidade? Esses elementos são todos parecidos, porém não são iguais. Desconhecer o porquê de sua similitude e diferença é fonte de dificuldades. Tanto administradores como desenvolvedores de software falham vergonhosamente nessa compreensão (pesquisem qualquer um desses termos no google para verem o resultado!).
Os significados são circunstanciais e discricionários. Cada uma dessas palavras listadas no quadro tem uma história de interpretação. A separação que eu faço é literalmente uma arbitragem, pois em contextos e momentos históricos diferentes cada uma dessas palavras foi utilizada de forma particular. Pode parecer brincadeira, mas existe uma hermenêutica dos significados desses elementos, pois os contextos de uso podem ser (ou já foram!) perdidos.
Sendo uma arbitragem, ela não é uma verdade do tipo pela qual as pessoas se apaixonam, elas apenas podem aceitar ou não, mediante sua conveniência.
Como já escrevi um pouco acima, inevitavelmente em postagens futuras terei de me utilizar desses termos, assim é útil expor como eu compreendo e me utilizo de cada um deles.
Minha intenção com os argumentos a seguir é convencer da conveniência do uso que faço desses termos:
- O primeiro argumento nesse sentido é dar as palavras significados unívocos, em outras palavras, abolir as conotações.
- O segundo é de caráter metodológico, manter o vocabulário coerente com o contexto.
- O terceiro é epistemológico, se estabelecer uma semântica bem definida acelera e facilita a comunicação.
- Por fim, a minha intenção é estabelecer um glossário para que se possa saber o que esta sendo dito sem a necessidade de repetidas explicações adicionais.
Assim seguem algumas sugestões de significado (minhas arbitragens de sentido) que considero úteis e uma rápida indicação de onde eu obtive a interpretação:
Banco de dados não tem registros, tem tuplas. Uso assim porque na teoria de SGBD, há cálculo relacional de tuplas, álgebra relacional e basicamente não há uso do elemento registro.
Registro é uma especialização de tupla. Bons exemplos do uso são ADA, F# e Pascal.
Objetos são reais, logo método é só de objeto, nunca de classe, assim como atributo. Da teoria de orientação à objetos, principalmente COAD e SmallTalk.
Classes são sempre abstratas e têm responsabilidades e propriedades. Idem.
Parâmetros são valores em trânsito, parâmetros sempre são passados. “The art of computer programming”. Evitamos a palavra argumento pelo fato dela ter um sentido bem estabelecido em lógica e oratória.
Rotinas têm funções. A linguagem C implementa isso de forma bem explícita, pois nela não há programa nem procedimento. Essa separação pode parecer sem sentido a princípio, mas facilita por ser consistente, permitindo, por exemplo, que rotinas sejam invocadas com parâmetros. “The C Programming Language” K&R
Valor é atômico e escalar. É preferível à palavra conteúdo, pois o significado conteúdo é mais amplo, podendo ser muitas coisas além do valor. Assim é preferível dizer que uma variável tem valor e não conteúdo. Como contra-exemplo um vetor de ariedade cinco tem como conteúdo cinco valores.
Atributo é um tipo de conteúdo, ou em outras palavras, um conjunto (um ou mais) de valores.
Variável é a materialização no programa de um atributo. Apesar de em matemática se ter variáveis de funções, é mais explícita a forma de parâmetros para as mesmas, além de ser prática em programação.
Todo problema tem um domínio e competências para sua resolução. Da DDD, e do “How to solve it” do Polya.
Operação e valor para cálculo é um conceito direto da teoria matemática e da computação.
A solução tem ações e características. A explicação para isso que usei é a de Jensen.
Uma abordagem necessita de sentido e de atuação. De estratégia e projeto de algoritmos.
A necessidade sempre é atendida por serviços e significados. De orientação à serviços e pesquisa de negócios.
O que determina o aspecto são as capacidades e registro que temos dele. Da Orientação à Aspecto e ontologia da realidade.
Um fenômeno tem processo e dados, pois pode ser observado e registrado. Da fenomenologia e epistemologia.
Abaixo ofereço uma tabela com as associações da sugestão:
Contentor | Elemento ativo | Elemento passivo |
Programa | Procedimento | Variável |
Rotina | Função | Parâmetro |
Objeto | Método | Atributo |
Classe | Responsabilidade | Propriedade |
Cálculo | Operação | Valor |
Problema | Competência | Domínio |
Solução | Ação | Característica |
Abordagem | Atuação | Sentido |
Necessidade | Serviço | Significado |
Aspecto | Capacidade | Registro |
Fenômeno | Processo | Dado |
segunda-feira, 28 de fevereiro de 2011
Sobre dicionários e glossários
Acredito que para este caso, darmos uma olhada no que encontramos para estas palavras em três dicionários diferentes será bastante interessante! Usarei M: para o Dicionário Online Michaelis - UOL , D: para o dicionário online de português e P: para o Dicionário Priberam da Língua Portuguesa (DPLP).
Dicionário:
M: sm (lat dictione) Coleção de vocábulos de uma língua, de uma ciência ou arte, dispostos em ordem alfabética, com o seu significado ou equivalente na mesma ou em outra língua. Sin: léxico, vocabulário, glossário.
D: s.m. Coleção dos vocábulos de uma língua, ou dos termos próprios de uma ciência ou arte, com a significação deles, ou com a sua tradução em outra língua, ordenados alfabeticamente. (Do lat. Dictio)
P: (francês dictionnaire) s. m. 1. Colecção!Coleção organizada, geralmente de forma alfabética, de um conjunto de palavras ou outras unidades lexicais de uma língua ou de qualquer ramo do saber humano, seguidas da sua significação, da sua tradução ou de outras informações sobre as unidades lexicais. 2. Colecção!Coleção de palavras usadas habitualmente por uma pessoa, por um grupo social ou profissional, num domínio técnico, etc. = glossário, vocabulário 3. Ling. Conjunto de unidades lexicais identificadas, organizadas e codificadas.
M: glos.sá.rio sm (lat glossariu) 1 Livro ou vocabulário em que se dá a explicação de palavras obscuras ou desusadas. 2 Dicionário de termos técnicos de uma arte ou ciência. 3 Resenha alfabética.
D: .m. 1 Espécie de dicionário, consagrado particularmente à explicação de termos mal conhecidos (arcaicos, peregrinos, dialetais etc.): Glossário Luso-Asiático. 2 Léxico de um autor, que figura geralmente como apêndice a uma edição crítica: o glossário das poesias de Sá de Miranda. (V. DICIONÁRIO e VOCABULÁRIO.). 3 Em informática, utilitário de processadores de texto onde se podem registrar frases e expressões muito usadas, para rápida inserção, se necessário, no texto dos documentos.
P: s. m. 1. Vocabulário que explica termos obscuros por meio de outros conhecidos. 2. Vocabulário dos termos técnicos de uma arte ou ciência.
Conforme esperado por quem leu a minha postagem sobre denotação, há menos explicações e mais conotações. A etimologia das palavras vai nos ajudar a separá-las melhor: glosa existe em português, vem do latim, glossa. Por isso glossário tem dois “s”. M: sf (lat glossa, do gr glossa) 1 Explicação, interpretação ou comentário de um texto obscuro ou difícil de entender. 2 Comentário, anotação. s.f. Anotação que explica o sentido de uma palavra ou de um texto; comentário, interpretação.
Usando o wiktionary , temos que dicionário vem do latim dictionarium, que é uma palavra composta de dictio "Renaissance Latin, from noun of action dictiō (speaking)". E a terminação arium que é "n (genitive -āriī); second declension 1.Used to form nouns denoting an place where things are kept from other nouns. armārium (closet, chest) <>arma (weapons, tools) sōlārium (sundial, house-top)" Apesar da descrição de dicionário em M: ser fraca, a descrição de glosa é bastante clara. O sentido de explicação usado aí é bem próxima da que usei para denotação. Com dicionário é mais direto, podem ver que é uma coleção de palavras, nenhuma referência a explicações. Como citado na postagem sobre conotação, modernamente os sentidos e usos costumam se misturar.
Por conveniência, eu separo ambos nos sentidos mais usados em computação, evitando confusões e aborrecimentos: glossário é para denotações e dicionário para conotações. Reforçando, glossário define sentido (lista de atributos e capacidades) e dicionário define usos (lista de índices para outras palavras).
Esta simples separação nos permite entre outras coisas, entender por que programas como o Watson da IBM parecerem humanos para a maior parte das perguntas, podendo até mesmo competir com humanos em competições de perguntas de auditório, e fracassam mediocremente em responder perguntas que necessitem de compreensão do que está sendo perguntado; eles trabalham com dicionários, são na verdade ferramentas de mineração de textos, ponto.
Para aprenderem mais sobre soluções como o Watson, há no excelente blog do computólogo Tom Stafford "Mind Hacks" a postagem "computationally my dear watson".
Sou particularmente contrário ao hábito de se fazer dicionários em levantamento de requisitos, prefiro glossários, e não quaisquer glossários, quero glossários formais, isto é, com definições formais! Essa simples ação elimina um sem número de conflitos, retrabalhos e dores de cabeça, acelerando e tornando macia a condução do desenvolvimento.
Usar glossários também pesa muito a favor de se ter sucesso num sem número de ações administrativas. Pena que os autores de normativas e textos orientativos escrevam de forma tão conotativa e pobre.