web-dev-qa-db-fra.com

Hypothèses de programmation incorrectes de longue date

Je suis en train de faire des recherches sur les erreurs courantes et les mauvaises hypothèses faites par les ingénieurs en informatique débutants (et peut-être les plus expérimentés).

Quelle a été votre hypothèse la plus ancienne qui a finalement été corrigée?

Par exemple, j’ai mal compris que la taille d’un entier n’est pas un standard et dépend de la langue et de la cible. Un peu gênant à dire, mais le voilà.

Être franc; quelle croyance ferme aviez-vous et combien de temps avez-vous maintenu l'hypothèse à peu près? Il peut s'agir d'un algorithme, d'un langage, d'un concept de programmation, de tests ou de toute autre chose concernant la programmation, les langages de programmation ou l'informatique.

281
Demi

J'ai besoin de définir toutes les variables que j'utiliserai dans ma fonction à son début (style Pascal).

J'avais l'habitude de croire que je devais penser à TOUTES les ressources utilisées par ma fonction et les définir avant de commencer à coder, c'est probablement parce que ma première langue était le Pascal, où c'est l'exigence. Ensuite, lorsque je passais en C, je définissais des variables temporaires utilisées uniquement dans les boucles extérieures à ces boucles, sans tenir compte de la portée de la boucle interne, juste pour que "tout soit défini au début".

Il m'a fallu plusieurs années pour comprendre que définir toutes les ressources à l'avance n'était pas une vache sacrée, et que la définition de la portée était en soi extrêmement importante pour la lisibilité du code.

4
Roee Adler

Cette programmation est destinée aux juniors et les meilleurs gestionnaires de projets sont des personnes qui ne peuvent pas programmer.

4
Kdeveloper

En arrière au début de mes jours de C++ (il y a beaucoup de cheveux), j'étais entouré par des universitaires Java. Lorsque demandé un avantage du C++ sur Java ( généralement une question que je tente de rejeter comme artificielle, mais voilà), j'inclurais dans ma réponse que C++ vous a donné des références et pointeurs. Le Java les gars semblerait incrédule et suggérerait que les références sont pointeurs et se moque de moi hors de la salle. J'ai insisté pour que les références et les pointeurs soient distincts en C++.

Et, pour être juste, j'avais raison. Les références et les pointeurs sont sémantiquement et syntaxiquement différents. Malheureusement, j'ai corroboré mon affirmation en affirmant que l'implémentation sous-jacente était différente.

Je croyais fermement que les références étaient, par standardisation, nom alias dans la syntaxe de la même manière qu'un typedef est un alias de type sans stockage.

J'étais sûr que les références n'étaient pas des objets et n'avaient pas de stockage, qu'elles fournissaient simplement plusieurs mappages de niveau supérieur de "nom" à "objet". À cet égard, je pensais qu'ils ressemblaient à liens symboliques dans un système de fichiers:

Code: int a = 3; int& b = a;

 Names          Objects           Memory

+-----+     +-------------+     +-------+
|  a  |---->|             |     |       |
+-----+     |             |     |       |
            |     int     |---->|   3   |
+-----+     |             |     |       |
|  b  |---->|             |     |       |
+-----+     +-------------+     +-------+

Bien sûr, même si les optimisations peuvent conduire à cela, les références ont un stockage. Ce sont des objets distincts, même si la syntaxe fait de son mieux pour l’abstraire du programmeur.

Il suffit de dire que j’ai été déçu d’apprendre qu’un compilateur dont les optimisations sont désactivées peut implémenter une référence en tant que pointeur, nécessitant une opération de déréférencement: c’est-à-dire que je créais en fait l’analogie avec un lien dur dans un système de fichiers:

Code: int a = 3; int& b = a;

 Names          Objects           Memory

+-----+     +-------------+     +-------+
|  a  |---->|     int     |---->|       |
+-----+     +-------------+     |       |
                                |   3   |
+-----+     +-------------+     |       |
|  b  |---->|     int&    |---->|       |
+-----+     +-------------+     +-------+

Le standard C++ ne spécifie pas réellement comment les références doivent être implémentées, ma théorie peut donc s'appliquer à certaines chaînes d'outils, mais cela ne se trouve dans aucun compilateur traditionnel ... et ce n'est certainement pas indiqué dans la norme.

