sábado, 30 de maio de 2009

Lisp e VB.NET

Irei agora falar sobre 2 linguagens de programação distintas, com propositos distintos, começarei por LISP.

Criada por John McCarthy em 1958 o LISP é uma linguagem de programação Funcional, Procedural e Orientada a Objetos, que significa List Processing, esse nome foi dado a ela por causa do seu bastante popular LIST, estrutura de dado que deu raiz essa linguagem. O List é tudo nessa linguagem. O motivo pela qual foi criada, foi justamente para processas listas, e a idéia era criar uma linguagem que pudesse lidar com IA(Inteligencia Artificial), e realmente, esse objetivo foi bem cumprido, hoje LISP é uma linguagem muito reconhecida por isso. Outra grande sacada do LISP é que ela trata tudo como DADO, inclusive outros programas, e isso faz com que ela possa dar entrada de outro programa nela, e por essa capacidade, Lisp tem sido reconhecida como uma linguagem de alto nível ciêntifico, podendo fazer softwares complexos, softwares que até mesmo o C e Pascal naquela epoca não poderiam criar, e assim sendo caracterizada como linguagem interpratada, onde você digita uma expressão e o terminal devolve o resultado, e poderiamos classificar seus programas como "expressões". Lisp só tem 2 tipos de acesso à dados(digamos de passagem, váriaveis) que são átomos e listas. Devido ao avanço tecnológico Lisp tem sido classificada uma linguagem de fraca tipagem, devido a sua limitação de acesso a dados, e pelo fato de que uma chamada à acesso de dados é tratado como uma função. Como qualquer outra linguagem procedural, LISP é bem arcaico quanto a multitarefagem, o proprio programador é responsavel pela sincronização das funções e isso torna a multitarefagem, como diz no wikipedia "tão deselegante quanto um GOTO". Lisp também requer um alto nível de abstração, como prova disso, verifique como é feito simples operações no LISP:

(* 3 4) e isso vai resultar em 12. Agora veja a utilização de umas funções que retirei do wikipedia:
(car (quote (a b)))a e isso aí vai resultar em a.

quando você escreve (eu sou helton danilo), o LISP, separa isso por lista, uma lista com 4 átomos, então ele vai separar de acordo com o espaço, o primeiro atomo vai ser "eu" e o ultimo vai ser "danilo".

Um exemplo de aplicativos que foram criados por LISP é "Administração Automática de Armazenamento".

Agora irei falar de VB.NET, uma linguagem de altíssimo nível que utiliza como base a framework de sua criadora, a Microsoft, naturalmente essa framework vem no windows, caso você não possua o framework mais atualizado, pode adquirir ela direto do site da microsoft, totalmente de graça. À principio o IDE do VB.NET que é o Visual Studio, é pago, mas por questões de marketing, a Microsoft está liberando uma versão Expressa do Visual Studio, com apenas o VB.NET, esta é chamada de Visual Basic Express 2008, e você pode fazer download de qualquer IDE Express da microsoft AQUI. O Visual Studio é uma suite de IDEs que possui ASP.NET, C#, Vb.net, Visual C, J#, desenvolvimento para Mobiles e Pocket Pcs.
O Vb.net é uma linguagem orientada a objeto, de fácil programação, com interfaces amigáveis que propõem fazer quase todo trabalho para você, e o principal proposito do VB.NET é a programação rápida e facilidade de programação. VB.NET é uma linguagem orientada a objeto, estruturada e imperativa, por default, VB.NET possui conversão de dados implicita, o que aprimora em muito sua programação, e por esse e outros motivos, ela não necessita de um alto grau de abstração para ser programada, ao programar, o programador sente-se falando inglês com o computador. o VB.NET surgiu do Visual Basic 6, que era uma linguagem falha, como diz Monteiro, meu professor de Programação Imperativa e chefe do departamento de computação da UFS: "Visual Basic é uma linguagem igual Frankstein, foi sendo montado de pedaço de outras até o momento que foi um fracasso por completo e precisou ser reconstruida do 0, ou como queira, um suco de frutas, que você bota no liquidificador e processa todas as frutas em um suco só.".

Um bom exemplo de sistemas criados em VB.NET são os sites da plataforma ASP.NET(aqueles que terminam com .aspx), nem todo site asp.net é feito em VB.NET, mas alguns deles com certeza é, mas no fim das contas, quando você codifica um site asp.net em VB.net, o IDE da microsoft interpreta o código pra C#(linguagem nativa do IDE para Web) e compila.

segunda-feira, 25 de maio de 2009

3 Disciplinas do meu curso, e suas atuações nos desafios da SBC

Agora falarei de 3 disciplinas que estão ligadas com alguns dos desafios da SBC(Sociedade Brasileira de Computação), e claro, irei fazer a ligação entre eles.

Só pra recordar, os 5 desafios da SBC:

  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ócioculturais e da interação homem-natureza.
  3. Impactos para a área da 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.
PAA(Projeto e Analise de Algoritmos) é a disciplina que lhe ensina a fazer algoritmos cada vez mais perfeitos, sempre em busca da perfeição, para que você consiga agilidade e qualidade ao desenvolver softwares e está diretamente ligado com o 5º desafio da SBC que é "Desenvolvimento tecnológico de qualidade: sistemas disponíveis, corretos, seguros, escaláveis, persistentes e ubíquos.", mas não está ligado só a esse desafio, está ligado também a os outros 4, mas claro, com maior ênfase nesse aí.

Sistemas Distribuidos é a disciplina certa para lidar com 1º desafio da SBC, eu acredito que esse desafio seja fazer um grande banco de dados pra acesso rápido a certos tipos de dados da sociedade, assim, agilizando uma grande parte da burocracia que seria fazer isso. Na disciplina você aprende o que são sistemas distribuidos, como lidar com eles da melhor forma, como projeta-los e como dar manutenção, como não fiz a disciplina não posso dizer se é só isso ou não.

