<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Kommentarer

  • Jag tror att detta till stor del beror på personen som lär sig ämnet och den som undervisar det

Svar

“Det finns två hårda problem inom datavetenskap: cachning, namngivning och off-by-1-fel”

Kommentarer

  • I

d lägg till trådning …

Svar

Ärligt talat, kompilerkonstruktion!

Kommentarer

  • +1 Kompilatorer var det svåraste och mest givande.
  • Det var där uppe med mest över allt arbete, och bra förberedelse för gruntkodning, men jag tycker inte ' att det var så svårt. Kanske svårare utan att använda YACC eller vilka verktyg vi använde, jag vet inte. id = ”6378a1549b”>

t avancerade för långt utöver det. Ta en titt på Låt ' bygga en kompilator för att se hur lätt kompilator-skrivning kan vara om du närmar dig det från en annan vinkel.

  • @Martin York, som kompilatorförfattare tror jag att komplexiteten i att implementera kompilatorer överskattas allvarligt. I allmänhet är en kompilator mycket enklare än en tolk. Jag misstänker att det är ' en Dragon Book och dess slag, de ' föreslår de mest komplicerade sätten att göra enkla saker och betala för mycket uppmärksamhet åt det minst viktiga steget, nämligen tolkning.
  • @Martin York, det finns tekniker för att hålla en AST så enkel och underhållbar som möjligt, oavsett hur komplicerat källspråket är. Det finns också ett antal mycket enkla men kraftfulla tekniker för att hålla varje steg i sammanställningen triviell och isolerad.
  • Svar

    Design & Analys av algoritmer

    Jag tror att den frågan beror på den lärare du hade och hur ämnet organiserades i din karriär.

    Att analysera algoritmer kan vara så svårt som någon vill. Ta i beräkningen att det finns olösta problem, och inte bara det: problem som inte kan lösas.

    Saken är att du kan få ett problem, och om du vet att det inte kan lösas, det är perfekt. Men tänk om du inte gör det? Du kan spendera mycket tid på att försöka visa att det är NP-komplett, eller att försöka hitta en polynomisk tidslösning för att lösa det.

    Att visa NP-fullständighet är inte lätt. Ja, många problem är känt, men saken är att hitta reduktioner för att visa att det är NP-komplett. Och vad händer om du spenderar många timmar / dagar / månader på att försöka demonstrera det, och det kan lösas på polynomtid? 🙂

    Det finns också andra ämnen, som Kompilatorer , Gruppteori och Primitiva rekursiva funktioner som kan vara som hårt som ämnesplanen eller läraren vill;)

    Kommentarer

    • s / Analys / Analys … annars exakt vad jag tycker … primitiva rekursiva funktioner, uargh !!
    • Jag gick igenom min kandidatexamen utan att vara säker på att jag någonsin lyckades ' bevisade ' vad som helst (även om min algoritmklass var alldeles för enkel på grund av professorn)
    • Jag kommer att visa dig i dessa dagar, hur hårda algoritmer kan vara 🙂

    Svar

    Mönsterigenkänning ie Artificiell intelligens. Detta hänvisar till smart databehandling tillsammans med andra mönsterigenkänningsverktyg som, Optisk teckenigenkänning, Röst till text, ansiktsidentifiering etc.

    Många av de ”coola” saker du kan göra eller önskar att du kan göra med datorer lita på dessa algoritmer, och vi har försökt att göra dem perfekta i årtionden utan mycket framgång.

    Kommentarer

    • Det ' är svårt eftersom det ' s inte något som ' är deterministiskt. Att utveckla ett bra AI-mönsterigenkänning kräver experiment för alla applikationer som du vill använda den för, för att säkerställa att du väljer rätt algoritm, rätt funktioner osv …
    • Jag börjar precis klättra just detta berg (mönsterigenkänning). Det ' är svårt. MYCKET matematik. Stora, enorma, skrämmande högar av matematik, stirrar tillbaka på mig, vågar mig komma in.
    • Tja … mönsterrekommendation kan också ses som tillämpad statistik, det ' är inte bara ett problem inom intervallet CS

    Svar

    Mitt val är beräknbarhetsteori

    (Hmm … kanske är det inte så viktigt, men det var säkert svårt)

    Kommentarer

    • Jag håller med, och jag skulle personligen generalisera det som en.wikipedia.org/wiki/Theory_of_computation .
    • Jag ' Jag håller med om att beräkningsteorin var svår, men det var också ett av mina favoritämnen. Beviljas, jag var dubbelt som huvudämne i matematik. ..
    • +1 Jag gick också två gånger. Jag kunde hantera en introduktion till de här sakerna, men examenversionen … glad att jag tappade det!
    • det var svårt, inte vet vi så mycket om det att det inte ' betyder något mycket.

    Svar

    Det finns bara två hårda problem inom datavetenskap: cache-ogiltigförklaring och namngivning av saker. – Phil Karlton

    Svar

    kategoriteori (diskret matematik), men värt det

    Kommentarer

    • Vilka specifika fördelar fick du av inlärningskategorin teori?
    • @zvrba: en djupare förståelse för abstraktionstekniker och problemmappning
    • Var lärde du dig det?
    • @zvrba: Jag vet inte ' t ser boken på min bokhylla, den ' är troligen fortfarande lagrad (ombyggnad) men jag tror att det var den här boken amazon.com/Category-Dator-Scientists-Foundations-Computing/…

    Svar

    Kryptografi

    Om du gör det bara fel kan det kosta ett företag miljoner.

    Kommentarer

    • Även om Cryp blir alltmer populärt att inte ' t unikt för programvara.
    • Crypto är inte ' t så svårt. Problemet är att säkerhet ' inte kan testas enkelt, så du märker bara dina misstag när någon hackar dig. Men brist på testbarhet gäller de flesta former av IT-säkerhet, inte bara krypto.

    Svar

    Operativsystem, speciellt den del som har något att göra med gängning.

    Och anledningen är inte för att det var så svårt att få 5 filosofer att äta pizza med en gaffel. Anledningen är att det att skriva flertrådad kod är i och av i sig själv svårt och inte nödvändigtvis lätt för den mänskliga (åtminstone manliga – enligt min fru) sinne att beräkna.

    Kommentarer

    • Låt din fru skriva den multitrådade koden då 🙂
    • Kom ihåg att när det gäller delat minne multitrådning är datorn en lömsk svin som är ute efter att få dig. Dubbel så när du arbetar med en flerkärnig processor; en kärna kan vara distraherar dig framför dina ögon där du ' tittar på, och den andra kan sedan gå bakom dig och sticka dig i ryggen.

    Svar

    Även jag röstar på Compiler Design. Särskilt där DFA- och NFA-delen kommer in. Jag är inte heller så tydlig om NP-problem och sådant.

    Kommentarer

    • Ja, jag ' Jag har haft svårare med kompilatorer om jag inte hade ' inte tagit beräkningsteori först.
    • DFA: er och NFA: er är kycklingfoder. Vänta tills du måste göra LALR (1) tolkning.

    Svar

    Köteori

    Tja tekniskt sett är detta en gren av matematik, men är mycket relevant i CS.

    Nästan allt i CS baseras på köer (synliga (uppenbara) och osynliga (inte så uppenbara eller underförstådda)).

    I början av CS var köerna uppenbara.
    En kö med program (varje program har en kortlek).

    Numera är köerna inte så uppenbara. Internet till exempel: ett paketväxlat nätverk, men paketen bildar köer och dirigering av paketen är en form av köminimering.

    Kommentarer

    • Hej ! (?Är du (Lisp-programmerare)
    • Inte (så mycket som (man kunde (se), men (det har (varit känt)). Att hända)).

    Svar

    Numerisk analys

    Det är inte så svårt för leksaksproblemen du får i kursen, men när du börjar överväga verkliga problem blir det allvarlig slitage.

    Svar

    Tolkning av klientkrav när klienten inte riktigt vet vad de vill. Detta lärs inte ut på college och är en av de viktigaste färdigheterna att ha.

    Kommentarer

    • Jag ' jag är inte säker på att jag håller med den här som ett datavetenskapskoncept. Jag också se inte ' hur det kan lösas med den vetenskapliga metoden.
    • @ jmort253 – Detta är sant, men datavetenskap försöker (enligt min åsikt) undersöka detta fält med formella metoder för design n och validering.
    • Jag håller inte med är att det inte är ett " datavetenskap " -koncept – men när jag började min karriär Jag var inte medveten om det faktum att klienter inte ' inte vet vad de vill ha. Jag trodde att ALLA programvaruprojekt kom med någon form av ett formellt kravdokument. Kanske ett föreläsningstema för en programvarukonstruktionskurs (kanske inte mitt college ' täckte det)?

    Svar

    Personligen var min Formal Logic. Det var svårt att börja med, men när du väl har tagit ner reglerna och lyckats leka med det går din hjärna Logic++;, vilket under utveckling är en mycket bra sak.

    Som en sidoanteckning svarar jag på frågan direkt – det här var definitivt inte det svåraste ämnet när jag gjorde min examen, men det var förmodligen det svåraste ”verkliga tillämpliga” ämnet.

    Kommentarer

    • Formell logik är något som jag hade ett kärleks- / hatförhållande med. Jag gillade att tänka igenom begreppen, men jag kunde aldrig förstå hur det hjälpte mig förrän senare när jag stötte på verkliga problem som krävde logiskt tänkande.
    • @ jmort253 – Det var verkligen samma sak för mig. Jag kämpade till och med till att tänka att jag ' inte lyckades, studerade så länge och hårt tills det äntligen klickade i mitt huvud. Efter det har fördelarna varit fantastiska.

    Svar

    Kompilatorkonstruktioner. Svårt men måste att förstå begreppen bakom

    Kommentarer

    • Du bör ge en upp-röst för samma svar som gavs framför dig, snarare än ger samma svar igen.

    Svar

    Kärna Designa någon? Tja, jag vet inte riktigt hur det görs och vad är de riktade funktionerna för ett operativsystem, men för mig måste fundera på att designa en kärna vara en skrämmande uppgift.

    Jag tänker också på datasäkerhet ; Jag vet inte riktigt vad som gör ett system osäkert förutom självklart, uppenbara buffertöverflöden, XSS- och SQL-injektioner.

    Jag är inte säker, men det verkar som om vissa algoritmer också är osäkra. titta på MetaSploit-projektet, det listar alla typer och typer av säkerhetsöverträdelser: du kan se att det finns många sätt ett program kan vara felaktigt.

    Svar

    Det finns många besvärliga ämnen i fältet, men mina val för rena bestående svårigheter är de som involverar Globala systemegenskaper . Exempel på detta allmänna ämne inkluderar:

    • Säker och dödläge-fri flertrådning
    • Säkerhet

    Dessa är svåra eftersom du ” efter något som bara existerar när allt är korrekt, du behöver en global systemegenskap och ändå praktiskt taget alla tillgängliga verktyg (och alla de som skala till verkliga problem enligt min erfarenhet) bara verkligen gör lokalt resonemang Det är processen att gå från att resonera om programmets delar till hela shebangen som är svårt, särskilt för att det är helt möjligt att ha bitar som alla är korrekta i sig men där det fortfarande finns subtila buggar eftersom komponenter är felaktigt ordnade; buggarna kan vara oönskade framväxande egenskaper …

    Svar

    Management Information Services Under min högskoleperiod brukade jag ha ett ledningsämne varje termin vilket gjorde mig arg.
    Tufft! väl ämnen som Compiler Design , OS Design etc är tuffa men de är verkligen intressanta och utmanande.Jag trasslade verkligen i ämnen som Management Information System / Services etc eftersom de är fulla av tristess och du måste gå igenom massor av teori.

    Kommentarer

    • Full av tristess eftersom de ' talar om de konceptuella intrikaten i varje system, medan hälften av folket aldrig skrev något system själva (men de använde säkert en mängd). Seminarierna använder också så många laddade ord som ändå inte ger ett verkligt exempel på vanlig engelska. Som beslutsstödsystem … kunde du inte ' t släpper du bara några skärmdumpar av Google Analytics-rapporter, FML, bara för att få eleverna på samma sida innan du springer av med en intellektuell orgasm framför publiken.

    Svar

    Om du arbetar i C / C ++ är pekare mest viktigt koncept att veta. Men på något sätt förstod jag det inte helt på college.

    Kommentarer

    • verkligen? Jag menar, varje person är annorlunda, men jag tror att det finns massor (jag menar, massor ) ämnen som är svårare än bara pekare . Till exempel Dator ' s Arkitektur , Assambler som på något sätt är relaterade till pekare ; )
    • Det är sant, men du ' kommer att hitta förståelse av minne som refererar genom monterare mycket enklare, eftersom du faktiskt arbetar med råa pekare, medan i C / C ++ arbetar du med hänvisningar till pekare, som bara förvirrar helvetet bland människor eftersom abstraktionen aldrig talas frispråkigt.
    • Ah assambler, den bästa programmeraren ' s te
    • Killen frågade ämnen som är svåra men viktiga, därav pekare.
    • @Matt: Du gjorde precis min dag: D @Manoj R: Pekare är triviala om du bara tänker på dem som arrayåtkomst. Eller är det svårt att komma åt matrisen?

    Svar

    Design och analys av algoritmer. Det är inte så mycket att det är svårt att förstå och analysera kända algoritmer, det är att det är svårt att designa och analysera nya algoritmer för svåra problem och kräver en bred förståelse för många områden och praxis. vid tillämpning av många olika tekniker.

    Svar

    Begränsningsprogrammering. som hanterar kombinatoriska problem, NP-kompletta problem.

    Svar

    Optimering av Algoritm är utmanande ämne.

    Svar

    Vilket är det svåraste CS-ämnet / teorin som du studerade men viktigt för fältet?

    Diskret matematik.

    Det var svårt eftersom teorierna är mycket löst relaterade till varandra men de används i CS. För mycket memorisering antar jag …

    Bevis av induktion, Big O, rekursion, delning och conquure, Grafteori, bla bla .. argh!

    Kompilatorn för mig var lätt eftersom vi var tvungna att ta Theory of Automata. ^^

    Svar

    Z-notering / formella metoder som används för att skada min hjärna på college. Främst för att jag hatade det. Hårt är mycket lättare när du njuter av det du gör och mycket svårare när du inte gör det.

    Svar

    Jag gillar dina svar (och jag glömde inte att rösta upp dem), som kompilator, kärna etc. men de flesta programmerare har aldrig mött dessa problem. Det är lite enklare men vanligare: concurrency – trådar, låsning. Det är väldigt enkelt att skriva ett program som ger magiska fel, om vi gör till och med ett litet fel i samtidighetsarkitekturen.

    Så jag säger att det inte är det svåraste i datorer, utan för det är vanligt, det är farligt.

    Svar

    Objektorienterad programmering

    Det beror förmodligen på att jag skar tänderna på FORTRAN och APL, men övergången från strikt processuella språk till objekt har varit något jag ”Jag har kämpat med i flera år. Det hjälper inte att så kallade ”experter” skriver motstridiga artiklar och handledning om vad det innebär att vara objektorienterade och de bästa / rätta sätten att konstruera objektorienterade program.

    Lämna ett svar

    Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *