Meilleure réponse
Q: Pourquoi les programmeurs mélangent-ils toujours Halloween et Noël?
R: Parce que le 31 octobre == le 25 décembre!
Deux octets se rencontrent. Le premier octet demande: «Êtes-vous malade?». Le deuxième octet répond: « Non, je me sens juste un peu mal. »
Q: combien de programmeurs faut-il pour changer une ampoule?
A: aucun, cest « sa problème matériel
Q: combien de programmeurs Microsoft faut-il pour changer une ampoule?
R: aucun, ils font juste de lobscurité une norme et disent à tout le monde « ce comportement est intentionnel «
Un étudiant en informatique étudie sous un arbre et un autre sarrête sur un nouveau vélo tape-à-lœil. Le premier élève demande: » Où avez-vous trouvé ça? « . Lélève à vélo répond: » Pendant que jétudiais à lextérieur, une belle fille sest arrêtée sur son vélo. Elle a enlevé tous ses vêtements et a dit: « Tu peux avoir tout ce que tu veux ». » La première élève répond: « Bon choix! Ses vêtements ne vous auraient probablement pas été adaptés. »
Un physicien, un ingénieur et un programmeur se trouvaient dans une voiture roulant sur un col alpin escarpé lorsque les freins sont tombés en panne. La voiture devenait de plus en plus rapide, ils avaient du mal à contourner les virages et une ou deux fois, seule la faible barrière de sécurité les empêchait de sécraser sur le flanc de la montagne. Ils étaient sûrs quils allaient tous mourir, quand soudain ils ont repéré une voie dévacuation. Ils se sont arrêtés dans la voie dévacuation et se sont arrêtés en toute sécurité. Le physicien a déclaré: « Nous devons modéliser le frottement dans les plaquettes de frein et laugmentation de température qui en résulte, voir si nous pouvons comprendre pourquoi ils ont échoué. » Lingénieur a dit: « Je pense que » jai quelques clés à larrière. Je « vais jeter un oeil et voir si je peux trouver ce qui » ne va pas « . Le programmeur a dit « Pourquoi ne pas recommencer et voir si cest reproductible? »
Q: « Quelle est la manière orientée objet de devenir riche? »
A : Héritage
Un programmeur à ses amis (également programmeurs): « Jai rencontré une fille sexy hier soir. Je lai ramenée à la maison et nous avons commencé à nous embrasser furieusement. Je lai assise sur le clavier et … ». Tous les amis à lunisson ont dit « Vous » avez un ordinateur à la maison? Quelle est la RAM de celui-ci? «
Une requête SQL va dans une barre, marche jusquà deux tables et demande, » Puis-je vous rejoindre? «
Quand votre marteau est C ++, tout commence à ressembler à un pouce.
Q: Combien de programmeurs prologues faut-il pour changer une ampoule?
A: Oui.
A le programmeur met deux verres sur sa table de chevet avant de sendormir. Un plein, au cas où il aurait soif, et un vide, au cas où il ne le ferait pas.
Un gars se tient au coin de la rue en train de fumer une cigarette après lautre. Une dame passe devant des avis lui et dit « Hé, tu ne sais pas que ces choses peuvent te tuer? Je veux dire, tu nas pas vu lavertissement géant sur la boîte?! » « Cest OK » dit le gars, soufflant avec désinvolture « Je » un programmeur informatique « . » Alors? Quest-ce que cela a à voir avec quoi que ce soit? demanda la dame. Il a répondu «Nous ne nous soucions pas des avertissements. Nous ne nous soucions que des erreurs. «
Il existe 10 types de personnes dans le monde. Ceux qui comprennent le binaire et ceux qui ont des relations sexuelles régulières.
Donc, ce programmeur sort avec un rendez-vous avec un poussin chaud
Réponse
Ils sont très mauvais.
Ils sont les genre de gens qui vont modifier un système finement réglé avec une solution «évidente», et tout bousiller horriblement, avec les meilleures intentions absolues.
Pour vous donner une idée, un autre excellent ingénieur que je connais , Jeffrey Hsu, travaillait chez ClickArray (maintenant connu sous le nom de Array Networks), et ma fait embaucher là-dedans parce quil avait besoin dun autre type de «big gun» pour faire un travail vraiment critique de performance.
Et nous avons obtenu cest fait.
Sur les systèmes Pentium 4 1,3 GHz (cétait en 2001).
Nous avons un cache de proxy inverse jusquà quelque chose de plus de 38 700 connexions TCP par seconde – ce qui nest pas impressionnant , jusquà ce que vous vous rendiez compte quil ny a que 16 384 ports utilisables pour INADDR\_ANY, sauf si vous modifiez substantiellement fy la pile TCP / IP, sil sagit dun système basé sur BSD ou Linux.
Nous navions pas modifié la pile – cétait une pile BSD – donc cela signifiait que nous répondions également aux demandes de chargement de page initiales. dans le même laps de temps.
Et puis nous étions au problème suivant
Environ un demi-mois après le prochain problème, apparemment quelquun avait finalement pris le temps de faire des tests de performances sur les changements quils avaient apportés au reste du code dans le cache.
Nous avons pu constater une panique croissante dans le bureau pour un quelques jours, et a demandé à plusieurs reprises quel était le problème, et on ma dit de ne pas sen inquiéter et de continuer à travailler sur ce sur quoi nous travaillions.
Nous lavons fait, car nous étions en train de réparer la machine à états finis être une véritable machine à états finis et restructurer le code de cache à ce moment-là. En fait, c’est l’une des choses qui ont permis à l’entreprise de bénéficier de son prochain cycle de financement.
Enfin, leurs clients nous ont appelés pour voir si nous pouvions résoudre leur problème.
Ils obtenaient environ 6 300 connexions par seconde.
Ils avaient perdu environ un facteur de 6X en performances, et ils ne savaient pas où.
Cela nous a pris quelques heures, et nous lavons finalement retracé jusquà un commit «faire une optimisation pour plusieurs machines à processeur».
Nous lavons annulé, et nous sommes revenus à environ 35 000 connexions par seconde, réaccordé un quelques chemins de code à chaud, et à la fin de la journée, nous étions revenus aux anciens chiffres.
Pour comprendre l « optimisation » que le » programmeur « hot shot » pensait-il faire, vous devez comprendre que le threading nétait pas vraiment une chose à lépoque.
Même si cétait le cas, nous travaillions toujours à travers la machine détat , ce qui devait être fait avant que létat global puisse éventuellement être déplacé dans un seul objet «statite» pour le créer par thread, et empêcher les instances dinterférer les unes avec les autres.
Le modèle de mise à léchelle était donc avoir plusieurs moteurs de «travail à faire» comme p des processus, puis un processus de «garde-porte» qui permettrait à un processus de fonctionner sur une demande au fur et à mesure de son arrivée. Il voyait toutes les demandes, puis «lâchait le processus»; sil y avait plus de requêtes, la kqueue dans le gatekeeper « laisserait un autre processus aller », et ainsi de suite.
Notre « hot shot » avait remarqué quun processus effectuait presque toute la demande, tandis que le dautres processus étaient (pour la plupart) inactifs.
Cest parce que javais utilisé intentionnellement un LIFO au lieu dun FIFO pour les processus en attente de «travail à faire».
Il a donc «corrigé ”En le changeant en FIFO.
Et la performance est allée au diable.
La raison pour laquelle javais utilisé un LIFO dans le premier endroit, même si je savais que cela ne répartirait pas nécessairement la charge entre les cœurs, était parce que je savais certaines choses que le « hot shot » ne savait pas.
Je savais que:
- En tant quappliance réseau, nous allions presque toujours être des E / S, plutôt que du processeur, liés à moins que nous ne chargions un module pour faire quelque chose comme la suppression despaces ou la réécriture de contenu à des fins publicitaires
- Plus précisément, je savais que le dernier processus pour se mettre en ligne allait g davoir toutes ses pages dans le noyau, alors que celle qui était restée inactive le plus longtemps naurait probablement pas toutes ses pages dans le noyau
- De plus, jai appris quil y aurait des collisions de cache TLB, car tous les processus de lespace utilisateur ont été mappés sur la même plage dadresses, ce qui a entraîné des vidages
- Ce qui signifiait quil faudrait recharger le cache, ce qui signifiait au minimum aller au moins vers le cache L1, et probablement L2
- Combiné, cela entraînerait des blocages supplémentaires du pipeline dinstructions, car il ny avait pas de cache L3 sur larchitecture P4
- Et jai donc intentionnellement échangé ce que je savais être probablement des cycles de processeur inactifs sur les cœurs pour ce que je savais avoir les meilleures performances liées aux E / S
Jai donc choisi intentionnellement une commande LIFO et vérifié une amélioration des performances, en utilisant une technique que javais utilisée pour la première fois en 1994 ou ce quon appelle (par moi, puisque javais inventé la technique) «planification du moteur à chaud».
Donc, ce «coup chaud» avait détruit le pe rformance en raison du changement.
Et puis, après la prétendue «optimisation», na pas réussi à exécuter un test de performance pour vérifier quil sagissait en fait dune optimisation.
La seule chose quil d vérifié était que, sous charge, les processus marquaient tous à peu près le même total dutilisation du processeur, au fil du temps, ce qui, selon lui, voulait dire quil allait obtenir une meilleure utilisation multicœur.
Les pires ingénieurs en logiciel sont ceux qui sont assez bons pour être dangereux, mais pas assez bons pour reconnaître lorsquils prennent une mauvaise décision.
Ils sont encore aggravés en ne vérifiant pas après le fait que la décision était en fait une mauvaise décision en mesurant les résultats de leurs changements à laide dune règle impartiale.