Vale a pena ler a especificação da linguagem? [fechadas]

18

Gostaria de saber se vale a pena ler as especificações da linguagem / documentos padrão (por exemplo, The Java Language Specification ) se você não for escrever um compilador / intérprete para a linguagem ou algo semelhante? Entendo que a leitura de um livro desse tipo não deve ser a primeira exposição de ninguém ao idioma, mas pode ser uma ótima maneira de aprender os detalhes mais delicados.

Você já se incomodou e deveria ter outros?

Anto
fonte
4
Uma especificação de linguagem não deve ser lida de capa a capa, é simplesmente uma referência.
Mahmoud Hossam

Respostas:

18

Basicamente, resume-se a uma pergunta bastante simples: você deseja um conhecimento detalhado e autoritário do idioma ou está feliz em conhecê-lo suficientemente bem para usá-lo, percebendo que provavelmente existem partes que você não conhece bem e possivelmente outras partes que você não conhece?

Basicamente, existem pessoas que parecem quase nascidas como "juristas de idiomas" - elas não descansam (não podem) enquanto houver até alguns cantos ou recantos no idioma que não conhecem e / ou entender. Muitos desses gravitam em direção a linguagens relativamente simples, simplesmente porque aprender línguas mais complexas nesse nível de detalhe é quase impossível para qualquer pessoa.

Para a maioria dos programadores, isso seria um total desperdício de tempo - eles são bastante felizes e produtivos, sabendo o suficiente da linguagem para poder usá-la (razoavelmente) bem. Além disso, eles simplesmente não se importam. A linguagem é uma ferramenta e, desde que eles possam usá-la suficientemente bem para seus propósitos, o fato de que há outras coisas que eles não sabem é em grande parte irrelevante.

Jerry Coffin
fonte
3
+1 no último parágrafo. É isso que a maioria dos programadores deve perceber - eles querem ser John Skeet (que sabe tudo sobre C #, mas quase nada sobre mais nada - não o viu respondendo perguntas SQL, por exemplo) ou apenas um usuário, mas com muitas outras tecnologias o que torna a prática mais prática e a vida mais interessante.
2
@ Art Developer: Mas Jon Skeet é deus;)
Anto
1
@bi: Concordo que o idioma (e sua complexidade) é claramente um fator importante. O tamanho padrão não significa necessariamente muito embora. Por exemplo, a parte do padrão C ++ que cobre a linguagem adequada tem apenas ~ 400 páginas, enquanto a especificação da linguagem Java é ~ 500. Embora eu não ache que o Java seja quase o C ++ "limpo" que alguns afirmam, dificilmente acredito que seja 25% mais complexo que o C ++.
Jerry Coffin
3
@Developer Art - um pouco dura sobre Jon Skeet, ele tem emblemas para tudo (incluindo SQL!)
shug
2
@dietbuddha: Eu certamente não pretendo desculpar a ignorância, mas , para ser justo, para a maioria das pessoas é menos uma questão de saber se devem aprender alguma coisa do que daquilo que deveriam gastar seu tempo aprendendo. O que beneficiará mais um programador de C ++: aprender um novo algoritmo ou aprender as regras exatas usadas para escolher qual função sobrecarregada chamar por um determinado conjunto de parâmetros? Lembre-se de que, se ele normalmente tem muitos motivos para se importar com o que é chamado, provavelmente está abusando da sobrecarga de qualquer maneira!
Jerry Coffin
12

Nunca

Nunca se deve ler uma especificação de linguagem.

É uma total perda de tempo.

Os grandes programadores são capazes de digitar código aleatório, fazer perguntas no Stack Overflow e usar o IDE para eventualmente escrever código que não falha com muita frequência.

Não perca tempo entendendo o idioma. Basta encontrar um ótimo IDE com bom preenchimento automático. Faça muitas perguntas SO. É tudo o que alguém precisa.

S.Lott
fonte
3
Nunca? Nem mesmo se você estiver escrevendo um intérprete / compilador?
Greyfade 17/05
1
Você acertou em cheio! É assim que funciona. ;)
x4u 17/05
4
@greyfade: Nunca. Nunca confie em fatos. Atenha-se às suposições.
S.Lott 18/05
6
o que é sutil nisso?
Aditya P
2
Sinceramente, eu não sabia dizer se aquilo era sarcasmo ou não. : P
greyfade
5

