Anda di halaman 1dari 26

Tiago Ap. Pessoa Wesley S.Dia Evandro D. Oliveira Marcio S.

Oliveira Bruno Luiz Ronaldo Calvacante

RA: 0911345828 RA: 0959532446 RA: 0919435437 RA: 0920349523 RA: 0919440340 RA: 0901395323

Trabalho apresentado para avaliao disciplina de _________________ , do curso Cincia da Computao, perodo noturno, Universidade Anhanguera de Campinas FAC ministrado pelo professor Ivair Teixeira

na de da III,

Campinas, Dezembro de 2012

Contedo
ETAPA 3 ................................................................................................................................................... 5 Pascal (linguagem de programao) ....................................................................................................... 5 Implementaes ...................................................................................................................................... 6 Padres/Normas ..................................................................................................................................... 8 Sintaxe ..................................................................................................................................................... 9 Exemplos de cdigo................................................................................................................................. 9 Programa Ol Mundo....................................................................................................................... 9 Nmeros perfeitos .......................................................................................................................... 10 C (linguagem de programao) ............................................................................................................. 10 Histria .................................................................................................................................................. 11 K&R C ..................................................................................................................................................... 11 ANSI C e ISO C........................................................................................................................................ 13 C99 ....................................................................................................................................................... 13 C11 ....................................................................................................................................................... 14 Exemplos ............................................................................................................................................. 15 Programa Ol Mundo..................................................................................................................... 15 Matemtica ........................................................................................................................................... 15 Estruturas de dados ........................................................................................................................... 16 ETAPA 4 ................................................................................................................................................. 17 C++......................................................................................................................................................... 17 Histria ................................................................................................................................................. 18 A evoluo da linguagem .............................................................................................................. 18 Etimologia ............................................................................................................................................ 20 Trabalhos futuros ................................................................................................................................ 20 Exemplos de cdigo............................................................................................................................... 21 Java ........................................................................................................................................................ 21 Histria ................................................................................................................................................. 22 Padronizao ...................................................................................................................................... 23 Exemplos de cdigo............................................................................................................................... 24 Mtodo main ........................................................................................................................................ 24 Classes................................................................................................................................................. 24

Campinas, Dezembro de 2012

Classes internas ................................................................................................................................. 25 Interfaces ............................................................................................................................................. 25

Campinas, Dezembro de 2012

Lista de Figuras

Figura 1- Ken Thompson e Dennis Ritchie ............................................................................................ 11 No table of figures entries found.

Campinas, Dezembro de 2012

ETAPA 3

Pascal (linguagem de programao)


A linguagem de programao PASCAL foi criada para ser uma ferramenta educacional, isto no incio da dcada de 70 pelo Prof. Niklaus Wirth do Technical University em Zurique. Foi batizado pelo seu idealizador de PASCAL, em homenagem ao grande matemtico Blaise Pascal, inventor de uma das primeiras mquinas lgicas conhecidas. Foi baseada em algumas linguagens estruturadas existentes ento, ALGOL e PLI, tentando facilitar ao mximo o seu aprendizado. O PASCAL somente ganhou popularidade quando foi adotado pela Universidade da Califrnia, San Diego, em 1973. No mesmo perodo, em seus cursos, tambm foram feitas implementaes para minis e microcomputadores. Nas suas primeiras implementaes, no era muito amigvel ao

programador, pois eram necessrios vrios passos para se obter um programa executvel. Primeiro devia se escrever o programa executvel. Primeiro devia se escrever o programa em um editor de texto, depois compil-lo, "linc-lo" e mont-lo. Quando era feita uma manuteno no mesmo, todos estes passos deviam ser refeitos o que no estimulava os programadores. Apesar de todas as dificuldades iniciais, de seu propsito educacional e a facilidade de programao, o PASCAL comeou a ser utilizado por programadores de outras linguagens, tornando-se para surpresa do prprio Niklaus, um produto comercial. Contudo somente ao final do ano de 1983, que a soft-house americana Borland Internacional, lanou o TURBO PASCAL para microcomputadores, aliado ao lanamento do TURBO. Tambm neste mesmo perodo, houve um grande crescimento no mercado de microcomputadores. O TURBO PASCAL consegue em um nico ambiente, colocar um editor de textos, bastantes parecido com o WordStar e o SideKick, um cdigo fonte ligado a um sistema de detectao de erros, um compilador de 1 passo, o que o torna bastante veloz, com a desvantagem de que apenas um erro localizado por vez, e

tambm um "linkador" que permite a ligao do programa PASCAL com objetos, mesmos os geradores por outras linguagens. O TURBO PASCAL em suas primeiras verses, at a sua verso 3, tinha uma tela inicial que tambm servia de menu principal, todas as rotinas existentes estavam em um nico arquivo e o programa executvel tinha uma estrutura .COM(extenso). A partir da verso 4, o TURBO teve algumas mudanas conceituas, sendo as principais, de ambiente, tornando-o mais amigvel, como a maioria do softwares modernos. As rotinas auxiliares foram divididas de acordo com a atividade que desempenham no programa, e a prpria estrutura do programa, .EXE (extenso) que por suas caractersticas separa as diversas reas do programa em segmentos de 64 Kbytes, alm de novos tipos reais. A partir da verso 5.0, foram tambm adicionadas formas de depurao dos programas que esto em ambiente, a partir da verso 5.5. Foi incrementada tambm uma estrutura da linguagem orientada por objeto que permite a criao de registro, contendo estruturas de programao (O.O.P.). Caractersticas Inovadoras do Pascal: estruturas de controlo flexveis; tipos definidos pelo utilizador; ficheiros; records; conjuntos.

Implementaes

O primeiro compilador Pascal foi desenvolvido em Zurique para a famlia de computadores CDC 6000, sendo lanado em 1970. Tambm em 1970 foi desenvolvido o primeiro compilador Pascal norte americano, na Universidade de Illinois por Donald B. Gillies, que gerava cdigo de mquina nativo para o minicomputador PDP-11. Pensando-se em propagar rapidamente o uso da linguagem, foi criado, em Zurique, um "kit de converso" que incluia um compilador que gerava cdigo intermedirio, e um simulador para ele. Esse kit foi batizado de p-System, e foi utilizado, entre outras coisas, para criar um sistema operacional para minicomputadores chamado UCSD p-System, desenvolvido pelo Instituto de Sistemas

de

Informao

da Universidade

da

Califrnia em San

Diego.

Segundo

prprio Niklaus Wirth, o p-System e o UCSD foram instrumentais na popularizao do Pascal. No padro UCSD, as Strings passaram a ser tipos pr-definidos (no Pascal padro era utilizados packed-arrays). Nos anos 80, Anders Hejlsberg desenvolveu o compilador Blue Label Pascal o Nascom-2. Depois, ele foi trabalhar na Borland e reescreveu seu compilador transformando-o no Turbo Pascal para a plataforma IBM PC (e tambm CP/M 80), que era vendido a US$ 49,95, muito mais barato do que o Blue Label. Uma caracterstica muito importante que o Turbo Pascal uma linguagem compilada, que gera cdigo de mquina real para a arquitetura Intel 8088, tornando-a muito mais rpida do que as linguagens interpretadas. Por ser mais barato, o Turbo Pascal passou a ter uma grande influncia na comunidade Pascal, que comeou a se concentrar na plataforma IBM PC no fim dos anos 80. Muitos usurios de PC da poca migraram para o Turbo Pascal, em busca de uma linguagem estruturada que no fosse interpretada, para substituir, por exemplo, o BASIC. Pode se afirmar que o sucesso comercial de Turbo Pascal foi definitivo para a ampla divulgao da linguagem Pascal entre os usurios de microcomputador. Outra variante era o Super Pascal, que adicionava labels no numricas, o comando return e expresses como nomes de tipos. Durante os anos 90, compiladores que podiam ser modificados para trabalhar com arquiteturas diferentes tiveram grande destaque, incluindo nessa lista o Pascal. O prximo grande passo para a linguagem, foi a implementao da orientao a objeto (OO ou OOP em ingls) na sua estrutura, comeando com a verso 5.5 do Turbo Pascal. Mais tarde, ao projetar o Delphi, querendo funcionalidades mais elaboradas da orientao a objeto, a Borland utilizou o conceito Object Pascal criado pela Apple Inc., utilizando-o como base para uma nova linguagem, que nas verses iniciais era chamado de Object Pascal foi rebatizado como Delphi Programming Language nas verses posteriores. As maiores diferenas em relao s implementaes OO das verses mais antigas foram a adio do conceito de objetos por referncia, construtores, destrutores e propriedades, entre outros.

Padres/Normas

Em 1983, a linguagem foi padronizada, na norma internacional ISO / IEC 7185, assim como vrios padres locais especficos de cada pas, incluindo a norma americana ANSI/IEEE770X3.97-1983, e ISO 7185:1983. A diferena entre as duas normas que a padro ISO possui o nvel 1, extenso do arrays conformantes, enquanto a ANSI no permitiu esta extenso linguagem original (verso Wirth). Em 1989, foi revista ISO 7185 (ISO 7185:1990) para corrigir vrios erros e ambiguidades encontradas no documento original Em 1990, foi criado uma norma ISO / IEC 10206 padronizando o Pascal. Em 1993, o padro ANSI foi substitudo pelo ANSI organizao com um "ponteiro" para a norma ISO 7185:1990, que termina efetivamente o seu estatuto como um padro diferente. A norma ISO 7185 foi indicado para ser uma clarificao de Wirth da linguagem como detalhado em 1974 Manual do Usurio e Relatrio [Jensen e Wirth], mas tambm foi notvel pela incluso de "Parmetros de array conformantes" como um nvel 1 da norma, sendo nvel 0 Pascal sem Conformantes Arrays. Note que o prprio Niklaus Wirth se refere linguagem 1974 como o padro, por exemplo, para diferenci-la das caractersticas especficas de implementao em nvel de mquina do compilador CDC 6000. Esta linguagem foi documentada em "The Pascal Report", a segunda parte do "Pascal users manual and report". Nas grandes mquinas (mainframes e minicomputadores) originadas pelo Pascal, eram seguidos padres gerais. Na IBM-PC, no eram. No IBM-PC, o Turbo Pascal e Delphi, padro Borland, tem o maior nmero de usurios. Assim, de extrema importncia entender se uma determinada aplicao corresponde a linguagem original Pascal, Borland ou um dialeto do mesmo. As verses da linguagem do IBM-PC comearam a divergir com a vinda da UCSD Pascal, uma aplicao que implementou ao programa vrias prorrogaes

para a linguagem, juntamente com vrias omisses e mudanas. Muitas caractersticas da linguagem UCSD sobrevivem atualmente, inclusive em linguagens Borlands.

Sintaxe

linguagem Pascal foi facilitando

criada a

para de

incentivar

a programao com baixo

modular e estruturada,

criao

procedimentos

acoplamento e alta coeso. Um programa em Pascal composto de constantes e variveis globais, procedimentos e funes re-entrantes e um programa principal. Procedimentos no retornam valores, funes sim. Tanto em procedimentos quanto em funes os parmetros podem ser passados por referncia ou por valor. possvel passar vetores e matrizes com o tamanho, mas no a quantidade de dimenses, especificado no tempo de execuo. Procedimentos e funes podem conter, dentro de seu escopo, novos procedimentos e funes. Dentro de qualquer parte do programa tambm podem ser criados blocos com os comandos BEGIN e END, que tambm possuem seu prprio escopo.Nas verses originais, as variveis s podiam ser declaradas em posies especficas e no ao decorrer do programa, o que limitava a regra de escopo. O conjunto de procedimentos e funes pr-definidos fixo e inclui as funes read, readln, write e writeln, para realizar E/S.

Exemplos de cdigo

Programa Ol Mundo
program OlaMundo; begin WriteLn('Ol, Mundo!'); end.

10

Nmeros perfeitos
program numerosPerfeitos; uses crt; var ate, x, soma, i: integer; begin clrscr; x := 0; writeln('Numeros perfeitos abaixo de'); Readln(ate); repeat x := x + 1; soma := 0; for i := 1 to x - 1 do begin if x mod i = 0 then soma := soma + i; end; if soma = x then begin writeln(x); end; until (x > ate); writeln('Pressione qualquer tecla para finalizar'); readkey; end.

C (linguagem de programao)

uma linguagem

de

programao

compilada de

propsito

geral, estruturada,imperativa, procedural, padronizada pela ISO, criada em 1972, por Dennis Ritchie, no AT&T Bell Labs, para desenvolver o sistema

operacional Unix (que foi originalmente escrito em Assembly).

11

Histria

Figura 1- Ken Thompson e Dennis Ritchie

desenvolvimento

inicial

de

ocorreu

no

AT&T

Bell

Labs

entre 1969 e 1973. No se sabe se o nome "C" foi dado linguagem porque muitas de suas caractersticas derivaram da linguagem B e C a letra conseguinte no alfabeto, ou porque "C" a segunda letra do nome da linguagem BCPL, da qual derivou-se a linguagem B. C foi originalmente desenvolvido para a implementao do sistema Unix (originalmente escrito em PDP-7 Assembly, por Dennis Ritchie e Ken Thompson). Em 1973, com a adio do tipo struct, C tornou-se poderoso o bastante para a maioria das partes do ncleo do Unix, serem reescritas em C. Este foi um dos primeiros sistemas que foram implementados em uma linguagem que no o Assembly, sendo exemplos anteriores os sistemas:Multics (escrito em PL/I) e TRIPOS (escrito em BCPL). Segundo Ritchie, o perodo mais criativo ocorreu em 1972.

K&R C
Em 1978, Brian Kernighan e Dennis Ritchie publicaram a primeira edio do livro The C Programming Language. Esse livro, conhecido pelos programadores de C como "K&R", serviu durante muitos anos como uma especificao informal da

12

linguagem. A verso da linguagem C que ele descreve usualmente referida como "K&R C". A segunda edio do livro cobriu o padro posterior, o ANSI C. K&R C introduziu as seguintes caractersticas na linguagem: Biblioteca padro de E/S Tipos de dado struct Tipos de dado long int Tipos de dado unsigned int O operador =+ foi alterado para +=, e =- para -= (o analisador lxico do compilador fazia confuso entre i =+ 10 e i = +10. O mesmo acontecia com =-) K&R C frequentemente considerado a parte mais bsica da linguagem, cujo suporte deve ser assegurado por um compilador C. Durante muitos anos, mesmo aps a introduo do padro ANSI C, K&R C foi considerado o "menor denominador comum", em que programadores de C se apoiavam quando uma portabilidade mxima era desejada, j que nem todos os compiladores eram actualizados o bastante para suportar o padro ANSI C. Nos anos que se seguiram publicao do K&R C, algumas caractersticas "no-oficiais" foram adicionadas linguagem, suportadas por compiladores da AT&T e de outros vendedores. Estas incluam: Funes void e tipos de dados void * Funes que retornam tipos struct ou union Campos de nome struct num espao de nome separado para cada tipo struct Atribuio a tipos de dados struct Qualificadores const para criar um objecto s de leitura Biblioteca padro, que incorpora grande parte da funcionalidade

implementada por vrios vendedores Enumeraes Clculos de ponto-flutuante em preciso simples (no K&R C, os clculos intermedirios eram feitos sempre em double, porque era mais eficiente na mquina onde a primeira implementao do C foi feita)

13

ANSI C e ISO C
Durante os finais da dcada de 1970, a linguagem C comeou a substituir a linguagem BASIC como a linguagem de programao demicrocomputadores mais usada. Durante a dcada de 1980, foi adaptada para uso no PC IBM, e a sua popularidade comeou a aumentar significativamente. Ao mesmo tempo, Bjarne Stroustrup, juntamente com outros nos laboratrios Bell, comeou a trabalhar num projeto onde se adicionavam construes de linguagens de programao orientada por objetos linguagem C. A linguagem que eles produziram, chamada C++, nos dias de hoje a linguagem de programao de aplicaes mais comum no sistema operativo Windows da companhia Microsoft; C permanece mais popular no mundo Unix. Em 1983, o instituto norte-americano de padres (ANSI) formou um comit, X3J11, para estabelecer uma especificao do padro da linguagem C. Aps um processo longo e rduo, o padro foi completo em 1989 e ratificado como ANSI X3.159-1989 "Programming Language C". Esta verso da linguagem

frequentemente referida como ANSI C. Em 1990, o padro ANSI C, aps sofrer umas modificaes menores, foi adotado pela Organizao Internacional para Padronizao (ISO) como ISO/IEC 9899:1990, tambm conhecido como C89 ou C90. Um dos objetivos do processo de padronizao ANSI C foi o de produzir um sobreconjunto do K&R C, incorporando muitas das caractersticas no-oficiais subsequentemente introduzidas. Entretanto, muitos programas tinham sido escritos e que no compilavam em certas plataformas, ou com um certo compilador, devido ao uso de bibliotecas de funes no-padro e ao fato de alguns compiladores no aderirem ao ANSI C.

C99

Aps o processo da padronizao ANSI, as especificaes da linguagem C permaneceram relativamente estticas por algum tempo, enquanto que a linguagem

14

