segunda-feira, 22 de junho de 2009

Teoria ou sistema expositivo?

Hoje falarei, de forma resumida, sobre um artigo chamado "Teoria ou sistema expositivo?" de Arnlod Schoenberg.
No começo do artigo há uma comparação entre um músico e um marceneiro, feita do ponto de vista do método de ensino. A comparação, na verdade, é baseada numa discussão sobre qual é a melhor maneira de se ensinar, de forma prática ou teórica. As duas profissões são usadas mais a nível de exemplificação. 
O começo do texto tem a afirmação de que quem ensina composição musical é "professor de teoria", mas se escrever um tratado de harmonia é chamado de "teórico". Já o marceneiro não pode ser chamado de "professor de teoria", pois apresenta um trabalho mais prático, podendo assim, talvez, ser chamado de "mestre em marcenaria". Mas por que um marceneiro não pode ser "teórico" e um mestre musical não pode ser "mestre de música"? Isso porque o teórico musical, como o nome sugere, não é muito chegado a trabalho prático. Com isso, mesmo hoje em dia tendo alguns artistas sendo chamados de mestres, essa é uma colocação errônena, por esse termo está voltado para o ensino prático. Ao contrário de alguém que faz composição musical, o marceneiro está voltado ao trabalho prático.
O poder que o teórico necessita para consolidar uma insustentável posição procede de sua aliança com a estética, com isso, as vatangens que a estética oferece ao teórico são compensadoras ao ponto dele não se preocupar com isso. Mas a forma como são realizadas essas estéticas é de uma maneira primitiva, assim, não se consegue expressar mais do que belas frases. Mas aí tem um ponto curioso: os teóricos querem usar suas teorias para que sirvam como estética prática. Mas essas teorias não estão construídas de forma que os julgamentos estéticos surjam como consequência de seus princípios básicos. Pelo contrário, não se encontra nenhuma coerência.

sexta-feira, 29 de maio de 2009

Hoje falarei de duas linguagens de programação: Clipper e Fortran

CLIPPER
É uma linguagem de programação de alto nível e orientada a objetos. No começo essa linguagem era interpretada, mas depois virou uma linguagem compilada. Com isso os programas obtiveram maior velocidade de execução, passaram a não precisar de um software específico para execução. Além disso, por usar um compilador, o código-fonte ficou protegido, ficando apenas no poder do criador. A desvantagem com essa evolução foi que aumentaram as dificuldades de correção nos erros dos programas.
Dizem que o Clipper surgiu por volta de 1985 quando dois amigos estavam discutindo sobre o fato da Ashton-Tate se recusar a criar um compilador para o seu principal produto e que a velocidade de processamento do Dbase era muito baixa. Revoltados, esses dois amigos resolveram fundar uma empresa e criar um compilador. Esse compilador foi o Cilpper.
Uma coisa importante sobre a linguagem é o Projeto Harbour. O Harbour é um compilador multi-plataforma para Clipper que difere dos outros por ser um software livre. Ele também tenta remover alguns limites impostos pela implantação original, mas a extensão irá depender da plataforma.
Essa linguagem é normalmente usada para programas de banco de dados. Algumas de suas características são IDE gráfica, geração de executáveis que utilizam memória, pré-processador de código-fonte, compiladores de alta performance, depurador interativo, dentre outras coisas.
Uma de suas vantagens é que seus compiladores geram arquivos que são considerados minúsculos e extremamente rápidos.

FORTRAN
O nome Fortran vem de "FORmula TRANslation". O Fortran foi a primeira linguagem de alto nível da história e também possui suporte para orientação a objetos.
Foi desenvolvida por uma equipe da IBM chefiada por John Backus em 1957. Apesar de ser uma linguagem de alto nível, é considerada arcaica quando comparada a linguagens mais modernas, além de erros de escrita poderem levar a erros durante o tempo de execução em vez de compilação.
O Fortran permite a criação de programas que primam pela velocidade de execução. Daí reside seu uso em aplicações científicas computacionalmente intensivas como meteorologia, oceanografia, física, astronomia, geofísica, engenharia, economia etc.
Foram feitas várias versões do Fortran ao longo de sua história, são elas:
 FORTRAN IV: surgiu em 1966, por isso também é chamada de Fortran 66, na época que foi lançada se tornou a linguagem mais usada pela comunidade científica.
 FORTRAN 77: sua principal característica são as regras de alinhamento das linhas do programa, herança dos cartões perfurados.
 FORTRAN 8X: trouxe como novidade alocação dinâmica de dados, subprogramas recursivos, controle de exceção e e estabelecimento de módulos.
 FORTRAN 90: trouxe uma novidade para o mundo das linguagens de programação: mecanismos para manipulação de arranjos, que não são oferecidos por nenhuma outra linguagem. Essa versão é tão eficiente quanto o C e o Pascal.
 FORTRAN 95: acrescentou algumas alterações em relação ao FORTRAN 90 com a intenção de aproximar o padrão de linguagem para um modelo usado em computadores com arquiteturas avançadas.

