Que diriez-vous de cinq choses que je déteste à propos des listes "Choses que je déteste à propos d'une langue"? :RÉ
5- Peindre un rouge orangé n'en fait pas une pomme.
Lorsqu'une langue est conçue, les concepteurs ont généralement à l'esprit à quoi elle sert. L'utiliser pour quelque chose de complètement différent peut fonctionner, mais se plaindre quand ce n'est pas le cas est simplement stupide. Prenez Python. Je suis sûr que quelqu'un a ou quelqu'un fera un jour un utilitaire pour créer des exes à partir du code Python. Pourquoi la terre de Dieu vous voulez faire cela? Ce serait bien — ne vous méprenez pas — mais cela ne sert à rien. Alors arrêtez de vous en plaindre!
Un projet bien conçu contiendrait probablement du code provenant de plusieurs langues. Cela ne veut pas dire que vous ne pouvez pas terminer un projet avec une seule langue. Certains projets peuvent être à la portée de la langue que vous utilisez.
4- Êtes-vous debout sur des pieds en bois?
La plateforme peut avoir une grande influence sur ce que la langue peut faire. Avec les collecteurs d'ordures de nos jours, ou bien même les premières tentatives pascales de "collecte des ordures", peuvent aider à l'effacement de la mémoire (peut-être plus de RAM malloc ??). Les ordinateurs sont plus rapides et donc bien sûr, nous attendons plus de nos langues. Et franchement, nous devrions probablement le faire. Cependant, il y a un prix énorme à payer pour la commodité du compilateur pour créer des tables de hachage ou des chaînes ou une variété d'autres concepts. Ces éléments peuvent ne pas être hérités de la plate-forme dont ils sont utilisés. Dire qu'ils sont faciles à inclure dans une langue me dit simplement que vous n'avez peut-être pas de jambe sur laquelle vous tenir.
3- Qui est vraiment la faute?
Bugs. Tu sais. J'adore les insectes. Pourquoi j'aime les bugs. Parce que cela signifie que je dois garder mon travail. Sans insectes, il y aurait de nombreuses pizzerias fermées. Cependant, les utilisateurs détestent les bogues. Mais voici un peu d'eau froide. Chaque bug est la faute du programmeur. Pas la langue. Un langage avec une syntaxe aussi stricte qui réduirait considérablement le nombre de bogues pouvant être générés serait un langage complètement inutile. Ses capacités pourraient probablement être comptées d'une part. Vous voulez de la flexibilité ou du pouvoir? Vous avez des bugs. Pourquoi? Parce que tu n'es pas parfait et que tu fais des erreurs. Prenons un exemple vraiment identifiable en C:
int a[10];
for (int idx = 0; idx < 15; idx++) a[idx] = 10;
Nous savons tous ce que cela va faire. Cependant, ce que certains d'entre nous ne réalisent peut-être pas, c'est que cette fonctionnalité peut être très bénéfique. Selon ce que vous faites. Les dépassements de tampon sont le coût de cette fonctionnalité. Ce code ci-dessus. Si je l'ai effectivement rendu public. C'est encore .. dites-le avec moi .. "Ma faute". Pas C pour m'avoir permis de le faire.
2- Ne devrions-nous pas mettre cela dans la corbeille?
Il est très facile de pointer une fonctionnalité dans un langage que nous ne comprenons pas, car nous ne l'utilisons pas souvent et nous l'appelons stupide. Se plaindre qu'il est là, etc. Goto me divertit toujours. Les gens se plaignent toujours du fait que goto est dans une langue. Pourtant, je parie que votre dernier programme comprenait un type de goto. Si vous avez déjà utilisé une pause ou une continuation, vous avez utilisé un goto. Voilà ce que c'est. Certes, c'est un goto "sûr", mais c'est ce que c'est. Les Goto ont leur utilité. Que des gotos "implicites" comme continuer ou rompre soient utilisés ou des gotos explicites (en utilisant le mot clé réel "goto" pour n'importe quelle langue). Non pas que les développeurs de langage soient sans défaut, mais généralement ... si la fonctionnalité existe depuis la nuit des temps (pour cette langue). Cet aspect est probablement une qualité déterminante de cette langue. Signification .. c'est ' s utilisé et n'est probablement pas traîner en raison de la compatibilité descendante. Il est utilisé aujourd'hui. Comme il y a 5 minutes. Et utilisé correctement. Eh bien .. sans doute quelqu'un l'utilise également de manière incorrecte, mais cela se rapporte au numéro 3 sur ma liste.
1. - Tout est un objet.
Ok .. celui-ci est vraiment un sous-ensemble de # 2. Mais c'est de loin la plainte la plus ennuyeuse que je vois dans les listes de haine. Tout n'est pas un objet. Il existe un grand nombre de concepts qui n'appartiennent pas ou doivent être des objets. Mettre des choses là où elles n'appartiennent pas est tout simplement moche et peut diminuer l'efficacité d'un programme. Sûr. Peut-être pas beaucoup selon la langue. Cela concerne également le n ° 5. Cela signifie ... oui. Global sont ok. Les fonctions associées aux méthodes statiques sont correctes. La combinaison de la programmation OO avec des fonctions globales est correcte. Maintenant .. cela ne signifie pas que nous devrions tous sortir et "libérer" notre code de ses modèles d'objets. Lors de la conception d'une section de code ou d'un projet entier, ce qui se passe dans les coulisses doitêtre pris en compte lors de la mise en place. Non seulement où ce concept réside et de nombreux autres facteurs. Pourquoi envelopper des fonctions globales dans des classes ou des concepts d'espace de nom si cela ne sert à rien? Prenez des variables membres statiques. Cela m'amuse énormément parce que ... eh bien ... En fonction du langage et de la mise en œuvre bien sûr, mais d'une manière générale, vous venez de déclarer un global. Oui, il existe des raisons d'encapsuler ces concepts non OO dans des wrappers OO. L'un étant bien sûr le code auto-documenté. Cela peut avoir du sens. Alors .. comme je dis. Ne sortez pas et "libérez" votre code. Mais tout bon langage moderne aura un concept global en dehors de sa modélisation OO. Oui, je veux spécifiquement souligner qu'un langage de programmation OO sans concept global a très probablement un grave défaut de conception. Encore une fois cependant .. dépend de l'intention et de la conception de la langue, donc je n'essaie pas de choisir une langue spécifique et il y en a beaucoup trop à analyser ici. Quoi qu'il en soit, considérez où le code doit vivre et être le plus efficace. L'ajout d'un tas de reflets à quelque chose qui n'ajoute pas de fonctionnalité ou de support épuise simplement le clavier plus rapidement. Cela ne fait de bien à personne. Eh bien ... à moins que vous n'aimiez les points brownie de la personne qui vous a probablement incorrectement appris que tout est un objet.
En bref, la programmation ne consiste pas simplement à taper sur le clavier sans réfléchir. Il y a beaucoup de considérations de conception dans tout projet. Je sais que c'est un cliché, mais il faut le regarder sous tous les angles. Même avec les langages sûrs de nos jours. Vous ne vous contentez pas de jeter du code et vous attendez à ce qu'il fonctionne bien. Bien sûr .. cela peut fonctionner, mais ce n'est peut-être pas la bonne façon de procéder. Dans l'ensemble, choisissez la langue et le format les mieux adaptés au travail spécifique ET à l'environnement. Mais aucun langage n'enlève la pensée derrière lui. Si vous ne pensez pas .. vous tapez simplement.