VidaGeek.net

Linux, Open-source, Programação e Produtividade

Aqui na nossa série de linguagens de programação (sem posts já faz um tempo), já falamos de Ruby, mas ainda não de Python. O ideal seria falar de Python antes mas, graças a uma palestra interessante que assisti online, resolvi fazer alguns comentários e críticas a cada uma delas.

Antes de mais nada, é importante entender quais as bases e as motivações de cada uma dessas duas linguagens. Ambas as linguagens têm como metas permitir código bonito, legível e o mais simples possível. Mas o critério de bonito e legível difere para cada uma delas. De acordo com o Zen do Python (numa tradução livre):

[...]
Casos especiais não são tão especiais para quebrarmos as regras.
[...]
Quando se deparar com uma ambiguidade, não ceda à tentação de tentar adivinhar.
Deveria haver uma, e preferencialmente só uma, maneira óbvia de fazer algo.
[...]
Se a implementação é difícil de explicar, não é uma boa ideia.
[...]

Já o Ruby, de acordo com o próprio criador Yukihiro Matsumoto:

[...] é simples na aparência, mas muito complexo no interior, tal como o corpo humano.

Nota-se que isso contraria a parte da simplicidade de implementação do Zen do Python. E nota-se isso também em bibliotecas famosas escritas em Ruby, como o ActiveRecord, por exemplo. Você já tentou entender a implementação da classe ActiveRecord::Base?

Além disso, Ruby herdou de Perl, uma de suas fontes de inspiração, a ideia de ter várias formas de fazer uma mesma coisa. E também tem alguns casos especiais de sintaxe, como a invocação de um setter (que pode ser com espaço antes do igual, apesar de o nome do setter não ter esse espaço), os parênteses opcionais na invocação de um método ou as chaves opcionais num hash passado como argumento.

Agora, minha opinião

Acho que é bom ter mais de um jeito de fazer a mesma coisa, como o Ruby possibilita. Um jeito só de fazer a mesma coisa, a meu ver, tem a vantagem de facilitar um pouco a leitura do código, graças à uniformidade. Mas, por outro lado, nos comunicamos uns com os outros numa língua que permite expressar uma mesma ideia de muitas formas diferentes, e mesmo assim nos entendemos, não? É claro que às vezes com alguma dificuldade, mas na maioria das vezes por causa da ambiguidade da língua. E liberdade de expressão também é importante em programação!

Por outro lado, as peculiaridades da sintaxe de Ruby não me agradam; acho que tornam a linguagem mais difícil de compreender. Os casos especiais são muitos e, às vezes, deixam o programador confuso quanto à necessidade de chaves, por exemplo.

Uma característica muito importante que a linguagem Ruby deveria ter, mas só Python tem, são argumentos rotulados. Em Ruby, costuma-se utilizar um hash para suprir essa necessidade, o que, convenhamos, não é muito elegante.

Um ponto sobre o qual ainda não tenho uma opinião muito elaborada é sobre a modificação de classes e métodos em tempo de execução. Em Ruby, ela é implícita: se você declarar uma classe com o mesmo nome de uma que já existe, você estará modificando a existente. Em Python, ela é explícita: você só pode modificar a classe existente se você escrever código específico para isso; se você declarar uma classe com o mesmo nome de uma já existente, você está criando outra classe. Por um lado, acho bom deixar explícito que você está modificando uma classe existente. Mas, por outro lado, faz sentido ter duas classes diferentes com o mesmo nome?

E você, qual a sua opinião? Quais são suas críticas a cada uma dessas linguagens?

