Komentáře

  • Myslím, že to do značné míry závisí na osobě, která se předmět učí, a na osobě, která ho učí

Odpověď

„Počítačová věda má dva závažné problémy: ukládání do mezipaměti, pojmenování a chyby typu off-by-1“

Komentáře

  • I

d přidat vlákna …

odpověď

upřímně, konstrukce kompilátoru!

Komentáře

  • +1 překladače bylo nejobtížnější a nejpřínosnější.
  • Bylo to tam s nanejvýš dobrá práce a dobrá příprava pro gruntové kódování, ale nemyslím si, že to bylo všechno tak obtížné '. Možná těžší bez použití YACC nebo jakýchkoli nástrojů, které jsme použili, nevím.
  • Kompilátory jsou opravdu jen obtížné, protože většina teorie se datuje do časů šíleně přísných hardwarových omezení a spousty formálních pokynů nemá id = „6378a1549b“>

t postoupil příliš daleko za to. Podívejte se na Nechte ' s sestavit kompilátor a uvidíte, jak snadné může být psaní kompilátoru, pokud se k němu přiblížíte z jiného úhlu.

  • @ Martin York, jako spisovatel kompilátoru si myslím, že složitost implementace kompilátorů je vážně přeceňována. Obecně je kompilátor mnohem jednodušší než tlumočník. Mám podezření, že za to může ' sa Dragon Book a její druh, že ' navrhuje nejsložitější způsoby, jak dělat jednoduché věci a platit přílišná pozornost nejméně důležitému kroku, totiž analýze.
  • @ Martin York, existují techniky, jak udržet AST co nejjednodušší a udržovatelnější, bez ohledu na to, jak komplikovaný je zdrojový jazyk. Existuje také řada velmi jednoduchých, ale výkonných technik, jak udržet každou fázi kompilace triviální a izolovanou.
  • Odpověď

    Návrh & Analýza algoritmů

    Myslím, že tato otázka závisí na učiteli, kterého jste měli, a na tom, jak byl tento předmět organizován tvoje kariéra.

    Analýza algoritmů může být tak těžká, jak někdo chce. Počítejte s tím, že existují nevyřešené problémy, a nejen to: problémy, které nelze vyřešit.

    Jde o to, že můžete mít problém, a pokud víte, že jej nelze vyřešit, to je perfektní. Ale co když to neuděláš? Můžete strávit spoustu času pokusem demonstrovat NP-Complete nebo pokusem najít řešení polynomiálního času k jeho vyřešení.

    Demonstrace NP-úplnosti není snadná. Ano, spousta problémů je známé, ale jde o to najít redukce, které by prokázaly, že je to NP-Complete. A co když strávíte spoustu hodin / dní / měsíců snahou to demonstrovat a bude to možné vyřešit v polynomiálním čase? 🙂

    Existují i další předměty, například překladače , Teorie skupin a Primitivní rekurzivní funkce , které mohou být jako tvrdé, jak chce plán předmětu nebo učitel;)

    Komentáře

    • s / Analisis / Analysis … jinak přesně to, co si myslím … primitivní rekurzivní funkce, uargh !!
    • Souhlasím, propletl jsem se svým bakalářským studiem a nikdy jsem si nebyl jistý, že jsem úspěšně ' dokázal

    cokoli (i když moje třída Algorithms byla kvůli profesorovi příliš jednoduchá)

  • v těchto dnech vám ukážu, jak těžké mohou být algoritmy 🙂
  • Odpověď

    Rozpoznávání vzorů tj Umělá inteligence. Týká se to inteligentního výpočtu spolu s dalšími nástroji pro rozpoznávání vzorů, jako je optické rozpoznávání znaků, hlas na text, identifikace obličeje atd.

    Mnoho z „skvělých“ věcí, které můžete udělat nebo si přejete udělat s počítači spoléhejte na tyto algoritmy a snažíme se je zdokonalovat po celá desetiletí bez velkého úspěchu.

    Komentáře

    • Je to ' těžké, protože ' to není něco, co ' s deterministické. Rozvoj dobrého rozpoznávání vzorů AI vyžaduje experimentování pro každou aplikaci, pro kterou jej chcete použít, aby bylo zajištěno, že vyberete správný algoritmus, správné funkce atd …
    • Právě začínám stoupat na tuto konkrétní horu (rozpoznávání vzorů). Je to ' těžké. Spousta matematiky. Skvělé, obrovské, zastrašující hromady matematiky, zírající zpět na mě a odvážné vstoupit.
    • no … rozpoznávání vzorů lze také považovat za aplikovanou statistiku, ' není jen problém v rozsahu CS

    odpověď

    Můj výběr je teorie vypočítatelnosti

    (Hmm … možná to není tak důležité, ale určitě to bylo obtížné)

    Komentáře

    • Souhlasím a osobně bych to zobecnil jako en.wikipedia.org/wiki/Theory_of_computation .
    • S ' souhlasím s tím, že teorie výpočtu byla tvrdá, ale byla také jedním z mých oblíbených předmětů. Přiznal jsem, že jsem se specializoval na matematiku. ..
    • +1 Také jsem zdvojnásobil svoji specializaci. Zvládl bych úvod k těmto věcem, ale postgraduální verze … jsem rád, že jsem to upustil!
    • bylo to těžké, ne víme o tom tolik, že na tom nezáleží ' hodně.

    Odpověď

    Existují pouze dva tvrdé problémy v informatice: zneplatnění mezipaměti a pojmenování věcí. – Phil Karlton

    Odpovědět

    teorie kategorií (diskrétní matematika), ale stojí za to

    Komentáře

    • Jaké konkrétní výhody jste získali z kategorie učení theory?
    • @zvrba: hlubší pochopení abstrakčních technik a mapování problémů
    • Odkud jste se to naučili?
    • @zvrba: Nemám ' Nevidím knihu na mé polici, je ' pravděpodobně stále uložena (přestavována), ale myslím, že to byla tato kniha amazon.com/Category-Computer-Scientists-Foundations-Computing/…

    Odpověď

    Kryptografie

    Pokud to uděláte jen trochu špatně, může to společnost stát miliony.

    Komentáře

    • Cryp je sice stále oblíbenější, ale to není ' t jedinečné pro software.
    • Crypto to není ' tak těžké. Problém je v tom, že ' zabezpečení nelze snadno otestovat, takže své chyby si všimnete, až když vás někdo hackne. Nedostatek testovatelnosti se však týká většiny forem zabezpečení IT, nejen kryptoměny.

    Odpověď

    Operační systémy, zejména ta část, která má co do činění s vláknami.

    A důvod to není, protože bylo tak těžké přimět 5 filozofů jíst pizzu vidličkou. Důvodem je to, že psaní vícevláknového kódu je uvnitř a v samo o sobě obtížné a pro lidskou (alespoň mužskou – podle mé manželky) mysli to nemusí být snadné spočítat.

    Komentáře

    • Nechte svoji ženu psát pak vícevláknový kód 🙂
    • Nezapomeňte, že pokud jde o multithreading se sdílenou pamětí, počítač je záludný svin, který vás dostane. Při jednání s vícejádrovým procesorem to může být dvojnásob; jedno jádro může být rozptylovat vás před očima, kde sledujete ' a ten druhý pak může jít za vás a bodnout vás do zad.

    Odpovědět

    Hlasuji také pro Návrh kompilátoru. Zvláště tam, kde vstupuje část DFA a NFA. Také nemám jasno v problémech NP a tak.

    Komentáře

    • Ano, já ' d jsem to měl s překladači těžší, kdybych nejdříve nebral ' teorii výpočtu.
    • DFA a NFA jsou kuřecí krmivo. Počkejte, až budete muset provést analýzu LALR (1).

    Odpovědět

    Teorie řazení

    Tedy technicky jde o obor matematiky, ale je v CS velmi relevantní.

    Téměř vše v CS je založeno na frontách (viditelné (zřejmé) a neviditelné (ne tak zjevné nebo implicitní)).

    V počátcích CS byly fronty zřejmé.
    Fronta programů (každý program obsahuje balíček karet).

    V dnešní době fronty nejsou tak zřejmé. Například internet: síť s přepínáním paketů, ale pakety tvoří fronty a směrování paketů je formou minimalizace front.

    Komentáře

    • Hej ! (?Jste (programátor Lispu)
    • Ne (tolik jako (One could (see), But (It has (been been known)). To Happen)).

    Odpověď

    Numerická analýza

    Na problémy s hračkami, které jste v kurzu uvedli, to není příliš těžké, ale jakmile začnete uvažovat o skutečných problémech, promění se to ve vážnou drinu.

    Odpověď

    Interpretace požadavků klienta , když klient opravdu neví, co chce. Toto se na vysoké škole nevyučuje a je to jedna z nejdůležitějších dovedností.

    Komentáře

    • I ' si nejsem jistý, zda s tímhle souhlasím jako s konceptem informatiky. Také don ' nevidíte, jak to lze vyřešit pomocí vědecké metody.
    • @ jmort253 – To je pravda, ale informatika se snaží (podle mého názoru neúspěšně) prozkoumat toto pole formálními metodami desig na validaci.
    • Souhlasím, že nejde o " počítačovou vědu " koncept – ale když jsem zahájil svou kariéru Nevěděl jsem / nevnímám skutečnost, že klienti ' nevědí, co chtějí. Myslel jsem, že VŠECHNY softwarové projekty přicházely s jakýmsi formálními požadavky doc. Možná téma přednášky pro kurz softwarového inženýrství (možná to moje škola ' nepokryla)?

    Odpověď

    Osobně můj byl Formální logika. Bylo těžké s tím začít, ale jakmile dostanete pravidla dolů a dokážete s nimi hrát dost, váš mozek se rozbije Logic++;, což je ve vývoji velmi dobrá věc.

    Jako vedlejší poznámku odpovídám přímo na otázku – rozhodně to nebyl nejtěžší předmět, když jsem absolvoval svůj titul, ale byl to pravděpodobně nejtěžší předmět „použitelný v reálném životě“.

    Komentáře

    • Formální logika je něco, s čím jsem měl vztah lásky a nenávisti. Líbilo se mi přemýšlet nad těmito koncepty, ale nikdy jsem nemohl pochopit, jak mi to pomohlo, až později, když jsem narazil na problémy v reálném světě, které vyžadovaly logické myšlení.
    • @ jmort253 – Bylo to pro mě stejné. Dokonce jsem se snažil natolik, že jsem si myslel, že to nezvládnu, studoval jsem tak dlouho a tvrdě, až mi to nakonec kliklo v hlavě. Poté byly výhody úžasné.

    Odpovědět

    Konstrukce kompilátoru. Je těžké pochopit koncepty, které stojí za nimi.

    Komentáře

    • Měli byste dát hlas pro stejnou odpověď, která byla poskytnuta před vámi, než znovu stejnou odpověď.

    Odpověď

    Jádro Navrhnout někoho? No, já opravdu nevím, jak se to dělá a jaké jsou cílené funkce pro OS, ale pro mě přemýšlet o návrhu jádra musí být skličující úkol.

    Také přemýšlím o zabezpečení počítače ; Opravdu nevím, co dělá systém nebezpečným, kromě samozřejmě přetečení vyrovnávací paměti, injekcí XSS a SQL.

    Nejsem si jistý, ale zdá se, že některé algoritmy jsou také nebezpečné; podívejte se na projekt MetaSploit, který uvádí všechny typy a druhy narušení zabezpečení: vidíte, že existuje mnoho způsobů, jak může být program chybný.

    Odpovědět

    V této oblasti je mnoho nepříjemných témat, ale moje volba pro naprosté přetrvávající potíže jsou ta, která zahrnují globální systémové vlastnosti . Mezi příklady tohoto obecného tématu patří:

    • Bezpečné a bez blokování multi-threading
    • Zabezpečení

    Je to těžké, protože vy “ znovu po něčem, co existuje, pouze když je vše v pořádku; potřebujete globální systémovou vlastnost a přesto prakticky všechny dostupné nástroje (a všechny ty, které podle mých zkušeností odpovídají skutečným problémům) pouze lokálně uvažují Je to proces přechodu od uvažování o částech programu k celému shebangu, který je tvrdý, zejména proto, že je zcela možné mít části, které jsou samy o sobě správné, ale kde stále existují jemné chyby, protože součásti jsou nesprávně uspořádány; chyby mohou být nežádoucími naléhavými charakteristikami…

    Odpověď

    Management Information Services Během vysokoškolského studia jsem měl každý semestr jeden předmět managementu, což mě úplně naštvalo.
    Tvrdý! předměty jako Návrh kompilátoru , Návrh OS atd. jsou těžké, ale jsou opravdu zajímavé a náročné.Opravdu jsem pokazil předměty jako Management Information System / Services atd., Protože jsou plné nudy a musíte projít spoustou teorie.

    Komentáře

    • Plná nudy, protože ' hovoří o koncepčních složitostech každého systému, zatímco polovina lidí nikdy sama nenapsala žádný systém (ale určitě používali různé). Seminář také používá tolik načtených slov, ale nedokáže poskytnout skutečný příklad v obyčejné angličtině. Stejně jako systémy na podporu rozhodování … nemůžete ' prostě pustit několik snímků obrazovky přehledů Google Analytics, FML, jen aby se studenti dostali na stejnou stránku, než se rozběhnete s intelektuálem orgasmus před publikem.

    Odpověď

    Pokud pracujete v jazyce C / C ++, jsou nejvíce ukazatele důležitý koncept vědět. Ale nějak jsem to na vysoké škole úplně nepochopil.

    Komentáře

    • opravdu? Myslím, že každý člověk je jiný, ale myslím, že existuje spousta (myslím, spousta ) témat těžších než jen ukazatele . Například Počítačová ' s architektura , Assambler , která nějakým způsobem souvisí s ukazateli ; )
    • Je to pravda, ale ' vám bude porozumění odkazování na paměť prostřednictvím assemblerů mnohem snazší, protože ve skutečnosti pracujete s raw ukazateli, zatímco v C / C ++ vaše práce s odkazy na ukazatele, což jen matou lidi, protože o abstrakci se nikdy výslovně nemluví.
    • Ah assambler, nejlepší programátor ' s čaj
    • Ten chlap se ptal na témata, která jsou obtížná, ale důležitá, proto ukazatele.
    • @Matt: Právě jsi mi udělal den: D @Manoj R: Ukazatele jsou triviální pokud si o nich myslíte jen jako o přístupu k poli. Nebo je přístup k poli obtížný?

    Odpovědět

    Návrh a analýza algoritmů. Není to tak moc, že je těžké porozumět a analyzovat známé algoritmy, je to tak těžké, že navrhování a analýza nových algoritmů pro řešení závažných problémů je obtížné a vyžaduje široké pochopení mnoha oblastí a praxe při použití mnoha různých technik.

    Odpověď

    Programování omezení. který se zabývá kombinatorickými problémy, NP-úplnými problémy.

    Odpověď

    Optimalizace Algoritmus je náročným tématem.

    Odpověď

    Který nejobtížnější předmět / teorie CS, který jste studovali, ale který je pro tento obor důležitý?

    Diskrétní matematika.

    Bylo to obtížné, protože teorie na sebe navzájem velmi volně navazují, ale v CS se znovu používají. Myslím, že příliš mnoho zapamatování …

    Důkaz indukcí, Big O, rekurze, dělení a konquure, teorie grafů, bla bla .. argh!

    Kompilátor pro mě byl snadný, protože jsme museli vzít Teorii automatů. ^^

    Odpověď

    Z notace / formální metody používané ke zranění mého mozku na vysoké škole. Hlavně proto, že jsem to nenáviděl. Tvrdé je mnohem snazší, když vás baví to, co děláte, a mnohem těžší, když ne.

    Odpověď

    Líbí se mi vaše odpovědi (a nezapomněl jsem je hlasovat), jako kompilátor, jádro atd., ale většina programátorů se s těmito problémy nikdy nesetkala. Existuje trochu jednodušší, ale častější problém: souběžnost – vlákna, zamykání. Je velmi snadné napsat program, který produkuje magické chyby, pokud uděláme i malou chybu v architektuře souběžnosti.

    Takže, říkám, není to nejtěžší problém ve výpočetní technice, ale protože běžně se používá, je nebezpečný.

    Odpověď

    Objektově orientované programování

    Je to pravděpodobně proto, že jsem si přerušil zuby na FORTRAN a APL, ale posun od přísně procedurálních jazyků k objektům byl něco, co „bojoval jsem s ním roky. Nepomáhá to, aby takzvaní „odborníci“ psali protichůdné články a návody, co to znamená být objektově orientovaný a nejlepší / správné způsoby konstrukce objektově orientovaných programů.

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *