Computação: do ábaco
aos dias atuais
Rodrigo Assad
Agenda
•
•
•
•
Introdução
O Inicio
Grandes áreas
O que vem por ai ....
Introdução
• Atualmente a sociedade não vive mais
sem a utilização de computadores e
os seus sistemas de informação.
• Mas o que é um computador?
Introdução
• Para muitos um computador simboliza o
futuro.
• No cinema e na televisão vemos maquinas
grandes, complexas, cheias de luzes
• Geralmente o computador tem
personalidade: frio, calculista, impessoal.
• O operador do computador é visto como
gênio, misterioso uma pessoa diferente.
Introdução
• Mas o que é verdade
Introdução
• O cenário é bem teatral
• O computador não é resultado de um
cientista maluco
• Ele surgiu da necessidade crescente
de se fazer cálculos
• Os ancestrais do computador tem
mais de 3000 anos
O Início
• Se levarmos em conta que o termo
COMPUTAR, significa fazer cálculos,
contar, efetuar operações
aritméticas, COMPUTADOR seria
então o mecanismo ou máquina que
auxilia essa tarefa, com vantagens no
tempo gasto e na precisão.
O Início
• Inicialmente o homem utilizou seus
próprios dedos para essa tarefa,
dando origem ao sistema DECIMAL e
aos termos DIGITAL e DIGITO .
Para auxílio deste método, eram
usados gravetos, contas ou marcas na
parede
O Início
• Tábuas de argila foram
desenterradas por arqueólogos no
Oriente Médio, próximo à Babilônia,
contendo tabuadas de multiplicação e
recíprocos, acredita-se que tenham
sido escritas por volta de 1700 a.C. e
usavam o sistema sexagesimal (base
60), dando origem às nossas atuais
unidades de tempo
O Início
TimeLine
Grandes áreas
•
•
•
•
•
Engenharia de Software
Arquitetura de Computadores
Redes e Sistemas Distribuídos
Teoria da Computação
Inteligência Artificial
Grandes áreas
• Engenharia de software
– Não mais aprendemos uma linguagem que
atenda uma determinada necessidade
– Atualmente temos plataformas de
desenvolvimento
– Uma briga enorme entre Java e .NET
– Funcionam em quase qualquer dispositivo
Grandes áreas
Programação OO
• OO significa orientada a objetos
• Não vemos mais programas como
rotinas mas sim como objetos
• O código fica mais fácil
• A manutenção fica mais fácil
• A reusabilidade fica mais fácil
• É o paradigma mais utilizado
atualmente
• Java e VB são bons exemplos
Novos paradigmas
• Temos a programação orientada a
agentes
– Vemos o mundo como unidades que
podem interoperar
• Programação orientada a aspectos
– Os aspectos do mundo são quem nos
interessam
Conceitos
• Como vemos programar é a arte de
representar situações do mundo real
dentro de um software
• Para isso o ferramental esta ai
• Agora so basta escolher seu
compilador e começar????
• Será so isso?
Linguagens
•
•
•
•
•
•
•
•
C : Para programação baixo nível
Assembler : Para programação baixo nível
Java : sistemas servidores e embarcados
.Net : sistemas servidores, sistemas em descktop
e embarcados (especialmente C#)
Delphi : sistemas em descktop
Visual Basic : sistemas em descktop
PHP: Web
Natural e Cobol: Para Mainframes
Frameworks
• Inicialmente se escrevia código em
uma linguagem e este código so
funcionava em uma plataforma
• As linguagens foram portadas para as
plataformas mas parte dos códigos
precisavam ser rescritos
• Isso é custoso mas já é bom
Frameworks
• Os frameworks de desenvolvimento
estão facilitando as escrita de apenas
um código que possa funcionar em
qualquer tipo de dispositivo
– Supercomputadores, servidores, PC’s,
palmtops, celulares, smart cards
Frameworks
• Atualmente existe uma briga no mercado
– Java x .NET
– Para celuares: Java x .NET x Brew x Symbian
• Cada uma tem seus pontos fortes e fracos
mas sem dúvida serão as linguagens que
terão mais espaço no mercado
Ferramentas
• Compiladores: usados para “compilar”
o programa escrito em uma linguagem
(Delphi, Visual C, Eclipse, JBuilder,
WSAD, Visual Studio .NET, ...)
• Gerencia de configuração: CVS,
Clercase, Subversion, ...
Ferramentas
• Modelagem: Rose, together, visio,
Jude, Erwin, ...
• Acompanhamento de projeto:
Bugzilla, Project, Xplanner, ...
• Testes : Ant, JMeter, Wast, Junit, ...
Metodologias
• RUP
• XP
Processo
• ProSCes, baseado no RUP
• Define os entregáveis : modelos de
dados, arquitetura de aplicação, ...
• Em caso de uma falha no sistema
entregue o processo auxilia a definir
onde houve a falha e o que se deve
fazer para que ela não ocorra mais
Cargos
•
•
•
•
•
•
•
•
Testador de software
Engenheiro de software
Arquiteto de software
Arquiteto de teste
Gerente de configuração
Engenheiro de testes
Analista de sistemas
Gerente de projetos
Componentes
• Atualmente se quebra o software em
componentes que podem ser
reutilizados
• Temos hoje componentes para a
maioria das tarefas
• Existem empresas que apenas
produzem e vendem componentes no
mercado
Componentes
• Sistemas operacionais se utilizam
muito deste conceito
• Facilitam a reutilização de código
• Facilitam o desenvolvimento de
grandes sistemas
• Facilitam o desenvolvimento de
softwares por empresas diferentes
Grandes áreas
• Arquitetura de computadores
– Será que vem ai o computador quantico?
– Novas tecnologias que permitam cada
vez mais a miniatuarização e aumento da
capacidade de processamento
– Clusters
– Processamento paralelo
Grandes áreas
• Redes e sistemas distribuídos
–
–
–
–
–
–
–
Segurança da Informação
Protocolos de rede
Wireless
Topologias
Sistemas redundantes
Alta disponibilidade
Tolerância a falhas
Grandes áreas
• Banco de Dados
• Computadores são adequados para armazenar e
manipular dados rapidamente
• O SGBD (Sistema de Gerenciamento de Banco de
Dados) é o software responsável por estas
funcionalidades
• Existes SGBD para cada tipo de aplicações:
– Pequeno volume e pequenos sistemas: Access, FoxPro,
Paradox, dBase IV, MySql, Postgres
– Grande porte: Oracle, DB2, SQLServer, Ingres e
Informix
O SGBD
• O SGBD é um programa que armazena os
dados e permite que eles sejam acessados
qualquer momento
• SGBD’s podem armazenar vários Gb dados
• Independente do tamanho dos arquivos de
dados o acesso aos dados deve ser rápido
• Outra vantagem do SGBD é a existência de
uma linguagem de manipulação para os
dados (SQL)
O SGBD
• Assim como os sistemas operacionais
o SGBD pode ser acesso pelo usuário
como por outro programa
• O SGBD também possui um núcleo que
tem a responsabilidade de manipular
com os arquivos.
Fundamentos de Bancos de
Dados
• Toda informação em um SGBD fica
armazenado em uma tabela
• Cada linha recebe o nome de registro
• Cada coluna recebe o nome de campo,
cada campo possui um tipo que é
definido pelo pessoa que criou a
tabela
Fundamentos de Bancos de
Dados
• Mas um sistema não é composto
apenas por uma tabela. Então como os
dados passam a ter sentido?
• Atualmente a maneira mais usual é a
de se relacionar os dados utilizando
funcionalidades do SGBD.
• Tais bancos de dados são chamados
de bancos de dados relacionais
Fundamentos de Bancos de
Dados
• Além dos sistemas relacionais
existem ainda modelos hierárquicos e
orientados a objetos
• Podemos relacionar os dados em uma
tabela de várias maneiras:
– Um pra um
– Um pra muitos
– Muitos para muitos
Linguagem de manipulação de
dados
• SQL
– É a linguagem que esta no coração do
SGBD
– É semelhante a uma linguagem de
programação
– Foi desenvolvida pela IBM
Considerações finais
• Os bancos de dados podem ser
distribuídos
– Permitem a utilização de dados
localizados em servidores
geograficamente distantes
– Devido as limitações das redes
geralmente esta distribuição e feita em
servidores localizados na rede local
Considerações finais
• A utilização de um servidor de banco
de dados favorece o modelo cliente
servidor
• Nele temos um servidor central de
banco de dados sendo acessado por
diversos programas localizados na
estações de trabalho
Grandes áreas
• Inteligência Artificial
–
–
–
–
Agentes inteligentes
Jogos
Sistemas especialistas
Tomada de decisão
O que vem por ai ...
•
•
•
•
•
•
O mercado esta cada vez mais saturado
Certificações são cada vez mais exigidas
Comprovação de experiência
Convergência , o que chamamos de NG
TV Digital
Sistemas estarão cada vez mais voltados a
WEB
• Centralização do processamento
• Empresas de telefonia virando empresas
de redes
• ....
Download

Computação: do ábaco aos dias atuais