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?

esponja
fonte

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

S.Lott
fonte
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 #.

Péter Török
fonte
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.

QriousCat
fonte
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
vartec
fonte
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