Por que é útil para um programador estudar os conceitos de linguagens mesmo que ele nunca projete uma linguagem de programação?

Artigo: Paradigmas De Linguagem De Progamação. Pesquise 836.000+ trabalhos acadêmicos

Por:   •  25/10/2014  •  364 Palavras (2 Páginas)  •  4.878 Visualizações

Página 1 de 2

EXERCÍCIOS 1

1. Porque é útil que o programador tenha algum embasamento em projeto de linguagens, ainda que talvez ele jamais projete de fato uma linguagem de programação?

R: Aumento da capacidade de expressar ideias, maior conhecimento para a escolha de linguagem apropriadas, capacidade aumentada para aprender novas linguagens, entender melhor a importância da implementação, aumento da capacidade de projetar novas linguagens e avanço global da computação.

2. Como o conhecimento das características da linguagem de programação pode beneficiar toda a comunidade de computação?

R: Com o conhecimento das linguagens de programação, talvez as linguagens melhores substituiriam mais rapidamente as linguagens ruins

3. Que linguagem de programação dominou a computação cientifica ao longo dos últimos 40 anos?

R: A linguagem de programação que dominou a computação cientifica nos últimos 40 anos foi a Fortran.

4. Que linguagem de programação as aplicações comerciais ao longo dos últimos 40 anos?

R: A linguagem de programação que dominou a computação comercial nos últimos 40 anos é a COBOL.

5. Que linguagem de programação dominou a inteligência artificial ao longo dos últimos 40 anos?

R: A linguagem de programação que dominou a inteligência artificial nos últimos 40 anos foi a Lisp.

6. Em qual linguagem o UNIX foi escrito?

R: O UNIX foi escrito na linguagem de montagem (Assembly) em 1969, porém em 1973 foi reescrita usando a linguagem C.

7. Qual é a desvantagem de haver demasiados recursos em uma linguagem?

R: Overhead (processamento ou armazenamento em excesso) e a falta de flexibilidade para compensar esse problema, linguagens complexas que tendem a ter um alto custo.

8. Como uma sobrecarga de operador definida pelo usuário prejudica a legibilidade de um programa?

R: Quando o usuário cria suas próprias sobrecargas.

9. O que é manipulação de exceções?

R: Quando ocorre uma condição que altera o fluxo normal do programa este mecanismo de tratamento isola o código responsável pelo erro em blocos separados, deixando assim o código principal limpo.

10.Por que a legibilidade é importante para a capacidade de escrita?

R: A legibilidade afeta a confiabilidade de um programa, tanto na fase da escrita quanto nas manutençõe, programas de difícil leitura complicam também sua escrita e sua modificação. Quanto mais fácil é escrever um programa, mais possibilidade ele tem de ser correto.

...

Disponível apenas no TrabalhosGratuitos.com

Por que eu devo ler este artigo:Neste artigo veremos porque � t�o importante estudar os conceitos relacionados �s linguagens de programa��o. Al�m disso, iremos fazer uma an�lise completa da Delphi Language atrav�s de uma lista de crit�rios pelos quais podemos fazer um julgamento da linguagem.

Ser�o feitas an�lises referentes a Legibilidade, Capacidade de Escrita e Confiabilidade da linguagem, afim de descobrir quais seus pontos fortes e fracos.

Por fim, veremos os itens que influenciam no custo de ado��o de determinada linguagem para o desenvolvimento de sistemas.

Saiba mais: Curso de Delphi

A hist�ria do Delphi come�a em 1970 quando foi lan�ada a linguagem procedural Pascal, que herdou diversas caracter�sticas do ALGOL. Na d�cada de 80 se popularizou atrav�s do Turbo Pascal e na d�cada de 90 surgiu o conceito do pascal orientado a objetos (Object Pascal).

Em 1993 a Borland iniciou o desenvolvimento de um projeto para a cria��o de um ambiente visual para criar aplica��es Windows utilizando a linguagem Object Pascal, que foi batizado de Delphi e lan�ado no ano de 1995.

O arquiteto do projeto e que ficou conhecido como �pai� do Delphi foi Anders Heilsberg (tamb�m criador da linguagem C#). Desde o in�cio, Delphi sempre foi pioneiro em tecnologias para o desenvolvimento de softwares, como conex�o com banco de dados, programa��o Orientada a Objetos e ambiente de desenvolvimento r�pido (RAD - Rapid Application Development).

A vers�o 2 do Delphi coincidiu com o Windows 95 e o desenvolvimento para 32 bits, mas como ficamos acostumados, Delphi era totalmente compat�vel com vers�o 16 bits. Na vers�o 3, Delphi inovou mais uma vez, pois foi a primeira ferramenta a ter suporte para criar aplica��es multicamadas em um ambiente RAD.

O Delphi 4 trouxe suporte aos mais recentes padr�es de mercado naquele momento: CORBA, ORACLE 8, al�m de cria��o de controles ActiveX/Active Forms.

O Delphi 5 inovou com o suporte a manipula��o f�cil de arquivos XML, al�m de suporte a nova tecnologia de acesso a dados: ADO. Al�m disso, apareceram novas ferramenta como o TeamSource para controle de vers�o.

A vers�o 6, trouxe suporte a Web Services, al�m de BizSnap, DataSnap e WebSnap. Juntamente com a vers�o 6, nasceu o Kylix, primeira ferramenta RAD para Linux, para cria��o de aplicativos cross-plataform. No Delphi 7 aparecem os primeiros ind�cios de suporte a nova plataforma que estava nascendo, o .NET.

Nessa vers�o, temos um compilador para .NET, mas o ambiente do Delphi ainda n�o oferecia suporte, ter�amos que criar aplica��es totalmente manuais, sem as facilidades de componentes e modelagem r�pida. Nesta vers�o n�o temos mais o Object Pascal como linguagem, mas sim a Delphi Language, mudan�a de nome para fins comerciais.

O Delphi 8 suportava apenas aplica��es .NET, o que confundiu alguns desenvolvedores e seu IDE mudou drasticamente, sendo mais pesado e consumindo muita mem�ria.

A vers�o 2005 do Delphi prometia ser a primeira ferramenta a ter ambiente de desenvolvimento para Win32 e .NET (Delphi e C#). Teve in�cio a arquitetura ALM desenvolvida pela Borland, onde temos ferramentas para controlar todo o clico de vida do projeto, desde requisitos at� a finaliza��o do mesmo.

O Delphi 2006 foi a �ltima vers�o da Borland, que juntamente com o Delphi 2007, trouxe algumas novidades no desenvolvimento para .NET e Win32, com a cria��o de novos componentes para suporte ao Windows Vista e suporte a novas vers�es do .NET Framework.

No Delphi 2009, j� tivemos modifica��es significativas, onde n�o existe mais o mesmo ambiente para Win32 e .NET.

A CodeGear, ent�o detentora do Delphi, em uma solu��o radical (no olhar de alguns desenvolvedores), aproveitou que o Visual Studio (principal concorrente) �liberou� o seu ambiente de desenvolvimento (shell) para outras linguagens e utilizou o mesmo e come�ou a disponibilizar o Delphi Prism.

Imagine desenvolver em Pascal (na verdade se chama Oxygene, da RemObjects, parceira da Embarcadero), usando o Visual Studio. Foi um verdadeiro choque na comunidade.

Na defesa da Embarcadero, a vantagem de usar o ambiente do Visual Studio, seria que o desenvolvedor estaria sempre com a vers�o mais recente do .NET Framework, al�m de tecnologias como LINQ, WPF, ASP.NET, Windows Forms e etc.

Mesmo assim, a vers�o Win32 do Delphi 2009 trouxe novidades como suporte a Generics, M�todos An�nimos e Ribbon. No Delphi 2010, tivemos o suporte a cria��o de aplica��es touchpad, para criar interfaces onde o usu�rio interage com a mesma usando toque no monitor, uma grande novidade.

Na sequ�ncia temos as vers�es XE e XE2. O XE trouxe suporte ao Windows Azure (desenvolvimento em nuvens) e novidades no DataSnap. O XE2 trouxe novidades significativas como suporte a desenvolvimento de projetos em 64 bits, aplica��es multiplataformas para Windows e OSx (Mac), cria��o de aplica��es 3D e HD com um framework chamado FireMonkey e um recurso de LiveBindings para a liga��o de dados aos componentes, entre outros.

Na vers�o XE3 tivemos o lan�amento da interface Metropolis UI, para desenvolvermos interfaces gr�ficas semelhantes �s existentes no Windows 8, onde podemos inclusive converter de forma autom�tica interfaces VCL tradicionais para o Metropolis. Tamb�m foi evolu�do o recurso de LiveBindings, criando uma forma gr�fica para fazer a liga��o entre componentes de tela e os dados.

Na vers�o XE4 do Delphi temos o suporte ao desenvolvimento de aplicativos para dispositivos m�veis para iOS e no XE5 para Android. J� na vers�o XE6 temos apenas a melhoria nos recursos existentes e uma remodelagem da interface gr�fica do IDE.

Porque estudar os conceitos de uma Linguagem de Programa��o

� normal que os estudantes se perguntem: por que estudar os conceitos de linguagens de programa��o? Essa � uma pergunta normal, pois existem v�rios estudos que se pode fazer de uma linguagem, sua sintaxe, suas bibliotecas nativas, frameworks e plug-ins extras. Mas existe uma s�rie de benef�cios que podem ser conseguidos ao estudar os conceitos de uma linguagem de programa��o, sendo alguns deles os seguintes:

  • O aumento da capacidade de codifica��o de sistemas: conhecer uma variedade maior de recursos de uma linguagem de programa��o nos possibilita o desenvolvimento de uma gama muito maior de algoritmos e nos permite explorar o que a linguagem tem de melhor para cada escopo de programa. Pode-se abrir a mente para novas formas de implementa��o de um mesmo problema, trazendo benef�cios como um c�digo mais simples e preciso, com um melhor desempenho. O estudo dos conceitos de uma linguagem de programa��o mostra aos desenvolvedores recursos preciosos que eles poderiam estar desconsiderando at� o momento.
  • Maior entendimento para escolha da linguagem de programa��o correta para um problema: muitos desenvolvedores n�o tiveram uma base s�lida conceitual de todos os tipos de linguagens de programa��o, e muitos aprenderam sozinhos a programar, muitas vezes sem passar por uma institui��o de ensino.

Treinamentos e cursos espec�ficos de determinada linguagem de programa��o v�o diretamente � sintaxe da linguagem sem oferecer um embasamento te�rico que indique que aquela linguagem � mais adequada para determinados tipos de problemas.

O fato � que as linguagens de programa��o n�o s�o boas para todos os tipos de projetos de software, sempre existem tipos de projetos onde s�o mais fracas ou mais fortes.

Quando estudamos seus conceitos, conseguimos analisar onde devemos aplicar determinada linguagem e quais os projetos dever�amos considerar a ado��o de outra linguagem a fim de facilitar o desenvolvimento e manuten��o dos sistemas.

  • Capacidade para aprender novas linguagens: ao aprendermos todos os conceitos relacionados a uma linguagem de programa��o fica muito mais f�cil aprender outras linguagens. O mais importante n�o � aprender as sintaxes de uma linguagem e sim os conceitos relacionados �quela implementa��o.

Considerando um exemplo pr�tico, em sistemas que adotam o paradigma orientado a objetos, temos o mecanismo de heran�a de classes, neste caso � muito mais importante sabermos como aplicar corretamente a heran�a na modelagem de um sistema do que a sintaxe espec�fica de determinada linguagem.

Quem desenvolve em mais de uma linguagem de programa��o sabe que � bastante natural a passagem de uma sintaxe para outra, desde que a mesma possua o mesmo paradigma, por exemplo, Delphi e C#.

  • Aprender a import�ncia de uma boa codifica��o: ao conseguir ter uma vis�o do porqu� de determinada linguagem ter sido projetada daquela forma, levando os desenvolvedores a criarem c�digos mais inteligentes e claros, de forma que outros desenvolvedores entendam rapidamente qual o objetivo das partes do sistema.

Determinados tipos de erros que ocorrem nos sistemas somente s�o identificados por desenvolvedores mais experientes que conseguem ver al�m daquela implementa��o.

  • Capacidade de implementar melhores linguagens: � �bvio que muito dificilmente n�s desenvolvedores viremos a implementar novas linguagens de programa��o, mas estud�-las nos possibilita achar os pontos fortes e fracos de determinadas linguagens, de maneira que se f�ssemos projetar uma nova linguagem, ir�amos procurar aproveitar todos os pontos positivos de uma linguagem e retirar suas falhas, procurando a solu��o em outras tecnologias.
  • O avan�o das linguagens de programa��o: entender o porqu� daquela linguagem ter se tornado popular e quais as �reas que elas fazem maior sucesso, fazendo com que sejam aproveitadas nos projetos adequados e dando lugar a outras linguagens melhores nos projetos que n�o tenham efetividade.

Crit�rios de Avalia��o de Linguagens de Programa��o

Existem diversos crit�rios que podem ser adotados a fim de fazer uma avalia��o de uma linguagem de programa��o, dificilmente os cientistas da computa��o entram em consenso sobre quais s�o os crit�rios mais adequados para fazer avalia��es da sintaxe das linguagens, por�m alguns itens b�sicos s�o praticamente um consenso entre quase todos. Estes s�o os apresentados a seguir, na Tabela 1 que mostra em quais crit�rios as caracter�sticas de uma linguagem se enquadra.

Crit�rios
Caracter�sticaLegibilidade Facilidade de Escrita Confiabilidade
Simplicidade X X X
Ortogonalidade X X X
Instru��es de Controle X X X
Tipos de dados X X X
Projeto da Sintaxe X X X
Suporta a abstra��o X X
Expressividade X X
Verifica��o de tipos X
Tratamento de exce��es X
Ponteiros Restritos X

Tabela 1. Crit�rios de avalia��o

Legibilidade

Sem d�vida um dos crit�rios de avalia��o de linguagens de programa��o mais importantes � o da legibilidade, que � o grau de facilidade com que os algoritmos criados naquela linguagem podem ser lidos e entendidos.

A facilidade de manuten��o de aplica��es est� diretamente ligada � legibilidade do c�digo, por isto essa se torna um dos crit�rios mais importantes de avalia��o. A legibilidade de um programa tamb�m est� ligada ao dom�nio do problema em quest�o, pois quando determinada linguagem de programa��o n�o foi projetada para determinado tipo de problema, � bastante prov�vel que seu c�digo fique confuso, tornando dif�cil de ser lido e interpretado. Por exemplo, se quisermos utilizar o Delphi para criarmos aplica��es web de grande porte, sabemos que teremos dificuldade, pois o Delphi na sua ess�ncia n�o foi desenvolvido para atender esse nicho de mercado. Agora se quisermos criar aplica��es Desktop complexas e com diversos formul�rios interagindo entre sim, provavelmente teremos uma aplica��o simples e clara, pois � onde o Delphi se destaca desde o seu surgimento.

Simplicidade

A simplicidade de uma linguagem de programa��o est� diretamente ligada a sua legibilidade, isto porque uma linguagem com uma sintaxe extensa � muito mais dif�cil de ser aprendida do que uma linguagem que possua poucos artefatos b�sicos. A maioria dos desenvolvedores geralmente aprende apenas parte de uma linguagem de programa��o, nunca ela no seu todo, ignorando alguns recursos. Este tipo de atitude � tomada principalmente para que n�o seja necess�rio um estudo mais profundo da linguagem, tornando o in�cio do desenvolvimento r�pido, trazendo resultados tamb�m r�pidos. O problema desta abordagem � que outros desenvolvedores podem ter aprendido outra parte da linguagem, diferente daquela que aprendeu o desenvolvedor do sistema, tornando dif�cil a compreens�o do c�digo posteriormente.

Um exemplo no mundo Delphi deste problema pode ser visto quando temos alguns desenvolvedores que s� sabem trabalhar de maneira procedural, com a adi��o de componentes e codifica��o de eventos. Outros desenvolvedores podem ter aprendido trabalhar de forma orientada a objetos, com a instancia��o de classes e o seguimento de boas pr�ticas de programa��o, como princ�pios SOLID e padr�es de projeto. Um segundo ponto que realmente complica em termos de simplicidade de uma linguagem de programa��o � o fato de ela ter diversas maneiras de realizar uma �nica tarefa. Por exemplo, em C para incrementarmos uma vari�vel num�rica simples existem diversas maneiras, conforme pode ser visto na Listagem 1.


  1. contador = contador + 1
  2. contador += 1
  3. contador++
  4. ++contador

Listagem 1. Incrementando uma vari�vel simples em C

Veja que apesar de em determinadas situa��es esses operadores terem significados diferentes, quando s�o aplicados a vari�veis simples individualmente eles t�m o mesmo prop�sito, incrementar em um a vari�vel.

Neste ponto o Delphi traz mais simplicidade em rela��o a outras linguagens, pois existe uma �nica forma nativa do compilador para incrementar em um uma vari�vel, como mostrado a seguir:


var contador: integer;
contador := contador + 1;

Nota: Muitos podem estar pensando que existe sim outra maneira de incrementarmos em um uma vari�vel num�rica em Delphi, atrav�s do procedure Inc, por�m devemos observar que o Inc n�o � um recurso nativo disponibilizado pelo compilador e sim um procedimento implementado na unit System, o que s�o coisas totalmente diferentes.

Outra caracter�stica que prejudica a simplicidade de uma linguagem de programa��o � a possibilidade de fazermos sobrecarga de operadores na qual um �nico s�mbolo pode ter mais de um significado. Embora seja um recurso �til, pode levar ao desenvolvimento de c�digos complexos, principalmente se n�o for adotado com cautela por parte do criador da sobrecarga. Um exemplo simples de sobrecarga � a do s�mbolo de soma (+), onde ele pode tanto somar inteiros ou concatenar strings. Nestes casos � bastante indicado o uso de sobrecarga de operadores, pois torna a linguagem mais simples e enxuta.

Nota: O recurso de sobrecarga de operadores � suportado no Delphi desde a vers�o 2005 (somente para .NET) e a partir de 2006 para Win32. Este recurso foi adicionado na �poca pela Borland, principalmente para manter a compatibilidade com a plataforma .NET.

Ortogonalidade

A ortogonalidade numa linguagem de programa��o significa a quantidade pequena de instru��es primitivas combinado com um n�mero pequeno de maneiras para construir estruturas de controle e la�os de repeti��o. Na pr�tica, significa o n�mero de regras que determinada linguagem possui. Linguagens com baixa ortogonalidade possuem muitas exce��es �s regras da linguagem, j� linguagens com alta ortogonalidade, como o Delphi possuem poucas exce��es �s regras b�sicas. Como exemplo de regras, podemos definir o bloco begin/end exigido pelo Delphi nas estruturas de controles, rotinas e la�os de repeti��o. Esta � uma regra �nica de bloco, sendo a �nica exce��o � regra o la�o de repeti��o Repeat, onde n�o somos obrigados a informar o begin/end, saindo um pouco da regra geral da linguagem.

A ortogonalidade tamb�m est� diretamente ligada com a simplicidade, quanto mais ortogonal � a linguagem de programa��o, menos exce��es existir�o quanto �s regras da linguagem. Menos exce��es levam a uma codifica��o mais regular, tornando a linguagem mais f�cil de ser lida, entendida e aprendida. Outro exemplo de exce��o � regra existente na Delphi Language � o fato de que todas as instru��es obrigatoriamente devem ser finalizadas com ponto e v�rgula (;), com a exce��o de quando esta instru��o estiver dentro de um comando condicional como o IF e for um comando �nico, conforme pode ser visto na Listagem 2.


if A <> B then
Writeln(�A � diferente de B�)

Listagem 2. Exce��o � regra geral no Delphi

Instru��es de Controle

At� o final da d�cada de 60 existiam linguagens de programa��o que tinham muito pouca legibilidade, principalmente em rela��o �s instru��es de controle, onde o recurso utilizado era o famoso GOTO para conseguirmos mudar o fluxo de execu��o de um algoritmo. No in�cio da d�cada de 70, devido � falta de legibilidade destas linguagens, surgiram iniciativas para resolver estes problemas. Foi a� que surgiram as linguagens de programa��o estruturadas, principalmente pela falta de legibilidade que o comando Goto causava nos programas da �poca.

Uma linguagem de programa��o Top-Down, ou seja, que pode ser lida de cima para baixo, � muito mais f�cil de ser entendida do que termos que pular de uma instru��o para outra de forma indiscriminada. A maioria das linguagens de programa��o projetadas a partir do in�cio da d�cada de 70, devido suas boas estruturas de controle, praticamente eliminou a necessidade de utiliza��o do comando Goto. Apesar de geralmente ele ainda estar dispon�vel na maior parte das linguagens de programa��o, ele � muito pouco utilizado.

Falando especificamente de Delphi, a maioria dos desenvolvedores nem sabe da exist�ncia e funcionamento do comando Goto, mas ele existe na Delphi Language. Na Listagem 3 podemos visualizar um exemplo simples do funcionamento.


  1.  program ExemploGoto;
  2.  {$APPTYPE CONSOLE}
  3.  uses
  4.    System.SysUtils;
  5.  var
  6.    Ind: Integer;
  7.  label
  8.    GotoLabel;
  9.  begin
  10.   for Ind := 1 to 5 do
  11.   begin
  12.     Writeln('Ind = ' + IntToStr(Ind));
  13.     if Ind = 3 then
  14.       Goto GotoLabel;
  15.   end;
  16.   Writeln('Final do Loop');
  17.   GotoLabel:
  18.     Writeln('Final do Loop em ' + IntToStr(Ind));
  19.   Readln;
  20. end.

Listagem 3. Utiliza��o do Goto em Delphi

No exemplo temos a defini��o de um Goto nas linhas 7 e 8, j� na linha 14 estamos indicando que queremos saltar para a instru��o GotoLabel na linha 17, fazendo com que seja interrompido o la�o de repeti��o.

Tipos de Dados

Um sistema de informa��es produz resultados atrav�s da manipula��o de dados. Um item determinante para indicar a facilidade com que eles poder�o efetuar tal tarefa diz respeito aos tipos de dados oferecidos pela linguagem utilizada se encaixarem com o dom�nio do problema real. Por este motivo � muito importante uma linguagem possuir uma gama muito boa de tipos de dados e estruturas.

Os tipos de dados b�sicos mais comuns da linguagem e que n�o s�o criados com base em outros s�o chamados de tipos primitivos. O fato de uma linguagem de programa��o fornecer tipos de dados primitivos adequados para vari�veis � outra caracter�stica que traz bastante legibilidade.

Por exemplo, existem linguagens como C que n�o possuem o tipo de dado Booleano, sendo necess�rio os desenvolvedores utilizarem outros tipos de dados. Em linguagens com essa caracter�stica geralmente define-se zero para false e um para verdadeiro. Ao nos depararmos com instru��es como estas no meio do c�digo, n�o temos a clareza do que realmente ela representa dentro da aplica��o, sendo necess�rio uma an�lise da documenta��o do c�digo para termos a convic��o de que ela representa uma indica��o de verdade. Al�m dos tipos de dados primitivos comuns existem outros dois tipos de dados n�o escalares que s�o os vetores e os registros.

Projeto da Sintaxe

A sintaxe de uma linguagem de programa��o tem influ�ncia direta na legibilidade de uma aplica��o. Existem algumas escolhas na hora de se projetar a linguagem que pode aumentar ou diminuir a legibilidade dos programas:

  • Formato dos identificadores: se determinada linguagem restringe a um n�mero muito pequeno de caracteres os identificadores, acaba trazendo uma baixa legibilidade. Algumas linguagens limitam muito o tamanho dos identificadores, de forma que n�o conseguimos representar de forma adequada principalmente o nome das vari�veis.

No caso do Delphi, felizmente n�o temos este tipo de problema, j� que podemos ter um n�mero ilimitado de caracteres para representar os identificadores (nomes de vari�veis, constantes, fun��es, etc.).

  • Palavras reservadas: a legibilidade de um programa tamb�m est� altamente atrelada pela forma como est�o definidas as palavras reservadas, principalmente as que se referem ao in�cio e fim de um bloco condicional ou iterativo. Algumas linguagens como o Delphi usam um par casado de instru��es que indicam o in�cio e fim de um bloco.

Isso prejudica a legibilidade dos c�digos, pois os blocos de c�digos terminam sempre da mesma maneira, tornando dif�cil �s vezes determinar qual o grupo de instru��es est� sendo finalizado em determinado momento (Listagem 4).

Algumas linguagens resolvem este problema criando uma sintaxe distinta para cada tipo de bloco, usando, por exemplo, end if e end loop para diferenciar os blocos de c�digo. Outra caracter�stica das palavras reservadas � a de se a linguagem de programa��o permite ou n�o us�-las para nome de vari�veis nos programas.

Se permite, pode trazer uma grande confus�o, pois muitas vezes n�o saber�amos se determinada instru��o se refere a uma instru��o nativa do compilador ou o nome de uma vari�vel.

O Delphi neste quesito n�o deixa a desejar, j� que somos impedidos de criar nomes de vari�veis com palavras reservadas, ocorrendo erro em tempo de compila��o se assim o fizermos.

  • Significado das instru��es: linguagens de programa��o devem projetar sua sintaxe de modo que as instru��es representem fielmente o que significam e que suas instru��es n�o tenham mais de um significado dentro da constru��o de um programa. O Delphi neste ponto � uma linguagem bastante clara quanto a sua sintaxe, onde cada instru��o representa exatamente seu prop�sito (if, case, function).

Um dos �nicos itens em que o Delphi falha neste quesito � no uso da palavra Interface. Ela pode tanto representar a cria��o de uma Interface na orienta��o a objetos, quanto pode representar um bloco de interface de declara��es de classes e m�todos dentro de uma unit, conforme pode ser visto na Listagem 5 (linhas 2 e 4).


  1.  procedure Teste;
  2.  begin
  3.    while True do
  4.    begin
  5.      if True then
  6.      begin
  7.        //c�digo
  8.      end;
  9.    end;
  10. end;

Listagem 4. Falta de legibilidade no final de blocos


  1. unit Pessoa;
  2. interface
  3. type
  4.   IPessoa = interface
  5.     procedure Teste;
  6.   end;
  7. implementation
  8. end.

Listagem 5. Mesma instru��o representando duas fun��es diferentes

Nota: Alguns plug-ins como o CnPack oferecem um mecanismo de melhoria no entendimento de blocos begin/end aninhados, fazendo uso de cores diferentes para cada tipo de estrutura de controle, aumentando a legibilidade dos c�digos e facilitando o entendimento da sintaxe. Na se��o Links est� dispon�vel o endere�o para download dessa ferramenta.

Facilidade de Escrita

A facilidade de escrita representa o qu�o f�cil � o desenvolvimento de um programa para um determinado dom�nio. Isso significa que determinada linguagem de programa��o pode ter uma facilidade de escrita para um determinado tipo de problema e outras n�o.

� o t�pico caso onde dizemos que n�o existe uma linguagem melhor ou pior, tudo depende do tipo de sistema que deseja se deseja desenvolver, cabendo ao desenvolvedor analisar qual � a linguagem mais adequada para cada situa��o.

N�o se pode comparar a facilidade de escrita de duas linguagens de programa��o escolhendo um dom�nio espec�fico. Por exemplo, � muito mais f�cil criar uma aplica��o baseada em interfaces gr�ficas para Windows Desktop utilizando Delphi do que utilizando a linguagem C e isso n�o significa que o Delphi seja uma linguagem muito mais f�cil de escrita, � que o Delphi foi criado para este fim. O mesmo se pode falar de aplicativos de sistema de baixo n�vel, usando C a tarefa � bem mais simples de que se fossemos utilizar o Delphi, pois o C foi projetado para atender este fim.

Suporte a Abstra��o

A abstra��o � um item fundamental nos atuais projetos de linguagens de programa��o, pois ela possibilita definirmos estruturas e opera��es complexas de modo a permitir que muitos dos detalhes sejam ignorados. O n�vel de abstra��o permitido por uma linguagem e a naturalidade como ela � descrita tem um grande impacto na facilidade de escrita. Podemos ter dois tipos de abstra��es: processos e dados.

Como exemplo de abstra��o de processos podemos citar a possibilidade de criarmos classes e m�todos para realizarmos a tarefa de exportar determinado conjunto de informa��es para o Excel. Se n�o tiv�ssemos suporte a abstra��o, esta tarefa teria de ser replicada todas as vezes que fosse necess�rio realizar esta tarefa, tornando o c�digo mais polu�do.

Quanto � abstra��o de dados, podemos usar como exemplo uma lista de informa��es de um aluno, como nome, idade e curso. Se utiliz�ssemos uma linguagem que n�o suporta abstra��o de dados ter�amos que criar tr�s vetores e sincroniz�-los de forma que cada posi��o dos vetores representasse a informa��o referente �quele aluno. No Delphi temos a possibilidade fazer abstra��o destes dados utilizando uma estrutura (records) ou uma classe para isso, conforme Listagem 6.


  1.  Alunos = record
  2.    Nome: string;
  3.    Idade: Integer;
  4.    Curso: string;
  5.  end;
  6. 
  7.  TAluno = class
  8.  strict private
  9.    FNome: string;
  10.   FIdade: Integer;
  11.   FCurso: string;
  12. public
  13.   property Nome: string read FNome write FNome;
  14.   property Idade: Integer read FIdade write FIdade;
  15.   property Curso: string read FCurso write FCurso;
  16. end;

Listagem 6. Abstra��o de dados em Delphi

Expressividade

A expressividade de uma linguagem de programa��o representa as instru��es que sua sintaxe permite de forma a tornar a codifica��o mais simples e enxuta. Isso se consegue com a adi��o de operadores que tornam a codifica��o mais elegante e menos verbosa, simplificando a codifica��o.

Em algumas linguagens de programa��o temos a op��o de fazer o auto incremento utilizando a instru��o cont++, enquanto em outras como o Delphi necessitamos de uma instru��o maior (cont := cont + 1), o que torna a linguagem menos expressiva.

Saiba mais: Criando minha primeira aplica��o em Delphi

Outro recurso das linguagens de programa��o modernas � o for, que tamb�m torna as linguagens mais expressivas, devido ao fato de simplificar bastante a tarefa de criarmos la�o de repeti��o que antes s� era permitido atrav�s de comandos while.

Confiabilidade

A confiabilidade de um programa se refere � possibilidade da linguagem de programa��o oferecer alguns recursos que os desenvolvedores possam utilizar, de forma a evitar erros inesperados e bugs nos aplicativos.

Os itens de confiabilidade analisados no artigo ser�o o da verifica��o de tipos, tratamento de exce��es e restri��o de ponteiros na linguagem.

Verifica��o de Tipos

A verifica��o de tipos � um recurso existente para garantir que os operandos de um operador sejam de tipos compat�veis. Tipos compat�veis s�o aqueles que s�o v�lidos para o operador, j� tipos incompat�veis se referem � aplica��o de um operador a um operando de tipo impr�prio.

A verifica��o de tipos � um item muito importante em rela��o � confiabilidade de uma linguagem de programa��o. Ela consiste na execu��o de testes de valida��o por parte do compilador para detectar erros de atribui��o �s vari�veis.

� muito melhor e mais produtivo quando temos a detec��o de erros de atribui��o em tempo de compila��o do que em tempo de execu��o, isto porque torna mais r�pida a corre��o e evita que c�digos que n�o tenham sido testados adequadamente acabem indo para ambientes de produ��o com erros que ser�o somente detectados posteriormente pelo usu�rio.

Linguagens que possuem verifica��o de tipos de forma din�mica, como o JavaScript, permitem somente a valida��o dos tipos em tempo de execu��o. Esta forma de valida��o por um lado traz maior flexibilidade de desenvolvimento para o programador, mas por outro lado traz uma menos seguran�a quanto � precis�o dos dados.

Nos dias de hoje as linguagens fortemente tipadas possuem uma admira��o muito grande por parte dos desenvolvedores de software. Linguagens fortemente tipadas t�m seus tipos definidos de forma est�tica, ou seja, uma determinada vari�vel possui um �nico tipo fixo especificado antes da compila��o.

O Delphi neste sentido atende a este quesito de seguran�a, pois a verifica��o de tipos � feita durante a compila��o dos programas desenvolvidos. A exce��o fica por parte do tipo Variant, onde � permitido fazer a atribui��o de qualquer valor para vari�veis deste tipo.

Tratamento de Exce��es

Grande parte dos hardwares s�o capazes de detectar erros em tempo de execu��o, como o estouro de um tipo inteiro. Em linguagens que n�o s�o capazes de detectar erro, o que ocorre simplesmente � o encerramento do programa abruptamente e o controle passa para o sistema operacional.

A rea��o do sistema operacional quando ocorre um erro inesperado e o programa se fecha � a de exibir uma mensagem de erro diagnosticando o problema ocorrido. Tal informa��o pode ser muito �til ou n�o fazer nenhum sentido para o usu�rio do programa. O recurso de tratamento de exce��es � a habilidade que uma linguagem de programa��o tem de interceptar erros em tempo de execu��o e trat�-los, continuando com o programa sem que o mesmo precise ser reiniciado.

O tratamento de exce��es � um recurso indispens�vel em qualquer linguagem de programa��o e o Delphi possibilita este tratamento de modo simples, conforme Listagem 7.


  1.   try
  2.     try
  3.       Resultado := Num1 / Num2;
  4.     except
  5.       raise;
  6.     end;
  7.   except
  8.     on E: Exception do
  9.       Writeln(E.ClassName, ': ', E.Message);
  10.  end;

Listagem 7. Tratamento de Exce��es Delphi

Apenas para esclarecimento, na linha 5 temos a instru��o Raise, que tem a fun��o de propagar a exce��o para o bloco externo, ou seja, ela informa ao compilador que n�o ser� ali feito o tratamento de exce��o e sim no bloco try/except externo.

Existe um segundo bloco de tratamento de exce��o chamado try/finally, que foi criado para a libera��o segura de recursos. Todo o c�digo que estiver contido dentro do bloco finally ser� executado, independente do que ocorrer no interior do bloco try. Na Listagem 8 temos um exemplo de utiliza��o.


  1.  program Exemplo;
  2.  {$APPTYPE CONSOLE}
  3.  uses
  4.    System.SysUtils, System.Classes;
  5.  var
  6.    Texto: TStringList;
  7.  begin
  8.   Texto := TStringList.Create;
  9.   try
  10.     Texto.Add('Jo�o');
  11.     Texto.Add('Batista');
  12.     Writeln(Texto.Text);
  13.   finally
  14.     Texto.Free;
  15.   end;
  16.   readln;
  17. end.

Listagem 8. Uso do Try/Finally no Delphi

No exemplo mostrado temos a libera��o do objeto Texto no bloco finally, para que independente do que ocorrer no bloco try, no caso a adi��o de informa��es, o objeto seja liberado da mem�ria, evitando a ocorr�ncia de vazamento de mem�ria.

Ponteiros Restritos

Ponteiros s�o tipos de dados que se referem diretamente a um outro valor alocado em outra posi��o de mem�ria atrav�s de seu endere�o. Nos dias atuais a utiliza��o de ponteiros principalmente em linguagens de programa��o de alto n�vel � muito rara. Algumas linguagens como o Java nem suportam mais este recurso.

O fato de n�o suportar o uso de ponteiros, segundo alguns cientistas da computa��o, torna a linguagem mais segura e confi�vel.

No Delphi utilizamos o operador ^ (circunflexo) para declarar uma vari�vel do tipo ponteiro. Usamos tamb�m o operador @ precedendo vari�veis �normais� para obter o endere�o delas. O inverso de @ seria usar ^ depois de uma vari�vel-ponteiro, para que possamos acessar o seu valor. Um ponteiro rec�m declarado que n�o aponta para nenhum lugar tem o valor nil.

Na Listagem 9 temos um exemplo simples de emprego de ponteiros na Delphi Language.


  1.  program Exemplo;
  2.  {$APPTYPE CONSOLE}
  3.  uses
  4.    System.SysUtils;
  5.  var
  6.    Var1: Integer;
  7.    Var2: Integer;
  8.    Ponteiro: ^Integer;
  9.  begin
  10.   Var1 := 123;
  11.   Var2 := 456;
  12.   Writeln('Endere�o Var1 = ' + IntToStr(Integer(@Var1)));
  13.   Writeln('Valor de Var1 = ' + IntToStr(Var1));
  14.   Ponteiro := @Var1;
  15.   Writeln('Endereco Ponteiro = ' + IntToStr(Integer(Ponteiro)));
  16.   Writeln('Valor do Ponteiro = ' + IntToStr(Integer(Ponteiro^)));
  17.   readln;
  18. end.

Listagem 9. Uso de ponteiros no Delphi

Como os ponteiros t�m a capacidade de acessar vari�veis que n�o s�o explicitamente declaradas para ele, h� uma possibilidade maior de erros de codifica��o. Apesar disso, o poder oferecido pelos ponteiros � t�o grande que em determinadas tarefas, principalmente aquelas referentes ao desenvolvimento de sistemas b�sicos, o uso de ponteiros pode se mostrar bastante �til.

Custo da Linguagem

O custo de uma linguagem de programa��o se refere a muitos pontos que ser�o elencados nos pr�ximos par�grafos.

O primeiro ponto a ser analisado � o custo que ter� o treinamento de desenvolvedores para a linguagem escolhida, que depende muito da simplicidade e da ortogonalidade da sintaxe, al�m, � claro, do n�vel atual dos desenvolvedores que ser�o treinados. Linguagens mais poderosas e com maiores recursos despendem maior investimento de dinheiro e tempo para aprend�-las.

Em segundo lugar temos o custo de desenvolver aplica��es para esta linguagem, o que depende da facilidade de escrita, a qual tamb�m depende do escopo do problema que deve ser solucionado. Os esfor�os empregados no desenvolvimento de linguagens de programa��o de alto n�vel e IDEs robustos foram feitos para que fosse diminu�do o custo de desenvolvimento de softwares.

Tanto o custo de treinar desenvolvedores quanto os de escrever programas na linguagem podem ser minimizados na utiliza��o de um bom ambiente de desenvolvimento, que possibilite a automatiza��o de tarefas b�sicas e ofere�a recursos de facilidades na escrita de c�digo.

O terceiro custo a ser analisado � o de compilar aplica��es na linguagem. No passado compiladores demoravam bastante na tarefa de fazer a convers�o do c�digo da linguagem no c�digo de m�quina que seria executado no hardware. Hoje, felizmente possu�mos compiladores r�pidos, principalmente tamb�m pelo avan�o do n�vel de capacidade dos hardwares.

O quarto ponto � o custo de executar programas escritos em uma linguagem, que est� diretamente associado ao projeto dela. Uma linguagem que faz muitas verifica��es de tipos em tempo de execu��o, por exemplo, n�o ser� r�pida, mesmo que o compilador seja muito bom. Hoje em dia o tempo de execu��o de um aplicativo j� n�o � prioridade no projeto de linguagens, principalmente com os avan�os a n�vel de hardware.

No passado, devido principalmente ao baixo n�vel de mem�ria, os programas deviam ser cuidadosamente escritos e em um n�vel mais baixo para obter o melhor dos recursos existentes das m�quinas limitadas. Geralmente h� de se fazer uma escolha entre o custo de compila��o de um programa e a velocidade de execu��o do mesmo. Existe uma fase da compila��o chamada otimiza��o, que � uma t�cnica utilizada pelos compiladores para diminuir o tamanho e aumentar a velocidade da execu��o de um determinado programa.

Se pouca otimiza��o for feita, a compila��o � bem mais r�pida, por�m a execu��o do programa se torna mais lenta. Por�m, se for despendido bastante tempo para otimiza��o, a compila��o ser� mais demorada, mas teremos um programa execut�vel mais r�pido.

O quinto item a ser considerado diz respeito ao custo de utiliza��o da linguagem e/ou IDE de desenvolvimento. Uma linguagem cujas ferramentas de desenvolvimento s�o caras ou criadas apenas para poucos tipos de hardware ter�o menores chances de se tornarem populares no mundo do desenvolvimento.

O sexto fator se refere ao custo de uma confiabilidade baixa. Se um sistema cr�tico falha, como o de controle de voos, por exemplo, o custo de ado��o desta linguagem pode se mostra muito alto. Linguagens que possuem um hist�rico de casos de usos onde houve s�rios problemas nos seus sistemas tendem a cair em desuso.

O �ltimo fator a ser considerado em rela��o ao custo � o quando o sistema desenvolvido em determinada linguagem ir� depender de manuten��es, inclus�o de funcionalidades e corre��o de erros. O custo de manuten��o de uma linguagem de programa��o est� diretamente ligado � legibilidade da mesma e de um bom desenvolvimento por parte do desenvolvedor.

A facilidade de manuten��o � um fator crucial nos dias atuais, pois se calcula que atualmente o custo de manuten��o supera em at� em quatro vezes o custo do desenvolvimento inicial do sistema.

De todos os fatores que influenciam no custo de desenvolver em determinada linguagem de programa��o, os mais importantes s�o: facilidade de desenvolvimento de programas, facilidade na manuten��o e confiabilidade no resultado.

Existem muitos outros crit�rios que podem ser levados em considera��o na avalia��o do custo, como a portabilidade, que � a capacidade de uma implementa��o ser movida para outro hardware ou sistema operacional, mas n�o s�o fatores t�o decisivos como os descritos acima.

A linguagem Delphi possui uma sintaxe poderosa, com recursos avan�ados, como o uso de estruturas e ponteiros. O IDE foi evoluindo com o passar dos anos e nas �ltimas vers�es passou a possibilitar o que existe de mais promissor no mercado, a possibilidade de desenvolvimento de aplicativos para dispositivos m�veis e com certeza ir� impulsionar a ferramenta e ter maior visibilidade entre os desenvolvedores, aumentando a sua popularidade.


Saiu na DevMedia!

  • Buscas sem�nticas com Elasticsearch:
    Elasticsearch � uma ferramenta de busca de alta performance. Com ela podemos armazenar grandes volumes de dados, analis�-los e process�-los, obtendo resultados em tempo real.

Saiba mais sobre Delphi ;)

  • Guia de Estudos Delphi: Aprenda Delphi do B�sico ao Avan�ado:
    Aqui voc� encontra os Guias de estudo da linguagem Delphi. Descubra como dominar o Delphi, desde o recurso mais b�sico ao mais avan�ado. Escolha o seu!

Tecnologias:
  • Delphi

Plano PRO

  • Acesso completo
  • Projetos reais
  • Professores online
  • Exerc�cios gamificados
  • Certificado de autoridade

Por que é útil para um programador estudar os conceitos de linguagens mesmo que ele nunca projete uma linguagem de programação?

Por Filipe Em 2014

Receba nossas novidades

Por que é útil para um programador ter alguma experiência no projeto de linguagens mesmo que ele nunca projete uma linguagem de programação?

Melhor entendimento da importância da implementação: os conceitos de linguagens de programação podem levar a uma pessoa a ter um maior domínio de uma determinada linguagem de programação e por sua vez da implementação dela e de como usar seus recursos da melhor maneira possível.

Qual a importância de aprender linguagem de programação?

A lógica de programação é importante porque é ela quem nos dá as ferramentas necessárias para executar o processo mais básico no desenvolvimento de alguma aplicação: a criação de seu algoritmo.

Quais são as vantagens de implementar uma linguagem de programação como um interpretador puro?

[Sebesta, 2000] Quais são as vantagens de implementar uma linguagem com um interpretador puro? Correções e alterações são mais rápidas de serem realizadas; Código não precisa ser compilado para ser executado; Consomem menos memória.

Como o conhecimento de linguagem de programação pode beneficiar toda a comunidade da computação?

R: O conhecimento de linguagens de programação pode beneficiar a comunidade da computação de várias formas, como por exemplo a capacidade de expressar ideias, possuir embasamento para escolher as linguagens adequadas para a resolução do problema descrito, a habilidade aumentada para aprender novas linguagens, pois ...