Posts Relacionados:

  • FISL 10: Seaside versus Rails
  • Linguagens de Programação - C
  • Linguagens de programação - Ruby
  • Rails Vs Java e PHP
  • Linguagens de programação - Smalltalk
  • Linguagens de Programação - Basic
  • Lambda the Ultimate
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

    Linguagens de Programação - Basic

    Voltando hoje com a nossa série “Linguagens de Programação”, temos um post de um de nossos leitores: André Luis Zary Mariano da Silva. André tem 17 anos, mora em Porto Alegre e é estudante do primeiro ano do ensino médio, técnico em informática e programador freelancer. Também escreve o blog “C, C++, Java e baboseiras”.

    Visual Basic Logo

    Visual Basic: uma versão de Basic adaptada para criar aplicações gráficas com rapidez

    Basic é utilizada na área de programação como uma linguagem de ensino da lógica. Claro que hoje é sem sentido dizer que ainda se usa Basic puro comercialmente. Temos o QBasic (Quick Basic a mesma do Free Basic), ou o Visual Basic, que são uma espécie de modernização da linguagem - do mesmo jeito que aconteceu com a BCPL (a BCPL foi modernizada para B que, por sua vez, foi para C).

    O motivo dessa linguagem ser usada no ensino da lógica é porque ela foi desenvolvida para ser uma linguagem extremamente de alto nível, ou seja, bem próxima da linguagem humana. No caso do VB e do QB, o inglês e, no caso do FreeBasic, o português.

    O principal benefício do Basic é que se pode criar aplicações de baixo e médio porte com relativa simplicidade e rapidez, enquanto que, em outras linguagens, como o C/C++ e Java, o processo é mais longo.

    Um dos males do Basic é que a biblioteca de funções não é externa, e sim interna, ou seja, junto a linguagem. Mas ainda é uma linguagem muito divertida por:

    • Ser fácil para ser utilizada por iniciantes na programação (tanto por hobby ou profissão);
    • Ser uma linguagem de programação para qualquer coisa;
    • Permitir que fossem adicionassem características avançadas, sem tornar a linguagem mais complicada para os usuários;
    • Fornecer mensagens de erro claras e amigáveis;
    • Responder rapidamente para programas pequenos;
    • Não exigir o conhecimento do hardware do computador (o que assusta muito os iniciantes);
    • Proteger o usuário de erros causados pela má programação no sistema operacional.

    Ainda hoje, mesmo já conhecendo outras linguagens, muitos escrevem funções nela, já que a sua sintaxe é extremamente parecida com a da pseudo-linguagem, o que torna fácil depois a passagem para a linguagem utilizada no projeto.

    Então, analisando-se a linguagem pode-se dizer que, mesmo sendo uma linguagem “amadora” (como ainda hoje em dia é chamada), é muito útil tanto pelos motivos ditos acima como, por exemplo, influenciar linguagens, como no caso do Visual Basic.Net e do VBScript, dando chance, assim, para que amadores possam continuar com uma linguagem relativamente simples e usando recursos modernos.

    Imagem retirada do site http://esafonsosanches.nonio.uminho.pt/course/view.php?id=76

    Posts Relacionados:

  • Visual Basic no Linux
  • CodeIDE
  • Construção de interfaces com o Glade
  • Lambda the Ultimate
  • Linguagens de Programação - C
  • Linguagens de programação - C++
  • Aprenda Comandos Básicos de Linux
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

    Linguagens de Programação - C

    C é uma das linguagens mais famosas e utilizadas que existem. Também, é bastante antiga, já que sua primeira versão é de 1972. Apesar da idade, ainda é muito utilizada devido à sua generalidade e velocidade. Aqui no VidaGeek, já publicamos uma série de posts sobre C (vide Dia C), então não vou falar sobre a sintaxe de C. Mas vou dar minha opinião sobre ela.

    (more…)

    Posts Relacionados:

  • Linguagens de Programação - Basic
  • Lambda the Ultimate
  • Linguagens de programação - C++
  • Linguagens de Programação - Python versus Ruby
  • CodeIDE
  • Linguagens de programação
  • Linguagens de Programação - Java
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

  • 23 Comments
  • Filed under: C, Opiniao, Programacao
  • Linguagens de programação - C++

    C++Não tenho tanta experiência com C++, mas a que tenho já é suficiente para mim.

    C++ é uma linguagem derivada de C, acrescentando-se suporte a orientação a objetos. Não que não seja possível escrever programas orientados a objetos em C (o kernel do Linux faz isso em vários lugares), mas dá bastante trabalho.

    A linguagem tem como único ponto positivo o suporte a orientação a objetos, definindo o que são classes e suportando herança entre elas; só.

    Em compensação, tem diversos problemas: demora para compilar, seus programas são lentos (apesar de dizerem o contrário, Java é mais rápido que C++, por exemplo), suporta herança múltipla (ou seja, apóia o uso de hierarquias malfeitas), mistura paradigmas diferentes de programação (procedural e orientado a objetos), torna os programas difíceis de serem refatorados e exige que o programador se preocupe com alocação de memória, algo que a maioria das linguagens de programação orientadas a objeto não exige, graças à coleta de lixo.

    Em resumo, se você quer C com orientação a objetos, prefira Java ou C#. Qualquer um dos dois é melhor do que C++ e, provavelmente, mais eficiente. Agora, se você gosta de POG (programação orientada a gambiarras), C++ é uma boa.

    Tem algo a acrescentar? Concorda/discorda com o que foi dito? Sua colaboração é muito bem-vinda! Comente abaixo, comente no fórum ou envie um e-mail para contato at vidageek.net.

    Imagem via Mastermod

    Posts Relacionados:

  • Linguagens de Programação - Basic
  • Lambda the Ultimate
  • Linguagens de Programação - C
  • Linguagens de Programação - Python versus Ruby
  • CodeIDE
  • Linguagens de programação
  • Linguagens de Programação - Java
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.