quarta-feira, 27 de maio de 2009

Fortran e Java

Um pouco sobre duas linguagens de programação bem conhecidas, uma imperativa e outra orientada a objetos.

Fortran(FORmula TRANslation)
Foi a primeira linguagem imperativa que surgiu(década de 1950) e é utilizada até os dias atuais.A primeira linguagem padronizada do Fortran(Fortran 66 ou Frotran IV) foi bastante utilizada pela comunidade científica, por ser simples e eficiente(e ser uma das poucas opções).Com o tempo a linguagem foi evoluindo e incrementando novas utilidades, porém com o surgimento de outras linguagens como Pascal,C,Ada, o Fortran foi perdendo espaço, mesmo assim a linguagem ainda é a mais indicada para desempenhar tarefas da área da computação numérica de alto rendimento.

Observação:Na versão Fortran 2000 tem suporte a programação orientada a objetos.

Java
Java é uma linguagem de programação orientada a objetos, tem como grande diferencial ser compilado por um bytecode que é interpretado por uma máquina virtual (atualmente tem um desempenho próximo do C++, possível com os avanços da compilação especulativa e HotSpot).Tem sintaxe parecida com C/C++,vasto conjunto de bibliotecas, e excelente portabilidade, entre outras características. Foi criada pela Sun Microsystems e no Brasil é utilizada na maioria dos bancos para construir os home banks.

Fonte de pesquisa: Wikipédia.

domingo, 24 de maio de 2009

Três disciplinas

Uhm, bem vindos novamente ao meu blog.Tratarei novamente (porém um pouco mais aprofundado) sobre algumas matérias do curso de ciência da computação(UFS) e se por ventura tem alguma relação com os desafios da SBC.Basicamente escolhi três matérias obrigatórias que o curso oferece e irei mostrar o que é cada uma resumidamente. São elas: "Arquitetura de Computadores I"(3º período),"Informática,Ética e Sociedade"(3º período) e "Inteligência Artificial"(5º período).

"Arquiteturas de Computadores I" trata sobre a organização dos hardwares para formar um computador.O objetivo da disciplina é mostrar ao aluno a integração entre o software e o hardware, bem como identificar as características da linguagem de máquina e as formas de endereçamento.No meu ver, essa é a matéria mais próxima do problema da SBC que envolve tecnologias sem o uso do silício, o curso de C.C. não é voltado para a parte de hardware por isso não envolve de fato esse problema da SBC.Se tiver interesse de ver a ementa dessa matéria clique aqui.
"Informática,Ética e Sociedade" é uma disciplina que envolve a ética e a evolução da informática, alterações no mercado de trabalho, inclusão digital e "a era do conhecimento", onde a informação é transmitida rápidamente.Tem grande relação com o 4º problema da SBC em que prega "o acesso particiativo e universal do cidadão brasileiro ao conhecimento".Clique aqui para abrir a ementa dessa matéria.E como terceira e última matéria abordada fica "Inteligência Artificial", uma área de estudos que busca métodos para simular o raciocínio humano.Na matéria vai ser estudado o uso da lógica em IA,noções de planejamento e as aplicações, entre outras que você pode observar olhando a ementa(sim, novamente!).Vejo uma certa relação dessa matéria com o 2º problema da SBC.

domingo, 10 de maio de 2009

Novidade Wi-Fi!

Com uma novidade apresentada pela Verizon(operadora Americana), não será mais preciso procurar por restaurantes,bares,lanchonetes onde existe conexão Wi-Fi.Você criará sua própia conexão móvel!Graças a uma junção de modem G3 e roteador de bolso MiFi2200, será posível criar ao seu redor uma área com acesso a internet, não importa onde você está.Também será possível acesso de mais de um laptop.

Ele possui tamanho aproximado de um cartão de crédito e a bateria suporta mais de 4 horas(recarregável).Será vendido 17 de maio(2009) nos Estados Unidos por $100 e planos de $40(com franquia de 250 MB de dados) ou 60 dólares (para GB de dados).A novidade tem tecnologia EVDO Rev.A G3(utilizada nos EUA).Também está confirmado a versão GSM HSDPA que é compatível com as conexões européias e brasileiras.

Baseado em: http://info.abril.com.br/blog/gadgets/






domingo, 3 de maio de 2009

Regulamentação da Informática - Assembly e debug

Bom, escreverei básicamente sobre 3 assuntos: Debug.exe , Assembler e sobre a profissionalização da informática. Debug.exe é(era) um programa do MS-DOS para testar, verificar e determinar tarefas ou arquivos executáveis. O comando Debug funciona em código Assembly e possui vários subcomandos que são usados para acessar,mover,preencher,introduzir novos valores na memória além de ler e escrever arquivos no disco.

Sintaxe do Debug

Debug [[unidade:] [caminho] NomeDoArquivo [parâmentros]]

“ [unidade:] [caminho] NomeDoArquivo” serve para especificar o local e nome do arquivo executável que você pretende testar.

“[parâmetros]” Especifica uma informação da linha de comando exigido pelo arquivo executável que está em teste.

Assembler(traduzido como montador) é um programa que transforma o código da linguagem assembly na linguagem da máquina ou seja é um compilador assembly.

Foi passado um código assembly para mostra o significado dele, mas eu não conheço essa linguagem e nem tenho compilador para testar.Então pesquisei e achei o significado de cada operação.

0CF2:0100 mov cx, 100
0CF2:0103 mov ah, 2
0CF2:0105 mov dl, cl
0CF2:0107 int 21
0CF2:0109 loop 103

Parte 1: Endereço da memória onde vai ser executado o comando.
Parte 2:
“mov” é uma instrução que transfere dados, esse pode ter alguns ‘operadores’ no 1º caso é ‘cx’(count register, registro usado para instrução de loop) e o número 100 uma constante. No 2º caso, o operador ‘ah’ é uma divisão de registros dos primeiros bytes(highbytes) de outro operador(‘ax’).No 3º caso, ‘dl’ também é mais um divisão do operador ‘dx’ só que dos últimos bytes(low bytes), o mesmo acontece com ‘cl’.
“int” assume um procedimento a partir do DOS, podendo ser uma interrupção, fechamento do programa...

Fonte: http://www.xs4all.nl/~smit/asm01001.htm - Assembly Tutorial

Agora falando sobre a regulamentação da profissão da informática, sou a favor da regulamentação sim. Muitos argumentos surgem como: irá restringir a criatividade de pessoas não formadas em produzir algo para a informática ou então nenhum país desenvolvído possui regulamentação. Porém o que temos que notar, é que empresas preferem pagar menos por pessoas sem a mínima formação acadêmica do que uma pessoa formada e/ou com toda uma bagagem na área(pessoas experientes com mais de 5 anos na área mesmo não possuindo diploma seriam apoiadas pela regulamentação). Já que o cidadão gosta da área de informática e pretende trabalhar nela, é simples, não vamos perder esse talento com a regulamentação, e sim tornar ele um graduado, com mais conhecimento e agora com um diploma, podendo exigir um melhor salário e possuindo maiores opções de emprego. Todos sabemos que no Brasil o número de pessoas com acesso a internet é alto e que por essas terras tupiniquins é normal a prefêrencia por pagar menos por uma trabalho ‘nas coxas’ do que um trabalho bem feito mais caro.Exemplo básico: O computador está com defeito, é comum chamarem qualquer garoto que tem uma certa ‘aptidão’ com o assunto e pagar 5 vezes menos que um própio técnico em informática(isso server para criação de sites,problemas/criação de softwares e várias outros assuntos),certamente a solução desse garoto também será mais simplista do que um técnico.Agora pensamos, se todos que pudessem trabalhar na área de TI devem possuir uma graduação, a concorrência certamente diminuirá porque casos como esse do garoto serão eliminados, como consequencia o nível do trabalho tende a subir e as exigências em termos financeiros feitas por alguem formado será maior. E nesse ponto reside o problema...

Pode ser egoísmo da minha parte defender a regulamentação pois estou na universidade(eu não vejo por esse lado).Porém todos tem oportunidades(certo, não iguais, mas entraremos em uma discurssão social e até política que não é o foco do tema) de entrar e se formar em uma universidade, basta se esforçar e estudar.Porém em uma coisa tenho que concordar com a parte da não regulamentação, pois existem muitas pessoas que se formam e não possuem o conhecimento adequado para atuar.Talvez pela má formação que a faculdade ofereceu ou então pela própia falta de vontade da pessoa em aprender.Isso mostra que ter ensino superior não é somente o necessário para possuir um bom emprego, e sim, ser competente.

domingo, 19 de abril de 2009

Configurando o computador

Como assunto deste tópico, irei escrever sobre algumas configurações da BIOS do meu computador.Vou começar escrevendo sobre algumas configurações da memória secundária ou mais conhecida como HD(hard disk, disco rígido).
  1. LBA/Large Mode: Large Mode(ou Extended CHS) serve para burlar as limitações de tamanho dos HD's antigos(504 MB).Um software(integrado a BIOS) que convertia os endereços para ficar no limite da BIOS e o HD seria acessado sem problemas.Porém surgiu o LBA(iniciais de Logical Block Addressing) que abandona o endereçamento CHS e passa a ter endereços independentes para cilindros, cabeças e setores, passando a adotar um endereço único. Os setores passam então a receber endereços seqüenciais, 0, 1, 2, 3, 4 etc. Os 28 bits de endereçamento permitem então 228 milhões de endereços, o que corresponde a HDs de até 128 GB.Estas limitações aplicam-se apenas a HDs IDE. Elas não existem no caso de HDs SCSI e SATA, que utilizam padrões diferentes de endereçamento.
  2. PIO Mode e DMA Mode: Também dispositivos somentes usados em HD's IDE, eram as interfaces do HD.Placas mães antigas suportavam apenas o PIO 4 que é mais lento na taxa de transferência de dados do que o Ultra DMA 33 ou mesmo o Ultra DMA 66(Ultra DMA também conhecido como Ultra ATA). Este modo de operação traz várias vantagens sobre o antigo Pio Mode 4, como a maior taxa de transferência de dados, que passa a ser de 33 Megabytes por segundo(o dobro da Pio 4). A principal vantagem do UDMA porém, é permitir que o disco rígido possa acessar diretamente a memória RAM. Assim não precisa que o processador fique de intermédio entre HD e memória RAM.

    Processador
  3. Amd Secure Virtual Machine: Tecnologia de virtualização que permite dividir uma máquina física em diversas máquinas virtuais.Assim, é possível utilizar quatro sistemas operacionais diferentes ao mesmo tempo sobre uma mesma máquina. Concorrente da tecnologia de virtualização da Intel conhecida como Vanderpool.
  4. Processor Frequency Multiplier(CPU Multiplier): Permite ajustar o multiplicador do processador. Nos Athlon 64 e nos Core 2 Duo o multiplicador é destravado para baixo, por causa do gerenciamento de energia, de forma que é possível usar um FSB mais alto e reduzir em alguns pontos o multiplicador do processador. Isso permite obter pequenos ganhos no acesso à memória e na comunicação entre os componentes.
  5. Cpu Fan Speed: É a velocidade da ventoinha(cooler) que fica em cima do processador. Ajusta-se de acordo com a temperatura do processador para uma melhor refrigeração se necessário.

    Memória Primária ou RAM
  6. Memory Hole Remapping: Ao usar 4 GB de memória ou mais, um grande trecho de memória entre os 3 e 4 GB é perdido, devido às faixas de endereços usadas pelos dispositivos. Ao usar um sistema operacional de 32 bits, esta faixa de memória é perdida e não existe nada o que se possa fazer.Ao combinar um sistema operacional de 64 bits com um processador equipado com as extensões AMD64 ou EM64, você ganha a possibilidade de usar mais do que 4 GB de memória, mas a faixa entre os 3 e 4 GB continua sendo perdida, de forma a manter compatibilidade com os programas de 32 bits.A opção de memory hole remapping faz com que a área de endereços reservada para uso dos dispositivos seja movida para uma área mais alta do Virtual Address Space, liberando a maior parte da memória perdida.
  7. Bank Interleaving: Permite que zonas em diferentes bancos (banks) sejam endereçadas simultaneamente, aumentando a velocidade dos dados. Quando as informações lidas forem do banco de dados (data bank), uma nova zona de dados pode ser endereçada em outro banco. Você pode especificar quantos bancos do chip da RAM podem ser endereçados ao mesmo tempo, sendo que o mais rápido é 4.

  8. Dispositivo de Entrada
  9. Plug and Play: Faz com que a BIOS ou o sistema operacional instale e configure quaisquer combinações de placas e dispositivos. Sem precisar que o usuário configure jumpers ou chaves, passando a ser feito por software.
  10. Ps/2 Mouse Support: Ps/2 foi um sistema de computador pessoal criado pela IBM que tinha um conjunto de interfaces própias. Até hoje é utilizado conectores do tipo Ps/2 em mouse e teclado, pois ocupam menos espaço e liberam as conexões USB para periféricos.

Fonte: "Hardware Manual Completo" ,Carlos E. Morimoto


quarta-feira, 8 de abril de 2009

Desafios

Todos sabemos que o uso do computador é essencial e indispensável na maioria das áreas de trabalho.Facilita,organiza e agiliza os processos.Isso não serve somente para empresas, mas também para outras ciências ou expressões de arte.Qual físico não sabe operar um computador para utilizar seus programas quânticos?Ou então um músico que não tem acesso a quantidade de cifras e riffs de músicas e formas de tocar em todos instrumentos que a internet disponibiliza?Com certeza,esses profissionais irão ficar obsoletos e desprezados pelo mercado,porque hoje o mercado de trabalho exige conhecimento em informática.O desafio não é mais ter conhecimento alto somente em sua área ou especialização, é preciso ser bom em várias coisas(incluindo a computação) e ser excelente em sua área.

Voltando o assunto agora ao curso de Ciência da computação UFS e de graduação de outras instituições, é para sabermos se ao final do curso estaremos aptos a enfrentar os desafios que nossa área de informática nos prorpociona. A SBC(Sociedade Brasileira de Computação) elaborou e mostrou quais são esses desafios no período de tempo de 2006-2016:

  • "Gestão da informação em grandes volumes de dados multimídia distribuídos;
  • Modelagem computacional de sistemas complexos artificiais, naturais e sócio-culturais e da interação homem-natureza;
  • Impactos para a área de computação da transição do silício para novas tecnologias;
  • Acesso participativo e universal do cidadão brasileiro ao conhecimento;
  • Desenvolvimento Tecnológico de Qualidade: sistemas disponíveis, corretos, seguros, escaláveis, persistentes e ubíquos."
Fonte : http://www.sbc.org.br/index.php?language=1&subject=8&content=downloads&id=231

