Opmerkingen

  • Ik denk dat dit grotendeels afhangt van de persoon die het onderwerp leert, en de persoon die het lesgeeft

Antwoord

“Er zijn 2 moeilijke problemen in de informatica: caching, naamgeving en foutieve fouten”

Reacties

  • I

d threading toevoegen …

Antwoord

Eerlijk gezegd, compiler constructie!

Reacties

  • +1 Compilers was het moeilijkst en de meest lonende.
  • Het was daarboven met het meeste werk en een goede voorbereiding voor grunt-codering, maar ik denk niet dat het ' niet zo moeilijk was. Misschien moeilijker zonder het gebruik van YACC of welke tools we ook hebben gebruikt, ik weet het niet.
  • Compilers zijn eigenlijk alleen maar moeilijk omdat de meeste theorieën dateren uit tijden van waanzinnig ernstige hardwarebeperkingen en veel van de formele instructies hebben geen ' t te ver verder gegaan. Bekijk Let ' s Build A Compiler om te zien hoe gemakkelijk het schrijven van een compiler kan zijn als je het benadert vanuit een andere invalshoek.
  • @Martin York, als compilerschrijver denk ik dat de complexiteit van het implementeren van compilers ernstig wordt overschat. Over het algemeen is een compiler veel eenvoudiger dan een tolk. Ik vermoed dat het ' een Dragon Book is en zijn soort is de schuld, ze ' stellen de meest gecompliceerde manieren voor om eenvoudige dingen te doen en te betalen te veel aandacht voor de minst belangrijke stap, namelijk parsing.
  • @Martin York, er zijn technieken om een AST zo eenvoudig en onderhoudbaar mogelijk te houden, hoe ingewikkeld de brontaal ook is. Er is ook een aantal zeer eenvoudige maar krachtige technieken om elke fase van de compilatie triviaal en geïsoleerd te houden.

Antwoord

Ontwerp & Analyse van algoritmen

Ik denk dat die vraag afhangt van de leraar die je had, en hoe dat onderwerp was georganiseerd in je carriere.

Het analyseren van algoritmen kan zo moeilijk zijn als iemand wil. Houd er rekening mee dat er onopgeloste problemen zijn, en niet alleen dat: problemen die “niet kunnen worden opgelost.

Het punt is dat u een probleem kunt hebben, en als u weet dat het niet kan worden opgelost, dat is perfect. Maar wat als je dat niet doet? U kunt veel tijd besteden aan het proberen aan te tonen dat het NP-compleet is, of aan het vinden van een polynoom-tijdoplossing om het op te lossen.

Het aantonen van NP-volledigheid is niet eenvoudig. Ja, veel problemen zijn bekend, maar het gaat erom de reducties te vinden om aan te tonen dat het NP-compleet is. En wat als je veel uren / dagen / maanden spendeert aan het proberen om het te demonstreren, en het kan worden opgelost in polynoomtijd? 🙂

Er zijn ook andere onderwerpen, zoals Compilers , Groepentheorie en Primitieve recursieve functies die kunnen zijn als moeilijk als het onderwerp plan of de leraar wil;)

Opmerkingen

  • s / Analisis / Analyse … verder precies wat ik denk … primitieve recursieve functies, uargh !!
  • Akkoord, ik rommelde door mijn bachelordiploma zonder er zeker van te zijn dat ik ooit met succes ' bewezen ' alles (hoewel mijn Algorithms-les veel te simpel was, vanwege de professor)
  • Ik zal je in deze dagen laten zien hoe moeilijk algoritmen kunnen zijn 🙂

Antwoord

Patroonherkenning ie Kunstmatige intelligentie. Dit verwijst naar smart computing samen met andere patroonherkenningstools zoals optische tekenherkenning, spraak-naar-tekst, gezichtsherkenning, enz.

Veel van de coole dingen die je kunt of zou willen dat je zou kunnen doen met computers vertrouw op deze algoritmen, en we proberen ze al decennia lang te perfectioneren zonder veel succes.

Reacties

  • Het ' is moeilijk omdat het ' is niet iets dat ' s deterministisch is. Het ontwikkelen van een goede AI-patroonherkenning vereist experimenten voor elke toepassing waarvoor u het wilt gebruiken, om ervoor te zorgen dat u het juiste algoritme kiest, de juiste functies, enz …
  • Ik ben net begonnen met het beklimmen van deze specifieke berg (patroonherkenning). Het ' is moeilijk. VEEL wiskunde. Grote, enorme, intimiderende stapels wiskunde die naar me staren en me uitdagen om binnen te komen.
  • nou … patroonherkenning kan ook worden gezien als toegepaste statistieken, het is ' is niet alleen een probleem binnen het bereik van CS

