Kommentarer

  • Jeg tror dette i stor grad avhenger av personen som lærer faget, og personen som lærer det

Svar

“Det er to vanskelige problemer innen informatikk: caching, navngivning og off-by-1 feil”

Kommentarer

  • I

d legg til tråder …

Svar

Ærlig talt, kompilatorkonstruksjon!

Kommentarer

  • +1 Kompilatorer var det vanskeligste og mest givende.
  • Det var der oppe med mest over alt arbeid, og god forberedelse for grunt-koding, men jeg tror ikke ' t det var så vanskelig. Kanskje vanskeligere uten å bruke YACC eller hvilke verktøy vi brukte, vet jeg ikke.
  • Kompilatorer er egentlig bare vanskelige fordi det meste av teorien dateres til tider med vanvittig alvorlige maskinvarebegrensninger og mye av den formelle instruksjonen ikke har id = «6378a1549b»>

t avanserte for langt utover det. Ta en titt på La ' s Bygg en kompilator for å se hvor enkel kompilatorskriving kan være hvis du nærmer deg det fra en annen vinkel.

  • @ Martin York, som kompilatorforfatter tror jeg at kompleksiteten ved implementering av kompilatorer er overvurdert sterkt. Generelt er en kompilator mye enklere enn en tolk. Jeg mistenker at det er ' en Dragon Book og dets slag, de ' foreslår de mest kompliserte måtene å gjøre enkle ting og betale for mye oppmerksomhet til det minst viktige trinnet, nemlig parsing.
  • @ Martin York, det finnes teknikker for å holde en AST så enkel og vedlikeholdbar som mulig, uansett hvor komplisert kildespråket er. Det er også en rekke veldig enkle, men kraftige teknikker for å holde hvert trinn i samlingen triviell og isolert.
  • Svar

    Design & Analyse av algoritmer

    Jeg tror det spørsmålet avhenger av læreren du hadde, og hvordan emnet var organisert i din karriere.

    Analysering av algoritmer kan være så vanskelig som noen vil. Ta med på tellingen at det er uløste problemer, og ikke bare det: problemer som ikke kan løses.

    Saken er at du kan ha et problem, og hvis du vet at det ikke kan løses, det er perfekt. Men hva om du ikke gjør det? Du kan bruke mye tid på å prøve å demonstrere det som NP-komplett, eller å prøve å finne en polynomisk tidsløsning for å løse det.

    Det er ikke lett å demonstrere NP-fullstendighet. Ja, mange problemer er kjent, men tingen er å finne reduksjonene for å demonstrere at det er NP-komplett. Og hva om du bruker mange timer / dager / måneder på å prøve å demonstrere det, og det kan løses på polynomisk tid? 🙂

    Det er også andre emner, som Kompilatorer , Gruppeteori og Primitive rekursive funksjoner som kan være som hardt som fagplanen eller læreren vil;)

    Kommentarer

    • s / Analyse / Analyse … ellers akkurat det jeg tror … primitive rekursive funksjoner, uargh !!
    • Avtalt, rotet jeg meg gjennom bachelorgraden min og var aldri sikker på at jeg noen gang med hell ' beviste ' hva som helst (selv om algoritmeklassen min var altfor enkel, på grunn av professoren)
    • Jeg vil vise deg i disse dager, hvor harde algoritmer kan være 🙂

    Svar

    Mønstergjenkjenning ie Kunstig intelligens. Dette refererer til smart databehandling sammen med andre mønstergjenkjenningsverktøy som Optical Character Recognition, Voice to text, ansiktsidentifikasjon osv.

    Mange av de «kule» tingene du kan gjøre eller ønske du kan gjøre med datamaskiner stole på disse algoritmene, og vi har forsøkt å perfeksjonere dem i flere tiår uten mye suksess.

    Kommentarer

    • Det ' er vanskelig fordi det ' s ikke noe som ' er deterministisk. Å utvikle en god gjenkjenning av AI-mønster krever eksperimentering for alle applikasjoner du vil bruke den til, for å sikre at du velger riktig algoritme, riktige funksjoner osv …
    • Jeg begynner akkurat å klatre opp dette fjellet (mønstergjenkjenning). Det ' er vanskelig. MYE matematikk. Flotte, enorme, skremmende hauger med matematikk, stirrer tilbake på meg, våger meg å komme inn.
    • vel … mønsterrekvisjon kan også sees på som anvendt statistikk, det ' er ikke bare et problem innen CS

    Svar

    Mitt valg er beregningsevne teori

    (Hmm … kanskje det ikke er så viktig, men det var sikkert vanskelig)

    Kommentarer

    • Jeg er enig, og jeg vil personlig generalisere det som en.wikipedia.org/wiki/Theory_of_computation .
    • Jeg ' Jeg er enig i at beregningsteorien var vanskelig, men det var også et av favorittfagene mine. Gitt, jeg tok dobbeltfag i matematikk. ..
    • +1 Jeg tok også hovedfag. Jeg kunne håndtere en intro til disse tingene, men utdannelsesversjonen … glad for at jeg droppet det!
    • det var vanskelig, ikke vi vet så mye om det at det ikke ' t betyr noe mye.

    Svar

    Det er bare to harde problemer innen informatikk: cache-ugyldiggjøring og navngivning av ting. – Phil Karlton

    Svar

    kategoriteori (diskret matematikk), men verdt det

    Kommentarer

    • Hvilke spesifikke fordeler fikk du av læringskategori teori?
    • @zvrba: en dypere forståelse av abstraksjonsteknikker og problemkartlegging
    • Hvor lærte du det av?
    • @zvrba: Jeg vet ikke ' t ser boka på bokhyllen min, den ' er sannsynligvis fremdeles i lagring (ombygging), men jeg tror det var denne boka amazon.com/Category-Computer-Scientists-Foundations-Computing/…

    Svar

    Kryptografi

    Hvis du gjør det bare litt galt, kan det koste et selskap millioner.

    Kommentarer

    • Selv om det blir stadig mer populært, Cryp å er ikke ' t unikt for programvare.
    • Crypto er ikke ' t så vanskelig. Problemet er at sikkerhet ' ikke kan testes enkelt, så du merker bare feilene dine når noen hacker deg. Men mangel på testbarhet gjelder de fleste former for IT-sikkerhet, ikke bare krypto.

    Svar

    Operativsystemer, spesielt den delen som har noe å gjøre med å tre.

    Og årsaken er ikke fordi det var så vanskelig å få 5 filosofer til å spise pizza med en gaffel. Årsaken er at det å skrive flertrådet kode er i og av i seg selv vanskelig og ikke nødvendigvis lett for det menneskelige (i det minste mannlige – ifølge min kone) sinn å beregne.

    Kommentarer

    • La din kone skrive den multitrådede koden da 🙂
    • Husk at når det gjelder delt-minne multitrading, er datamaskinen en luskende svin som er ute etter å skaffe deg. Dobbelt så når du arbeider med en flerkjerneprosessor; en kjerne kan være distraherer deg foran øynene dine der du ' ser på, og den andre kan da gå bak deg og stikke deg i ryggen.

    Svar

    Også jeg stemmer på Compiler Design. Spesielt der DFA- og NFA-delen kommer inn. Jeg er heller ikke så klar med NP-problemer og sånt.

    Kommentarer

    • Ja, jeg ' Jeg har hatt det vanskeligere med kompilatorer hvis jeg ikke hadde ' ikke tatt beregningsteorien først.
    • DFAer og NFAer er kyllingfôr. Vent til du må analysere LALR (1).

    Svar

    Køteori

    Vel teknisk er dette en gren av matematikken, men er veldig relevant i CS.

    Nesten alt i CS er basert på køer (synlig (åpenbar) og usynlig (ikke så åpenbar eller underforstått)).

    I de tidlige dagene av CS var køene åpenbare.
    En kø med programmer (hvert program har et kort kort).

    I dag er ikke køene så åpenbare. Internett, for eksempel: et pakkeskiftet nettverk, men pakkene danner køer og ruting av pakkene er en form for køminimering.

    Kommentarer

    • Hei ! (?Er du en (Lisp-programmerer)
    • Ikke (så mye som (man kunne (se), men (det har (vært kjent)). Å skje)).

    Svar

    Numerisk analyse

    Det er ikke så vanskelig for lekeproblemene du får i løpet av kurset, men når du begynner å vurdere reelle problemer, blir det til alvorlig slitasje.

    Svar

    Tolke klientkrav når klienten ikke virkelig vet hva de vil. Dette læres ikke på college, og er en av de mest essensielle ferdighetene å ha.

    Kommentarer

    • Jeg ' er ikke sikker på at jeg er enig i dette som et datavitenskapskonsept. Jeg også ikke ' t se hvordan det kan løses ved hjelp av den vitenskapelige metoden.
    • @ jmort253 – Dette er sant, men informatikk prøver (uten hell etter min mening) å undersøke dette feltet med formelle metoder for desig n og validering.
    • Jeg er enig i at ikke er et " datavitenskap " -konsept – men da jeg startet karrieren min Jeg var ikke klar over det faktum at klienter ikke vet ' hva de vil ha. Jeg trodde at ALLE programvareprosjekter kom med noen form for formelle krav. Kanskje et forelesningstema for et programvareutviklingskurs (kanskje college mitt ' ikke dekket det)?

    Svar

    Personlig var min Formal Logic. Det var tøft til å begynne med, men når du først har fått reglene og klarer å leke med det, går hjernen din Logic++;, noe som i utviklingen er veldig bra.

    Som en sidemerknad, svarer jeg på spørsmålet direkte – dette var definitivt ikke det vanskeligste emnet da jeg gjorde graden min, men det var sannsynligvis det vanskeligste «virkelige anvendelige» emnet.

    Kommentarer

    • Formell logikk er noe jeg hadde et kjærlighets- / hatforhold med. Jeg likte å tenke gjennom konseptene, men jeg kunne aldri forstå hvordan det hjalp meg før senere da jeg opplevde problemer i den virkelige verden som krevde logisk tenkning.
    • @ jmort253 – Det var egentlig det samme for meg. Jeg kjempet til og med til å tro at jeg ' ikke klarte det, studerte så lenge og hardt til det til slutt klikket i hodet på meg. Etter det har fordelene vært fantastiske.

    Svar

    Kompilatorkonstruksjoner. Vanskelig men må forstå begrepene bak

    Kommentarer

    • Du bør gi oppstemmingen til det samme svaret som ble gitt før deg, i stedet for gir det samme svaret igjen.

    Svar

    Kjerne Design noen? Vel, jeg vet ikke egentlig hvordan det gjøres og hva som er de målrettede funksjonene for et operativsystem, men for meg må det å tenke på å designe en kjerne være en skremmende oppgave.

    Jeg tenker også på datasikkerhet ; Jeg vet ikke hva som gjør et system usikkert, bortsett fra selvfølgelig åpenbare bufferoverløp, XSS og SQL-injeksjoner.

    Jeg er ikke sikker, men det ser ut til at noen algoritmer også er usikre. se på MetaSploit-prosjektet, den viser alle typer og typer sikkerhetsbrudd: du kan se at det er mange måter et program kan være feil på.

    Svar

    Det er mange vanskelige emner i feltet, men mine valg for rene vedvarende vanskeligheter er de som involverer Globale systemegenskaper . Eksempler på dette generelle emnet inkluderer:

    • Sikker og fastlåst fri multitråding
    • Sikkerhet

    Dette er vanskelig fordi du » etter noe som bare eksisterer når alt er riktig; du trenger en global systemegenskap og likevel praktisk talt alle tilgjengelige verktøy (og alle de som skaleres til reelle problemer etter min erfaring) bare virkelig gjør lokale resonnementer Det er prosessen med å gå fra å resonnere om bitene i programmet til hele shebangen som er vanskelig, særlig fordi det er fullt mulig å ha brikker som alle er korrekte i seg selv, men hvor det fortsatt er subtile feil fordi komponenter er feil arrangert; feilene kan være uønskede fremtredende egenskaper …

    Svar

    Management Information Services I løpet av collegeperioden hadde jeg ett ledelsesfag hvert semester som gjorde meg gal.
    Tøff! godt emner som Compiler Design , OS Design osv. er tøffe, men de er veldig interessante og utfordrende.Jeg har virkelig rotet meg inn i fag som Management Information System / Services etc, ettersom de er fulle av kjedsomhet og du må gjennom mye teori.

    Kommentarer

    • Full av kjedsomhet fordi de ' snakker om de konseptuelle komplikasjonene i hvert system, mens halvparten av folket aldri skrev noe system selv (men de brukte sikkert en rekke). Også, seminarene bruker så mange innlastede ord, men klarer ikke å gi et virkelig eksempel på vanlig engelsk. Som beslutningsstøttesystemer … kunne du ikke ' t du bare slipper noen skjermbilder av Google Analytics-rapporter, FML, bare for å få studentene på samme side før du stikker av med en intellektuell orgasme foran publikum.

    Svar

    Hvis du jobber i C / C ++, er pekere mest viktig konsept å vite. Men på en eller annen måte forsto jeg det aldri helt på college.

    Kommentarer

    • egentlig? Jeg mener, hver person er forskjellig, men jeg tror det er mange (jeg mener mange ) emner som er vanskeligere enn bare pekere . For eksempel datamaskin ' s arkitektur , assambler som på en eller annen måte er relatert til pekere ; )
    • Sant, men du ' Du vil finne forståelse av minne som refererer gjennom montører mye lettere, fordi du faktisk jobber med pekere, mens i C / C ++ arbeider du med referanser til pekere, som bare forvirrer helvete ut av mennesker fordi abstraksjonen aldri snakkes snakkesalig om.
    • Ah assambler, den beste programmereren ' s te
    • Fyren spurte emnene som er vanskelige, men viktige, derav pekere.
    • @Matt: Du gjorde akkurat dagen min: D @Manoj R: Pekere er trivielle hvis du bare tenker på dem som tilgang til matriser. Eller er det vanskelig å få tilgang til matriser?

    Svar

    Design og analyse av algoritmer. Det er ikke så mye at det er vanskelig å forstå og analysere kjente algoritmer, det er at det er vanskelig å designe og analysere nye algoritmer for harde problemer, og krever en bred forståelse av mange områder og praksis. i å bruke mange forskjellige teknikker.

    Svar

    Begrensningsprogrammering. som tar for seg kombinatoriske problemer, NP-komplette problemer.

    Svar

    Optimalisering av Algoritme er utfordrende emne.

    Svar

    Hvilket er det vanskeligste CS-emnet / teorien du studerte, men viktig for feltet?

    Diskret matematikk.

    Det var vanskelig fordi teoriene er veldig løst knyttet til hverandre, men de brukes i CS. For mye memorisering antar jeg …

    Bevis ved induksjon, Big O, rekursjon, deling og conquure, Grafteori, bla bla .. argh!

    Kompilatoren for meg var lett, fordi vi måtte ta Theory of Automata. ^^

    Svar

    Z-notasjon / formelle metoder som brukes til å skade hjernen min på college. Hovedsakelig fordi jeg hatet det. Hardt er mye lettere når du liker det du gjør og mye vanskeligere når du ikke gjør det.

    Svar

    Jeg liker svarene dine (og glemte ikke å stemme dem), som kompilator, kjerne osv., men de fleste programmerere har aldri møtt disse problemene. Det er litt enklere, men mer vanlig: samtidighet – tråder, låser. Det er veldig enkelt å skrive et program som gir magiske feil, hvis vi lager en liten feil i samtidighetsarkitekturen.

    Så jeg sier, det er ikke det vanskeligste problemet innen databehandling, men fordi det er ofte brukt, det er farlig.

    Svar

    Objektorientert programmering

    Det er sannsynligvis fordi jeg kuttet tennene på FORTRAN og APL, men overgangen fra strengt prosessuelle språk til objekter har vært noe jeg «Vi har slitt med i årevis. Det hjelper ikke at såkalte «eksperter» skriver motstridende artikler og veiledninger om hva det vil si å være objektorientert og de beste / riktige måtene å konstruere objektorienterte programmer på.

    Legg igjen en kommentar

    Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *