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.

domingo, 19 de abril de 2009

Montando meu PC.

Bem galera, neste post, explicarei um pouco mais sobre o hardware, utilizando meu computador como referência. A princípio falarei da Motherboard ou como queira, Placa mãe. Ela é uma ASUS M2N-SLI e vocês podem fazer o download do manual neste link.

A placa mãe é um dos componentes mais importantes em um computador, tanto que todos os outros, se comunicam utilizando a placa mãe como canal e é por isso que todos os equipamentos tem que ser encaixados na nela. Mas, a placa mãe tem vários micro componentes, são esses os responsáveis por tal comportamento.

Falando em placa mãe, ouvimos muito falar de um tal de “SOCKET”, e vemos também que essa nomenclatura é utiliza nos processadores, e por quê?

Quando falamos de socket, nos referimos a um encaixe utilizado pela placa mãe para receber processadores. Esses sockets permitem a comunicação entre a placa mãe e o processador. E como vou saber se um socket de processador é compatível com uma placa mãe? Geralmente destingimos os sockets pela quantia de pinos que eles tem, processadores de sockets mais atuais como 939/940 e o AM2/AM2+ são exemplos dessa nomenclatura. Para entender melhor, os números são usados pelos processadores da INTEL, e os “nomes” são utilizados pela AMD, que não fazem questão de dizer quantos pinos tem, e até porque eles podem ter a mesma quantidade de pinos mas trabalham de forma diferente, então eles decidiram trabalhar com nomenclatura, ao contrário da Intel, que trabalha com números.

Então, quando for comprar uma placa mãe, para um processador X, você tem que estar certo de que um serve para o outro. No meu caso, placa mãe que é uma ASUS M2n-SLI como citei acima, trabalha com padrão AM2, e meu processador que é um Athlon 64 x2 5200+, o socket deste processador também é AM2 logo, a placa mãe e o processador são compatíveis.

Na placa mãe, temos outras coisas importantes para saber, por exemplo, o tipo de memória primária que a placa mãe aceita.

No que tange a Memória primária, existem vários padrões, os mais atuais são DIM(bem obsoleta já), DDR1(ou simplesmente DDR), DDR2(evolução do DDR1, mais barata e de melhor qualidade) e DDR3(entrando no mercado agora, bem rápidas porém bastante caras). Na hora que você for comprar memória para sua placa mãe, você precisa verificar qual desses modelos sua placa mãe recebe para não errar na hora da compra. Minha placa mãe aceita DDR2, e tem 4 slots para as memórias, para melhor desempenho, deve-se colocar números pares de memórias(2 memórias ou 4), explanarei futuramente o porquê.

A placa mãe também recebe encaixe de memórias secundárias que a princípio podem ser concebidas como o HARD DISK(HD). Para HD temos 3 padrões bem populares, IDE(bem obsoleto), SATA(está aos poucos deixando o mercado) e SATA II(entrando no mercado a toda força). Você tem que verificar antes de comprar memória secundária para sua placa mãe, qual é o modelo que ela recebe. Hoje em dia é comum pegar placas mães que recebem múltiplos tipos de memória secundária, existem umas que recebem de IDE à SATA II. Podem ser incluídas na categoria da memória secundária, drivers de CDs, DVDs, Disquetes ou todos aqueles componentes da placa mãe que se comunicarem com a mesma via uma dessas 3 tecnologias que citei acima. Minha placa mãe aceita SATA e SATA II. Os Drivers de CDs, DVDs e Disquetes, podem ser chamados de Dispositivos de Entrada.

