Kommentarer
- Jeg tror, det i høj grad afhænger af den person, der lærer emnet, og den person, der underviser i det
Svar
“Der er 2 hårde problemer inden for datalogi: caching, navngivning og off-by-1-fejl”
Kommentarer
- I
d tilføj threading …
Svar
Ærligt, kompilerkonstruktion!
Kommentarer
- +1 Kompilatorer var den sværeste og mest givende.
- Det var deroppe med mest over alt arbejde og god forberedelse til grunt-kodning, men jeg synes ikke ' at det var så svært. Måske sværere uden at bruge YACC eller de værktøjer, vi brugte, ved jeg ikke.
- Kompilatorer er egentlig kun vanskelige, fordi det meste af teorien går til tider med sindssygt alvorlige hardwarebegrænsninger, og meget af den formelle instruktion har ikke ' t avancerede for langt ud over det. Se på Lad ' s Byg en kompilator for at se, hvor let kompilatorskrivning kan være, hvis du nærmer dig det fra en anden vinkel.
- @ Martin York, som kompilatorforfatter tror jeg, at kompleksiteten ved implementering af compilere er overvurderet alvorligt. Generelt er en kompilator meget enklere end en tolk. Jeg formoder, at det er ' en Dragon Book og dens art, de ' foreslår de mest komplicerede måder at gøre enkle ting og betale for meget opmærksomhed på det mindst vigtige trin, nemlig parsing.
- @ Martin York, der er teknikker til at holde en AST så enkel og vedligeholdelig som muligt, uanset hvor kompliceret kildesproget er. Der er også en række meget enkle, men kraftfulde teknikker til at holde hvert trin i kompilering trivielt og isoleret.
Svar
Design & Analyse af algoritmer
Jeg tror, at spørgsmålet afhænger af den lærer, du havde, og hvordan dette emne var organiseret i din karriere.
Analysering af algoritmer kan være så hårdt, som nogen ønsker. Tag med, at der er uløste problemer, og ikke kun det: problemer, der ikke kan løses.
Sagen er, at du kan have et problem, og hvis du ved, kan det ikke løses, det er perfekt. Men hvad hvis du ikke gør det? Du kan bruge meget tid på at prøve at demonstrere det “NP-komplet” eller at prøve at finde en polynomisk tidsløsning til at løse det.
Det er ikke let at demonstrere NP-kompletitet. Ja, mange problemer er kendt, men sagen er at finde reduktioner for at demonstrere, at det er NP-komplet. Og hvad hvis du bruger mange timer / dage / måneder på at prøve at demonstrere det, og det kan løses på polynomisk tid? 🙂
Der er også andre emner, som Compilers , Gruppeteori og Primitive rekursive funktioner der kan være som hårdt som fagplanen eller læreren ønsker;)
Kommentarer
- s / Analyse / analyse … ellers præcis hvad jeg synes … primitive rekursive funktioner, uargh !!
- Aftalt, forvirrede jeg mig gennem min bachelorgrad uden at være sikker på, at jeg nogensinde med succes ' beviste ' hvad som helst (selvom min algoritmeklasse var alt for enkel på grund af professoren)
- Jeg vil vise dig i disse dage, hvor hårde algoritmer kan være 🙂
Svar
Mønstergenkendelse ie Kunstig intelligens. Dette refererer til smart computing sammen med andre mønstergenkendelsesværktøjer som, Optisk karaktergenkendelse, Voice to text, ansigtsidentifikation osv.
Mange af de “seje” ting, du kan gøre eller ønske du kunne gøre med computere stole på disse algoritmer, og vi har forsøgt at perfektionere dem i årtier uden en hel masse succes.
Kommentarer
- Det ' er svært, fordi det ' er ikke noget, der ' er deterministisk. Udvikling af en god AI-mønstergenkendelse kræver eksperimentering for hver applikation, du vil bruge den til, for at sikre, at du vælger den rigtige algoritme, de rigtige funktioner osv …
- Jeg er lige begyndt at bestige dette særlige bjerg (mønster genkendelse). Det ' er svært. Masser af matematik. Store, enorme, skræmmende bunker matematik, stirrer tilbage på mig og tør mig komme ind.
- godt … mønsterrecog kan også ses som anvendt statistik, det ' er ikke kun et problem inden for CS
Svar
Mit valg er beregningsteori
(Hmm … måske er det ikke så vigtigt, men det var bestemt svært)
Kommentarer
- Jeg er enig, og jeg vil personligt generalisere det som da.wikipedia.org/wiki/Theory_of_computation .
- Jeg ' Jeg er enig i, at beregningsteorien var hård, men det var også et af mine yndlingsfag. Indrømmet, at jeg var dobbeltfag i matematik. ..
- +1 Jeg gik også dobbelt. Jeg kunne håndtere en introduktion til disse ting, men kandidatversionen … glad for at jeg droppede det!
- det var svært, ikke vi ved så meget om det, at det ikke betyder ' meget.
Svar
Der er kun to hårde problemer i datalogi: cache ugyldiggørelse og navngivning af ting. – Phil Karlton
Svar
kategoriteori (diskret matematik), men det er værd
Kommentarer
- Hvilke specifikke fordele fik du af læringskategorien teori?
- @zvrba: en dybere forståelse af abstraktionsteknikker og problemkortlægning
- Hvor lærte du det af?
- @zvrba: Jeg ved ikke ' Se ikke bogen på min bogreol, den ' er sandsynligvis stadig i lager (ombygning), men jeg tror, det var denne bog amazon.com/Category-Computer-Scientists-Foundations-Computing/…
Svar
Kryptografi
Hvis du gør det bare lidt forkert, kan det koste en virksomhed millioner.
Kommentarer
- Selvom Cryp bliver stadig mere populær at ikke er ' t unikt for software.
- Crypto er ikke ' t så hårdt. Problemet er, at sikkerhed ' ikke kan testes let, så du bemærker kun dine fejl, når nogen hacker dig. Men manglende testbarhed gælder for de fleste former for it-sikkerhed, ikke kun krypto.
Svar
Operativsystemer, især den del, der har noget at gøre med trådning.
Og årsagen er ikke fordi det var så svært at få 5 filosoffer til at spise pizza med en gaffel. Årsagen er, at det at skrive flertrådet kode er i og af i sig selv svært og ikke nødvendigvis let for det menneskelige (i det mindste mandlige – ifølge min kone) sind at beregne.
Kommentarer
- Lad din kone skrive multithreaded-koden så 🙂
- Husk, når det kommer til multithreading med delt hukommelse, er computeren en luskede svin, der er ude for at få dig. Dobbelt så når du har at gøre med en multicore-processor; en kerne kan distraherende dig foran dine øjne, hvor du ' holder øje med, og den anden kan derefter gå bag dig og stikke dig i ryggen.
Svar
Jeg stemmer også for Compiler Design. Især hvor DFA- og NFA-delen kommer ind. Jeg er heller ikke så klar over NP-problemer og lignende.
Kommentarer
- Ja, jeg ' jeg har haft en sværere tid med Compilers, hvis jeg ikke havde ' ikke taget Theory of Computation først.
- DFAer og NFAer er kyllingefoder. Vent, indtil du skal foretage LALR (1) parsing.
Svar
Køteori
Nå teknisk set er dette en gren af matematik, men er meget relevant i CS.
Næsten alt i CS er baseret på køer (synlige (indlysende) og usynlige (ikke så indlysende eller underforstået)).
I de tidlige dage af CS var køerne åbenlyse.
En kø med programmer (hvert program har et kort kort).
I dag er køerne ikke så indlysende. Internettet for eksempel: et pakkeomskiftet netværk, men pakkerne danner køer og routing af pakkerne er en form for køminimering.
Kommentarer
- Hej ! (?Er du (Lisp-programmør)
- Ikke (så meget som (man kunne (se), men (det har (været kendt)). At ske)).
Svar
Numerisk analyse
Det er ikke alt for hårdt på de legetøjsproblemer, du får i løbet, men når du først overvejer reelle problemer, bliver det til alvorlig sludder.
Svar
Tolke klientkrav når klienten ikke rigtig ved, hvad de vil have. Dette undervises ikke i college og er en af de mest vigtige færdigheder at have.
Kommentarer
- Jeg ' er ikke sikker på, at jeg er enig i denne som et datalogisk koncept. Jeg også don ' t se, hvordan det kan løses ved hjælp af den videnskabelige metode.
- @ jmort253 – Dette er sandt, men datalogi prøver (uden held efter min mening) at undersøge dette felt med formelle metoder til desig n og validering.
- Jeg er enig i, at det ikke er et " datalogi " koncept – men da jeg startede min karriere Jeg var ikke opmærksom / glemme det faktum, at klienter ikke ' ikke ved, hvad de vil have. Jeg troede, at ALLE softwareprojekter kom med en form for et formelt krav dok. Måske et forelæsningsemne til et softwareingeniørkursus (måske dækkede mit college ' det ikke)?
Svar
Personligt var min formelle logik. Det var svært at starte med, men når du når reglerne ned og formår at lege med det nok, går din hjerne Logic++;
, hvilket under udvikling er en meget god ting.
Som en sidebemærkning besvarer jeg spørgsmålet direkte – dette var bestemt ikke det sværeste emne, da jeg tog min eksamen, men det var sandsynligvis det sværeste “anvendelige” emne.
Kommentarer
- Formel logik er noget, som jeg havde et kærligheds- / hadforhold med. Jeg kunne godt lide at tænke igennem begreberne, men jeg kunne aldrig forstå, hvordan det hjalp mig, før jeg senere stødte på virkelige problemer, der krævede logisk tænkning.
- @ jmort253 – Det var virkelig det samme for mig. Jeg kæmpede endda til det punkt at tænke, at jeg ' ikke svigtede det, studerede så længe og hårdt, indtil det endelig klikkede i mit hoved. Derefter har fordelene været fantastiske.
Svar
Kompilerkonstruktioner. Svært, men skal forstå begreberne bag
Kommentarer
- Du skal give en afstemning for det samme svar, der blev givet før dig, snarere end giver det samme svar igen.
Svar
Kerne Design nogen? Jeg ved ikke rigtig, hvordan det gøres, og hvad er de målrettede funktioner til et operativsystem, men for mig skal det være en skræmmende opgave at tænke på at designe en kerne.
Jeg tænker også på computersikkerhed ; Jeg ved ikke rigtig, hvad der gør et system usikkert, bortset fra selvfølgelig åbenlyse bufferoverløb, XSS og SQL-injektioner.
Jeg er ikke sikker, men der ser ud til, at nogle algoritmer også er usikre; se på MetaSploit-projektet, det viser alle typer og former for sikkerhedsbrud: du kan se, at der er mange måder, et program kan være mangelfuldt.
Svar
Der er mange akavede emner i marken, men mine valg for ren vedvarende vanskelighed er dem, der involverer Globale systemegenskaber . Eksempler på dette generelle emne inkluderer:
- Sikker og fastlåst fri multi-threading
- Sikkerhed
Disse er svære, fordi du ” efter noget, der kun eksisterer, når alt er korrekt; du har brug for en global systemegenskab og alligevel praktisk talt alle tilgængelige værktøjer (og alle dem, der skaleres til reelle problemer i min erfaring) kun virkelig lokalt ræsonnement Det er processen med at gå fra at ræsonnere om stykkerne i programmet til hele shebang, der er hårdt, især fordi det er fuldt ud muligt at have stykker, der alle er korrekte i sig selv, men hvor der stadig er subtile bugs, fordi komponenter er forkert arrangeret; bugs kan være uønskede nye egenskaber …
Svar
Management Information Services I løbet af min collegeperiode plejede jeg at have et ledelsesfag hvert semester, hvilket helt gjorde mig sur.
Hårdt! godt emner som Compiler Design , OS Design osv. er hårde, men de er virkelig interessante og udfordrende.Jeg rodede virkelig i emner som Management Information System / Services osv., Da de er fulde af kedsomhed, og du er nødt til at gennemgå masser af teori.
Kommentarer
- Fuld af kedsomhed, fordi de ' taler om de konceptuelle indviklinger i hvert system, mens halvdelen af folket aldrig skrev noget system selv (men de brugte bestemt en række forskellige). Seminarerne bruger også så mange indlæste ord, men leverer ikke et eksempel på det virkelige liv på almindelig engelsk. Ligesom beslutningsstøttesystemer … kunne du ikke ' t slipper du bare et par skærmbilleder af Google Analytics-rapporter, FML, bare for at få de studerende på samme side, før du løber af med en intellektuel orgasme foran publikum.
Svar
Hvis du arbejder i C / C ++, er pointere mest vigtigt koncept at vide. Men på en eller anden måde forstod jeg det aldrig fuldt ud på college.
Kommentarer
- virkelig? Jeg mener, hver person er forskellig, men jeg tror, der er masser (jeg mener, masser ) af emner, der er sværere end bare henvisninger . For eksempel Computer ' s Arkitektur , Assambler som på en eller anden måde er relateret til pegepinde ; )
- Sandt, men du ' finder forståelse af hukommelse, der refererer til gennem assemblere, lettere, fordi du faktisk arbejder med rå pegepinde, mens i C / C ++ arbejder du med henvisninger til pegepinde, hvilket bare forvirrer helvede ud af mennesker, fordi abstraktionen aldrig tales åbenlyst.
- Ah assambler, den bedste programmør ' s te
- Fyren spurgte emnerne, der er vanskelige, men vigtige, derfor pegepinde.
- @Matt: Du gjorde netop min dag: D @Manoj R: Markører er trivielle hvis du bare tænker på dem som array-adgang. Eller er arrayadgang vanskelig?
Svar
Design og analyse af algoritmer. Det er ikke så meget, at det er svært at forstå og analysere kendte algoritmer, det er, at det er svært at designe og analysere nye algoritmer til hårde problemer og kræver en bred forståelse af mange områder og praksis ved anvendelse af mange forskellige teknikker.
Svar
Begrænsningsprogrammering. der beskæftiger sig med kombinatoriske problemer, NP-komplette problemer.
Svar
Optimering af Algoritme er udfordrende for emnet.
Svar
Hvilket er det sværeste CS-emne / teori, du har studeret, men vigtigt for feltet?
Diskret matematik.
Det var svært, fordi teorierne er meget løst beslægtede med hinanden, men de bruges i CS. For meget memorisering antager jeg …
Bevis ved induktion, Big O, rekursion, opdeling og conquure, Grafteori, bla bla .. argh!
Kompilatoren for mig var let, fordi vi var nødt til at tage Theory of Automata. ^^
Svar
Z-notation / formelle metoder, der bruges til at skade min hjerne på college. Hovedsagelig fordi jeg hadede det. Hard er meget lettere, når du nyder det, du laver, og meget hårdere, når du ikke gør det.
Svar
Jeg kan godt lide dine svar (og jeg glemte ikke at stemme dem), som kompilator, kerne osv., men de fleste af programmører har aldrig mødt disse problemer. Der er lidt lettere, men mere almindeligt problem: concurrency – tråde, låsning. Det er meget let at skrive et program, der producerer magiske fejl, hvis vi laver endda en lille fejl i samtidige arkitektur.
Så jeg siger, det er ikke det sværeste problem inden for computing, men fordi det er almindeligt anvendt, det er farligt.
Svar
Objektorienteret programmering
Det er sandsynligvis fordi jeg skar tænderne på FORTRAN og APL, men skiftet fra strengt proceduremæssige sprog til objekter har været noget jeg “Jeg har kæmpet med i årevis. Det hjælper ikke såkaldte “eksperter” med at skrive modstridende artikler og tutorials om, hvad det betyder at være objektorienteret og de bedste / korrekte måder at konstruere objektorienterede programmer på.