Commentaires
- Je pense que cela dépend en grande partie de la personne qui apprend le sujet et de la personne qui l’enseigne
Réponse
« Il y a 2 problèmes difficiles en informatique: la mise en cache, la dénomination et les erreurs » off-by-1 «
Commentaires
- I
d ajouter un fil de discussion …
Réponse
Honnêtement, construction du compilateur!
Commentaires
- +1 Compilateurs a été le plus difficile et le plus gratifiant.
- Cétait là-haut avec le plus dans tout le travail, et une bonne préparation pour le codage grognon, mais je ne pense ' pas que cétait si difficile. Peut-être plus difficile sans lutilisation de YACC ou de tout autre outil que nous avons utilisé, je ne sais pas.
- Les compilateurs ne sont vraiment difficiles que parce que la plupart de la théorie remonte à des temps de contraintes matérielles incroyablement sévères et quune grande partie de linstruction formelle na ' t avancé trop loin au-delà. Jetez un œil à Laissez ' s Construire un compilateur pour voir à quel point lécriture dun compilateur peut être facile si vous labordez sous un angle différent.
- @Martin York, en tant que rédacteur de compilateurs, je pense que la complexité de limplémentation des compilateurs est sévèrement surestimée. En général, un compilateur est beaucoup plus simple quun interpréteur. Je soupçonne que ' est un Dragon Book et son genre sont à blâmer, ils ' proposent les moyens les plus compliqués de faire des choses simples et de payer trop dattention à létape la moins importante, à savoir lanalyse.
- @Martin York, il existe des techniques pour garder un AST aussi simple et maintenable que possible, quelle que soit la complexité du langage source. Il existe également un certain nombre de techniques très simples mais puissantes pour garder chaque étape de compilation triviale et isolée.
Réponse
Conception & Analyse des algorithmes
Je pense que cette question dépend de lenseignant que vous aviez et de la façon dont ce sujet était organisé votre carrière.
Lanalyse des algorithmes peut être aussi difficile que quelquun le souhaite. Tenez compte du fait quil existe des problèmes non résolus, et pas seulement: des problèmes qui ne peuvent pas être résolus.
Le fait est que vous pouvez avoir un problème, et si vous savez quil ne peut pas être résolu, cest parfait. Mais que faire si vous ne le faites pas? Vous pouvez passer beaucoup de temps à essayer de démontrer quil est NP-Complet, ou à essayer de trouver une solution de temps polynomiale pour le résoudre.
Démontrer NP-Completness nest pas facile. Oui, beaucoup de problèmes sont connu, mais la chose est de trouver les réductions pour démontrer quil est NP-Complet. Et si vous passez beaucoup dheures / jours / mois à essayer de le démontrer, et que cela peut être résolu en temps polynomial? 🙂
Il y a aussi dautres sujets, comme Compilateurs , Théorie des groupes et Fonctions récursives primitives qui peuvent être comme dur comme le plan du sujet ou le professeur veut;)
Commentaires
- s / Analisis / Analysis … sinon exactement ce que je pense … fonctions récursives primitives, uargh !!
- Daccord, je me suis embrouillé tout au long de mon baccalauréat sans jamais être sûr de réussir ' prouvé ' nimporte quoi (même si ma classe dalgorithmes était bien trop simple, grâce au professeur)
- Je vais vous montrer ces jours-ci, à quel point les algorithmes peuvent être durs 🙂
Réponse
Reconnaissance de formes ie Intelligence artificielle. Cela fait référence à linformatique intelligente ainsi quà dautres outils de reconnaissance de formes tels que la reconnaissance optique de caractères, la voix au texte, lidentification faciale, etc.
Beaucoup de choses «cool» que vous pouvez faire ou souhaiter pouvoir faire avec les ordinateurs sappuient sur ces algorithmes, et nous avons tenté de les perfectionner pendant des décennies sans grand succès.
Commentaires
- Cest ' difficile parce que ' nest pas quelque chose qui ' est déterministe. Développer une bonne reconnaissance de formes dIA nécessite de lexpérimentation pour chaque application pour laquelle vous souhaitez lutiliser, pour vous assurer de choisir le bon algorithme, les bonnes fonctionnalités, etc.
- Je commence tout juste à gravir cette montagne en particulier (la reconnaissance de formes). Cest difficile. '. BEAUCOUP de maths. Des tas de maths formidables, énormes et intimidants, me regardant en arrière, me défiant dentrer.
- eh bien … la reconnaissance de motif peut aussi être considérée comme une statistique appliquée, elle ' nest pas seulement un problème dans la plage de CS
Answer
Mon choix est théorie de la calculabilité
(Hmm … peut-être que ce nest pas si important, mais cétait vraiment difficile)
Commentaires
- Je suis daccord, et je le généraliserais personnellement comme en.wikipedia.org/wiki/Theory_of_computation .
- Je ' Je suis daccord pour dire que la théorie du calcul était difficile, mais cétait aussi lune de mes matières préférées. Certes, je faisais une double spécialisation en mathématiques. ..
- +1 Jai fait une double spécialisation aussi. Je pourrais gérer une introduction à ce truc, mais la version diplômée … content de lavoir abandonnée!
- cétait difficile, nous nen savons pas tant que cela na ' t dimportance beaucoup.
Réponse
Il ny a que deux durs problèmes en informatique: invalidation du cache et nommer les choses. – Phil Karlton
Réponse
théorie des catégories (mathématiques discrètes), mais ça vaut le coup
Commentaires
- Quels avantages spécifiques avez-vous tirés de la catégorie dapprentissage théorie?
- @zvrba: une meilleure compréhension des techniques dabstraction et de la cartographie des problèmes
- Doù lavez-vous appris?
- @zvrba: I don ' t voir le livre sur ma bibliothèque, il ' est probablement encore en stock (remodelage) mais je pense que cétait ce livre amazon.com/Category-Computer-Scientists-Foundations-Computing/…
Réponse
Cryptographie
Si vous le faites un peu mal, cela pourrait coûter des millions à une entreprise.
Commentaires
- Bien que de plus en plus populaire, Cryp nest pas ' t unique au logiciel.
- Crypto nest ' que difficile. Le problème est que la sécurité ne peut ' être testée facilement, donc vous ne remarquez vos erreurs que lorsque quelquun vous pirate. Mais le manque de testabilité sapplique à la plupart des formes de sécurité informatique, pas seulement à la cryptographie.
Réponse
Systèmes dexploitation, en particulier la partie qui a quelque chose à voir avec le threading.
Et la raison nest pas parce quil était si difficile de faire manger de la pizza à 5 philosophes avec une fourchette. La raison est que lécriture de code multithread est dans et de lui-même difficile et pas forcément facile à calculer pour lesprit humain (du moins masculin – selon ma femme).
Commentaires
- Laissez votre femme écrire le code multithread alors 🙂
- Rappelez-vous, quand il sagit de multithreading à mémoire partagée, lordinateur est un porc sournois qui est là pour vous. Doublement quand il sagit dun processeur multicœur; un cœur peut être vous distraire devant vos yeux là où vous ' regarder, et l’autre peut alors passer derrière vous et vous poignarder dans le dos.
Réponse
Moi aussi je vote pour Conception du compilateur. Surtout où la partie DFA et NFA entre en jeu. Je ne suis pas non plus aussi clair sur les problèmes de NP et autres.
Commentaires
- Ouais, je ' Jai eu plus de difficultés avec les compilateurs si je navais ' pas suivi la théorie du calcul en premier.
- DFA et NFA sont des aliments pour poulets. Attendez de devoir effectuer lanalyse LALR (1).
Réponse
Théorie de la file dattente
Eh bien, techniquement, cest une branche des mathématiques, mais elle est très pertinente dans CS.
Presque tout dans CS est basé sur des files dattente (visibles (évidentes) et invisibles (pas si évidentes ou implicites)).
Dans les premiers jours de CS, les files dattente étaient évidentes.
Une file dattente de programmes (chaque programme un jeu de cartes).
De nos jours, les files dattente ne sont pas si évidentes. Internet par exemple: un réseau à commutation de paquets, mais les paquets forment des files dattente et le routage des paquets est une forme de minimisation de file dattente.
Commentaires
- Hey ! (?Êtes-vous un (programmeur Lisp)
- Pas (Autant que (On pourrait (voir), Mais (Cela a (été connu)). Pour arriver)).
Réponse
Analyse numérique
Ce nest pas trop difficile pour les problèmes de jouets que vous « êtes donnés dans le cours, mais une fois que vous commencez à envisager de vrais problèmes, cela se transforme en une lourde corvée.
Réponse
Interpréter les exigences du client lorsque le client ne sait pas vraiment ce quil veut. Ce nest pas enseigné à luniversité et cest lune des compétences les plus essentielles à avoir.
Commentaires
- Je ' ne suis pas sûr dêtre daccord avec celui-ci comme étant un concept informatique. Je suis aussi ne ' t voir comment il peut être résolu en utilisant la méthode scientifique.
- @ jmort253 – Cest vrai, mais linformatique essaie (sans succès à mon avis) de étudier ce domaine avec des méthodes formelles de desig n et validation.
- Je suis daccord nest pas un concept " informatique " – mais quand jai commencé ma carrière Je nétais pas au courant / inconscient du fait que les clients ' ne savent pas ce quils veulent. Je pensais que TOUS les projets logiciels étaient accompagnés dune sorte de document dexigences formelles. Peut-être un sujet de conférence pour un cours de génie logiciel (peut-être que mon collège ne la ' pas couvert)?
Réponse
Personnellement, le mien était la logique formelle. Cétait difficile au départ, mais une fois que vous avez mis les règles en place et que vous parvenez à jouer avec suffisamment, votre cerveau devient Logic++;
, ce qui en développement est une très bonne chose.
En guise de remarque, je réponds directement à la question – ce nétait certainement pas le sujet le plus difficile lorsque jai obtenu mon diplôme, mais cétait probablement le sujet le plus difficile « applicable dans la vie réelle ».
Commentaires
- La logique formelle est quelque chose avec lequel jai eu une relation damour / haine. Jaimais réfléchir à travers les concepts, mais je nai jamais pu comprendre comment cela maidait jusquà plus tard, lorsque jai rencontré des problèmes du monde réel qui nécessitaient une réflexion logique.
- @ jmort253 – Cétait la même chose pour moi vraiment. Jai même eu du mal au point de penser que javais ' échouer, étudié si longtemps et si durement jusquà ce que finalement clique dans ma tête. Après cela, les avantages ont été incroyables.
Réponse
Constructions du compilateur. Difficile mais doit comprendre les concepts sous-jacents
Commentaires
- Vous devriez voter pour la même réponse que celle fournie avant vous, plutôt que donner à nouveau la même réponse.
Réponse
Kernel Concevoir quelquun? Eh bien, je ne sais pas vraiment comment cela est fait et quelles sont les fonctionnalités ciblées pour un système dexploitation, mais pour moi, penser à la conception dun noyau doit être une tâche ardue.
Je pense aussi à sécurité informatique ; Je ne sais pas vraiment ce qui rend un système dangereux, sauf bien sûr, des dépassements de tampon évidents, des injections XSS et SQL.
Je ne suis pas sûr, mais il semble que certains algorithmes soient également dangereux; regardez le projet MetaSploit, il répertorie tous les types et types de failles de sécurité: vous pouvez voir quil existe de nombreuses façons dont un programme peut être défectueux.
Réponse
Il y a beaucoup de sujets difficiles dans le domaine, mais mes choix pour la difficulté persistante pure sont ceux qui impliquent Propriétés système globales . Voici quelques exemples de ce sujet général:
- Multi-threading sûr et sans blocage
- Sécurité
Cest difficile parce que vous » vous recherchez quelque chose qui nexiste que lorsque tout est correct; vous avez besoin dune propriété système globale et pourtant pratiquement tous les outils disponibles (et tous ceux qui sadaptent à de vrais problèmes selon mon expérience) ne font vraiment que le raisonnement local . Cest le processus qui consiste à passer du raisonnement sur les morceaux du programme à lensemble du shebang qui est difficile, en particulier parce quil est tout à fait possible davoir des morceaux qui sont tous corrects en eux-mêmes mais où il y a encore des bugs subtils parce que le les composants sont mal disposés; les bogues peuvent être des caractéristiques émergentes indésirables…
Réponse
Management Information Services Pendant mes études universitaires, javais lhabitude davoir un sujet de gestion chaque semestre, ce qui me rendait complètement fou.
Dur! bien des sujets comme Conception du compilateur , Conception du système dexploitation etc. sont difficiles mais ils sont vraiment intéressants et stimulants.Jai vraiment dérangé des sujets comme le système dinformation de gestion / les services, etc. car ils sont pleins dennui et il faut passer par beaucoup de théorie.
Commentaires
- Plein dennui parce quils ' parlent des subtilités conceptuelles de chaque système, tandis que la moitié des gens nont jamais écrit de système eux-mêmes (mais ils ont sûrement utilisé une variété de). De plus, les séminaires utilisent tellement de mots chargés mais ne parviennent pas à fournir un exemple concret en anglais simple. Comme les systèmes daide à la décision … ' t il vous suffit de déposer quelques captures décran de rapports Google Analytics, FML, juste pour mettre les étudiants sur la même page avant de vous lancer avec un intellectuel orgasme devant le public.
Réponse
Si vous travaillez en C / C ++, les pointeurs sont les plus concept important à connaître. Mais dune manière ou dune autre, je ne lai jamais pleinement compris à luniversité.
Commentaires
- vraiment? Je veux dire, chaque personne est différente, mais je pense quil y a beaucoup (je veux dire, beaucoup ) de sujets plus difficiles que de simples pointeurs . Par exemple, l Architecture de l ' de l ordinateur , Assambler qui, dune certaine manière, sont liés aux pointeurs ; )
- Vrai, mais vous ' comprendrez le référencement de la mémoire via des assembleurs beaucoup plus facile, car vous travaillez en fait avec des pointeurs bruts , tout en en C / C ++, vous travaillez avec des références à des pointeurs, ce qui ne fait quembrouiller les gens parce que labstraction nest jamais franchement évoquée.
- Ah assambler, le meilleur programmeur ' s tea
- Le gars a demandé les sujets qui sont difficiles mais importants, doù des pointeurs.
- @Matt: Vous venez de faire ma journée: D @Manoj R: Les pointeurs sont triviaux si vous les considérez simplement comme un accès au tableau. Ou laccès aux tableaux est-il difficile?
Réponse
Conception et analyse dalgorithmes. Ce n’est pas tant qu’il est difficile de comprendre et d’analyser les algorithmes connus , c’est que la conception et l’analyse de nouveaux algorithmes pour des problèmes difficiles est difficile et nécessite une compréhension approfondie de nombreux domaines et de la pratique dans lapplication de nombreuses techniques différentes.
Réponse
Programmation par contraintes. qui traite des problèmes combinatoires, des problèmes NP-complets.
Réponse
Optimisation de Lalgorithme est un sujet difficile.
Réponse
Quel est le sujet / théorie CS le plus difficile que vous ayez étudié mais important pour le domaine?
Mathématiques discrètes.
Cétait difficile parce que les théories sont très vaguement liées les unes aux autres, mais elles « sont utilisées dans CS. Trop de mémorisation jimagine …
Preuve par Induction, Big O, récursion, diviser et conquérir, Théorie des graphes, bla bla .. argh!
Compiler pour moi était facile, parce que nous devions prendre la théorie des automates. ^^
Réponse
Notation Z / méthodes formelles utilisées pour me blesser le cerveau à luniversité. Principalement parce que je détestais ça. Difficile est beaucoup plus facile lorsque vous aimez ce que vous faites et beaucoup plus difficile lorsque vous ne le faites pas.
Réponse
Jaime vos réponses (et je nai pas oublié de les voter), comme le compilateur, le noyau, etc., mais la plupart des programmeurs nont jamais rencontré ces problèmes. Il y a un problème un peu plus simple, mais plus courant: concurrence – threads, verrouillage. Cest très facile décrire un programme qui produit des erreurs magiques, si nous faisons ne serait-ce quun petit bogue dans larchitecture de concurrence.
Donc, je dis, ce nest pas le problème le plus difficile en informatique, mais parce que cest couramment utilisé, cest dangereux.
Réponse
Programmation orientée objet
Cest probablement parce que je me suis fait les dents sur FORTRAN et APL, mais le passage des langages strictement procéduraux aux objets a été quelque chose que je « Jai lutté avec pendant des années. Cela naide pas que les soi-disant « experts » écrivent des articles et des didacticiels contradictoires sur ce que signifie être orienté objet et les meilleures / bonnes façons de construire des programmes orientés objet.