Answer

Mijn keuze is berekenbaarheidstheorie

(Hmm … misschien is het niet zo belangrijk, maar het was zeker moeilijk)

Opmerkingen

  • Ik ga akkoord, en ik zou het persoonlijk generaliseren als en.wikipedia.org/wiki/Theory_of_computation .
  • Ik ' ben het ermee eens dat de theorie van de berekening moeilijk was, maar het was ook een van mijn favoriete vakken. Toegegeven, ik had een dubbele hoofdvak wiskunde. ..
  • +1 Ik heb ook een dubbele major. Ik kon een introductie van dit spul aan, maar de graduate versie … blij dat ik het liet vallen!
  • het was moeilijk, we weten er niet zoveel van dat het ' er niet toe doet veel.

Antwoord

Er zijn slechts twee moeilijke problemen in de informatica: cache ongeldig maken en dingen benoemen. – Phil Karlton

Antwoord

categorietheorie (discrete wiskunde), maar de moeite waard

Reacties

  • Welke specifieke voordelen heb je gekregen van de leercategorie theorie?
  • @zvrba: een dieper begrip van abstractietechnieken en probleemmapping
  • Waar heb je het van geleerd?
  • @zvrba: I don ' zie het boek niet op mijn boekenplank, het ' is waarschijnlijk nog in opslag (verbouwing) maar ik denk dat het dit boek was amazon.com/Category-Computer-Scientists-Foundations-Computing/…

Antwoord

Cryptografie

Als je het een beetje verkeerd doet, kan het een bedrijf miljoenen kosten.

Reacties

  • Hoewel het steeds populairder wordt, kan Cryp naar isn ' t uniek voor software.
  • Crypto isn ' t zo moeilijk. Het probleem is dat de beveiliging ' niet gemakkelijk kan worden getest, zodat u uw fouten alleen opmerkt wanneer iemand u hackt. Maar een gebrek aan testbaarheid is van toepassing op de meeste vormen van IT-beveiliging, niet alleen op crypto.

Antwoord

Besturingssystemen, vooral het gedeelte dat iets met threading te maken heeft.

En de reden is niet omdat het zo moeilijk was om 5 filosofen pizza met een vork te laten eten. De reden is dat het schrijven van multithreaded code in en van zelf moeilijk en niet per se gemakkelijk voor de menselijke (tenminste mannelijke – volgens mijn vrouw) geest om te berekenen.

Reacties

  • Laat je vrouw schrijven de multithread-code dan 🙂
  • Onthoud dat als het gaat om multithreading met gedeeld geheugen, de computer een stiekeme zwijn is die erop uit is om je te pakken te krijgen. Dubbel zo als het gaat om een multicore-processor; één kern kan je afleiden voor je ogen waar je ' aan het kijken bent, en de ander kan dan achter je gaan en je in de rug steken.

Antwoord

Ik stem ook voor Compiler-ontwerp. Vooral waar het DFA- en NFA-gedeelte binnenkomt. Ik ben ook niet zo duidelijk over NP-problemen en zo.

Opmerkingen

  • Ja, ik ' Ik heb het moeilijker gehad met Compilers als ik niet ' t Theory of Computation als eerste had genomen.
  • DFAs en NFAs zijn kippenvoer. Wacht tot je LALR (1) parsing moet doen.

Answer

Queuing Theory

Technisch gezien is dit een tak van de wiskunde, maar het is zeer relevant in CS.

Bijna alles in CS is gebaseerd op wachtrijen (zichtbaar (duidelijk) en onzichtbaar (niet zo duidelijk of geïmpliceerd)).

In de vroege dagen van CS waren de wachtrijen duidelijk.
Een wachtrij van programmas (elk programma een pak kaarten).

Tegenwoordig zijn de wachtrijen niet zo duidelijk. Het internet bijvoorbeeld: een pakketgeschakeld netwerk, maar de pakketten vormen wachtrijen en het routeren van de pakketten is een vorm van wachtrijminimalisatie.

Opmerkingen

  • Hey !Bent u een (Lisp-programmeur)
  • Niet (zoveel als (men zou kunnen (zien), maar (het is (bekend)). Te gebeuren)).

Answer

Numerieke analyse

Het is niet al te moeilijk voor de speelgoedproblemen die je in de cursus krijgt, maar als je eenmaal begint na te denken over echte problemen, wordt het een serieuze bezigheid.

