You are on page 1of 13
C A maioria dos critérios, especialmen confiabilidade néo € nem precisamente definida, nem exatam: conceitos ites, entretanto, e fornecém valiosas avaliagées sobre o projeto ¢ sobre as lin- guagens de programacio. Uma nota final sobre os eritérios de avaliacdo: os eritérios de projeto da linguagem sfo pesados diferentemente a partir de perspectivas diversas. Os implementadores da lin ‘guagem estio preocupados primeiramente com a dificuldade de implementar as constru "es € 05 recursos daquela. Os usuarios da linguagem estio preocupados em primeiro lugar com a capacidade de eserita e depois com a legibilidade. Os projeistas provavelmente enfatizardo a elegdncia e a capacidade de atrair um uso generalizado. Essas caracteristicas, as vezes, entram em conflito 1.4_Influéncias sobre 0 Projeto da Linguagem 141 Além daqueles fatores descrtos na Seco 1.3, varios outros influenciam no projeto basico das linguagens de programacio, Os mais importantes sio a arquitetura do computador € as metodologias de projeto do programa. Arquitetura do Computador ‘A arquitetura bésica dos computadores exerceu um efeito crucial sobre 0 projeto das lin guagens. A maioria des mais populares dos timos 35 anos foi projetada em fungio da rquitetura de computador prevalecente, chamada de arquitetura von Neumann, em home: ‘a um de seus eriadores, John von Neumann (pronuncia-se “fon Néiman"). Essas Tinguagens séo chamadas de imperativas. Em um computador de von Neumann, tanto os dados como os programas sio armazenados na mesma memoria. A unidade central de pro ‘amento (CPU), que executa realmente as instrucdes, é separada da meméria. Porvanto, as instrugbes e os dados devem ser canalizados (piped) ou transmitidos da meméria para a (CPU, Os resultados das operagdes na CPU devem ser nov sferidos para a memé: ria, Quase todos os computadores digitals construidos desde a década de 40 tém se baseado na arquitetura von Neumann. A estrucura global de um computador de von Neumann & ‘mostrada na Figura 1.1 (ver p. 36). or causa da arquitetura von Neumann, os recursos centrais das linguagens impera tivas so as varidveis, as quais modelam as células de meméria, as instrugdes de atribuigéo, baseadas na operacio de canalizacéo (piping) e a forma iterativa de repetiqao, o método mais eficiente dessa arquiterura. Os operandos das expressdes sio canalizados da meméria P Jiagdo daquela é canalizado de volta para a célula da meméria representada pelo lado esquerdo da atribuigéo. A iteracao € répida nos computa dores de von Neumann porque as instru las adjacentes da eméria, Essa eficiéncia desencoraja 0 uso da recursao para repeticio, ndo obstan qientemente ser mais nat ‘Conforme foi declarado anteriormente, uma linguagem funcional ou aplicativaé aquela cujo principal meio de fazer computagbes € aplicando funcoes a determinados pardmetros. A programacao pode ser feita em uma linguagem funcional sem o tipo de varidveis usadas ras imperativas, sem instrugGes de atribuigdo e sem iteracéo. Ainda que muitos cientistas 36 _ASPECTOS PRELIINARES | Memnéria (armazena tanto instrugées como dados) dos das operacies | instrugdes e dados Unidade eA a |< Dispostives de entrada esaida tral de processamento FIGURA 1.1.2 arquitetura do computador de vor Neumann, da computacio tenham feito expos es sobre os intimeros beneficios das linguagens funci onais, como oLISR, é improvavel que eles deitem de lado as imperativa até que um compu tador néo-von Neumann seja projetado, permitindo a execucio efiiente de programas em linguagens funcionas. Entre aqueles que lastmam tal fto, o mais eloglente tem sido Joha Backus, o projetsta-chefe da versdo orginal do FORTRAN (Backus, 1978). As miquines de arquitecureparalela que surgicam nos tltimos 15 anos apresentam alguma promessa de agilizar a velocidad de execucio de programas funcionais, mas, até agora, isso nfo tem sido sufiiente para torné-las compeitivas com programas imperatvos. Aliés, ainda que existam maneiras elegantes de usar arqulteturas paralelas para executar programas funcionais, a maioria dessas é usada para programas imperativs, especialmen 105 escritos em dialetos do FORTRAN 7 1.4.2 Metodologias de Programacao O final da década de 60 e 0 inicio da década de 70 trouxeram uma andlise intensa, em grande parte iniciada pelo movimento de programacio estrururada, tanto do processo de desenvolvimento de software como do projeto de linguagens de programacéo. Uma razdo importante para essa pesquisa foi a mudanca no importante custo de computacdo do hardware para o software, uma ver que os custos daquele diminuiram ¢ os custos dos programadores elevaram-se. Os aumentos de produtividade do programador am relativamente pequenos. Além disso, problemas progressivamente maiores e mais complexos passaram a ser resolvidos per computador. Em vez de simplesmente reso) NCEITOS DE LINGU juntos de equacées para simular rastreasiénto de satlites, como no inicio da déceda de 60, passaram a ser feitos programas para tarefas grandes e complexas, como, por exemple, ntrolar grandes instalacdes de refinaria de petrdleo e oferecer sistemas de reservas de passagens aéreas no mundo inteito. ‘As novas metodologias de desenvolvimento de software surgiram em conseqi das pesquisas da década de 70 e foram chamadas de projeto top-down e refinamento pa a asso. As principais deficiéncias descobertas nas linguagens de programacio foram a nao: plenitude de verificacao es de controle (que exigiam 0 uso excessivo de gotas) No final década de 70, iniciou-se uma mudanga das metodologias de projeto de pro gramas orientadas para o processo para as oientadas a dados. Colocando de maneira sim: ples, os métodos orientados a dados enfti o de dados, concentrando-se no uso de tipos de dados abstratos para resolver problemas Para que a abstracdo de dados seja usada eficentemente no projeto de sistemas de software, el ia pelaslinguegens voltadas para implementacao. A prim a oferecer um limitado suporte para abstracdo de dados foi a SIMULA 67 (Birtwistle 1973), ndo obstante ela certamente nfo ter sido levada 8 popularidade por causa disso. Os is da abstragio de dados néo foram amplamente reconhecidos até o inicio da déca. projetadas desde o final daquela década suporta dadas que ser4 discutida detalhadamente no Capitulo 10 s passos mais recentes na evolugdo do desenvolvimento de software orientado @ dadas, que se iniciou em meados da década de 80, & 0 projeto orientado a objeto. A meto dologia orientada a objeto iniia-se com a abstragio de dados, a qual encapsula o pro mento com objetos de dados e oculta 0 acesso a eles, ¢ adiciona heranca e vinculacéo dindmica de tipos. Heranga & um conceito poderoso que aumenta muito a reuilzagao po tencial dos softwares existentes, o, portanto, @ possbilidade de significativos a mentos na produtividade de desenvolvimento de software. Esse & um fator importante no aumento de popularidade das linguagens orientadas a objeto. A vinculagdo dindmica (ser tempo de execucio) de tipos permite um uso mais flextvel da heranca. A programaclo orientada a objeto desenvolveu-se juntamente com uma linguagem que suportou seus conceitos: a Smalltalk (Goldberg e Robson, 1983). Embora a Smalltalk rio tena sido to usada como algumas outras linguagens, 0 suporte para programacéo ada a objeto, agora, faz parte das linguagens de programacéo mais populares, inclu sive a Ada 95 (AARM, 1995), 0 Java e 0 C++. Os conceitos orientados @ objero também chegaram & programacéo funcional em CLOS (Bobrow et al, 1988) e programacio Iégica em Prolog++. O suporte & linguagem para programaclo orientada a objeto serd discutido detalhadamente no Capitulo 1 A programacio orientada ao processo é, em certo sentido, o oposto da programacéo otientada a dados. Nao obstante as métodos orientados a dados agora dominarem o desen volvimento de software, os métocos orientados 20 processo nfo foram abandonados. Ao contrério, tem ocorrido muita pesquiss em programacao orientada a objeto nos ltimos anos, especialmente na érea da concorréncia, Essesesforgos de pesquisa trouxeram con: a necessidade de facilidades de linguagem para criare para controlar unidades de prog ma concorrentes. A Ada e o Java ineluem essas capacidades. Desse modo, a evolucéo da programacio exi spacidades de linguagem. A concorréncia sera discu tide detalhadamente no Capitulo 12. IMINARES 4.5. Categorias de Linguagem 4.6 _Trade-Offs no Projeto da Linguagem ‘As linguagens de programagdo, muitas vezes, so categorizades em quatro caixas: impera- tivas funciona, ogicas e orientadas a objeto. Jd discutimos as caracteristicas das lingua gens imperativas e funcionais, Também descrevernos como as linguagens de programacio orientadas a objeto mais populares desenvolveram-se a partir das impe io obstan te o paradigma de desenvolvimento de software diferir bastante do paradigma orientado para procedimentos normalmente usado com a5 linguagens imperativas, as extensbes tum linguagem imperativa necessiras para suportar a programagio orientada a objeto no so opressivas. Por exemplo, as expresses, as instrugdes de atibuigdo e as instrugies de controle do C e do Java sao quase idénticas; por outro lado, os arrays, os subprogramas e & seméntica da linguagem Java séo muito diferentes em C. ‘Ua linguagem de programacdo ligica ¢ um exemplo baseado em regras. Em uma linguagem imperative, um algoritmo é especificado com grandes detalhes, ¢ a ordem de execusao espectfica das instrugdes ou dos comandos deve ser ineufda, Em uma lingua baseada em regras, estas sio especificadas sem nenhuma order particular, e o sistema de implementacio deve escolher uma ordem de execucio que produza o resultado desea. Essa abordagem ao desenvolvimento de software é radicalmente diferente daquelas usadas com os outros trés tipos de linguagens, e, evidentemente, exige um tipo de linguagem. completamente diferente. © Prolog, a mais popular linguagem de programagao Idgica usa- da, e a programacio Iogica serao discutidas no Capitulo ‘As linguagens de marcaglo* (markup), como a HTML, as vezes, so confundidas com as de programacio. Porém, as linguagens de marcagdo nao especificam computagies; a0 contréro, elas descrevem a aparéncia geral de documentos. Porém, muitos dos critérios de projeto e de avaliacdo descritos neste capitulo também se aplicam as linguagens de marca- Go. Afinal de contas, é evidentemente importante que o cdigo de marcacao sejafécil de escrever e de le. 0s critérios de avaliacio das linguagens de programacio descritos na Seco 1.3 fornecem uma estrurura para o projeto. infelizmente, essa estrutura € contraditria. Em seu docu: mento sobre projeto de linguagens, Hoare (1973) afirma que “existem tantos critrios im- portantes, mas confitantes, que a reconciliaglo ¢ a satsfagdo dos mesmos é uma grande tarefa de engenharia’. Doiscrtérios conflitantes séo a confibilidade e o custo de execugéo. Por exemplo, a definigdo da linguagem Ada exige que todas as referéncias aos elementos do array sejam verifcados para assegurar que 0 indice ou os indices estejam em suas faixas legals. Isso aumenta 0 custo de execugio de programas Ada que contenham um grande mimero de referéncias aos elementos do array. 0 C néo exige ve da faixa de indice, de modo que os programas em C executam mais rapidamente do que programas em Ada semantica mente equivalents, ndo obstante o§ programas em Ada sejam mais confidveis. Os projets: tas da Ada trocaram a eficiéncia de-exéeucio pela confibilidade. DE LINGUAGENS DE PROGRAMAGAO Como outro exemplo de critérios conflitantes que levam diretamente a trade-off n0 leremos o caso da APL. Esta inclui um poderoso conjunto de operadores para m array. Por causa do grande mimero de operadores, um niimero significative de novos simbolos teve de ser incluido na APL para representé-los. Além disso, muitos operadores APL podem ser usados em uma tnica expresso longa e complexa. Um resulta do desse elevado grau de expressvidade € que, para aplicagées que envolvem muitas ope ragdes com array, a APL & muito fécil de ser escrta (writable). De fato, uma enorme quantidade de computae cficada em um programa muito compacto. Outro sultado € que os prog L tém uma legibilidade muito rim, Uma expresséo compacta € concisa tem certa beleza matemética, mas ¢ dificil para qualquer outra pessoa entender, a ndo ser para quem a escreveu, O conhecido autor Daniel McCracken observou. certa vez que demorava quatro horas para ler um programa APL de quatro linhas (MeCracken, 1970). Os projetistas da APL trocaram a legibilidade por capacidade de escrita(writability), © conflo entre flexibilidade e segurance é comum no projeto de uma linguagem. Os gistros variantes em Pascal (variant records) permitem que uma célula de membr nha diferentes valores de tipo em diferentes momentos. Por exemplo, uma célula pode conter ou um ponteiro, ou um nimero inteiro. Entdo, pot sobre um Jor de ponteito calocado nesse tipo de eélula como se ele fosse um nimero intero, usan do-se qualquer operacdo definida para valores interos. Isso fornece ume saide na verifica Go de tipos da linguagem Pascal, que permite que um programa faga operagSes a ‘nos ponteiros, o que, as vezes, & conveniente, Porém, esse uso ndo-verificado das ‘meméria é, em geral, uma prética perig Abundam conflitos entre os critérios de projeto (e de avaliagao) de linguagens; alguns so sutis, outros slo ébvios. Portamto, é evide Ther construgbe 40 projetar uma linguagem de programaco envolve uma cole fo de meios-termos e de trade-off te que a tarefa de esco: 1.7_Métodos de Implementacao Como foi deserito na Seco 1.4.1, dois dos principais componentes de um computador sf0 1 processador. A membria interna é usada para armazenar progra. mas e dados. 0 processador & um conjunto de circuitos que garante a realizagao de um conjunto de operacées primitivas, ou de instrugdes de maquina, como aquelas para opera: Ges aritméticas e légicas. Na maioria dos computadores, algumas dessas instrugdes, que, as vezes, sio chamadas de macroinstrugbes, sio de fato implementadas com um conjunto 1¢8es de nivel ainda mais baixo, chamadas microinstrugGes. Uma vez que as mic instrugBes nunca sao vistas pelo software ou pelos programadores, usualmente as em qualquer discussdo sobre softwares. Portanto, elas nao serdo discutidas adic. seu conjunto de macroinstrugées, Na au le outro software de suporte, sia propria linguagem de méquina é a Unica que a ia dos computadores “entender”. Teoricamente, um computador pode ser projetado ‘e construido com uma linguagem de alto nivel particular como sua linguagem de méquina, mas seria muito complexo e caro, Além diss , porque seria A.opsio de 40 «TOS baixo que oferece as operagées primitivas mais comumente necessériaseexige que 0 software de sistema crie uma interface com os programas de nivel mais elevado. ‘Um sistema de implementacdo de linguagem no pode ser o tnico software em um computador. Também é necessério um grande conjunto de programas, chamado sistema coperacional, o qual fornece primitivas de nivel mais alto do que as da linguagem de méqui na, Essas primitivas oferecem gerenciamento de recursos do sistema, operagées de entrada ce saida, um sistema de gerenciamento de arquivos, editores de texto e/ou programas, ¢ ‘ uma variedade de outras fungdes comumente necessérias. Uma vez que os sistemas de implementacéo de linguagem. precisam de muitas das faclidades do sistema operacional, eles comunicam-se com o sistema operacional em vez de diretamente com o processador (ca linguagem de maquina). © sistema operacional as implementagGes sio dispostos em camadas sobre a inter face da linguagem de méquina de um computador. Essas camadas podem ser imaginadas como computadores vrtuais, que oferecem interfaces para o usuario em niveis mais altos. Por exemplo, um sistema operacional e um compilador C constituem um computador virtu- al C. Com outros compiladores, uma maquina pode transformar-e em outros tipos de com putadores vireuais. A maioria dos computadores fornece diversas méquinas virtuais diferentes. Os programas de usuario formam outra camada no topo da camada das méquinas virtuas. ‘A visualizacdo em camadas de um computador € mostrada na Figura 1.2 (vet p. 41) Os sistemas de implementacao das primeira linguagens de programacio de alto ni: vel, construidos no final da década de 50, estavam entre os sistemas mais complexos daque la paca. Na década de 60, esforgos de pesquisa intensivos foram feitos para compreender a e para formalizar 0 processo de construglo dessas implementacdes de linguagem de alto nivel. O maior sucesso desses esforgos ocorreu na area de analisesintética, principalmente porgue essa parte do processo de implementacio é uma aplicacdo de partes da teoria dos autématos'e da teoria da linguagem formal que eram, entao, bem-entendidas. 1.7.1 @eimipilagas) Fic ‘A maioria das implementacées de linguage 5 BOL e Ada dé-se por meio de compiladores chamada de 0 processo de complagéo deseavolvese em diversas tapas, a maioria das quais mostrada na Figura 13 (ver p42 parse trees), as quai 7 Teoria dor ardmator une d ina da inca da computagio ser ue diz respeto a um dispositive absratoderominado CONCEITOS 0 41 INGUAGENS DE PROGRAMA Computador virtual ; : fi al / s ~ \de comandos' f. | | I J compilador || A aa. computador \_-~ \ > 7 virtual C Xv 2 \ N a \ We virtual de virtual Ada 7 ¥. ; : ° (GRUBER tos casos, nenhura estrutura de dvore de andise Teal € construlda, 20 contravio, a informacio que seria necesséria para constru-la é gerada e-usada. Tanto as unidad: das adicional mente no Capitulo 3. 5 Exemplos simples de an sentados no Capitulo 3, 42 FIGURA 1.3. 0 process ase "TOS PRELIMINARES Tabela de simbolos Analsador Unidas lxicas nals sintético Gerador de cécigo| Arvores de andlise (parse trees) intermedisrio(@ |-—>} OtiizagSo. | (opcional) alisadorsinttico} codigo Gerator de édigo ng a cde maquina 1/7 Dados de entrada Computador - Resultados omputacao para programadore ais, a velocidade de execucéo é mais impor 'Um exemplo dessa situacao & um lak rinipiantes. Na maioria das situagGes comerciais edo que a velocidade de compila fo, de modo que a otimizacdo ¢ rotniramente desejével. Uma vez ‘timizagio nao podem ser feitos em linguagem de maquina, a maioria das otimizacoes é feita no cédigo intermediari. (0 gerador de cédigo converte a versio do cédigo intermediétio otimizado do progra- ma para tum programa em linguagem de méquina equivalente. ‘Atabela de simbolos seve como um baneo de dados para o processo de compilacéo. Seu principal contetido so informagdes sobre tipos e atributos de cada nome definido pelo usuario no programa, Ess:s x‘orr-acdes sf eolocadas na tabela de simbolos pelos analise. dotes éxico e sintético e usedas pelo analisador semantico e pelo gerador de cbdigo. Conforme afirmou-se acime, ro obscant@ a linguagem de maquina gerada port compiladior possa ser executada diretamente no hardware, quase sempre ela deve ser exe ceutada juntamente com algum outro cédigol A maioria dos programas dz usuario tambem xige programas do sistema operacionaly Entre os mais comuns, estio aqueles pare@attad@ (put) e para saida (output) de dados. 0 compilador cra chamadas a programas do si ma necessérios quando 0 programa de ususrio necessta deles. Antes que os programas em linguagem de méquina produzidos pelo comsiledor possam ser executados, os programas necessérios do sistema operacional devem ser encontrados e vinculados 20 do usuario. A ‘peracao de vinculagao conecta o programa de usudrio aos de sistema, colocando os ende- regos dos pontos de entrada dos programas de sistema nas chamadas 2 eles no de usuério Ovebdigo de usuario e 0 desistema juntos, s vezes, io chamados de modulolde imagem de executdvel. 0 7r0c2ss0 de coletar programas de sistema e vinculé-los 40s pro- sramas de usuario € chamado de vinculacao e carregamento ou, as vezes, apenas de vincu- Jago. Ele é realizado por um programa de sistema chamado linkeditor ‘lém dos programas de sistemas, os programas de usudrio muitas vezes devem vinculados a programas de usudrio compilados anteriormente, que residem em biblioteas Assim, o linkeditor ndo somente vincula algum dado programa aos programas de sistema, ‘mas também o vincula a outros programas de usuario. \ execugio de um programa em cédigo de maquina em um computador com arguite Boa Neumann ocorre em um processo chamac@efelo busear-executar (fetsh-everute (Ele). Como se afrmou na Secto 14. 1 (OS)progfathas residem na Memoria, mas sao exert» tados na CPU.\Cada instrucio a ser executada deve ser transferida da meméria para 0 Processador O endereco da instrucéo seguinte a ser executada é mantido em um registro chamado contador de programa, O eile buseartexe@itar pode serdeserto(We Mandira sie leDplo seguinte algoritmo: {nicialize o contador de programa repeat sempre busque a instrugio apontada pelo contador de programa incremente o contador de programa para apontar para a instugio seguinte decodifique a inserugdo execute a instrugdo end repeat 0 pas: SERRUEE REED 0 processo acim. ea Ge See ees BS determinade acio especificada por ela. A execugao «lo programa encerra-se quando uma Instuggo de parada é encontrads, anda que em um computador real uma instrugéo de Datada raramente Sea executads) A0 contrério, o controle transfere-se do sistema operaci- ‘onal para um programa de usuirio para ser executado e depois retorna ao sistema operact onal quando a execuedo completase. Em um computador em que mais de um programa de usuétio pode estar na meméria em determinado momento, ese pracesso é bem mais com. plexo 44 _aspecros preunaivae de von Neumantt 1.7.2 Interpretacio Pura Na extremidade oposta dos métodos de implementacio, os programas podem ser interpre- a linguagem. Essa técnica, chamada d r exemplo, se for considerado que um indice de array esta fora da faixa, a mensagem de erro poderd facilmente indicara linha da fonte e o nome do arr Por outro lado, esse método tem a séria desvantagem de que a execuclo é de 10 a 100 vezes mais lenta do que em sistemas compilados. A principal causa dessa lentidao é a decodifica «fo das instrugbes de linguagem de alto nivel, bem mais complexas do que as instrugSes em Tinguagem de méquina (ndo obstante possa haver um niimero menor de comandos do que de instrugées em cédigo de maquina equivalent ra desvantagem da interpretacao pura € que cla frequentemente exige mais espa- 49. Além do programa-fonte, a tabela de simbolos deve estar presente na interpretacéo. Além disso, 0 programa-fonte deve ser armazenado em uma forma projetada para permitir fécil acesso e modificagdo, em vez de um ta manho minimo. ‘A interpretagdo & um processo dificil (_Prearemafone ) em programas escritos em uma linguagem complicada, porque o significado de cada expresso e instrugo deve ser determinado diretamente do programa-fonte em tempo uso. Linguagens com estrutu imples prestam-se a interpretacéo pura, Por exemplo, a APL ea LIST, as vezes, das como sistemas interpre } 40 impleme tativos puros. A maioria dos comandos do 7 sistema operacional, como por exemplo, o Y / yoo~ Wa Dados de entrada contetido dos scripts do shell do UNIX e dos T atguves 2a do DOS, so implementados fie 1 : com interpretadores puros. Linguagens mais Resutados complexas, como 0 FORTRAN e 0 C, rara ‘mente s40 implementadas com interpreta FIGURA 1.4 Intepretacio pun. dores puros, CONCEMTOS DE LINGUAGENS DE PROGRAMAGRO 45 posesecerne 0 processo de intetpretagao pura é mostrado na Figura 1.4 (ver pagina anterior). caste cone pot seéopitl | 1.7.3 Sistemas de implementagio Hibridos vann. O gargalo wean (0 processo usado em um sistema de om ser interpre- 10. O programa | Programa‘onte io cidlo buscar. : implementagdo bibrido é mostrado na Fi 22 de instrugées gura 1.5. Em vez de traduzircédigo em lin- ina virwal para guagem intermedidria para cédigo de i rdquina, ele simplesmente interpreta 0 cé- + interpretagdo, t Analgnder digo intermediério. s de depuracéo Kerco ‘APerl é implementada com um sste podem referir rma bfbrido, Ela se desenvolveu a partir da array est fora Uniades xicas linguagem interpretativa ci e awk, mas & nome do array. i parcialmente compilada para detectar er- 102 100 vezes, ros antes da interpretacéo e para simplif- € a decodifica Analisedor car o interpretador s instrugdes em a mandos do que de comandos, vores de andtse -) rpretador puro. a aa xige mais expa- 1 interpretagéo. Geraor de juntos, eles a para pecmitir ' intermedi never de um ta ‘Agora ha sistemas que waduzem codigo ce eee bytes Java para cédigo de méquina para processo dificil pemmitir uma execugéo mais rida. Porém, ame linguagem Dados de entrada 08 applets Java so sempre descarregados ficado de cada do servidor Web na forma de cédigo de sr determinado bytes. onte em tempo Interpretador As vezes, um implementador pode om estruturas ‘oferecer tanta implementacdes compiladas interpretacdo ‘como interpretadas para uma linguagem. LIST, is vezes, esses casos, 0 interpretador & usado para temas interpre: desenvolver e para depurar programas. En- 5 comandos do tio, depois que um estado (relaivamente) or exemplo, 0 Resutados livre de problemas (bugs) € aleancedo, 05 do UNIX e das programas séo compilados para aumentar implementados FIGURA 1.5. Sistema de implementa hitrido, sua velocidade de execugio. inguagens mais Neo, rare: ‘om interpreta. 46 _ASPECTOS PRELIMIVARES 1.8 _Ambientes de Programacao RESUMO Um ambiente de programacio é 0 conjunto de ferramentas usadas no desenvolvimento de software, Esse conjunto pode consistir em somente um sistema de arquivos, em um editor de texto, em um linker e em um compilador. Ou pode incluir uma grande colegZo de ferra- mentas integradas, cada uma das quais acessada por meio de uma interface de usuério uniforme, Nesse tiltimo caso, 0 desenvolvimento e a manutencZo de software melhorou bastante, Portanto, as caractristicas de uma linguagem de programag3o no séo a tinica medida da capacidade de desenvolvimento de software de um sistema. Descreveremos ag0- ra, brevemente, diversos ambientes de programacio, © UNIX é um dos mais antigos ambientes de programacdo, distribuido pela primeira ‘vez na déeada de 70, construido em torno de um sistema operacional portével com compar- tihamento de tempo (time-sharing). Ele fornece um amplo conjunto de poderosas ferra- mentas de apoio para 2 produgio e para a manutengio de software em uma variedade de Tinguagens. No passado, 0 mais importante recurso ausente do UNIX era uma interface tuniforme entre suas ferramentas. Isso 0 tornava dificil de aprender e de usar. Porém, 0 UNUX, agora, é freqlentemente usado por meio de uma interface gréfica que roda em cima dele, Em muitos casos, essa interface & o Common Desktop Environment (CDE). 0 Borland C++ & um ambiente de programagio que roda em microcomputadores IBM-PC e compativeis. Ele oferece um compilador integrado, um editor, um depurador e um sistema de arquivos, em que todos os quatro so acessados por meio de uma interface agréfica, Um recurso conveniente desse tipo de ambiente ¢ que, quando o compilador encon- tra um erro de sintaxe, ele péra e muda para o editor, deixando 0 cursor no ponto do programa-fonte em que 0 erro foi detectado (0 Smalltalk é uma linguagem e um ambiente de programagao integrados, mas ela é ‘mais elaborada, complexa e poderosa do que o Borland C++. O Smalltalk foi o primeiro a fazer uso de um sistema de janelas e um dispositivo de indicacdo por mouse para oferecer a0 usuério uma interface uniforme a todas as ferramentas, O Smalltalk serd discutido no Capitulo 11, O passo mais recente na evolugio dos ambientes de desenvolvimento de software é representado pelo Microsoft Visual C++. E uma grande ¢ elaborada colegao de ferramen- tas de desenvolvimento de software, todas usadas por uma interface provida de janelas. Esse sistema, jumtamente com outros sistemas similares como o Visual BASIC, 0 Delphi e 0 Java Development Kit, da Sun Microsystems, oferecem maneiras simples de constrairinter- faces gréfcas para os programas. E evidente que a maior parte do desenvolvimento de software, pelo menos no futuro préximo, fara uso de ambientes de programacio poderosos. Iso, sem divida, aumentard a produtividade do software e talvez elevard a sua qualidade de producéo. 0 estudo das linguagens de programagéo é valioso por uma série de importantes razbes: aaumenta nossa capacidade de usar diferentes construgdes para escrever programas, possi bilitens escolher linguagens para projetos de maneira mais inteligente e torna mais fil a aprendizagem de novas linguagens. ~ Os computadores sdo usados eni uma ampla variedade de dominios de solucio de problemas. O projeto e a avaliagdo de uma linguagem de programacio particular depen dem muito do dominio em que eles devem ser usados. Ques

You might also like