Vaut-il la peine de lire la spécification de la langue? [fermé]

18

Je me demande s'il vaut la peine de lire les spécifications du langage / les documents standard (par exemple, la spécification du langage Java ) si vous n'écrivez pas un compilateur / interprète pour le langage ou quelque chose de similaire? Je comprends que la lecture d'un tel livre ne devrait pas être la première exposition de quiconque à la langue, mais cela pourrait être un excellent moyen d'en apprendre les moindres détails.

Avez-vous déjà dérangé, et devriez-vous en avoir d'autres?

Anto
la source
4
Une spécification de langue n'est pas destinée à être lue d'un bout à l'autre, c'est simplement une référence.
Mahmoud Hossam

Réponses:

18

Cela se résume à une question assez simple: voulez-vous une connaissance approfondie et faisant autorité de la langue, ou êtes-vous heureux de la connaître assez bien pour l'utiliser, sachant qu'il y a probablement des parties que vous ne connaissez pas bien, et très probablement d'autres des pièces que vous ne connaissez pas du tout?

Fondamentalement, il y a des gens qui semblent presque nés pour être des "juristes de la langue" - ils ne pourront (ne pourront) pas se reposer tant qu'il y aura même quelques coins ou recoins dans la langue qu'ils ne connaissent pas et / ou comprendre. Beaucoup d'entre eux se tournent vers des langues relativement simples simplement parce que l'apprentissage de langues plus complexes à ce niveau de détail est souvent presque impossible pour une seule personne.

Pour la plupart des programmeurs, ce serait une perte de temps totale - ils sont assez heureux et productifs connaissant suffisamment la langue pour pouvoir l'utiliser (raisonnablement) bien. Au-delà de cela, ils s'en moquent tout simplement. La langue est un outil, et tant qu'ils peuvent utiliser l'outil suffisamment bien pour leurs fins, le fait qu'il y ait d'autres choses qu'ils ne connaissent pas est largement hors de propos.

Jerry Coffin
la source
3
+1 pour le dernier paragraphe. C'est ce que la plupart des programmeurs devraient réaliser - veulent-ils être un John Skeet (qui sait tout sur C # mais à peu près rien d'autre - ne l'ont pas vu répondre à des questions SQL, par exemple) ou simplement un utilisateur mais de nombreuses autres technologies ce qui rend la pratique plus pratique et la vie plus intéressante.
2
@Developer Art: Mais Jon Skeet est dieu;)
Anto
1
@sbi: Je conviens que la langue (et sa complexité) est clairement un facteur majeur. La taille standard ne signifie cependant pas nécessairement beaucoup. Par exemple, la partie de la norme C ++ qui couvre le langage proprement dit ne fait que ~ 400 pages, tandis que la spécification du langage Java est ~ 500. Bien que je ne pense pas vraiment que Java soit presque le C ++ «nettoyé» que certains prétendent, je pense à peine qu'il est 25% plus complexe que C ++ non plus.
Jerry Coffin
3
@Developer Art - un peu sévère à propos de Jon Skeet, il a des badges pour tout (y compris SQL!)
SHug
2
@dietbuddha: Je ne veux certainement pas excuser l'ignorance, mais en toute équité, pour la plupart des gens, il s'agit moins de savoir s'ils devraient apprendre quelque chose que de ce qu'ils devraient passer leur temps à apprendre. Qu'est-ce qui bénéficiera le plus à un programmeur C ++: apprendre un nouvel algorithme ou apprendre les règles exactes utilisées pour choisir la fonction surchargée à appeler pour un ensemble de paramètres donné? Gardez à l'esprit que s'il a normalement beaucoup de raisons de se soucier de ce qui est appelé, il abuse probablement de la surcharge de toute façon!
Jerry Coffin
12

Jamais

Il ne faut jamais lire une spécification de langue.

C'est une perte de temps totale.

Les grands programmeurs sont capables de taper du code aléatoire, de poser des questions sur Stack Overflow et d'utiliser l'IDE pour éventuellement écrire du code qui ne plante pas très souvent.

Ne perdez pas de temps à comprendre la langue. Trouvez simplement un excellent IDE avec une bonne saisie semi-automatique. Posez beaucoup de questions SO. C'est tout ce dont tout le monde a besoin.

S.Lott
la source
3
Jamais? Pas même si vous écrivez un interprète / compilateur?
greyfade
1
Vous avez réussi! Voilà comment ça marche. ;)
x4u
4
@greyfade: Jamais. Ne faites jamais confiance aux faits. Restez avec les hypothèses.
S.Lott
6
qu'est-ce qui est subtil là-dedans?
Aditya P,
2
Honnêtement, je ne pouvais pas dire si c'était du sarcasme ou non. : P
greyfade
5

Pour Java, la spécification du langage est destinée à donner une réponse définitive à toute question sur la signification d'une construction source donnée. Il n'est pas recommandé de le lire en tant qu'apprenant - au lieu de cela, un bon enseignant vous montre tous les pièges et ce qu'ils signifient réellement.

Pour un développeur expérimenté, le Java Puzzlers est vraiment bon pour former votre compréhension des cas de coin sombre.


la source
2

La réponse générale est: oui, cela en vaut la peine.

Si vous voulez écrire du code portable, c'est obligatoire.

Pour certaines langues, c'est juste inévitable, par exemple, Ada ou perl.

De plus, si vous n'écrivez pas seulement du code mais lisez également le code des autres, vous devrez éventuellement vous référer à la spécification.

mouviciel
la source
2

C'est peut-être juste moi, mais cette question n'a aucun sens. Comprendre les outils que vous utilisez est la marque d'un professionnel. Plus la compréhension est profonde, meilleure est votre capacité à utiliser l'outil. Pour moi, c'est un choix entre être dilettante ou professionnelle.

Chaque fois que j'apprends une nouvelle langue, la première chose que je recherche est la spécification.

J'ai lu les spécifications pour ANSI C, C ++, Java, Scheme, Python et Javascript. J'ai oublié la plupart des détails C, C ++ et Java juste parce que je n'utilise pas souvent ces langages. Après avoir lu les spécifications, j'étais un meilleur programmeur car je savais mieux utiliser le langage.

Dietbuddha
la source
1

En général, il peut être utile de comprendre certains moments difficiles que vous rencontrez de temps en temps.

Mais sérieusement, si la maîtrise d'une langue nécessite que vous vous familiarisiez avec ses spécifications détaillées, alors la langue est peut-être malheureuse. Comme pour le dicton courant, si vous avez besoin d'une documentation pour votre application, elle est mal conçue.


la source
C'est précisément pourquoi je garde une copie de l'ECMA-262 à portée de main.
greyfade
1

Je trouve cela utile lorsque vous rencontrez un moment donné, mais j'ai du mal à conserver une lecture directe. Cependant, lorsque j'ai utilisé après que je n'ai pas compris quelque chose, cela a toujours beaucoup amélioré mes connaissances.

rediffusion
la source
1

Si vous êtes un programmeur noyau dur dans cette langue et que vous devez pouvoir en tirer toutes les nuances subtiles, oui. Il y a des retours clairs sur votre investissement de temps dans ce cas .

Sinon, non. Si vous n'allez pas utiliser les connaissances, cela ne va certainement pas rester avec vous. Les spécifications linguistiques sont la chose la plus ennuyeuse imaginable à lire.

Satanicpuppy
la source
1

Je ne mets normalement pas beaucoup de stock dans la norme. Le simple fait est que la norme ne vous dira pas de ne pas utiliser d'exceptions comme flux de contrôle. Il ne vous dira pas de ne pas utiliser de singletons. Il ne vous dira pas comment concevoir une interface de classe maintenable. Il ne vous dira pas pourquoi votre application se bloque lorsque vous ne savez pas pourquoi. Vous pouvez avoir le programme le plus bien défini au monde et ce sera toujours horrible.

À mon avis, le simple fait est que la grande majorité des défis de programmation ne consistent pas à faire faire au langage ce que vous voulez, mais à savoir ce qui est juste. Tant que vous connaissez les fonctionnalités de base du langage, ce sera la façon de les utiliser qui compte.

DeadMG
la source
1

Cela vaut vraiment la peine de le lire. Certains langages tels que C ++ et Java et Python sont suffisamment complexes pour qu'en lisant les spécifications du langage, vous en apprendrez beaucoup sur ces langages et sur toutes les astuces syntaxiques / sémantiques qu'ils ont.

J'avais l'habitude de lire la spécification du langage Scheme R5RS pendant le trajet en bus vers le collège car elle était courte et compacte et j'ai appris toute la syntaxe et toutes les fonctions de base disponibles.

Rudolf Olah
la source
0

La partie de doc.python.org intitulée "référence de langage" est extrêmement utile. Le chapitre "modèle de données" en particulier.

user16764
la source
0

Je pense que si la programmation dans ce langage est votre travail et que vous voulez prendre votre travail au sérieux, vous devriez lire la spécification du langage, surtout quand elle est relativement facile et rapide à lire et à comprendre comme la spécification du langage Java bien qu'elle ait recentlyperdu beaucoup de c'est la simplicité avec les génériques.

Mais aussi si vous prévoyez d'apprendre et éventuellement de maîtriser une nouvelle langue que vous ne connaissez pas encore, il peut être très judicieux de lire les spécifications de cette langue avant de perdre votre temps avec. Je suis sûr que si plus de développeurs C ++ avaient lu et essayé de comprendre le manuel de référence annoté C ++ avant de commencer à l'utiliser, beaucoup s'en seraient effrayés.

x4u
la source