O texto descrito acima foi baseado nas informações contidas na página da Wikipedia que fala sobre essas duas linguagens de programação.

segunda-feira, 25 de maio de 2009

Sobre 3 disciplinas do curso

Falarei de 3 disciplinas que considero importante no curso de ciências da computação, com suas respectivas ementas e direi em qual desafio do SBC, que citei em postagens anteriores, elas estão relacionadas.
Só lembrando, os desafios do SBC são:
1) Gestão da informação em grandes volumes de dados multimídia distribuídos
2) Modelagem computacional de sistemas complexos artificiais, naturais e sócio-culturais e da interação homem-natureza.
3) Impactos para a área de computação da transição do silício para novas tecnologias.
4) Acesso participativo e universal do cidadão brasileiro ao conhecimento.
5) Desenvolvimento Tecnológico de Qualidade: sistemas disponíveis, corretos, seguros, escaláveis, persistentes e ubíquos.

PROGRAMAÇÃo ORIENTADA A OBJETOS
A programação orientada a objetos (POO) é uma forma especial de programar, pois com ele nós programamos de uma forma que aproxima o mundo virtual ao mundo real, facilitando o compreendimento.
Ementa: Fatores de Qualidade do software. Técnicas de modularização e decomposição de software. Tipos abstratos de dados. Paradigma de programação orientado a objetos. Referências e Ponteiros. Classes e instâncias. Tipos e Subtipos. Herança e reuso de código. Mecanismos de Classificação: classes abstratas e interfaces. Vinculação dinâmica e polimorfismo de herança. Tratamento de Exceções. Uma linguagem orientada a objetos (por exemplo, Eiffel, C++, Pascal com objetos ou Java). Classes essenciais da biblioteca padrão da linguagem. Interfaces gráficas com o usuário. Ambiente integrado de desenvolvimento. Padrões de Codificação. Noções de testes. Ferramentas de testes e depuração. Documentação de programas. Noções de padrões de projeto. Aplicações.
Essa disciplina está associada ao desafio número 2 proposto pela SBC.

INTELIGÊNCIA ARTIFICIAL
A inteligência artificial dedica-se a buscar métodos que simulem a capacidade humana de pensar problemas.
Ementa: Conceitos básicos. Solução de Problemas: revisão de estratégias de busca, buscas heurísticas, comparação de estratégias, aplicação de busca em jogos. Representação do Conhecimento: construção de bases de conhecimento, uso da lógica em IA. Noções de Planejamento. Raciocínio: regras de produção, baseado em situações incertas, baseado em casos. Aprendizado de Máquina Simbólico: indução de árvores de decisão, aprendizagem não-supervisionada e aprendizagem por reforço. Aplicações de IA. Trabalho prático.
Essa disciplina também está associada ao desafio número 2.

ARQUITETURA DE COMPUTADORES
A arquitetura de computadores é bem semelhante à arquitetura que conhecemos sem estar relacionada à computação
Ementa: Representação de números em ponto fixo e ponto flutuante. Noções básicas de arquitetura e organização de computadores: organização básica da UCP e variações; modos de endereçamento, conjunto de instruções. Noções de linguagem de máquina. Elementos básicos de hardware e execução de instruções em uma máquina hipotética simples. Noções básicas de entrada e saída, sistemas de interrupção e acesso direto a memória. Noções de software básico. Medidas de desempenho. Processadores CISC e RISC, Organização de processadores: bloco operacional e bloco de controle. Organização de “Pipelines”, Máquinas Superescalares. Organização de memória: memória cache, memória virtual. Multiprocessadores. Multicomputadores. Arquiteturas paralelas e não convencionais.
Como as anteriores, essa disciplina também está associada ao desafio número 2, abrangendo um pouco do número 5 também.

domingo, 10 de maio de 2009

Novidades de Hardware

A Maingear Computers anunciou um novo desktop, feita especialmente para quem gosta de jogos pesados e gosta de jogá-los em resolução máxima. Trata-se do Maingear F131. O mais espantoso desse desktop é o seu suporte para 2 placas gráficas ATI 4890 em CrossFireX com 1GB de memória, além de até incríveis 8TB de capacidade. 

Mas para um desktop com todos esses requisitos, é claro que precisa de algo muito potente para resfriar as peças, pois pelas suas configurações, devem aquecer muito.  É por isso que ele dispõe de um sistema de resfriamento líquido Domino ALC da CoolIT Systems.

Com essa novidade, para quem gosta de jogos ou outros softwares que necessitem de grande poder no processamento de imagens, terá à disposição um desktop com suporte para duas placas de vídeo, o que irá melhorar consideravelmente o desempenho.

Notícia retirada do site: http://digitaldrops.com.br/drops/2009/05/maingear-f131-um-desktop-para-games-com-2-placas-graficas.html


domingo, 3 de maio de 2009

Projetos de lei sobre computação

Falarei sobre, talvez, o projeto de lei mais discutido da área de informática dos últimos tempos: PL 607/2007

PLS - PROJETO DE LEI DO SENADO, Nº 607 de 2007
Ementa: Dispõe sobre a regulamentação do exercício da profissão de Analista de Sistemas e suas correlatas, cria o Conselho Federal e os Conselhos Regionais de Informática e dá outras providências.

Com esse projeto de lei fica obrigatório que os programadores em geral necessitem de diploma para ter um emprego. Então, comecemos a discussão...
Bom, temos outras áreas como medicina, direito, engenharia civil e tal, nessas áreas o profissional começa a se formar a partir do momento em que ele passa no vestibular e ingressa na faculdade. A partir daí ele irá aprender o que ele necessita para ser um bom profissional, arranjar um emprego e ganhar seu dinheirinho, certo? Mas tem um ponto importante aí, quais dessas pessoas que escolhem essas áreas citadas anteriormente (não apenas essas, citei apenas essas para exemplificar) já procuraram conhecimento para sua vida profissional antes de entrar na faculdade?
Pois é, na computação é assim, quando você começa um curso de computação hoje em dia, geralmente você encontra muitas pessoas que já sabem pelo menos uma linguagem de programação, ou seja: autodidatas. E computação é isso, apesar de ser uma área nova em relação ás citadas anteriormente, é considerada a área do futuro, pelo avanço da tecnologia e tal. 
Além disso, o vasto conteúdo e apostilas relacionadas à computação disponíveis na internet contribui para a formação de autodidatas. Digo assim até porque sou um, estudo programação e lógica desde o ensino médio, mas nunca fiz nenhum curso técnico nem nada, outro fator importante para formação de melhores profissionais precoces, como posso dizer.
Se esse projeto de lei for realmente aceite, com certeza irá aumentar a burocracia e dificultar que empresas contratem bons profissionais. Isso porque, existem programadores não formados que podem até ser melhores que os não formados, então com essa lei sendo aprovada, ia beneficiar um cara só porque ele tem diploma.
Vejamos alguns exemplos de grandes nomes da informática: Brian Kernighan (um dos criadores das linguagens C, AWK e de utilitários do Unix), Dennis Ritche (um dos criadores da linguagem C e do Unix, além de contribuir pro Plan9), Donald Knuth (pai da análise de algoritmos), Andrews S. Tanebaum (criador do MINIX), John Backus (criador da linguagem Fortran) e finalmente John Von Neumann (pioneiro da computação). Grandes nomes, hein? E se eu disesse que nenhum deles é formado em Ciências da Computação? Eles são formados em cursos da área de física e matemática.

É bom saber que muitos estão se posicionando contra esse projeto de lei. Ninguém menos que a SBC (Sociedade Brasileira de Informática) está se posicionando contra o projeto. A SBC está discutindo o tema desde a sua criação (em 1978), ela diz que se a lei for aprovada, pode levar a uma indevida alorização da posse de um diploma em detrimento da posse do conhecimento, que é a habilitação que ele deveria prover.
A SBC é responsável também por ter criado o PL 1561/2003, uma lei que foi aprovada por seu Conselho em dezembro de 2002 e dispõe sobre a regulamentação das profissões na área de Informática e suas correlatas e assegura ampla liberdade para o respectivo exercício profissional.

A SBC também apoia o PL-815/1995, que dispõe sobre a regulamentação do exercício das profissões de Analista de Sistemas e suas correlatas, cria o Conselho Federal e os Conselhos Regionai de Informática e dá outras providências.
Esse projeto tem apoio da SBC porque ela acredita que o conhecimento é um direito de qualquer pessoa e este poder pode ser usado por quem o tem. Além disso, a SBC também acha que o mercado consumidor tem e deve ter o direito de escolher os profissionais pelo seu talento.

segunda-feira, 20 de abril de 2009

Configurando meu computador