Les développeurs/programmeurs procéduraux qui ne connaissent pas SQL et les bases de données relationnelles n’ont besoin d’aucune formation ni d’une compréhension formelles de l’utilisation ou de l’utilisation de SQL et qu’une lecture rapide de quelque chose comme SQL For Dummies est suffisante pour être suffisant pour travailler avec des bases de données relationnelles telles que Oracle & SQL Server.

Bien trop souvent, de nombreuses erreurs dans les applications traitant des données stockées dans une base de données relationnelle telle qu'Oracle et SQL Server sont causées par un manque de compréhension ou d'utilisation du langage des bases de données relationnelles. [~ # ~] sql [~ # ~] .

Auparavant, je travaillais pour un éditeur de logiciels qui pensait que tout ce dont un développeur avait besoin était le livre SQL For Dummies ou quelque chose de similaire, et ils seraient parfaitement équipés pour gérer tout problème de base de données relationnelle. Maintenant que les clients de ce fournisseur ont des bases de données mesurant des centaines de giga-octets, ce manque de connaissances en SQL revient négativement. Ce ne sont pas seulement les mauvaises recherches, les mises à jour et les insertions qui posent problème, mais la conception même de la base de données elle-même qui constitue le véritable obstacle.

Tout cela aurait pu être évité et engendrer des coûts bien moindres si, à ce moment-là, le responsable du développement avait traité SQL et les bases de données relationnelles avec le même niveau de respect que celui utilisé pour la langue avec laquelle ils avaient construit l'application.

Ne rejetez pas SQL comme étant sans importance, car il reviendra vous hanter un jour ou l'autre. Vous pourrez peut-être vous en tirer pendant un certain temps, voire des années, mais vous atteindrez éventuellement le point de rupture où vous ne pourrez pas progresser sans une refonte complète de votre base de données, et c'est à ce moment-là que les coûts seront les plus élevés.

4
user337500

Que vous ne finissiez jamais le projet que vous n'avez pas commencé.

Cela semble vraiment stupide, mais j'ai reporté tellement de projets parce que la taille était tout simplement incroyable. Venant juste de terminer un monstre d’un projet, j’ai réalisé que je n’aurais jamais commencé si j’avais compris l’ampleur du projet. En réalité, même le système le plus complexe est assez simple lorsqu'il est divisé en éléments distincts et définis. Pourtant, vu au niveau macro, il est rapidement accablant.

4
Serapth

Qu'il existe toujours une "bonne" façon de faire les choses. Après avoir quitté l’université, j’ai retenu cette hypothèse trop longtemps.

Bien sûr, je me suis rendu compte qu'il y a toujours plusieurs façons d'accomplir une tâche. Il y a toujours des avantages et des inconvénients pour chaque méthode. Regardez les informations disponibles, décidez, puis assurez-vous de pouvoir les justifier auprès de votre patron.

4
Phil Hale

Je pensais que la "frappe de canard" était en fait une "frappe de canal" quand j'en ai entendu parler pour la première fois, de la même manière que les gens disent souvent du ruban de canard. "Taper du canard" semblait juste faux, alors que "taper du canal" donnait un sens étrange (types pavés).

4
Chinmay Kanchi

Que les gens se soucient des meilleures pratiques, voire de la cohérence.

4
l0b0
4
Chris S

L'apprentissage d'expressions régulières vous fera gagner du temps

3
rjdevereux

Mon hypothèse erronée la plus ancienne (et donc la plus coûteuse) était la suivante: "Les exigences de l'entreprise sont saines et raisonnables, je ne les comprends pas encore."

100 hypothèses vertes assises sur le mur,
et si une hypothèse verte devait tomber accidentellement,
Il y aurait 99 hypothèses vertes assises sur le mur.

Alternativement:

Humpty Dumpty était assis sur le mur.
Humpty dumpty a fait une grande chute,
et tous les chevaux rois et tous les hommes rois,
dit Effim, ce n'est qu'un technicien.

3
corlettk

Que d'autres personnes soient aussi gênées que moi par les bugs connus et fassent de leur réparation une priorité par rapport au travail de projet.

3
MartW

J'ai toujours supposé que toute personne écrivant un code pour une langue quelconque utilisait un programme d'édition.

Je travaillais avec un de mes clients qui m'avait principalement demandé de l'aide et d'écrire certaines choses plus complexes pour lui. Un jour, il a tout gâché dans un dossier. Il a accidentellement économisé plus de trois heures de son travail et, lorsque je lui ai demandé pourquoi il ne économisait pas plus souvent, il a répondu "parce que je n'avais pas fini". Naturellement, ce n’était pas une réponse acceptable et j’ai poussé un peu plus loin. Je finis par découvrir qu'il n'avait jamais utilisé de programme d'édition, JAMAIS! Pas même notepad.exe! Il utilisait un éditeur en ligne de CPanel pour les fichiers! Il n'avait même pas de fonction "Rechercher". Il ne pouvait jamais sauvegarder avant d'avoir terminé, car il était en train de modifier le fichier en direct sur le site!

Inutile de dire que j'étais stupéfait et qu'il utilise encore l'éditeur de CPanel à ce jour ...

3
MajorVictory

Depuis le collège, je me croyais maître de la programmation. puisque je pouvais coder mais que d'autres ne le pouvaient pas. Mais lorsque j'ai rejoint une entreprise, j'ai été frappé par mon ignorance des bases. Toutes mes hypothèses sur moi se sont avérées fausses! Maintenant je sais ce que j'ai besoin de savoir et ce que je ne sais pas!

3
Manohar

Que l’avantage de OOP est que vous pouvez réutiliser le objet, alors qu’en réalité, c’est le contrôle du reste du code par créer un nouvel objet qui a la même interface.

En réalité, l'objet peut représenter 2% du code. Par conséquent, la réutilisation ne vous rapporte que 2%. Le véritable avantage est de réutiliser les 98% restants du code en créant un nouvel objet qui permet à tous les autres codes de passer à quelque chose de complètement différent. Vous pouvez maintenant réutiliser 98% du code. Cela vaut bien 3 fois plus de temps pour écrire quelque chose comme objet.

Par exemple, si vous avez un programme de dessin et que soudainement il y a une nouvelle forme que vous voulez pouvoir dessiner, il vous suffit de changer l'objet ShapeObject (tout en conservant l'interface identique). Rien d'autre dans le programme ne doit changer.

3
Clay Nichols

Que l'ordre d'évaluation des instructions if en C/C++ était spécifique au compilateur. Donc écrire:

if (pointeur! = NULL) && (pointeur-> doQuelque chose ())

Était non sécurisée parce que l'ordre d'évaluation pouvait être interverti. J'ai découvert récemment (après de nombreuses années de jaillissement de ce mensonge) que sa part dans la spécification ANSI-C, vous pouvez garantir la commande et son parfaitement sûr.

James

3
James Norris

Au collège (milieu des années 90), ils ne disposaient que de machines Windows 3.11 dans le laboratoire informatique (je sais, collège étrange).

Pendant un moment, j'ai pensé que seule la plate-forme Windows me concernait en tant que programmeur professionnel et que toutes les autres plates-formes n'étaient intéressantes que d'un point de vue académique historique.

Après avoir terminé mes études et découvert les systèmes Unix modernes et Linux, je ne pouvais m'empêcher de me sentir en colère et déçu de mon lame.

Je ne peux pas encore croire que je sois diplômé en génie informatique sans avoir jamais vu un bash Shell ou entendu parler d’emacs ou de vim.

3
Sergio Acosta

Je me suis enseigné C en lisant K & R. Malheureusement, je ne l'ai pas lu mot pour mot et j'ai dû passer à côté de quelques choses. J'ai écrit mes propres versions de malloc et calloc que j'ai emportées d'un travail à l'autre, car je ne savais pas que vous pouviez simplement vous connecter à des bibliothèques existantes. J'ai fait cela pendant plusieurs années jusqu'à ce que quelqu'un me demande enfin pourquoi je transportais ce matériel, "euh ... tu réalises que tu pouvais simplement créer un lien dans les bibliothèques existantes, n'est-ce pas?"

3
elbillaf