Para Java, a especificação da linguagem visa dar uma resposta definitiva a qualquer pergunta sobre o significado de uma determinada construção de origem. Não é recomendável lê-lo como aluno - em vez disso, um bom professor mostra todas as armadilhas e o que elas realmente significam.

Para um desenvolvedor experiente, o Java Puzzlers é realmente bom para treinar sua compreensão dos casos do canto escuro.


fonte
2

A resposta geral é: Sim, vale a pena.

Se você deseja escrever um código portátil, é obrigatório.

Para alguns idiomas, isso é inevitável, por exemplo, Ada ou perl.

Além disso, se você não apenas escreve código, mas também lê código de outras pessoas, eventualmente precisará consultar a especificação.

mouviciel
fonte
2

Talvez seja só eu, mas esta pergunta não faz sentido. Compreender as ferramentas que você usa é a marca de um profissional. Quanto mais profundo o entendimento, melhor a sua capacidade de usar a ferramenta. Para mim, é uma escolha entre ser um diletante ou um profissional.

Sempre que estou aprendendo um novo idioma, a primeira coisa que procuro é a especificação.

Eu li especificações para ANSI C, C ++, Java, Scheme, Python e Javascript. Esqueci a maioria dos detalhes em C, C ++ e Java apenas porque não uso essas linguagens com frequência. Depois de ler as especificações, eu era um programador melhor porque sabia como usar melhor a linguagem.

dietbuddha
fonte
1

Em geral, pode ser útil entender certos momentos difíceis que você encontra de vez em quando.

Mas, falando sério, se o domínio de um idioma exige que você se familiarize com suas especificações detalhadas, talvez o idioma seja lamentável. Da mesma forma que o ditado comum, se você precisar de uma documentação para seu aplicativo, ele será mal projetado.


fonte
É exatamente por isso que mantenho uma cópia do ECMA-262 à mão.
greyfade
1

Acho útil quando você se depara com o que é o momento, mas acho difícil reter como uma leitura direta. No entanto, quando eu usei depois de não entender algo, isso sempre aumentou muito meu conhecimento.

reexecutar
fonte
1

Se você é um programador essencial nessa linguagem e precisa ser capaz de extrair todas as nuances sutis, sim. Há retornos claros no seu investimento de tempo nesse caso .

Caso contrário, não. Se você não usar o conhecimento, certamente não ficará com você. As especificações de idioma são a coisa mais chata que se pode imaginar.

Satanicpuppy
fonte
1

Normalmente, não coloco muito estoque no Padrão. O fato simples é que o Padrão não solicitará que você não use exceções como fluxo de controle. Não lhe dirá para não usar Singletons. Não mostrará como criar uma interface de classe sustentável. Ele não informa por que seu aplicativo está travando quando você não sabe o porquê. Você pode ter o programa mais bem definido do mundo e ainda será horrível.

Na minha opinião, o simples fato é que a grande maioria dos desafios de programação não é fazer a linguagem fazer o que você quer, é saber qual é a coisa certa. Contanto que você conheça os recursos básicos da linguagem, será como usá-los que conta.

DeadMG
fonte
1

Definitivamente, vale a pena lê-lo. Algumas linguagens como C ++, Java e Python são complexas o suficiente para que, lendo as especificações da linguagem, você aprenda muito sobre essas linguagens e todos os truques sofisticados de sintaxe / semântica que eles possuem.

Eu costumava ler a especificação da linguagem do Scheme R5RS na viagem de ônibus para a faculdade porque era curta e compacta e aprendi toda a sintaxe e todas as funções básicas disponíveis.

Rudolf Olah
fonte
0

A parte do doc.python.org denominada "referência da linguagem" é extremamente útil. O capítulo "modelo de dados" é particularmente importante.

user16764
fonte
0

Eu acho que se a programação nessa linguagem é o seu trabalho e você quer levar o trabalho a sério, deve ler a especificação da linguagem, especialmente quando é relativamente fácil e rápido de ler e compreender como a especificação da linguagem Java, embora tenha recentlyperdido muito é simplicidade com genéricos.

Mas também se você planeja aprender e, eventualmente, dominar um novo idioma que você ainda não conhece, pode ser muito esclarecedor ler as especificações desse idioma antes de desperdiçar seu tempo com ele. Tenho certeza de que se mais desenvolvedores de C ++ tivessem lido e tentado compreender o Manual de Referência Anotada de C ++ antes de começarem a usá-lo, muitos teriam fugido assustados dele.

x4u
fonte