Outro componente que podemos inserir na placa mãe é a placa de vídeo, mas muitas placa mães já possuem uma placa de vídeo básica interna, essa chamamos de ONBOARD(embarcado) e para as placa mães que não vem com placa de vídeo, chamamos de OFFBOARD(desembarcada), para as placa mães que possuem placa de vídeo onboard, é opcional comprar uma placa de vídeo extra, para as placas mãe com placa de vídeo offboard é obrigação comprar uma placa de vídeo, visto que essa não possue nenhum dispositivo interno de vídeo. Existem várias informações em volta da placa de vídeo, mas guardarei uma seção só para falar dela. A placa de vídeo pode ser acoplado em encaixes do tipo AGP x4(bem obsoleto), AGP x8(deixando o mercado aos poucos) e PCI-EX 16x(entrando no mercado) ou PCI-EX 32x(extremamente poderosa, podendo utilizar aplicações gráficas com os maiores níveis de desempenho, também vale citar que são caras), hoje em dia o mais utilizado é o PCI-EX 16x, que é o meu caso, só que minha placa mãe tem uma caraterística especial, chamada SLI, essa feature, permite que eu bote 2 placas de vídeos, para cada uma existe um encaixe PCI-EX 16x, e posso fazer com que as duas trabalhem simultaneamente, aumentando potencialmente a força de trabalho das placas. Esse equipamento está classificado como Dispositivos de Saída. Minha placa de vídeo é uma GEFORCE 9600GT.

A placa mãe possui um barramento importante chamado FSB(Front Side Bus), essa FSB é responsável pela comunicação que existe entre o processador e a memória primária, em placa mães antigas, a FSB é apenas 2 barramentos de comunicação com a memória, um para ida e outro para a volta dos dados. Nas placas mães atuais a FSB geralmente são quatro barramentos, dois de ida e dois de volta, assim, a placa mãe consegue o dobro de processamento, desde que você tenha números pares de memórias instaladas em seu computador, pois só assim os dois barramentos são ativos. A idéia do barramento duplo surgiu junto com o mundo dos processadores de duplo núcleo, estávamos conseguindo um numero alto de processamento, pelo contrário, não adiantava tanto processamento se não conseguíamos acessar a memória a uma velocidade suficiente para que as operações valessem a pena, então, resolveram criar o barramento duplo da FSB, atualmente existem projetos sobre o barramento quádruplo e irão conseguir altos níveis de processamento. Minha placa mãe identifica meu FSB como 2000mhz HyperTransport.
Isso significa, que os dois caminhos de ida e os dois caminhos de volta, tem um total de 2000mhz de freqüência de comunicação, um numero razoável para computador pessoal.

Mais informações sobre a tecnologia HyperTransport que é própria da AMD, você pode achar neste link.

Outro componente importante da placa mãe é o CHIPSET, irei explicar detalhadamente o que é e para que serve agora. Vejam a foto do chipset.



Em base, o chipset é um dos componentes mais importantes no computador, visto que ele que controla os componentes da placa mãe, ele faz controle dos BARRAMENTOS PCI, BARRAMENTOS AGP, controle do acesso a memória, controle dos IRQ(Interrupt Request) e DMA(Direct Memory Access, ou acesso direto de memória), controle da interface IDE e USB.

Vejam um esquema rápido de como o CHIPSET NORTE E SUL controla tudo:

Notem que ISA é um controlador bem antigo e obsoleto por isso não comentei sobre. Super I/O é um bloco lógico que trabalha com o Input/Output, que significa Entrada e saída.

A placa mãe geralmente tem portas PCI de 2x, 4x e 8x, extras, para o caso de você queira acoplar dispositivos extras, tais como modem dial-up, placa de rede wireless ou placa de rede de cabo, ou até mesmo uma placa de som, mas placa de som, quase toda placa mãe possui ONBOARD.

Ufa, acho que acabei os comentários sobre placa mãe.

Irei falar de algo light que é pra poder relaxar a mente, vou falar das memórias.

Elas podem ser primárias ou secundárias, e servem exclusivamente para gravar dados resultados de processos.

A memória primária podem ser chamadas de MEMORIA RAM, e tem principais modelos, DIMM, DDR e DDR2 como eu disse já acima, e a melhor atualmente no mercado é a DDR2, pois tem um ótimo “custo x beneficio”, mas existem 3 fatores importantes numa memória, o primeiro é o tamanho do BUFFER, ou seja, a quantia de dados que a memória pode guardar, geralmente esse dado é potência de 2, assim, o tamanho do buffer podem ser, 2mb,4mb,8mb,16mb,32mb,...,512mb,1gb,2gb,4gb e assim por diante, sendo que os quatro últimos valores que eu passei são os mais comuns no mercado, os de antes já são obsoletos. O segundo fator importante na memória, é a freqüência de comunicação, que é determinada em MHz, e nas memórias DDR são comuns 200mhz a 400mhz, já as memória DDR2 vão de 400mhz à 800mhz.

Vale lembrar que DDR significa Double Data Rating, pois esse modelo, consegue um valor de trabalho maior do que o seu modelo anterior DIMM.

O terceiro fator é a latência, conhecia vulgarmente por LAG, as memórias ddr2 inicialmente tinham falores de latência maior do que os DDR1, e isso fez com que muita gente deixasse de atualizar-se, esperando que fosse feita uma certa correção, mas fora isso, a latência é uma informação desnecessárias para nós usuários comuns, a não ser que fizermos um overclock, ou montassemos um sistema profissional.

E não esqueçam, para placa mães que tem FSB HyperTransport ou tecnologia similar, trabalhar com números pares de memórias, faz com que você consiga um maior desempenho. Minhas memórias são de 2gb e eu tenho 2 delas instaladas, para desfrutar de 100% da potência. Vale lembrar que a memória é um dispositivo volátil, logo após o desligamento ou alguma falha, todos os dados são perdidos, por isso que existe a memória secundária.

Quanto a memória secundária, você toma como exemplo o HD (HARD DISK, ou disco rígido) que armazena as informações para serem utilizadas posteriormente. Só é importante você saber o tipo de tecnologia utilizada por ele (IDE, SATA, SATAII) para que se possua um.

Agora vou falar do processador.

Meu processador é um Athlon 64bit 2x Dual Core 5200+.

Só pela nomenclatura você pode saber de várias informações, como por exemplo, o 64bits, significa que o processador já trabalha com esse tipo de estrutura, “2x Dual Core” significa que são 2 núcleos, ou seja, equivalente a um Core 2 Duo da Intel e 5200+, significa que o computador podem atingir até 2.6ghz de velocidade para cada núcleo e por último, Athlon significa que o processador obedece a uma estrutura que a AMD criou.

Como seria a nomenclatura equivalente da Intel? Intel Core 2 Duo 2.6ghz. Por aí você já sabe que se é 2 núcleos pela definição da Intel, ele já trabalha a 64bits e tem um potencial de 2.6ghz por núcleo.

Outra informação importante sobre os processadores, são as sua especificações tais quais:

Memória Cache L1, L2...: Memória de alta velocidade, se uma informação está sendo MUITO utilizada, o processador carrega essa informação para o Cache do processador para que fique mais fácil a utilização. No caso do meu processador ele tem 128kb de L1 e 2mb de L2.

Na especificação do meu processador, diz que ele é WINDSOR, essa é uma nomenclatura para definir que tipo de núcleo é utilizado dentro do seu processador, e esse protótipo é definido pela fabrica.

Instruções multimídia: meu processador possui MMX, SSE, SSE2, SSE3, 3DNOW! Professional. E são instruções lógicas que facilitam certos tipos de trabalho, para quem entende de lógica matemática vai descobrir que o SSE é um sistema de ponto flutuante. O MMX é uma estrutura que trabalha em organizar o tratamento de dados, assim, ele consegue armazenar informações na memória, dizendo o TIPO de informação, quanto espaço ela ocupa e seu respectivo valor, SSE2 e SSE3 são evoluções da unidade computacional SSE, e o 3DNOW permite o processador fazer operações vetoriais e de gráficos facilmente possibilitando melhor desempenho nessas aplicações.

Veja uma foto explicativa do MMX:

Irei falar agora de dispositivos de entrada e de saída.

Dispositivos de entrada pode ser qualquer um que forneça informações ao computador, e dispositivos de saída pode ser qualquer um que o computador através dele consiga mostrar uma informação. Ex: Dispositivos de entrada: Mouse e Teclado. Dispositivos de saída: Monitor e Impressora.

Vou me prender principalmente ao dispositivos de saída gráfica “Monitor”, que utiliza uma peça só para ele, chamada “placa de vídeo”. A placa de vídeo é uma peça complexa, ela contem um processador só para ela, chamado de GPU(Graphical Process Unit), possui uma memória só para trabalhos gráficos, e possui uma arquitetura que possibilita fazer milhares de cálculos por segundo, muito mais rápido do que o processador do computador em casos específicos. As placas de vídeo hoje em dia, se definem em 2 fabricantes principais de GPU, NVIDIA e ATI. Minha placa de vídeo é uma GEFORCE 9600gt como disse acima, isso significa, que é de uma arquitetura nova, por definição ela é da 9000 Series da NVIDIA, que possui tecnologia de Pixel Shader 4.0, com support direto ao Directx 10.0, próprio do Windows Vista. Algumas tabelas da internet, dizem que minha placa de vídeo, chega a processar 52gb de dados por segundo, contendo apenas um buffer(memória) de 512mb para isso. O Processamento é tão alto, que existem alguns aplicativos que diz que a memória da placa de vídeo em vez de ser 512mb é 2gb(devido a comentário deixado no blog, devo explicar que essa dedução feita por tal programa ocorreu de uma formula interna de calculo de processamento, que não é oficial, mas que por dedução dele, achou que trabalharia nas mesmas proporções de uma placa de vídeo com buffer de 2gb). Segundo o fabricante, minha placa de vídeo é capaz de mandar 64 Pixeis por Clock, contendo um Clock de 650MHz para um núcleo de processamento e 1.650MHz para outro núcleo de processamento. seria mais ou menos (650+1.650)*64 Pixeis por segundo, muita coisa né? Mas isso é necessário para que os jogos mais atuais rodem com uma performance suficientemente boa para jogar.

Você pode utilizar uma ótima tabela comparativa neste Link.

Huff, cansei, vejo vocês na próxima. :D

domingo, 12 de abril de 2009

Palestra sobre SBC e mais...

Na ultima aula de introdução a computação, tivemos uma palestra sobre a SBC, ministrada pelo professor Rogério, coordenador do curso de Sistema de Informação, como o professor Uriel disse, a palestra foi muito proveitosa, rica, e os principais enfoques eram os congressos que vai haver esse ano sobre computação, e os Grandes Desafios da Computação de 1996-2016. Dos 2 tópicos, vou me prender unicamente aos Desafios da Computação.

Os Desafios da Computação atualmente são 5:

  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 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.


a computação, como em muitos ramos de outras ciências, você precisa de um amplo conhecimento, por isso, 1 único caminho da computação, não solucionará completamente o desafio, precisaria de um trabalho em equipe, de vários profissionais, cada um em uma área que possa trabalhar amplamente em cima do tópico.

vamos ver as área que eu acho que seriam necessário pra resolver o 1º tópico:

Para começar precisaríamos de profissionais em modelagem de dados, profissionais especializados em computação distribuída, profissionais especializados em redes de computadores, profissionais em computação inteligente, profissionais especializados em banco de dados. Caramba, vai precisar de profissional de quase todas áreas :P.

Vamos ver agora, quais áreas seriam necessárias para resolver o 2º tópico:

Essa área a principio, é aplicar formulas físicas, químicas, biológicas, e de outras áreas, e demonstrá-las, computacionalmente para isso, precisaríamos de um especialista em computação teórica e algoritmo, e de profissionais em Processamento de imagem e Computação gráfica para fazer demonstrações próximas do real.

Veremos agora o 3º tópico:

Esse desafio seria substituir alguns componentes do hardware do computador por peças feitas a base de silício a qual suporta altas temperaturas e é muito barata. Para essa área, precisaríamos de muitos especialistas em Hardware.

4º tópico:

Esse tópico aborda principalmente a inclusão digital, onde a maioria dos cidadãos brasileiros teriam acesso a computadores que de certa forma, são maquinas de disseminação de informação. Para isso precisaríamos baratear o custo do computador, convencer que todos precisam de um computador atualmente, apelo à educação de seus familiares, pois sem computação hoje em dia, ninguém consegue nem trabalhar como office-boy. Não consigo enxergar uma área da computação para realizar esse dever, eu acho que está voltado mais para HARDWARE, e outras áreas que mexem com economia e publicidade.

5º tópico:

Esse seria o ideal da computação, softwares de melhor qualidade possível, sem vulnerabilidades, que podem mexer com vários tipos de dados, e que tenha uma boa mobilidade. Sem duvida esse tópico mexeria com todos os campos da computação.

E sobre a inclusão digital nos diversos ramos da ciência?

A computação está inserida na vida das pessoas, de forma até mesmo imperceptível. No mero ato de filmar alguma cena, você está de certa forma, utilizando de métodos que vão transformar o analógico para o digital, e não é só nisso, a computação está aonde o usuário comum menos espera e uma boa prova disso é o celular, instrumento esse que nos induz à comunicação, lembrando que a comunicação é uma das maiores armas que a civilização usou para a evolução, para a sobrevivência. Onde menos esperamos, temos computação, pode ser um conceito mínimo, mas ainda é computação. Posso exemplificar algumas áreas, como a arte, hoje em dia temos uma suíte completa de programas para edição de vídeo, imagem e áudio, o que possibilita a arte evoluir. Também possuímos várias maquinas, e softwares, que são usadas na medicina, para que com mais precisão a doença seja tratada.

Finalizando, as informações sobre os congressos, sobre a SBC e sobre os desafios, são muito importantes, principalmente para quem está começando agora, escolher bem pra que lado correr.

domingo, 29 de março de 2009

Meu Perfil

Eu sempre fui fascinado pelo computador, desde pequeno na minha casa já tinha um computador e comparado com o que é hoje era uma parafernália. Eu mal sabia escrever, mas sabia acessar os jogos via DOS. Ainda lembro do meu computador por volta de 98/99, não lembro do processador, mas o processamento era algo como 666mhz e apenas 64mb de memória Ramm com 2gb de HD, realmente era algo arcaico, e mal funcionava o WIN XP. Então o quadro onde vivi, sempre foi muito tecnológico, e sempre fui inserido nesse meio, paralelo ao meu gosto por computador, era o meu gosto por games, como os dois itens estão no mesmo meio foi unir o útil ao agradável. Então por volta dos 14 anos de idade, decidi começar a estudar programação, era algo que eu já sabia que existia mas não fazia idéia de como tudo se comportava. Conhecia umas pessoas envolvidas com o meio técnico na computação, e emprestei uma bíblia de Delphi e então comecei a praticar.

Tudo era muito difícil, era um mundo desconhecido e complicado, eu digitava os exemplos dos livros, e levava até dias pra conseguir compilar por não entender os erros que se passavam no compilador. Algumas vezes conseguia compilar, outras não, então minha experiência com Delphi não foi muito boa, afinal de contas, não consegui levar nada dessa linguagem. Dei um tempo, e após 1 ano, voltei a me interessar, só que dessa vez eu reuni mais conhecimentos sobre esse meio e dessa vez eu tentei estudar C. Reuni apostilas, meu irmão pediu um livro na biblioteca da faculdade dele então comecei a tentar aprender o que era o C, sabia que era uma linguagem potente, por isso despertei a curiosidade mas mesmo depois de ter uma experiência não muito agradável com Delphi, passei por muitas dificuldade com o C, sem saber que era uma linguagem difícil até mesmo para os mais ativos na área. Obtive algum sucesso, uma margem maior do que com Delphi, e então invadi C++, embora não estivesse usando orientação a objeto. Em C++, pratiquei somente aquilo que já havia aprendido em C, ainda tentei mexer com orientação a objeto em C++, mas como imaginado, não obtive sucesso.

meio a dificuldade, ouvi falar de uma linguagem bastante simples de programar e bem objetiva, era o VB 6(Visual Basic 6). Comecei a programar, logo na primeira impressão, consegui fazer coisas incríveis, que não faria se fosse no C, C++, Delphi. Foi tudo muito fácil, Orientação a Objeto parecia uma piada. Fui adentrando, aprendi livrarias, inclusão de DLLs e utilização de APIs, e então, cada vez que eu precisava de algo mais complexo, percebia que VB6 não era uma linguagem potente. Ela era uma linguagem na verdade, furada e desorganizada, quando se precisava fazer algo mais complexo, precisaria utilizar-se APIs, da qual raramente se encontra tutoriais e livros falando sobre. Li na internet, que a Microsoft teria feito uma nova versão do VB6, esse era o VB.net 2003, mas, que estava pra chegar o VB.net 2005, então esperei ansiosamente para migrar de VB6 para VB.net 2005. A migração foi muito simples, as duas linguagens são extremamente parecidas, mas VB.net 2005 era mais potente, tinha mais organização, embora fosse uma linguagem pesada que sempre tem necessidade de um framework grande e bem chato de instalar. Com VB.net 2005 eu fui capaz de fazer até programas e vende-los, fiz até um programa para um supermercado pequeno da cidade onde morava. Por ter algum conhecimento em C/C++, eu fui mexer um pouco em C#, que é como uma replica do vb.net só que com estrutura de C/C++, e obtive bons resultados, mas ainda preferi a organização lógica do VB.NET, que para mim era incomparável.

Sempre tive muita curiosidade sobre o mercado de games, meu pai sempre me ajudou e então, pedi para ele alguns livros de programação para games. Eu lembro que o primeiro livro que pedi, eu ainda programava VB6 e tudo que consegui fazer foi fazer, jogos 2d em base de TILES que são imagens de 32x32 pixels organizadas lado a lado de uma forma bem simples, mas era o começo de tudo. O outro livro sobre Programação de games e engines 3d, foi quando eu já havia dominado C/C++ e estava lutando para entrar em orientação a objeto da mesma. O livro se chama Programação de Jogos com C++ e Directx de Andre Santee, editora novatec. E um outro livro que consegui em uma sebo de Manaus foi Programando em 3 dimensões de Christopher D. Watkins, editora Berkeley, extremamente velho, mas resolvi levar pois poderia contribuir comigo futuramente. Com o livro consegui fazer algumas coisas, mas ele é muito incompleto e não me deu o conhecimento necessário para pelo menos fazer um jogo básico. Na internet, busquei por vários livros sobre programação de games, em C++, coisa de uns 10 livros de programação em inglês e espanhol, tenho eles até hoje(acredito) em um DVD, junto com a livraria de programação do Directx 9c para C++.

Por volta de 1 ano atrás, comecei a me direcionar a WEB, aprendi o básico de HTML, então parti para CSS, em pouco tempo já estava mexendo em ASP.NET, utilizando a linguagem VB.net e framework 3.5 e Ajax. Agora me encontro no curso de Ciência da Computação na UFS e espero conseguir dominar melhor a programação de games, que sempre foi meu sonho.

Sobre o perfil do curso, eu já falei na minha primeira postagem, Primeira impressão da UFS e mais.