PROCESSADOR
Também chamado de unidade central de processamento (UCP ou, em inglês, CPU), é um chip de silício responsável pelas tarefas do computador. Ele executa instruções que são dadas pelos programas e as executa. 
 O processador é composto de unidade lógica e aritmética, que executa operações de cálculo de e lógicas, unidade de controle, responsável pelas tarefas de controle das ações a serem realizadas pelo computador.
 Ele é encaixado no soquete da placa mãe e cada soquete possui um modelo diferente, sendo assim, não se pode instalar qualquer procesasdor em qualquer placa mãe.
 
MEMÓRIA
São as responsáveis pelo armazenamento de dados e instruções em forma de sinais digitais. Existem dois tipos de memória, as primárias e as secundárias.
 MEMÓRIA PRIMÁRIA: São as que o processador pode endereçar diretamente, fornecendo tipo uma ponte para a secundária. Esse tipo de memória armazena dados temporariamente. Dessa categoria fazem parte a memória RAM, memória ROM, memória cache e os registradores.
  MEMÓRIA RAM: É a abreviatura de Random Access Memory (memória de acesso aleatório). Essa memória permite tanto leitura como regravação de dados e pelo fato de ser volátil, quando o computador é desligado a memória RAM perde todos os seus dados
  DRAM: São memórias do tipo dinâmico baseadas na tecnologia de capacitores. Essas memórias podem comportar uma grande quantidade de dados, mas seu acesso é mais lento que os da memória SRAM.
  SRAM: São memórias do tipo estático baseadas na tecnologia de transistores. São muito mais rápidas que as memórias DRAM apesar de armazenarem menos dados.
  MEMÓRIA ROM: A memória ROM, que é sigla de Read Only Memory (memória somente de leitura), é um tipo de memória destinada apenas a leitura, como o nome sugere. Não é possível armazenar mais nenhuma informação senão as que já vêm embutidas nele quando saem da fábrica. 
  PROM: Foi um dos primeiros tipos de memória ROM, seus dados não podem ser apagados nem alterados.
  EPROM: É um tipo de memória ROM que geralmente é usada para armazenar a BIOs do computador. Como avanço em relação ao modelo PROM, essas memórias permitem a regravação de dados através de um aparelho especial.
  EEROM ou EAPROM: Memória similar à EPROM. A diferença entre eles é que a EPROM pode ter seu conteúdo apagado por raios ultravioletas enquanto as EEPROM pode ser por uma voltagem específica nos seus pinos de entrada.
  MEMÓRIA CACHE: Apesar de rápida, a memória RAM não consegue acompanhar o processador em termos de velocidade, para resolver esse problema criou-se a memória cache, que nada mais é do que uma pequena quantidade de memória SRAM embutida no processador. Ela armazena as informações mais utilizadas pela memória RAM com a finalidade de aumentar a velocidade do processo. O processador procura primeiro as informações na memória cache, se a informação não estiver lá, ele vai buscar na memória RAM.
  Os processadores trabalham com dois tipos de cache, L1 e L2. Ambos trabalham na mesma frequência do processador apesar, mas o cache L2 está mais distante do núcleo do processador, o que aumenta o tempo de latência e diminui a velocidade de acesso.
  REGISTRADOR: É um tipo de memória encontrada na unidade central de processamento. Apesar de possuir uma pequena capacidade, é muito rápida, e é utilizada no armazenamento temporário durante o processamento. Esse tipo de memória é checado antes da memória cache.
 MEMÓRIA SECUNDÁRIA: São as que o processador não pode endereçar diretamente. As informações primeiro são encaminhadas a uma memória primária para depois serem tratadas pelo processador. Dessa categoria fazem parte os discos rígidos, CDs, DVDs e disquetes.
 Apesar de distintas, tanto a memória principal quanto a secundária realizam dois tipos de operação: leitura (recuperação da informação armazenada) e escrita (armazenamento da informação).

DISPOSITIVOS DE ENTRADA E SAÍDA
Como o nome sugere, são dispositivos responsáveis pela entrada e saída de dados. Os dispositivos de entrada codificam a informação que entra em dados que possam ser processados pelo sistema digital do computador. Já os de saída decodificam de um jeito para ser entendida pelo usuário.
 Dispositivos de entrada: teclado, mouse, microfone, joystick, pen drive,...
 Dispositivos de saída: monitor de vídeo, impressora, caixa de som, ...
 Também existem dispositivos que podem ser tanto de entrada como de saída, como gravadores de CD / DVD e discos rígidos.

