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.