Antwoord

Cliëntvereisten interpreteren wanneer de cliënt niet echt weet wat hij wil. Dit wordt niet op de universiteit onderwezen en is een van de meest essentiële vaardigheden die je moet hebben.

Reacties

  • Ik ' ben niet zeker of ik het ermee eens ben dat dit een computerwetenschappelijk concept is. don ' zie niet hoe het kan worden opgelost met behulp van de wetenschappelijke methode.
  • @ jmort253 – Dit is waar, maar de computerwetenschap probeert (naar mijn mening tevergeefs) onderzoek dit veld met formele ontwerpmethoden n en validatie.
  • Ik ben het ermee eens dat het geen " informatica " concept is – maar toen ik mijn carrière begon Ik was me niet bewust / me bewust van het feit dat klanten niet ' weten wat ze willen. Ik dacht dat ALLE softwareprojecten kwamen met een soort document met formele vereisten. Misschien een lezingonderwerp voor een cursus software engineering (misschien heeft mijn college het niet ' behandeld)?

Antwoord

Persoonlijk was de mijne Formele Logica. Het was moeilijk om mee te beginnen, maar als je eenmaal de regels onder de knie hebt en er voldoende mee kunt spelen, gaan je hersenen Logic++;, wat in ontwikkeling een heel goede zaak is.

Als kanttekening, ik beantwoord de vraag direct – dit was zeker niet het moeilijkste onderwerp toen ik mijn studie haalde, maar het was waarschijnlijk het moeilijkste “real-life toepasbare” onderwerp.

Opmerkingen

  • Formele logica is iets waarmee ik een haat-liefdeverhouding had. Ik dacht graag na over de concepten, maar ik kon nooit begrijpen hoe het me hielp tot ik later problemen tegenkwam die logisch na moesten denken.
  • @ jmort253 – Het was echt hetzelfde voor mij. Ik worstelde zelfs tot het punt dat ik dacht dat ik ' het niet had gehaald, zo lang en hard had gestudeerd totdat het uiteindelijk klikte in mijn hoofd. Daarna waren de voordelen verbluffend.

Antwoord

Compilerconstructies. Moeilijk maar moet de concepten erachter begrijpen

Opmerkingen

  • Je moet een up-stem uitbrengen voor hetzelfde antwoord dat je eerder hebt gegeven, in plaats van hetzelfde antwoord opnieuw geven.

Antwoord

Kernel Iemand ontwerpen? Nou, ik weet niet echt hoe het in zijn werk gaat en wat de beoogde functies zijn voor een besturingssysteem, maar voor mij moet het nadenken over het ontwerpen van een kernel een ontmoedigende taak zijn.

Ik denk ook aan computerbeveiliging ; Ik weet niet echt wat een systeem onveilig maakt, behalve natuurlijk duidelijke bufferoverflows, XSS- en SQL-injecties.

Ik weet het niet zeker, maar het lijkt erop dat sommige algoritmen ook onveilig zijn; kijk naar het MetaSploit-project, het somt alle soorten en soorten beveiligingsinbreuken op: je kunt zien dat er veel manieren zijn waarop een programma fouten kan vertonen.

Antwoord

Er zijn veel lastige onderwerpen in het veld, maar ik kies voor pure hardnekkige problemen die met Algemene systeemeigenschappen . Voorbeelden van dit algemene onderwerp zijn:

  • Veilig en deadlockvrij multi-threading
  • Beveiliging

Deze zijn moeilijk omdat u ” achter iets aan dat alleen bestaat als alles correct is; je hebt een globale systeemeigenschap nodig en toch doen vrijwel alle beschikbare tools (en alle degenen die opschalen naar echte problemen in mijn ervaring) alleen echt lokaal redeneren . Het is het proces van het redeneren over de onderdelen van het programma naar de hele shebang dat moeilijk is, vooral omdat het heel goed mogelijk is om stukjes te hebben die op zichzelf allemaal correct zijn, maar waar er nog steeds subtiele bugs zijn omdat de componenten zijn niet correct gerangschikt; de bugs kunnen ongewenste opkomende kenmerken zijn …

Antwoord

Management Information Services Tijdens mijn studietijd had ik elk semester één managementvak waar ik helemaal gek van werd.
Moeilijk! goed onderwerpen als Compilerontwerp , OS-ontwerp enz. zijn moeilijk, maar ze zijn echt interessant en uitdagend.Ik heb echt geknoeid met onderwerpen als Management Informatie Systeem / Services enz. Omdat ze verveeld zijn en je veel theorie moet doorlopen.

