Como determinar se uma linguagem de programação é detalhada ou concisa?


17

As linguagens de programação geralmente podem ser descritas como verbais ou concisas .

Pelo meu entendimento, uma linguagem detalhada é fácil de ler e entender, enquanto uma linguagem concisa é concisa e pura, mas mais difícil de ler. Deveria haver outras coisas a considerar nas definições?

Parece que muitas das linguagens de programação populares de hoje são detalhadas, e esses termos são usados ​​apenas para descrever uma linguagem como sendo mais ou menos, em relação a outra linguagem.

Como podemos determinar se uma linguagem de programação é mais detalhada / concisa em relação a outra?

Exemplo: C # é mais detalhado que Java?

Respostas:


30

Pelo meu entendimento, uma linguagem detalhada é fácil de ler e entender, enquanto uma linguagem concisa é concisa e pura, mas mais difícil de ler.

Isto é falso. Detalhado significa muitos símbolos. Terse significa menos símbolos.

Isso não tem nada a ver com facilidade de leitura ou compreensão.

Algumas pessoas acham COBOL detalhado fácil de ler, outras acham confuso porque são necessários tantos símbolos para fazer tão pouco.

Algumas pessoas acham I / J / K e APL concisas fáceis de ler porque o programa é muito curto. Outros acham difícil ler porque os símbolos são obscuros.

Terse / Verbose não tem relação com fácil de ler ou fácil de entender.

Deveria haver outras coisas a considerar nas definições?

Não. As definições de conciso e detalhado são boas.

O importante é que essas definições não tenham nada a ver com "fácil de ler e entender"

Parece que muitas das linguagens de programação populares de hoje são detalhadas.

Verdade?

Como podemos determinar se uma linguagem de programação é mais detalhada / concisa em relação a outra?

Conte tokens para fazer algo.

Add 2 TO A GIVING B.

7 fichas

b = a + 2;

6 fichas

http://dictionary.reference.com/browse/verbose

http://dictionary.reference.com/browse/terse


5
+1 em "Terse / Verbose não tem relação com fácil de ler ou fácil de entender". Eu sempre penso em notações matemáticas que, quando feitas corretamente, são notavelmente densas, mas ainda relativamente legíveis.
— 21411 Frank Shearar

5
@sunpech: Isso é o que as palavras em inglês significam. "detalhado" significa muitas palavras. "conciso" significa menos palavras. Nada a ver com legibilidade. Simplesmente a palavra conta. Tudo o que fiz foi substituir "word" por "token". É só inglês, nada de especial.
— S.Lott 21/02

1
Também podemos considerar o comprimento dos tokens. O Lisp comum parece prolixo porque muitas das palavras-chave são longas e isso também contribui para a verbosidade do COBOL.
— David Thornley

1
@Frank Shearar: Absolutamente falso, pense no tempo que leva para os alunos aprenderem matemática. É o mais ilegível possível (matemática séria) e, mesmo após 6 anos de ensino médio, a maioria ainda não consegue lê-lo seriamente. Não que ser ilegível seja uma coisa ruim! Mas dizer que a matemática é uma notação legível é um comentário míope, para dizer o mínimo.
— David Mulder

2
@ DavidDulul: A notação matemática varia muito, então eu suspeito que nós dois estamos cometendo pecados de hipérbole. Certamente você considera transparente a notação para álgebra, teoria dos conjuntos e cálculo básico? Por outro lado, considero a notação abstrata dos tensores um absurdo ilegível. (Mas então, eu também não tomar o tempo para aprender a notação corretamente.)
— Frank Shearar

6

Como podemos determinar se uma linguagem de programação é mais detalhada / concisa em relação a outra?

Ao comparar as construções de linguagem equivalente ou semelhante, especificamente como a tarefa igual ou equivalente pode ser resolvida em um idioma versus o outro.

C # é mais detalhado que Java?

Java é geralmente mais detalhado que C #. As diferenças mais óbvias incluem delegados e expressões lambda, em que Java requer a definição, subclasse e instanciação de uma interface distinta para alcançar o que é possível fazer usando uma única expressão lambda em C #.


1
Java agora suporta expressões lambda com Java 8 ( docs.oracle.com/javase/tutorial/java/javaOO/... )
— shanraisshan

1
@shanraisshan: sim, melhorou com o tempo, mas o AFAIK Java ainda é um pouco mais detalhado. Por exemplo, nos documentos aos quais você vinculou, o código contém muitas p.getAge()instruções. Em C #, eu criaria uma propriedade Age, que traz o mesmo grau de encapsulamento que uma função de membro getAge, mas torna possível escrever p.Age.
— Doc Brown

1
Além disso, embora o Java tenha melhorado, o C # também não foi exatamente um destino estático ... Novos recursos, como respostas a funções do gerador e async / wait, também servem para permitir que o código C # seja menor que o equivalente a Java.
— Jules

3

Dê um trecho de código ao não programador e peça que ele explique o que esse trecho está tentando fazer. Se você obtiver a resposta mais próxima, é detalhada. se você obtiver expressão WTF, será concisa.


2

A medida é chamada expressividade da linguagem. A métrica típica para isso é medir linhas de código padronizadas ou instruções necessárias para implementar a mesma funcionalidade.

Alguns valores do Wiki - quantas instruções / linhas de código C são necessárias para implementar uma funcionalidade de uma instrução / linha em:

  • C - declarações: 1 linhas: 1
  • C ++ - instruções: 2.5 linhas: 1
  • Fortran - declarações: 2.5 linhas: 0.8
  • Java - instruções: 2.5 linhas: 1.5
  • Perl - declarações: 6 linhas: 6
  • Smalltalk - declarações: 6 linhas: 6.25
  • Python - declarações: 6 linhas: 6.5

Eu acho que o fato de uma dessas medidas sugerir que FORTRAN é mais expressivo que C por alguma margem (!), Enquanto o outro afirma o contrário, afirmando que C ++ é igualmente expressivo para C (!!) resume a utilidade dessas "métricas" "
— Jules
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.