Bom, mesmo não conhecendo o signifcado e conteúdo de todas as matérias que serão ensinadas ao longo do curso, tentarei fazer uma semelhança entre os desafios e as matérias lecionadas.
  1. "Gestão da informação em grandes volumes de dados multimídia distribuídos".Algumas matérias como "Desenvolvimento de Software I" , "Desenvolvimento de Software II" e "Sistemas distribuídos" tendem a abordar esse desafio.
  2. "Modelagem computacional de sistemas complexos artificiais, naturais e sócio-culturais e da interação homem-natureza;" Assuntos como "Interface Humano Computador" e "Inteligência Artificial" remetem a esse desafio.
  3. "Impactos para a área de computação da transição do silício para novas tecnologias;" Um tema bem complexo que envolve muitas pesquisas e hardware, "Arquitetura de computadores I" e "Arquitetura de computadores II"(opcional) talvez tratem do problema do sílicio.
  4. "Acesso participativo e universal do cidadão brasileiro ao conhecimento;" "Informática ética e sociedade" e "Topicos especiais em informática e educação I"(opcional) abordam o tema da inclusão digital.
  5. "Desenvolvimento Tecnológico de Qualidade: sistemas disponíveis, corretos, seguros, escaláveis, persistentes e ubíquos." e "Grafos e algoritmos computacionais","Linguagens formais e aplicadas" têm uma proximidade.
Acredito que com certas pesquisas e estudo necessário, ao final do curso, o graduado em ciência da computação será capaz de lidar com a maioria desses desafios corretamente.

quarta-feira, 25 de março de 2009

Filósofos

Vou escrever sobre a importância e de 3 filósofos que foram fundamentais para a construção da lógica e algebra.

Aristóteles(384a.C.
- 322a.C.): Criador da lógica, foi fundamental também na Física, Psicilogia, Biologia e Metafísica. Aristoteles escreveu seis textos(livros) lógicos, e a união deles é chamado de Órganon.

Analíticos anteriores(Primeiros analíticos) é o terceiro livro do Órganon, e é onde Aristóteles escreveu sobre Silogismo, tornando o texto um dos mais importantes da lógica e do própio Filósofo
. Silogismo nada mais é que a junção de 3 proposições(chamadas de premissas) que se unem, e a partir das duas primeiras proposições se conclue a terceira(chamada de conclusão), não entendeu?Com um exemplo fica fácil:

Todo árbitro é indivíduo desonesto.

Nenhum indivíduo desonesto é rico.

Logo, nehum árbitro é rico.

Existem algumas leis e modos que foram acrescentados ao silogismo, na wikipédia tem mais detalhes.

George Boole(1814-1864): Matemático e Filosófo é o criador da Álgebra Booleana.Álgebra Booleana é a utiliziação de operadores lógicos como E, OU e NÃO e de conjuntos soma, produto e complemento em estruturas álgebricas.

Essa Álgebra é muito utilizada na ciência da computação, por ser o fundamento da matemática computacional, baseada em numeros binários( 0 e 1, e nessa álgebra, 0 significa "falso" e 1 "verdadeiro"). Esses operadores lógicos podem ser escritos de várias formas:

AND significa E, OR significa OU, NOT significa NÃO; (mais comum)
∧ significa E, ∨ significa OU, ¬ significa NÃO;
. significa E,+ significa OU,NÃO é significado por uma linha embaixo da expressão que vai ser negativada.
NAND é a junção de NOT AND, NOR é a junção de NOT OR e OR significa XOR.


Gottlob Frege(1848-1925): Criador da lógica matemática moderna, é ao lado de Aristóteles os maiores lógicos de todos os tempos.

Frege havia notado que os matemáticos viviam se atrapalhando em suas apresentações, porque imaginavam que o teorema estava explicável, e não estavam. Logo ele criou uma forma de sistematizar e formalizar as regras de demonstração, conhecido como: sistema de representação simbólica(Begriffsschrift em alemão), para não ocorrer mais erros desse tipo.

Ele também foi o criador da lógica de predicados, que é uma expansão da lógica sentencial onde só funcionam palavras como "e", "não", "ou", "se-então", "se somente se". Ele incluiu palavras como "todos", "alguns", e "nenhum". Também adicionou quantificadores ∀ significa para todo e ∃ significa existe.

Desse jeito ele conseguiu quebrar sentenças em partes menores e tornar a lógica mais clara.