A Evolução do Software
De gutocarvalho.net
[editar] O início de um projeto importante, um marco
A evolução do software e hardware acontece de forma paralela, se você tem um novo hardware, logo vai precisar de um software que consiga controlá-lo, para tanto poderá precisar de uma nova linguagem de programação na qual consiga escrever instruções para esse novo hardware de forma mais otimizada.
Vou começar aqui a partir da 3o geração de computadores, pela qual através de pesquisas acredito que seja o período mais importante e interessante na evolução do hardware e software para o que ele é hoje.
Entre 64 e 65 foi iniciado o projeto MULTICS, o qual era um esforço entre GE, MIT, AT&T através da divisão BTL (BELL LABS), era um projeto ambicioso, um computador multi-processo, multi-usuário, em que poderiam adicionar mais recursos (processadores, memórias) sem desligar todo o sistema, possibilitando um sistema que rodasse 24/7, 365 dias por ano.
[editar] Principais mentes por trás do MULTICS
Em 66 Ken Thompson terminou sua graduação em Berkley e se junta a equipe de pesquisa do BTL, integrando o projeto MULTICS.
Em 68 Dennis Ritchie termina seu doutorado em Harvand e integra a equipe de pesquisa do BTL, participando do projeto MULTICS.
Outros pesquisadores importantes participaram do projeto do desenvolvimento do sistema operacional MULTICS, são eles
Rudd Canaday Brian Kernighan Keith Standiford M. D. McIlroy J. F. Ossanna...
Mesmo com os esforços de toda esta fabulosa equipe, o BTL abandonou o projeto em 1969 devido ao seu alto custo, longo prazo para conclusão e por ser muito diferente do foco de trabalho da AT&T que era telefonia.
Entre 69 e 70 a Honywell comprou a GE e levou junto o projeto MULTICS que foi comercializado durante algum tempo para equipamentos GE.
O MULTICS havia sido escrito utilizando a linguagem de baixo nível PL/I e algumas partes em ASSEMBLY.
[editar] Multics
Multiplexed Information and Computing Service
Mesmo com o projeto descontinuado no BTL os cientistas prosseguiram com suas pesquisas, pois sabiam que se tratava se uma tecnologia única na época, os conceitos ainda não haviam sido abordados por outros pesquisadores e projetos.
Thompson continuava os estudos de sistemas de arquivos e compartilhou suas idéias com Ritchie e Canaday.
Thompson em seu tempo livre se aventurava em um computador GE645, portando aplicações para ele, porém ele considerava este equipamento extremamente complexo e rudimentar, com gráficos ruins e difícil de operar, bem diferente do que projetaram para o MULTICS anteriormente.
[editar] A insistência de Ken Thompson
69 a 70
Depois de algumas tentativas ele desistiu do GE e encontrou um DEC-PDP7 que não estava sendo utilizado e resolveu portar as aplicações para ele.
Imagem:Http://www.preatorian.net/portal/images/uploads/Dec-Legacy/pdp7.GIF
Reescreveu todo o sistema em 1 mês Criou um novo kernel Criou um novo sistema de arquivos Criou um ambiente shell simples Criou um editor de textos simples Computador DEC-PDP7 com 4k de memória
Nasce então o UNICS (Uniplexed Information and Computing Service).
[editar] MULTICS x UNICS
69 a 70
Enquanto o MULTICS tentava fazer diversas coisas, o UNICS se concentrava em fazer apenas uma, porém fazer esta de forma bem feita.
Thompson agora com ajuda de Ritchie trabalha em modificações do UNICS.
Baseando-se em uma lingaguem de alto-nível BCPL (Basic Combined Programming Language) Thompson criou a linguagem B para portar o UNIX para um DEC-PDP11/20 e mais tarde para um DEC-PDP11/45.
[[Imagem:http://profectus.com.au/images/Ritchie%2520and%2520Thompson%2520kd14.jpg]]
Nesta época o departamento de Patentes da BTL começou a usar o UNIX em conjunto com o departamento de pesquisas, eles foram os primeiros usuários do sistema, o PDP11 na realidade foi cedido com o objetivo de criar um processador de textos eficiente para ser utilizado dentro da BTL.
[editar] UNICS a todo o vapor, agora portável
70 a 73
Foi lançado em 3 de Novembro de 1971 o primeiro “Unix Programmers Manual” com cerca de 60 comandos, tais quais, chmod, chown, chdir, cp, ls, mv, who, cat, dentre outros.
Dennis reescreveu a linguagem B criada por Thompson chamando incialmente de NB (New B) e mais tarde se tornou a linguagem C.
O UNIX começou a ser reescrito em C em 1972 por Thompson e Ritchie.
Sendo escrito em C o UNIX ganhava portabilidade, poderia ser portado para vários tipos de hardware em pouco tempo.
Nesta época Thompson foi convidado a dar aulas na universidade Berkley/CA, onde ele ficou por 1 ano. Neste período Thompson disponibilizou o UNIX com seu código fonte para estudos acadêmicos.
Em pouco tempo o UNIX ganhou uma legião de programadores no meio acadêmico, que o consideravam seguro, estável, robusto e eficiente.
Na mesma época Bill Joy, estudante de gradução de Berkley, frustrado com o editor ED, criou o editor EM, uma reimplementação mais eficiente do mesmo. E após a criação do EM, Bill Joy iniciou o desenvolvimento do BSD UNIX, BSD significa Berkley.
Em 1973 o UNIX foi reescrito em C, talvez o fato mais importante da história deste sistema operacional. Isto significava que o UNIX poderia ser portado para novo hardware em meses, e que mudanças eram fáceis. A linguagem C foi projetada para o sistema operacional UNIX, e portanto há uma grande sinergia entre C e UNIX. Em 1975 foi lançada a V6, que foi a primeira versão de UNIX amplamente disponível fora dos domínios do Bell Labs, especialmente em universidades. Este foi o início da diversidade e popularidade do UNIX. Nesta época a Universidade de Berkley comprou os fontes do UNIX e alunos começaram a fazer modificações ao sistema. Em 1978 Berkley Software Distribuition lança a série 2.xBSD para PDP - 11 (a versão 2.11 foi lançada em 1992). Nesta versão saiu o csh. Neste ano também saiu a série 3BSD, que teve uma importante contribuição, virtual memory. Em 1979 saiu a V7 e o Unix foi portado para o novo VAX da Digital. Esta versão incluia C K&R completo, uucp, Bourne Shell. O kernel tinha meramente 40 bytes! Esta foi a primeira versão vendida comercialmente do sistema, mas usada principalmente por universidades. Em 1983 é lançado o System V da AT&T e o 4.2 BSD. O SV incluía o pacote IPC (shm, msg, sem) para comunicação entre processos. Surgiram outras versões do SV com a inclusão de novas características como sharedlibs no SVR4. O 4.2BSD foi talvez uma das mais importantes versões do UNIX. O seu software de conexão de redes tornava muito fácil a tarefa de conectar computadores UNIX a redes locais. Nessa versão é que foram integrados os softwares que implementam TCP/IP e sockets. Fonte: http://www.pop-rs.rnp.br/ovni/unix/history.html
[editar] O Unix e os Anos 80
Nos anos 80 os conceitos do UNIX foram adotados por diversas instituições, várias derivações do UNIX da AT&T foram surgindo, em empresas, universidades e comunidades.
Nos anos 80 várias empresas como SGI, IBM, SUN, HP e NCR começaram a vender computadores com suas próprias versões do UNIX baseado no código do UNIX da AT&T e BSD.
1981 UNIX SYSTEM III da AT&T Derivado do UNIX V7 1982 SUNOS 1.0 da SUN Derivado do 4.1BSD 1982 UNIX SYSTEM IV da AT&T Derivado do UNIX System III 1983 UNIX SYSTEM V da AT&T Derivado do UNIX System VI 1986 HPUX 1.0 da HP Derivado do UNIX System V 1986 AIX/RT da IBM Derivado do UNIX System V 1987 IRIX 1.0 da SGI Derivado do UNIX System V 1989 AIX/6000 3.0 da IBM Derivado do IBM AIX/RT 1989 Solaris 1.0 da SUN Derivado do 4.1BSD 1989 NEXTSTEP 1.0 da APPLE Derivado do Match 2.5 1993 FREEBSD 1.0 Derivado do 4.3BSD 1994 SCO UNIX 3.2.4 Dervidado do Unix System V 1994 NETBSD 1.0 Derivado do 4.3BSD 1994 LINUX 1.0 Derivado do Linux 0.1 que foi inspirado no Minix 1995 OPENBSD 1.0 Derivado do NETBSD 1.0 1996 OPENSTEP 4.0 Derivado do NEXTSTEP 3.0 1997 GNU HURD 0.2 Derivado do Match 3.0 1999 MACOS X Server 1.0 da APPLE Derivado do OpenStep 4.0
Imagem:Http://www.zwahlendesign.ch/images/screenshot/unix desktop linux 1600x1200.jpg
[editar] Padrões abertos
Apesar de cada fabricante ou empresa ter seu meio de comunicação patenteado, foi necessário nos anos 80 em um período chamado UNIX WAR, uma padronização, todos os fabricantes queriam tornar seus métodos seu hardware e software padrão e o que aconteceu foi na verdade uma confusão de componentes, sistemas e redes que não se falavam e que não eram compatíveis.
[editar] POSIX
O Padrão Posix foi criado pela IEEE (Institute of Electrical and Electronics Engineers) para definir normas de interoperabilidade entre sistemas POSIX, desta forma os sistemas operacionais se tornaram portáveis, aplicações se tornaram portáveis.
[editar] TCP/IP, OSI & REDES
O TCP/IP foi um meio de comunicação criado pelo governo para interligar bases militares, governo e universidades de forma descentralizada, como estratégia se caso houvesse um guerra com tentativas de destruir informações e meios de comunicação, porém como tempo este método de comunicação foi se tornando o padrão de comunicações e evoluiu para o que é hoje chamada de INTERNET.
Foi proposto pela ISO um modelo mais elaborado chamado OSI com 7 camadas distintas, porém o modelo nunca foi implementado de fato, ficando o TCP/IP como modelo de fato e o OSI como modelo de referência.
[editar] Microsoft & UNIX
Bom o início foi o Multics, logo depois UNIX e seus derivados, a microsoft aproveitou a carona, comprou alguns licenças da AT&T UNIX Versão 7, mmodificou incorporando algumas tecnologias BSD, e chamou seu flavor XENIX, e usou por algum tempo, não chegou a vender aos usuários finais, distribuía como OEM em hardwares proprietários. Quando a microsoft começou a trabalhar com a IBM e desenvolver o OS2 ela perdeu o interesse pelo XENIX e vendeu para SCO, com a venda ficou com 25% da SCO e esta empresa começou a distribuir o XENIX como SCO UNIX. Depois a Microsoft também perdeu o interesse pelo OS2 e investiu no DOS, desistiu de modelos e padrões abertos como POSIX e iniciou o processo de monopólio industrial e intelectual que existe até hoje.
Em 1976 Bill Gates da Microsoft redigiu uma carta pública reclamando da livre troca de conhecimento, do compartilhamento, da cordialidade entre os programadores, da forma que eles trabalhavam, compartilhando idéias, códigos, aprendendo e construindo juntos novas tecnologias, ele chamou estas pessoas de "hobbystas" junto com outras pessoas e incutiu a idéia de que cobrassem pelo software como cobram pelo hardware, começando assim a era do capitalismo agressivo no desenvolvimento do software.
Felizmente hoje com a FSF (Free Software Foundation), o projeto GNU, o sistema GNU/LINUX, BSBS, as licenças OSI (OpenSource Iniciative), podemos ter paz depois de praticamente 2 décadas de monopólios, patentes, DRM e terrorismo digital, vimos a microsoft indo ao seu AUGE e declinando com velocidade devido as tecnologias livres estarem alcançando governos, universidades e a sociedade civil.
[editar] FSF, Projeto GNU
Richard Stalman, programador do MIT estava cansado das patentes de software e ter que pagar pelo hardware e pelo software, estava cansado dos códigos fechados e decidiu então criar a FSF, Free Software Foundation como objetivo de criar um sistema operacional totalmente livre e ferramentas livres para programadores e usuários.
A FSF criou o projeto GNU, as licenças livres e iniciou o desenvolvimento de ferramentas e do sistema operacional GNU HURD.
O HURD nunca saiu, mas a FSF disseminou nos 4 cantos do planeta a GPL e o conceito do Software Livre e suas liberdades.
* A liberdade para executar o programa, para qualquer propósito (liberdade nº 0); * A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades (liberdade nº 1). Acesso ao código-fonte é um pré-requisito para esta liberdade; * A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2); * A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (liberdade nº 3). Acesso ao código-fonte é um pré-requisito para esta liberdade;
Mais tarde as ferramentas GNU se juntaram ao Kernel de Linux Torvalds para criar um sistema operacional completo, alternativo, dando liberdade a milhões e milhões de usuários.
[editar] Kernel Linux
O Kernel criado por Linus Torvalds, baseado no MINIX de Andy Tanenbaum, é um dos exemplos de software que podem ser concebidos com desenvolvimento colaborativo e código aberto, hoje ele é uma dos softwares livres mais conhecidos e difundidos no mundo.
Hoje o GNU/Linux é uma grande ameaça a monopolista Microsoft e uma alternativa as pessoas que acreditam no compartilhamento de conhecimento
[editar] Sistema operacional GNU/Linux
Ferramentas livres do projeto GNU e o Kernel Linux formam um dos sistemas operacionais mais eficientes, seguros e estáveis da atualidade.
[editar] Tipos de Software
Software Livre: Atende as 4 liberdades da GNU GPL
OpenSource: Tem o código fonte a disposição, ele deve ser compatível com o modelo OSI (OpenSource Iniciative).
Shareware/Demo/Trial: Você instala por um período de uso, mas ele expira, e para usar precisará pagar licenças depois que expirar. Não se tem acesso ao código fonte.
Freeware: Você instala de graça, mas não se tem acesso ao código fonte.
[editar] Linguagens de programação
Todo o software é criado ou escrito através de uma linguagem de programação, que pode ser compilada ou interpreta, existem diversos tipos de linguagem de programação, aqui podemos dividir de várias formas e características.
[editar] Divisão por paradigmas
Funcional
Estruturada
Orientada a objetos
Natural
Lógica
[editar] Divisão por Estrutura de Tipos
Fracamente tipada
Fortemente tipada, como java
Dinamicamente tipoada, como python e ruby
[editar] Divisão por Gerações
Primeira geracão, linguagem de máquina, Assembly
Segunda geracão, primeiras linguagens, como Fortran...
Terceira geração, procedurais e estruturadas, como C
Quarta geração, liguagens que geram outras linguagens, como SQL
Quinta geração, linguagens lógicas, como prolog
[editar] Divisão por grau de abstração
[editar] Baixo nível
Linguagem que está perto da linguagem de máquina, como:
Assembly
[editar] Alto nível
Linguagem onde existe uma abstração maior, está longe da linguagem de máquina, como:
Java
PHP
C++
Python
Ruby
[editar] Referências
- http://pt.wikipedia.org/wiki/Multics
- http://www.pop-rs.rnp.br/ovni/unix/history.html
- http://www.it.rit.edu/~jxs/jargon/html/M/Multics.html
- http://www.planetarium.com.br/planetarium/noticias/2001/3/984441001
- http://pt.wikipedia.org/wiki/POSIX
- http://pt.wikipedia.org/wiki/Modelo_OSI
- http://www.guiadohardware.net/artigos/modelo-osi/
- http://pt.wikipedia.org/wiki/DOS
- http://pt.wikipedia.org/wiki/Xenix
- http://www.kernel.org
- http://wwww.gnu.org
- http://pt.wikipedia.org/wiki/Linux
- http://pt.wikipedia.org/wiki/Software_livre
- http://pt.wikipedia.org/wiki/Software
- http://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o