Programação Orientada a Objeto, é a disciplina que lida diretamente com a computação, por isso, ela está ligada a todos os desafios sem menor dúvida, mas a que ela está melhor adequada é ao 5º e 2º desafio.

domingo, 10 de maio de 2009

USB 3.0 tem velocidade até 5x maior, comparado com USB 2.0

Estamos na era da portabilidade, e estamos acostumados a ter as ferramentas que precisamos, aonde estivermos, tudo dentro de um PENDRIVER. Os pendrives estão em alta, bastante espaço e pequenos, mas a medida que o espaço foi aumentando de 2gb, para 4gb, para 8gb, para 16gb, para 32gb, foi percebido que o protocolo de transferência de dados adotado pelos PENDRIVES, o USB(Universal Serial Bus) 2.0, não estava alcançando a eficácia necessária para agradar os usuários de tal tecnologia. O USB 2.0 transfere a numa taxa entre 800kbs à quase 1mbs. Imagine você possuindo um pendriver de 32gb, e transferindo um arquivo de 25gb para ele, você levaria 14minutos para concluir a transferência, com o USB 3.0, você pode concluir essa transferência em até 1 minuto e 20 segundos, o que acabaria com a dor de cabeça de muita gente que quer transportar arquivos de grande tamanho, e isso só está sendo possível, por causa das grandes alterações na arquitetura do USB.

Veja essa tabela de evolução entre o protocolo USB e sua evolução de velocidade:


O consumo de energia do USB 3.0 está maior do que o 2.0, mas em compensação, seus dispositivos que são recarregados via USB, irão carregar mais rápido, e quem sabe, poderão surgir mais engenhocas que utilizem energia do USB. Veja a tabela:


A arquitetura do USB é dividida por "Tiers"(nós, ou pulos), "Host" é o dispositivo USB a ser plugado, e "HUB" é o equipamento responsável por controlar os dispositivos USB. Veja o gráfico da nova arquitetura:


Os dispositivos USB, irão ser compatíveis com os padrões anteriores, veja no gráfico a seguir como irá acontecer a distinção entre o padrão novo, e o padrão anterior:


No gráfico anterior, você vê "Host Usb 3.0", que é referente a qualquer equipamento que esteja plugado no seu computador, e que disponha da tecnologia USB 3.0, notem que dentro desse dispositivo, tem também o "Low Speed", "Full Speed", "High Speed", "Super Speed", que são equivalentes a USB 1.0, 1.1, 2.0 e 3.0 respectivamente, e depois que foi detectado corretamente qual protocolo vai ser usado, é enviado a mensagem para o "Hub Usb", que é o dispositivo controlador dos USB, e daí pra frente, ele vai tomar a decisão correta de acordo com o protocolo usado. Lembrando que o protocolo 3.0 utiliza de todos os 4 protocolos ao mesmo tempo.

Os dispositivos USB 3.0 só irão surtir efeito se acompanhados com o cabo novo, o qual tem uma arquitetura diferente também, e especulações dizem que no fim de 2009 à 2010 começará a ser comum ver este tipo de cabo por circulando nos centros urbanos...


Foto do lado A e B do cabo USB 3.0, retirada de ClipMarks

Fotos, gráficos e tabela da arquitetura retiradas da revista virtual Elektor Electronics Worldwide.

domingo, 3 de maio de 2009

Regulamentação na área da computação

Há anos essa discussão sobre a Regulamentação na área da computação existe, e de fato, é algo que deve ser analisado para assim, poder escolher o melhor caminho para a computação. Existem propostas que propõem a regulamentação do profissional da área de computação, em outras palavras, "NADA DE MULEKE DE RUA FORMATANDO COMPUTADORES POR AÍ", em geral é essa a idéia, mas não é tão simples quanto parece.

Quem vai fiscalizar tudo, e como fiscalizar?
E se for do interesse da empresa/cliente que o "profissional" não tenha diploma?
Ele não pode ter o poder de escolher quem vai trabalhar pra ele?

Sim, verdade, ele tem todo direito de escolher quem vai trabalhar na empresa dele, então essa regulamentação iria servir apenas para institutos públicos / governamentais? Provavelmente.

A minha opinião em relação é isso, é que definitivamente não deve haver uma regularização, diferente do campo da saúde, uma falha de um técnico, não vai acarretar na morte de alguém, e cabe ao cliente, escolher um profissional mais capacitado, para assim, diminuir os riscos de dano a sua maquina.

Há algum tempo eu vi uma reportagem num blog de informática, formado por uma turma de Ciência da Computação de uma universidade de Brasília, e nesse blog, existia uma entrevista com profissionais da área justamente sobre esse ponto, e o interessante, é que os próprios profissionais capacitados tinham a mesma idéia na cabeça, diziam: "Os melhores programadores antigamente, eram os meninos que acabaram de sair do ensino médio (ou correspondente da época), esses tinham o raciocínio necessário para enfrentar os paradigmas deixados pela programação", então se essas pessoas tinham a capacidade de realizar a profissão com a qualidade exigida, porque iríamos excluir elas desse mercado? Principalmente nesse mercado onde o contingente de capacitados é sempre menor que a demanda? Sinceramente, eu não consigo entender o que se passa na cabeça de alguém ao montar tal proposta.

A propósito, o blog é este aqui: http://falatec.wordpress.com/. Altamente recomendado para todos que estão na área de computação, eles também amostram umas pesquisas sobre qualidade de vida na área de TI(Tecnologia da Informação) e outros dados muito interessantes para todos envolvidos na área.