C++ continuou a evoluir. (em 1995, a Normative Amendment 1 criou uma verso nova da linguagem C mas esta verso raramente tida em conta.) Contudo, o padro foi submetido a uma reviso nos finais da dcada de 1990, levando publicao da norma ISO 9899:1999 em 1999. Este padro geralmente referido como "C99". O padro foi adoptado como um padro ANSI em maro de 2000. As novas caractersticas do C99 incluem: Funes em linha Remoo de restries sobre a localizao da declarao de variveis (como em C++) Adio de vrios tipos de dados novos, incluindo o long long int (para minimizar problemas na transio de 32-bits para 64-bits), um tipo de dado boolean explicito (chamado _Bool) e um tipo complex que representa nmeros complexos Vetores de dados de comprimento varivel (o vetor pode ter um tamanho diferente a cada execuo de uma funo, mas no cresce depois de criado) Suporte oficial para comentrios de uma linha iniciados por //, emprestados da linguagem C++ Vrias funes de biblioteca novas, tais como snprintf() Vrios ficheiros-cabealho novos, tais como stdint.h O interesse em suportar as caractersticas novas de C99 parece depender muito das entidades. Apesar do GCC e vrios outros compiladores suportarem grande parte das novas caractersticas do C99, os compiladores mantidos pela Microsoft e pela Borland suportam pouqussimos recursos do C99, e estas duas companhias no parecem estar muito interessadas em adicionar tais

funcionalidades, ignorando por completo as normas internacionais. A Microsoft parece preferir dar mais nfase ao C++

C11
Em 2007, se iniciou o trabalho em antecipao de outra reviso do padro de C, informalmente chamada de C11 ou C1X. O comit dos padres de C adotou regras para limitar a insero de novos recursos que no tenham ainda sido testados por implementaes existentes

15

Em dezembro de 2011 foi publicada a verso estvel da especificao, como ISO/IEC 9899:2011.

Exemplos
Programa Ol Mundo
int main() { printf("Ol, Mundo!\n"); } Ou #include <stdio.h> /* Pacotes com funes de entrada e sada */ int main(void) { printf("Ol, Mundo!\n"); return 0; /* Retorna 0, pois main retorna um int */ } /* Nova linha aps fechar a chave principal */

Matemtica
#include <math.h> // necessria para pow() e sqrt() #include <stdio.h> // necessria para printf() e getchar() int main() { int a = 2, b = 3; printf("%d printf("%d printf("%d printf("%d fracionrio + x / %d %d %d %d = = = = %d\n", a, %d\n", a, %d\n", a, %0.1f\n", b, b, b, a, a + b); a - b); a * b); b, (float) a / b); // resultado

16

printf("%d elevado a %d = %0.1f\n", a, b, pow(a, b)); // pow(base, expoente) printf("raiz quadrada de %d = %0.1f\n", a, sqrt(a)); getchar(); //O uso dessa funo necessria apenas nos sistemas Windows, para manter o terminal (Prompt de comando) aberto return 0; }

Estruturas de dados
#include <stdio.h> struct Pessoa { char nome[64]; // vetor de 64 chars para o nome unsigned short int idade; char rg[13]; }; int main() { struct Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declarao da varivel "exemplo" printf("Nome: %s\n", exemplo.nome); printf("Idade: %hu\n", exemplo.idade); printf("RG: %s\n", exemplo.rg); getchar(); // desnecessrio, mas comumente utilizado em ambientes windows para "segurar" o terminal aberto return 0; }

Ou, equivalente:

#include <stdio.h> typedef struct Pessoa { char nome[64]; // vetor de 64 chars para o nome unsigned short int idade; char rg[13];

17

} Pessoa; int main() { Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declarao da varivel "exemplo" printf("Nome: %s\n", exemplo.nome); printf("Idade: %hu\n", exemplo.idade); printf("RG: %s\n", exemplo.rg); getchar(); return 0; }

ETAPA 4

C++
C++ (em portugus l-se "c mais mais") uma linguagem de

programao multi-paradigma e de uso geral. A linguagem considerada de mdio nvel, pois combina caractersticas de linguagens de alto e baixo nveis. Desde os anos 1990 uma das linguagens comerciais mais populares, sendo bastante usada tambm na academia por seu grande desempenho e base de utilizadores. Bjarne Stroustrup desenvolveu o C++ (originalmente com o nome C with Classes,que significa C com classes em portugus) em 1983 no Bell Labs como um adicional linguagem C. Novas caractersticas foram adicionadas com o tempo, como funes virtuais, sobrecarga de operadores, herana mltipla, gabaritos e tratamento de excees. Aps a padronizao ISO realizada em 1998 e a posterior reviso realizada em 2003, uma nova verso da especificao da linguagem foi lanada em setembro de 2011, conhecida informalmente

como C++11 ou C++0x

18

Histria
A evoluo da linguagem

O C++ foi inicialmente desenvolvido por Bjarne Stroustrup dos Bell Labs, durante a dcada de 1980 com o objetivo implementar uma verso distribuda do ncleo Unix. Como o Unix era escrito em C, dever-se-ia manter a

compatibilidade, ainda que adicionando novos recursos. Alguns dos desafios incluam simular a infraestrutura da comunicao entre processos num sistema distribudo ou de memria compartilhada e escrever drivers para tal sistema. Stroustrup percebeu que a linguagem Simula 67 possua caractersticas bastante teis para o desenvolvimento de software, mas que era muito lenta para uso prtico. Por outro lado, a linguagem BCPL era rpida, mas possua demasiado baixo nvel, dificultando sua utilizao no desenvolvimento de aplicaes. A partir de sua experincia de doutorado, comeou a acrescentar elementos do Simula 67 no C, especialmente os recursos de criao e manipulao de objetos. O C foi escolhido como base de desenvolvimento da nova linguagem pois possua uma proposta de uso genrico, era rpido e tambm portvel para diversas plataformas. Algumas outras linguagens que tambm serviram de inspirao para o cientista da computao foram ALGOL 68, Ada, CLU e ML.

Figura 2 numero da figura - Bjarne Stro

19

Ainda em 1983 o nome da linguagem foi alterado de C with Classes para C++. Antes implementada usando um pr-processador, a linguagem passou a exigir um compilador prprio, escrito pelo prprio Stroustrup. Novas caractersticas foram adicionadas, como funes virtuais, sobrecarga deoperadores e

funes, referncias, constantes, gerenciamento manual de memria, melhorias na verificao de tipo de dado e estilo de comentrio de cdigo de uma linha (//). Em 1985 foi lanada a primeira edio do livro The C++ Programming Language, contendo referncias para a utilizao da linguagem, j que ainda no era uma norma oficial. A primeira verso comercial foi lanada em outubro do mesmo ano Em 1989 a segunda verso foi lanada, contendo novas caractersticas como herana mltipla, classes abstratas, mtodos estticos, mtodos constantes e membros protegidos, incrementando o suporte a orientao a objeto. Em 1990 foi lanado o livro The Annotated C++ Reference Manual, que tornou-se base para o futuro padro. Outras adies na linguagem incluem gabaritos, tratamento de excees, espao de nomes, converso segura de tipo de dado e o tipo booleano. Assim como a linguagem, sua biblioteca padro tambm sofreu melhorias ao longo do tempo. Sua primeira adio foi a biblioteca de E/S, e posteriormente a Standard Template Library (STL); ambas tornaram-se algumas das principais funcionalidades que distanciaram a linguagem em relao a C. Criada

primordialmente na HP por Alexander Stepanov no incio da dcada de 1990 para explorar os potenciais da programao genrica, a STL foi apresentada a um comit unificado ANSI e ISO em 1993 convite de Andrew Koenig. Aps uma proposta formal na reunio do ano seguinte, a biblioteca recebe o aval do comit. Depois de anos de trabalho, o mesmo comit ANSI/ISO padronizou o C++ em 1998 (ISO/IEC 14882:1998). Aps alguns anos foram reportados defeitos e imprecises no documento, e uma correo foi lanada em 2003. Por muito tempo, o C++ foi encarado como um super conjunto do C. Entretanto, em 1999 o novo padro ISO para a linguagem C tornou as duas linguagens ainda mais diferentes entre si. Devido a essas incompatibilidades, muitas empresas que desenvolvem compiladores no oferecem suporte verso mais recente da linguagem C. Pode-se dizer que C++ foi a nica linguagem entre tantas outras que obteve sucesso como uma sucessora linguagem C, inclusive servindo de inspirao para outras linguagens como Java, a IDL de CORBA e C.

20

Etimologia
Durante sua fase inicial de desenvolvimento, a linguagem era chamada "novo C", "C84" ou ainda "C com classes". O termo "C++" creditado a Rick Mascitti,e foi utilizado pela primeira vez em dezembro de 1983. Ele uma referncia ao operador de incremento ++, significando um acrscimo (uma evoluo) linguagem C. Em tom humorado, desenvolvedores software e especialistas em informtica no incio da dcada de 1990 costumavam relacionar o ++ do nome grande insistncia dos programadores em utilizar o C++ da mesma forma que a linguagem C, no usufruindo das novas facilidades que a linguagem poderia fornecer. Assim como o ++ estava sendo aplicado de maneira ps-fixa letra C, a linguagem C++ era uma evoluo do C ps-fixada, que s tornar-se-ia realidade em algum futuro remoto, no naquele momento.

Trabalhos futuros
A linguagem continua evoluindo de forma a fornecer novas funcionalidades. O grupo de desenvolvimento Boost.org trabalha para evoluir a biblioteca padro, informando o comit oficial da linguagem quais facilidades possuem maior retorno positivo dos usurios, seja por qualidade ou por utilidade, e quais ainda devem ser desenvolvidas. Tudo indica que o C++ continuar com sua natureza multi paradigma. Por exemplo, o trabalho da Boost.org dedica-se a acrescentar as qualidades da programao funcional e genrica. O padro C++ no define a implementao para a definio de nomes e tratamento de excees, entre outras facilidades especficas, o que frequentemente torna incompatveis cdigos

objeto produzidos por diferentes compiladores. Apesar disso, existem padres perifricos especficos para certas plataformas ou sistemas operacionais para padronizar compiladores dessas plataformas, como por exemplo, o C++ ABI. As empresas de desenvolvimento de compiladores ainda se esforam para suportar inteiramente o padro, especialmente na rea de gabaritos. Uma das disputas se refere palavra reservada export, que permite que a definio de um gabarito seja separada de sua declarao. O primeiro compilador a

implementar export foi o Comeau C++ em 2003 (cinco anos aps o lanamento do

21

padro), e no ano seguinte uma verso beta do Borland C++ Builder X tambm suportava a facilidade. Interessante notar que ambos os compiladores so baseados na verso EDG do C++. Muitos livros fornecem exemplos de cdigos para implementar export que no so compilveis, mas no h referncias para o problema mencionado. Outros compiladores como o Microsoft Visual C++ e o GCC no suportam a facilidade. O secretrio do comit oficial do C++ Herb Sutter recomendou que a palavra fosse removida de verses futuras do padro da linguagem. mas aps discusso a deciso final foi mant-la. Outras disputas relativas a gabaritos se referem especializao parcial, que foi pouco suportada por muitos anos depois que o C++ padro foi lanado. Atualmente a linguagem tem uma nova especificao, conhecida

por C++11 e publicada como 14882:2011

Exemplos de cdigo
"Ol, Mundo!".

#include <iostream> using namespace std; int main() { cout << "Ol mundo." << endl; return 0; }

Java
Java uma linguagem de programao orientada a objeto desenvolvida na dcada de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Diferentemente das linguagens convencionais, que

22

so compiladas para cdigo um bytecode que

nativo, por

linguagem uma mquina

Java virtual.

compilada linguagem

para de

executado

programao Java a linguagem convencional da Plataforma Java, mas no sua nica linguagem.

Histria
Em 1991, na Sun Microsystems, foi iniciado o Green Project, o bero do Java, uma linguagem de programao orientada a objetos. Os mentores do projeto eram Patrick Naughton, Mike Sheridan, e James Gosling. O objetivo do projeto no era a criao de uma nova linguagem de programao, mas antecipar e planejar a prxima onda do mundo digital. Eles acreditavam que, em algum tempo, haveria uma convergncia dos computadores com os equipamentos e

eletrodomsticos comumente usados pelas pessoas no seu dia-a-dia. Para provar a viabilidade desta ideia, 13 pessoas trabalharam arduamente durante 18 meses. No vero de 1992 eles emergiram de um escritrio de Sand Hill Road, no Menlo Park, com uma demonstrao funcional da ideia inicial. O prottipo se chamava *7 (l-se StarSeven), um controle remoto com uma interface grfica touchscreen. Para o *7, foi criado um mascote, hoje amplamente conhecido no mundo Java, o Duke. O trabalho do Duke no *7 era ser um guia virtual ajudando e ensinando o usurio a utilizar o equipamento. O *7 tinha a habilidade de controlar diversos dispositivos e aplicaes. James Gosling especificou uma nova linguagem de programao para o *7. Gosling decidiu batiz-la de Oak, que quer dizer carvalho, uma rvore que ele podia observar quando olhava pela sua janela. O prximo passo era encontrar um mercado para o *7. A equipe achava que uma boa ideia seria controlar televises e vdeo por demanda com o equipamento. Eles construram uma demonstrao chamada de MovieWood, mas infelizmente era muito cedo para que o vdeo por demanda bem como as empresas de TV a cabo pudessem viabilizar o negcio. A ideia que o *7 tentava vender, hoje j realidade em programas interativos e tambm na televiso digital. Permitir ao telespectador interagir com a emissora e com a programao em uma grande rede

23

de cabos, era algo muito visionrio e estava muito longe do que as empresas de TV a cabo tinham capacidade de entender e comprar. A ideia certa, na poca errada. Entretanto, o estouro da internet aconteceu e rapidamente uma grande rede interativa estava se estabelecendo. Era este tipo de rede interativa que a equipe do *7 estava tentando vender para as empresas de TV a cabo. E, da noite para o dia, no era mais necessrio construir a infra-estrutura para a rede, ela simplesmente estava l. Gosling foi incumbido de adaptar o Oak para a internet e em janeiro 1995 foi lanada uma nova verso do Oak que foi rebatizada para Java. A tecnologia Java tinha sido projetada para se mover por meio das redes de dispositivos heterogneos, redes como a internet. Agora aplicaes poderiam ser executadas dentro dos navegadoresnos Applets Java e tudo seria disponibilizado pela internet instantaneamente. Foi o esttico HTML dos navegadores que promoveu a rpida disseminao da dinmica tecnologia Java. A velocidade dos acontecimentos seguintes foi assustadora, o nmero de usurios cresceu rapidamente, grandes fornecedores de tecnologia, como a IBM anunciaram suporte para a tecnologia Java. Desde seu lanamento, em maio de 1995, a plataforma Java foi adotada mais rapidamente do que qualquer outra linguagem de programao na histria da computao. Em 2004 Java atingiu a marca de 3 milhes de desenvolvedores em todo mundo. Java continuou crescendo e hoje uma referncia no mercado de desenvolvimento de software. Java tornou-se popular pelo seu uso nainternet e hoje possui seu ambiente de execuo presente em navegadores, mainframes, sistemas operacionais, celulares, palmtops, cartes inteligentes etc.

Padronizao
Em 1997 a Sun Microsystems tentou submeter a linguagem a padronizao pelos rgos ISO/IEC e ECMA, mas acabou desistindo. Java ainda um padro de fato, que controlada atravs da JCP Java Community Process. Em 13 de novembro de2006, a Sun lanou a maior parte do Java como Software Livre sob os termos da GNU General Public License (GPL). Em 8 de maio de2007 a Sun finalizou o processo, tornando praticamente todo o cdigo Java como software de cdigo aberto, menos uma pequena poro da qual a Sun no possui copyright.

24

Exemplos de cdigo

Mtodo main
public class OlaMundo { /** * Mtodo que executa o programa * public = visto em qualquer lugar da aplicao. o modificador de acesso * static = iniciado automaticamente pela JVM, sem precisar de uma instncia * void = Mtodo sem retorno (retorno vazio) * main = Nome do mtodo, que obrigatorio ser este. Recebe como parmetro um array de String. * String[] args = Array de argumentos que podem ser repassados na chamada do programa. */ public static void main(String[] args) { System.out.println("Ol, Mundo!"); //Imprime na tela a frase } }

Classes
public abstract class Animal { public abstract void fazerBarulho(); } public class Cachorro extends Animal { public void fazerBarulho() { System.out.println("AuAu!"); } } public class Gato extends Animal { public void fazerBarulho() { System.out.println("Miau!"); } }

25

Classes internas
public class Cavalo extends Animal { public void fazerBarulho() { System.out.println("RIINCH!"); } // Classe interna e privada. Existe s no contexto da classe "Cavalo". private class Parasita extends Animal { public void fazerBarulho() { System.out.println("SQRRT"); } } }

Interfaces
public interface Pesado { double obterPeso(); } public interface Colorido { Color obterCor(); } public class Porco extends Animal implements Pesado, Colorido { public void fazerBarulho() { System.out.println("inc!"); } // Implementao da interface Pesado public double obterPeso() { return 50.00; } // Implementao da interface Colorido public Color obterCor() { return Color.BLACK; } // Uma propriedade s do porco public boolean enlameado() { return true;

26

} }