Que je ne trouverais jamais une utilité pratique dans la programmation du cartes de Karnaugh on m'a enseigné dans mon cursus d'informatique.

3
schemathings

Il était si important de créer des programmes efficaces sans perdre d’octet ni de cycle de traitement.

Mais avec plus d’expérience, il ne s’agit ni d’octets ni de cycles de calcul, mais de votre flux de pensées, continu, ininterrompu, un peu comme un poème.

Essentiellement, n'essayez pas trop fort.

3
Lakshman Prasad

Ces tests n'étaient qu'une autre méthode de procrastination.

3
Macha

Qu'en apprenant une science exacte, je n'aurais pas besoin d'améliorer mes compétences sociales limitées.

3
Rômulo Ceccon

Je n'aurais pas besoin de refactoriser rapidement mon code orienté objet. Martin Fowler a finalement ouvert mes yeux.

3
Ritesh M Nayak

C Python était un langage peu pratique et gênant (je peux encore lire quelques commentaires sur mon code précédent, en me plaignant)) et C++, le seul vrai langage orienté objet.

J'avais tellement tort que je remplis encore de honte.

3
Stefano Borini

Que je devienne un jour un riche logiciel de programmation pour quelqu'un d'autre

3
slf

À l’école, on vous apprend que la programmation est "lire une entrée, traiter des données, écrire une sortie". En réalité, il y a rarement une étape de traitement - la plupart du codage est simplement "lire entrée, sortie"

En général, il s’agit soit de "lire à partir de l’utilisateur, écrire dans la base de données" ou "lire de la base de données, afficher à l’écran". Ces deux cas couvrent environ 95% du travail que vous ferez.

3
James Curran

Satisfaire un client en mettant en œuvre ce qu'il veut - cela implique malheureusement qu'un client sait ce qu'il veut.

3
tanascius

Le moins de code le mieux. Maintenant, je sais que parfois il vaut la peine d'avoir plus de lignes de code si cela facilite la lecture/compréhension

3
Sergio

Ce mysql_fetch_row de PHP était le seul moyen de récupérer des données à partir d'une requête SQL exécutée.

Honnêtement - J'ai programmé une application Web entière sans utiliser mysql_fetch_array et je devais changer les séries de nombres chaque fois que je voulais changer la fonction pour ajouter une colonne supplémentaire.

3
Julian H. Lam

Il s'avère que peu importe que vous vérifiiez si l'allocation de mémoire renvoie une référence ou non sous Linux, car cela vous ( vous mentira et vous allouera réellement la mémoire à un moment donné dans l’avenir ou abandonner complètement votre programme s’il n’a pas la mémoire dont vous avez besoin.

3
zaratustra

Qui .... qui a besoin de tester JUnit lorsque les points d'arrêt sont efficaces? (lors du test d'applications en mode débogage). J'ai compris plus tard pourquoi ...

2
Buhake Sindi

Qu'un langage adapté à la programmation système doit supporte les variables [mutables].

2
james woodyatt

Les gars du marketing se soucient de ce que vous faites.

2
crauscher

Hypothèses courantes: "La qualité du code est secondaire". Hypothèse encore plus médiocre: "La qualité du code n’a aucune importance".

La qualité du code peut être un concept très large. Je l'ai dissous assez complètement ici .

2
Daniel Ribeiro

Cette simplicité bat presque toujours la complexité. KISS - Keep It Simple Règles stupides.

Edit: Comme Georg déclare ci-dessous, celui-ci est inversé. Mon esprit a dû se perdre dans les réponses. La simplicité améliore presque toujours votre code s'il est utilisé correctement.

2
mwgriffith

J'ai toujours pensé que pour être un bon programmeur, il fallait connaître tous les rouages ​​du système. J'avais honte du fait que je ne connaissais pas tout ce qu'il y avait à savoir sur le langage, comme ses bibliothèques, ses modèles, ses extraits avant de commencer à coder. Eh bien, je ne suis plus si naïf.

2
lune

Vous avez besoin d'une spécification client pour mener à bien un projet. Plus souvent qu'autrement, vous commencez avec une réunion de vente et un bloc-notes. Bien sûr, à la fin de la réunion, ils souhaiteraient une échéance "juste comme ça".

2
threadhack

Que toutes les langues OOP ont le même concept d'orientation d'objet.

  • A Java interface! = Une interface de méthode.
  • Une interface Java est une solution spécifique au langage pour la nécessité d'avoir plusieurs héritages. Les mixins de Ruby tentent de résoudre le même problème.
  • L'héritage fourni en Javascript est très différent de la façon dont Java implémente l'héritage.
2
Alan

Cette élégance de programmation associée à l’automatisation constituait un substitut adéquat à de bons tests à l’ancienne.

2
ep4169

C'est toujours il n'y a pas assez de temps pour le terminer avant la date limite.

2

J'avais l'habitude de penser que je ne programmerais jamais comme un développeur de premier plan comme le développeur MS, mais maintenant je pense que je peux écrire le même code en clair ou même mieux.

2
Fred Yang

Qu'une WTF est toujours la preuve d'un mauvais professionnel.

En fait, je me suis récemment rendu compte du nombre de WTF que je me suis engagé tout au long de ma carrière, mais j'ai été rassuré lorsque StackOverflow m'a montré il ne s'agit que d'une autre métrique logicielle .

2
Rômulo Ceccon

Si vous ne pouvez pas lire mon code, vous ne connaissez tout simplement pas la langue. J'ai eu quelques critiques de code où j'ai essayé de contrer cela.

Il a fallu quelques années de plus pour apprendre qu'il était temps et magique de travailler avec votre code: c'est dans les bibliothèques, pas dans l'application. L'application est pour la clarté et la lisibilité. La magie est mieux utilisée lorsqu'elle est cachée derrière des méthodes d'extension et des frameworks.

2
Ball

La création d’une application réussie peut facilement être réalisée uniquement par des programmeurs. Le logiciel concerne également la facilité d'utilisation, la beauté, la documentation et le marketing approprié. Le développement de logiciels est multidisciplinaire et l’échec d’une discipline échouera probablement.

2
Tarscher

Je pensais que Windows 3.1 n'était qu'une plate-forme pour jouer au solitaire. Et DOS est une plate-forme pour BASICA.

2
henry

La gestion des erreurs est inutile lorsque vous avez testé votre code de manière approfondie.

2
too much php

Ces variables ne sont en réalité que des noms pour des zones spécifiques de la mémoire.

2
Gumbo

Que je parle de programmation. En étudiant le livre du SICP, j'ai constaté que je ne savais rien. Au moins maintenant, je me lance davantage dans la programmation.

2
Nick Dandoulakis

That Java transmet des copies d’objets à des fonctions et non à des références.

En d'autres termes, je pensais que si vous transmettez un objet à une méthode, puis modifiez l'objet d'une manière ou d'une autre, l'objet ne sera pas modifié dans la portée de l'appel. J'ai toujours passé des objets dans des méthodes, les ai manipulés, puis les ai retournés!

2
DisgruntledGoat

Que vous puissiez memset (this, 0, sizeof (TheObject)) un objet C++ dans son constructeur sans conséquences négatives

2
bobobobo

Pas le plus longtemps, mais à un moment donné et pendant plusieurs années, j'ai:

  • Pensé que Microsoft Windows était le seul système d'exploitation au monde (c'était en 1992)
  • Connaître le DOS était plus que suffisant pour avoir une connaissance "avancée" du système d’exploitation.

C'est pourquoi je n'ai pas choisi "cours d'informatique" au lycée. Je pensais que j'en savais déjà assez sur les ordinateurs.

Plus tard à l'université et par erreur:

  • Je pensais que les logiciels et systèmes UNIX étaient parfaits et que DOS/Windows ne s'en approcherait jamais (à l'époque, cela semblait si vrai, je suppose que Linus pensait la même chose et c'est pourquoi Linux est tellement similaire à UNIX et non. bien d'autres OS)

Enfin et pendant longtemps, j'ai pensé que:

  • Seul mon logiciel est nul et le logiciel commercial est sans faille, parce que ... c'était un logiciel "COMERCIAL"
  • Les logiciels/ingénieurs/produits des États-Unis étaient synonymes d’excellence et tout ce qui se trouvait à l’extérieur n’était que de piètres tentatives.
2
OscarRyz

Plus le logiciel sera performant, plus il y aura de lignes de code.

2
Nowhere

la supposition que si j'écris du code vraiment bien et aussi sans bug que possible, et c'est la meilleure chose que je puisse faire. il se trouve que parfois les cadres préfèrent les personnes qui essaient de devenir leurs préférés au lieu de faire du beau travail.

2

Je n'avais jamais pensé être un programmeur professionnel, je pensais travailler avec de l'électronique. Mais au final, la programmation est tellement plus facile et paye tellement mieux que ce qui était au départ un travail secondaire est devenu ma principale préoccupation.

2
Otávio Décio

Ma plus grande idée préconçue était que je serais autorisé à programmer comme je le voulais. Ensuite, bien sûr, j'ai quitté l'université et j'ai été embauché par une entreprise dotée de cadres, règles et procédures ridicules qui non seulement signifiait que je ne programmais pas comme je le voulais, mais que je programmais mal .

2
Barry Gallagher

C’est embarrassant, mais je pensais depuis longtemps qu’il était plus efficace en mémoire d’implémenter mes appels de méthode ou d’appeler plusieurs méthodes, que de créer une variable pour stocker la valeur de chaque appel de méthode en C #.

2
Alexander Kahoun

que les solutions temporaires ne sont pas des solutions permanentes
ou en d'autres termes: les solutions de contournement ne sont pas pour toujours :)).

2
user171910

En quelque sorte, une entreprise qui exploite un grand nombre de sites Web à profil assez élevé/à fort trafic savait en réalité ce qu’elle faisait. En fin de compte, ils étaient pour la plupart désemparés et extrêmement chanceux d'être dans la position dans laquelle ils se trouvaient. Je suppose donc que la morale serait,

ingénierie logicielle solide & meilleures pratiques! = succès commercial

ou....

systèmes logiciels les plus critiques == merde

2
Tom Willis
  • Je pensais que je coderais pendant 8 heures d'affilée. De manière réaliste, je reçois 4 heures par jour de codage, 1 heure pour le déjeuner, 1 heure pour les pauses-café et 2 heures pour les conversations interracales/discussions en groupe/la superposition superflue.

  • Avant de travailler, je pensais que tous les clients seraient des idiots et ne savaient pas deux craps à propos des ordinateurs. Boy j'avais tort sur celui-là. Parfois, nous recevons des projets de personnes qui peuvent le faire mieux que nous le pouvons, mais elles n’ont tout simplement pas le temps de le faire.

  • Je pensais que les cubicules étaient mauvaises. En ce moment, je les aime: D En fait, je suis passée d'un bureau à porte à un box. J'aime l'ouverture.

  • Tous les programmeurs ne sont pas sportifs. Je pensais que j'étais le seul à aller à la gym. Là où je travaille, au moins 10 d’entre nous vont au gymnase tous les jours à 5 heures du matin.

  • Je pensais qu'il n'y aurait pas de programmeuses. Deux de nos chefs sont des dames.

2
dassouki

Je pouvais convaincre les programmeurs procéduraux traditionnels pourquoi OOP oft-times constitue une meilleure solution.

C'est-à-dire qu'un langage qui décrit le monde a besoin de la capacité de décrire des objets complexes et leurs relations.

Les arguments incluaient généralement des idées absurdes sur les classes abstraites, auxquelles j'ai répondu par "pas tous OOP les programmeurs sont tout frais sortis de Uni et sont toujours obsédés par les abstraits". OOP que je ne pouvais pas faire avec une programmation strictement procédurale ", à laquelle je répondais habituellement par:" Ce n'est pas que vous pouviez, c'est si vous serait si vous aviez un jeu d’outils plus complet ".

J'ai appris à accepter simplement qu'ils ne voient pas le monde à travers le même objectif que moi.

2
Evan Plaice

Cette performance d'exécution comptait. Le temps de solution total est ce qui compte souvent.

Depuis que j'ai appris le python, je me suis sevré de mon attachement au typage statique.

1
Andrej Panjkov

Les ingénieurs en logiciel sont toujours honnêtes sur ce qu’ils font ou ont déjà fait avec vos logiciels.

1
u07ch

Que nos méthodes de développement aient été choisies et utilisées parce qu'elles étaient les meilleures de leur espèce.

Ensuite, j'ai compris que les outils que nous utilisions avaient un impact beaucoup plus important sur ce que nous faisions, quand nous le faisions et sur la façon dont nous le faisions que je ne le pensais.

1
Karen Lopez

Cette compréhension des indicateurs et la récursivité seraient terriblement difficiles.

Les entiers dans VB6 ont une taille différente de celle de .Net.

Ce VB6 pourrait effectuer des opérations au niveau du bit.

Les programmeurs professionnels créent des logiciels sans bug.

1
Broken_Window

C’est parce que j’ai construit le logiciel sur mon environnement "Standard" que cela fonctionnerait sur la machine/le serveur de tout le monde. Seulement pour découvrir que j'avais installé des bibliothèques et des services obscurs qui étaient réellement utilisés. Et puis découvrir que j'ai exploité un bogue, qui a ensuite été corrigé.

1
Bluephlame

Les spécifications sont complètes et suffisantes

1
SeanX

Ce profilage et cette analyse de performance étaient la même chose.

Ensuite, j'ai découvert que les profileurs, bien que mieux que rien, contiennent des hypothèses erronées, telles que:

  • seuls les agrégats importent, pas les détails
  • la précision statistique est nécessaire pour localiser les problèmes de performance
  • mesurer le temps et localiser des opérations fastidieuses sont la même chose
1
Mike Dunlavey

Une colonne d'identité ne peut pas contenir de valeurs en double: colonne d'identité dans le serveur SQL

1
Justin Ethier

Au début des années 80, lorsque j'ai commencé à jouer avec les ordinateurs (ZX81 avec 1K de mémoire), je passais des heures à saisir des quantités de code machine (octets, langage non lisible par l'assemblage) pour les jeux de magazines, essentiellement à l'aide d'instructions BASIC Poke.

Je croyais que si jamais j'avais saisi une seule instruction de manière incorrecte, je devais revenir au début et recommencer à saisir le code machine depuis le début.

1
Damian

Je savais que je devais écrire une application Web appropriée et tout était clair lorsque je devais concevoir des éléments qui fonctionnent dans tous les navigateurs, ce qui m’était foutu.

1
Pranali Desai

Je ne savais pas que quelque chose divisé par 0 en Javascript était Infinity (arithmétique IEEE 754). Appris à la dure récemment.

1
Chetan Sastry

Que les gens se souciaient vraiment des technologies utilisées (open source/source fermée).

1
Ritesh M Nayak

Les discussions sous Windows ne coûtent pas cher.

Il s'avère que ce n'est qu'un peu vrai. Un thread a un certain surcoût et nécessite son propre espace d'adressage où il peut vivre et être heureux. Donc, si je me trouve confronté à des dizaines de threads au sein d’une même application, je me demande comment je peux tout simplifier et tout consolider en moins de threads.

1
Steve Wortham

Ce support complet Unicode était une condition préalable au déploiement réussi des logiciels dans les régions asiatiques.

1
user34411

Vous ne pouvez pas diagnostiquer les "erreurs intermittentes" dans la production. Le redémarrage du serveur est le seul moyen de le réparer.

Peut-être était-ce PLUS vrai à mes débuts avec le codage ASP). Mais il existe de nombreux bons outils de profilage permettant de détecter les fuites de mémoire et autres problèmes étranges. Perfmon fournit également de nombreuses données de diagnostic de qualité. Plus vous devriez coder en vous connectant à votre application.

1
russau

Ce 640K devrait être suffisant pour n'importe qui (DOS). Beaucoup de gens le croyaient depuis un certain nombre d'années.

La première fois que j’avais un système avec 8 Mo de RAM, je pensais que c’était bien plus que ce dont j’avais besoin. Cela a fonctionné le système d'exploitation (Mac) plus toutes les applications que j'utilisais (Word, Email, Firefox, etc.).

1
Brent Baisley

C'est un identifiant d'élément html et un attribut name interchangable.

Il s'avère que les éléments avec les attributs 'name' sont liés/utilisés. Référencés pour les POST, etc. et les attributs 'id' sont utilisés pour les références DOM.

1
Mark Redman

Que tout ce que j'ai écrit échouerait à un moment donné dans un avenir prévisible.

Non pas que tout finisse par s'effondrer, mais au début de ma formation en programmation, lorsque j'ai découvert que j'essayais. problèmes que mes programmes ne traiteraient (par exemple, les pôles nord et sud ont changé de place)

1
Pete H.

Je pensais que ce serait une montagne russe de voitures rapides, de femmes lâches, de jets privés et d'audacieuses aventures. Attendez que je mette la main sur ce conseiller en carrière ...

1
PaulJWilliams

Si j'ai un système de type statique puissant comme celui de ML ou Haskell, je devrais l'utiliser pour encoder autant d'invariants que possible. C'est seulement avec l'expérience que j'ai compris qu'il est parfois préférable de laisser les invariants dynamiques.

1
Norman Ramsey

Apprendre une nouvelle langue serait vraiment difficile.

1
too much php

That OOP était obsolète :( Je regrette toujours de penser que jusqu’à ce jour même.

1
Leo Jweda

thread = processus

1
Radi

Je pensais qu'écrire un logiciel assez bon était une tâche facile

1
Upul Bandara

Quand j’apprenais les algorithmes dans mon collège, je pensais que NPC était simplement un problème non polynomial, ce qui signifiait que la complexité de ce problème n’était pas plus simple que le polynôme. avait tort jusqu'à ce que j'apprenne la théorie computationnelle dans mon collège -_- b

0
ZelluX

Que les vendeurs gèrent les attentes des clients de manière réaliste. (Formé à la sous-prometteuse et excédentaire)

Les besoins en logiciels proviennent généralement d’études de marché.

0
Maltrap

Cette dimension n est une instance de dimension (n + 1) quand elles sont équivalentes.

0
Larsson

cette:

for (int i = 0; i < myObj.variable; i = i + 1)

obtient optimisé pour:

int j = myObj.variable; 
for (int i = 0; i < j; i = i + 1)

wow, j'ai arrêté de mettre des appels de fonction à la place de j quand j'ai réalisé qu'ils étaient exécutés CHAQUE FOIS!

Raison:

for (int i = 0; i < myObj.variable; i = i + 1){ 
    if (function_argument == NULL){ 
        myObj.variable++; 
    } else { 
        printf("%d", myObj.variable);
    }
}

n'est pas la même chose que:

int j = myObj.variable;
for (int i = 0; i < j; i = i + 1){ 
    if (function_argument == NULL){ 
        myObj.variable++; 
    } else { 
        printf("%d", myObj.variable);
    }
}

exemple arbitraire, mais vous pouvez voir comment l'optimisation changerait l'exécution.

0
chacham15

Bien sûr, vous pouvez regarder FindBugs et PMD mais ce sont mes pièges et astuces préférés (tout en Java):

Les champs ne sont pas remplacés, ils sont ombrés.

Il n'y a pas d'accès super super explicite.

Les classes pour lesquelles aucun constructeur n'a été défini ont un constructeur implicite à zéro argument. J'ai commis une erreur pratique liée à celle-ci cette année.

Pour obtenir une référence au parent d'une classe interne, vous pouvez utiliser la syntaxe "Outer.this" pour lever la ambiguïté des appels de méthode ou pour les synchroniser.

Les classes sont des "amis d'eux-mêmes" en termes C++. Les méthodes privées et les champs de toute instance de cette classe peuvent être référencés à partir de n'importe quelle méthode de la même classe, même statique. Cela aurait simplifié beaucoup les premiers constructeurs de clone () et de copie.

Les méthodes et les champs protégés sont accessibles dans un contexte statique de classes d'extension, mais uniquement si cette classe est dans le même package. Je suis heureux que flex.messaging.io.amf ne soit pas un paquet scellé.

0
Karl the Pagan

Il a dit qu'il connaissait la programmation, ça doit être vrai!

0
Alfre2

Un programme peut éventuellement résoudre tous ses problèmes.

0
HalliHax

Penser que je suis la seule personne à créer un morceau de code ... alors quand j'ai besoin de cette routine, je ne me souviens plus de ce que j'ai fait et je ne fais que copier/coller mon propre code.

Maintenant, je sais que tout le monde le fait.

0
Broken_Window