BARRAMENTO
São linhas de comunicação que permitem a interligação entre a memória, o processador e os dispositivos de entrada e saída. 
 BARRAMENTO DO PROCESSADOR: Existem três tipos vias de barramento do processador: barramento de dados (onde trafegam os dados), barramento de endereços (onde trafegam endereços) e barramento de controle (sinais de controle que sincronizam as duas anteriores).
  Os barramento de dados e de controle são ditos bidirecionais, enquanto os de endereço é unidirecional. Pode-se compreender melhor a partir dessa foto:
 
 BARRAMENTO DE MEMÓRIA: É o barramento responsável pela comunicação entre a memória principal e o processador. A velocidade de transmissão de dados é medida em hertz (Hz) e quanto maior o barramento, maior é a velocidade do armazenamento.
 BARRAMENTO DE ENTRADA E SAÍDA: Permite a comunicação entre dispositivos de entrada e saída. Os mais conhecidos são PCI, AGP, PCI Express, USB, ISA, VESA.
  Dentre esses barramentos destaca-se o USB, que foi uma revolução entre os periféricos com a conexão Plug An Play (assim que o dispositivo é conectado, o computador o detecta automaticamente).

PLACA MÃE
É uma placa de circuito impresso onde estão instalados todos os componentes acima. Nela encontram-se slots que ligam os periféricos ao barramento e daí acontecem os processos descritos acima.

domingo, 12 de abril de 2009

Quais cadeiras ou áreas de concentração do curso de computação da UFS tem relação com cada um dos desafios propostos pela SBC?

 1) Gestão da informação em grandes volumes de dados multimídia distribuídos
  O transporte de dados é muito importante porque transmite informações de um aparelho a outro. Dentre os dispositivos de transporte de dados, o mais famoso é a Internet, o qual circulam milhares de dados todos os dias. Para fazer uma transferência de dados rápida e segura, é preciso conhecimento de algoritmos para se estudar o caminho em que vão percorrer os dados até chegar ao seu receptor final, assim como conhecimento em rede de computadores, pois são com as redes que ocorrem grande fluxo de dados. 
  O desafio proposto é a integração de todas essas linhas e áreas para conduzir a aplicações que possam beneficiar o contexto sócio-economico-cultural do País. Para isso tem que ter conhecimento em redes de computadores, engenharia de software, banco de dados, estrutura de dados.

 2) Modelagem computacional de sistemas complexos artificiais, naturais e sócio-culturais e da interação homem-natureza.
  É uma área que trata de modelos matemáticos e usa em outras áreas como as engenharias, ciências exatas, biológicas, humanas, economia e ciências ambientais.
  Como trata de computação, deve-se ter conhecimento de algoritmos, programação, redes.
  
 3) Impactos para a área de computação da transição do silício para novas tecnologias.
  Pelo nome percebe-se que essa área tem muito a ver com a parte de hardware, ou seja, é desenvolvida por pessoas que estudam Engenharia da Computação com o intuito de melhorar o desempenho de aparelhos do computador com o uso do silício.

 4) Acesso participativo e universal do cidadão brasileiro ao conhecimento.
  Procura relacionar mais o computador às pessoas que as usam, então deve estar relacionada à matéria de ética e sociedade.

 5) Desenvolvimento Tecnológico de Qualidade: sistemas disponíveis, corretos, seguros, escaláveis, persistentes e ubíquos.
  Tem a ver com os sistemas que são usados em aparelhos, de preferência eletrodomésticos, que precisam de um software para seu funcionamento. Além disso, por se tratar de eletrodomésticos, aparelhos que o homem tem dependência, os sistemas neles embutidos precisam ser seguros e não conter erros.
  Para garantir que não conterá erros, quem irá desenvolver esses sistemas deve ter vasto conhecimento em engeharia de software e programação. Pela parte da ubiquidade, requer-se também conhecimento em redes de computadores.  


"Nenhuma área do conhecimento humano sobrevive hoje sem a influência da computação"?

 Com certeza a computação é muito importante e está presente em todas as áreas, dentre elas, destaca-se:
 Nas áreas de exatas a importância da computação é mais perceptível, pois ajuda no essas áreas no desenvolvimento de softwares para ajudar a fazer grandes cálculos que se tornam difíceis ou até mesmo impossíveis para serem feitos por pessoas comuns.
 Na área de saúde a computação também é importante pois facilita (e muito) o trabalho do médico, dentista, fisioterapeuta, ou qualquer outro que seja.
 Na parte de música a informática também é improtante, pois hoje em dia estão aparecendo muitos softwares ligados a música, ajudando no seu desenvolvido com vários recursos que facilitam a vida do músico. Além disso, tambéme stão sendo feitos vários programas que simulam amplificadores, muito útil para pessoas que tocam instrumentos elétricos.