Reacties

  • Vol verveling omdat ze ' praten over de conceptuele fijne kneepjes van elk systeem, terwijl de helft van de mensen zelf nooit een systeem heeft geschreven (maar ze hebben er zeker een aantal gebruikt). Ook gebruiken de seminals zoveel geladen woorden, maar bieden ze geen realistisch voorbeeld in gewoon Engels. Net als systemen voor beslissingsondersteuning … zou het niet ' kunnen zijn om een paar schermafbeeldingen van Google Analytics-rapporten, FML, neer te zetten, alleen om de leerlingen op dezelfde pagina te krijgen voordat u op de proppen komt met een intellectueel orgasme voor het publiek.

Antwoord

Als je in C / C ++ werkt, zijn pointers het meest belangrijk concept om te weten. Maar op de een of andere manier heb ik het op de universiteit nooit helemaal begrepen.

Reacties

  • echt? Ik bedoel, elke persoon is anders, maar ik denk dat er veel (ik bedoel, veel ) onderwerpen moeilijker zijn dan alleen verwijzingen . Bijvoorbeeld Computer ' s Architectuur , Assambler die op de een of andere manier gerelateerd zijn aan pointers ; )
  • Klopt, maar je ' zult het begrijpen van geheugenverwijzingen via assemblers veel gemakkelijker vinden, omdat je in feite met ruwe aanwijzers werkt, terwijl in C / C ++ werk je met verwijzingen naar verwijzingen, wat mensen gewoon in de war brengt omdat er nooit openhartig over de abstractie wordt gesproken.
  • Ah assambler, de beste programmeur ' s thee
  • De man vroeg de onderwerpen die moeilijk maar belangrijk zijn, vandaar aanwijzingen.
  • @Matt: Je hebt net mijn dag gemaakt: D @Manoj R: Aanwijzingen zijn triviaal als je ze gewoon beschouwt als array-toegang. Of is arraytoegang moeilijk?

Answer

Ontwerp en analyse van algoritmen. Het is niet zozeer dat het moeilijk is om bekende algoritmen te begrijpen en te analyseren, het is dat het ontwerpen en analyseren van nieuwe algoritmen voor moeilijke problemen moeilijk is en een breed begrip van veel gebieden en praktijk vereist. bij het toepassen van veel verschillende technieken.

Answer

Constraint Programming. die zich bezighoudt met combinatorische problemen, NP-complete problemen.

Antwoord

Optimalisatie van Algoritme is een uitdagend onderwerp.

Antwoord

Wat is het moeilijkste CS-onderwerp / -theorie dat je hebt bestudeerd, maar belangrijk voor het vak?

Discrete wiskunde.

Het was moeilijk omdat de theorieën erg losjes aan elkaar gerelateerd zijn, maar ze worden gebruikt in CS. Te veel onthouden, denk ik …

Bewijs door inductie, Big O, recursie, verdeel en conqure, Graph Theory, blah blah .. argh!

Compiler voor mij was gemakkelijk, omdat we Theory of Automata moesten nemen. ^^

Antwoord

Z-notatie / formele methoden die worden gebruikt om mijn hersenen pijn te doen op school. Vooral omdat ik het haatte. Moeilijk is een stuk makkelijker als je geniet van wat je doet en veel moeilijker als je dat niet doet.

Antwoord

Ik vind je antwoorden leuk (en ik ben niet vergeten ze op te stemmen), zoals compiler, kernel, etc., maar de meeste programmeurs zijn deze problemen nooit tegengekomen. Er is een iets eenvoudiger, maar vaker voorkomend probleem: concurrency – threads, vergrendeling. Het is heel gemakkelijk om een programma te schrijven dat magische fouten produceert, als we zelfs maar een kleine bug in de gelijktijdigheidsarchitectuur maken.

Dus, ik zeg, het is niet het moeilijkste probleem bij computers, maar omdat het wordt vaak gebruikt, het is een gevaarlijke.

Antwoord

Objectgeoriënteerd programmeren

Het is waarschijnlijk omdat ik mijn tanden in FORTRAN en APL heb gezet, maar de verschuiving van strikt procedurele talen naar objecten is iets dat ik “waar ik al jaren mee geworsteld heb. Het helpt niet dat zogenaamde “experts” tegenstrijdige artikelen en tutorials schrijven over wat het betekent om objectgeoriënteerd te zijn en de beste / juiste manieren om objectgeoriënteerde programmas te bouwen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *