it-swarm-eu.dev

Stále nemůžu přijít na to, jak programovat?

Četl jsem spoustu knih pro různé programovací jazyky, Java, Python, C atd. Rozumím a znám všechny základy jazyků a rozumím algoritmům a datovým strukturám. (Ekvivalent dvouletých lekcí informatiky)

Ale stále nemůžu přijít na to, jak napsat program, který udělá cokoli užitečného.

Všechny programovací knihy vám ukážou, jak psát jazyk, ale NENÍ to, jak jej používat! Příklady programování jsou všechny velmi základní, jako například sestavení katalogu karet pro knihovnu nebo jednoduchou hru nebo použití algoritmů atd. Nezobrazují vám, jak vyvinout komplexní programy, které ve skutečnosti dělají něco užitečného!

Díval jsem se na open-source programy na SourceForge , ale nedávají mi moc smysl. V každém programu jsou stovky souborů a tisíce řádků kódu. Ale jak se naučím, jak to udělat? V žádné knize, kterou si mohu koupit na Amazonu, není nic, co by mi dalo nástroje k psaní těchto programů.

Jak postupujete od čtení Úvod do Java nebo Programovací Python nebo Programovací jazyk C atd.), Abych skutečně řekl, že mám nápad na program X? o jeho vývoji?

Vypadá to, že do psaní programu je zapojeno mnohem více, než se můžete naučit v knize nebo ve třídě. Mám pocit, že něco existuje.

Jak mohu být na správné cestě?

122
Mark K.

Vytváření složitějších programů přichází se zkušenostmi. Když jsem poprvé programoval, myslel jsem si, že se vede dobře, pokud to bylo více než 25 řádků (a musel jsem použít posuvník). Nyní píšu stovky řádků denně po celá léta na stejnou projektovou aplikaci.

Možná vás tato stránka zaujme „Naučte se programovat za deset let“ http://norvig.com/21-days.html

BTW: Je velmi těžké spustit program. Spisovatel by to mohl nazvat „blok spisovatelů“. Místo toho doporučuji začít psát kód a vylepšovat ho. Nebojte se mazat velké sekce, které nedělají to, co potřebujete. Začněte znovu, tentokrát budete psát s lepší představou o tom, co děláte. Začněte znovu a zjistíte, že jste nepotřebovali polovinu věcí, které jste napsali naposledy. Když autor píše příběh, trvá to dlouho, hodně psaní a přepisování atd. Spousta recenzí a zpětné vazby a jeho konec je dokončen pouze tehdy, když musí být publikován (vydán)

93
Peter Lawrey

Vždycky mě ohromily i velké projekty, jako ty, které najdete na SourceForge nebo GitHub. Zajímalo by mě, jak kdokoli, nebo dokonce tým, mohl pochopit, co se dělo na 10 nebo 100 souborech, s tisíci a tisíci řádků kódu.

Nikdo to nedělá. Alespoň zpočátku.

Projekty jsou organické věci. To, co začíná jako opravdu jednoduchý nápad, se může rychle rozšířit na obrovské dílo. To je, myslím, hlavní důvod pro iterační vývoj namísto klasického přístupu k vodopádům.

Myslete na stavbu auta. I když to vypadá zvnějšku velmi jednoduše, ponoříte se i do malé cesty, abyste zjistili, že existuje velké množství úvah, kompromisů a nevinných případů, které je třeba řešit.

Příklad:

V případě částečně velkého projektu často začíná malý. Msgstr "Chci vytvořit cache server". Takže strávíte pár dní hackováním a dostanete se k něčemu, co funguje, ale mohlo by se dramaticky zlepšit. Takže přidáte koncept závitování.

Poté se díky tomuto vláknění setkáte s problémy souběžnosti. Opravíte to změnou na souběžné datové struktury.

Nyní se proces zpomalil. Takže změníte souběžné datové struktury na běžné, ale zajistíte blokovací mechanismy pro synchronizaci.

Zdá se, že vše funguje dobře, kromě toho, že uživatelé si stěžují, že operace nejsou atomové a data jsou poškozena.

Přidáte tedy některé klasické atomové operace, jako je přírůstek a uložení. Funguje to a vaši uživatelé jsou šťastní. Ale někdo otevře lístek s dotazem, zda je možné provádět operace se seznamem.

Takže strávíte týden nebo dvě budovy, ve kterých je funkce. V tuto chvíli se přítel rozhodne pomoci. Pracujete na tom společně, dokončíte jej a uvolníte.

Otevřené jsou dvě vstupenky. Ve zpracování seznamu je chyba a vyskytují se vzácné případy, které zablokovaly.

Váš přítel pracuje na chybě při zpracování seznamu, zatímco vy řešíte zablokování. Uvědomujete si, že musí dojít k poměrně významnému přepisu do atomových operací.

... a tak to chodí.

To se zdá docela typické pro to, jak projekt roste. Přibližně 10 souborů se za několik týdnů rozrostlo na 20. Přidány jsou nové funkce, které nebyly kromě původního plánu. Přidány jsou opravy chyb, které způsobují nepřirozeně velký kód.

Moje rada:

Nenechte se ohromeni. Pokud máte nápad, implementujte části funkcí. Pokud to stojí za to pokračovat, přidejte kousek po kousku. Nechte svůj projekt růst přirozeně.

70
Josh Smeaton

I největší program začíná nápadem a je psán vždy po jednom řádku.

Nejlepší (snad jediný) způsob, jak se naučit psát skutečné programy, je začít to dělat. Když narazíte na problémy, prohledáte web nebo zde požádáte o řešení těchto problémů. Nakonec získáte zkušenosti a budete se muset ptát méně často.

Hned od začátku byste si však měli být vědomi několika věcí:

  • Sotva žádná velká aplikace je psána kompletně od nuly v těchto dnech. Pokud používáte existující vysoce kvalitní knihovny a rámce, můžete udělat mnohem více za mnohem kratší dobu. Začínáme s těmito často cítí docela frustrující a více práce než dělat sami, ale to téměř nikdy není pravda.
  • Jakmile se programy zvětšují, je velmi důležité pečlivě přemýšlet o tom, jak strukturujete svůj program (jak jej navrhnout). Trávit nějaký čas na to, a číst některé knihy o designu (já bych zvláště doporučil "Clean Code") a softwarového inženýrství, stejně jako o technické základy.
28
Michael Borgwardt

To, o čem mluvíte, je více softwarové inženýrství než programování. Je to trochu architektura, trochu „osvědčené postupy“ a „návrhové vzory“, trochu spolupráce s ostatními. I když existují knihy, které mohou pomoci, většina z nich pochází ze zkušeností. Nikdo začíná psaní, řekněme, Microsoft Word.

Přemýšlejte o velkém „skutečném“ programu, který byste chtěli napsat. Nyní přemýšlejte o různých kusech, které musíte postavit, aby to fungovalo tak, jak chcete. Například v moderní hře pro první osobu budete potřebovat 3D grafický engine, AI nepocházející z hráčů, hudební/zvukový modul, fyzikální engine a modul nejvyšší úrovně, který prosazuje pravidla hry (ví „mapa“, jak interagují různé postavy atd.). A pak je zde umělecká díla a design postavy a hudba, z nichž žádná není kódem, ale která je nezbytná pro dokončení hry.

Nyní: Který z nich si vybudujete a který se dostanete jinde? Většina velkých softwarových projektů není naprogramována od nuly. Možná budete používat off-the-shelf 3D engine a hudební/zvukový modul a programovat pouze věci, které dělají vaši hru jedinečnou. Dobře, takže musíte zjistit, jaké moduly třetích stran budete používat, které budou zahrnovat faktory, jako jsou náklady, jaké jazyky pracují, jaké funkce mají, jak je navrženo jejich API (tj. Jak je dokončeno) je, jak dobře zapadá do vašeho osobního programovacího stylu atd.). Možná budete psát „důkazy konceptu“ nebo testovat programy pomocí jednoho nebo dvou kandidátů na různé moduly třetích stran, abyste se ujistili, že budou dělat všechny věci, které potřebujete, a že je pro vás snadné použít.

Také i kód, který chcete napsat, může být pro vás samotného příliš velký úkol, než aby jste ho dokončili v časovém rámci, který máte na mysli. Kolik dalších programátorů potřebujete na projektu pracovat? Jak rozdělíte práci? Jak budou různé moduly navrženy tak, aby se všechny shodovaly, i když byly napsány různými lidmi? Jak budete všichni pracovat na stejném zdrojovém kódu, aniž byste si navzájem vymazávali změny (odpověď: řízení verzí, což je velmi užitečné, pokud pracujete samostatně, ale při práci s ostatními je to nezbytné).

Jakmile zjistíte, jaké moduly chcete psát interně, provedete stejný postup. Naučte se kousky každého modulu, jak by se měly do sebe zapadat a které budete psát sami a které se dostanete jinde. Pokračujte v rozbíjení věcí, dokud nebude každý kus dostatečně malý, abyste ho drželi ve své mysli, abyste řekli: „Jo, mohl bych to napsat!“ A pak to udělejte. Jak to děláte, narazíte na nepředvídané překážky v tom, jak různé části vašeho programu zapadají do sebe. Bude to frustrující, ale jsou to příležitosti, abyste se dozvěděli více o svém řemesle, a měli byste se na něj dívat tímto způsobem.

Zpočátku budete moci držet jen velmi malé kousky svého programu - řekněme, jednotlivé funkce - ve své mysli, a tak budete muset věci rozebrat hodně, než začnete kódování. Jak získáte zkušenost, budete myslet spíše in funkce, než abyste museli myslet about funkce a začít myslet about objects. A pak budete myslet v objekty a myslet asi větší moduly. Nakonec budete myslet in moduly a myslet about celé, velké, skutečné programy.

A pak zjistíte, že se stále musíte hodně učit ... ale tak to jde. Pokud se jako programátor přestanete učit, jste zastaralí a budete nahrazeni novějším modelem.

Nebojte se a nebojte se, pokud to zní ... hrozné nebo nemožné a po tom všem opravdu nechcete být programátorem. Není to pro každého. Miluji hudbu a dezerty a umím trochu hrát na klávesy a uvařit nějaké pokrmy, ale nejsem ochotný dát čas potřebným k tomu, abych se stal skvělým hudebníkem nebo mistrovským šéfkuchařem.

Pokud se ukáže, že nechcete být programátorem, který by psal velké, skutečné, stolní aplikace, existují i ​​jiné typy programovacích úloh. Můžete se například stát vestavěným programátorem. Při psaní vestavěných programů existují určité, zajímavé výzvy a vy děláte užitečnou práci, ale obvykle jsou programy spíše menší než desktopové aplikace. Nebo můžete napsat webové aplikace. Na webu je snadné slepit malé kousky funkčnosti dohromady, takže můžete napsat (např.) Webový komentářový systém a bylo by užitečné, i kdyby to nebyla celá webová aplikace. Je také snadné postupně vylepšovat obsah na webu, takže můžete začít (řekněme) se základním webovým poštovním klientem a postupem času jej vyvinout na něco jako Gmail. (Ale nedělejte to, protože pak budete soutěžit s Gmailem.)

Pokud nechcete být vůbec programátorem, ale přesto chcete pracovat s počítači, možná byste mohli jít do oblasti IT nebo do jiné technické oblasti. V těchto případech je velmi užitečné znát tolik programování, jaké již máte, protože vaši kolegové to ani nemusí mít. Nebo, jak víte, staňte se hudebníkem, pokud se to líbí, protože (jako většina polí) dnes zahrnuje počítače. Napište malé programy, které manipulují se zvukem nebo MIDI soubory různými chytrými způsoby, čímž se z vás stává lepší hudebník. Zjistíte, že jakékoli programovací dovednosti, které máte, lze použít v mnoha oblastech, aby vás dosáhly lépe ve vaší práci.

15
kindall

Nebudete přijít na to, jak programovat, pokud nebudete čelit skutečnému úkolu. Žádná teorie by nikdy nenahradila jednoduchý úkol v reálném světě. Než jsem začal pracovat na scénářích r-w, naivně jsem četl spoustu knih se všemi příklady, ale když jsem čelil skutečnému problému, nemohl jsem shromáždit všechny své teoretické znalosti k dokončení úkolu. Pokud jste startér, doporučuji vám, abyste si úkoly nechali odkudkoli. Nemyslete si, že jsou k ničemu, pokud jste je nevyřešili. Jako první krok zkuste vyřešit problémy se strukturou dat, jako je třídění propojeného seznamu, provádění DFS, BFS na stromech, grafech atd. Nejenže to zlepší vaše kódovací schopnosti, ale co je důležitější, zlepší to vaše analytické a algo dovednosti , které mi věří, jsou cenné znalosti. Poté, když budete vědět, že můžete houpat s ukazateli, rekurzí, odkazy atd., Zkuste implementovat jednoduchý řešič lineárních rovnic nebo něco takového.

Sečteno a podtrženo. Je to všechno o praxi. Jen mějte kopání a kód, kód, kód.

9
Sorantis

Začněte s počítačovými hrami jako všichni ostatní. Dobrá hra je výzvou pro programování i design, vyžaduje pečlivé přemýšlení o vnitřní struktuře a používá systémové knihovny způsobem, který hodně učí, ale nemá tendenci zlomit věci a nevyžaduje „dobrý důvod s dobrým výsledkem“. jako skutečný „užitečný“ software.

Obecným pravidlem je, že po napsání dost věcí se nevyhnutelně stane nějaký druh osvícení.

Hezký začátek (pokud se cítíte jako C) je http://gamedev.net/ , zejména http://nehe.gamedev.net/ . Existuje také mnoho dalších dobrých bodů: D

7
Mirek Kratochvil

Stejně jako řízení nebo vaření, programování je něco, co se naučíte dělat. Praxe je nenahraditelná.

Pokud jsou příklady učebnic pro vás již příliš základní, je to skvělé! Je čas přestěhovat se do něčeho složitějšího - a už si můžete procvičit náročná cvičení.

Nebo, pokud máte na mysli konkrétní nápad, rozdělte jej na kousky. Nejprve vyřešte malou podmnožinu problému. Poté rozbalte. Když bude integrace nového kódu do vašeho stávajícího kódu obtížná, pak všechno upravíte.

6
Emilio M Bumachar

Díváte se na celý obrovský program a zdá se to nemožné. Ale celá věc je tvořena malými hloupými programy, jako jsou ty, které říkáte „nedělejte nic užitečného“.

Potřebujete zkušenosti s rozdělením obrovských složitých úkolů na malé jednoduché úkoly. To je kořen veškerého programování. Zbytek je jen sémantika.

6
Satanicpuppy

Napište 200 řádkový skript. Pak to začněte vylepšovat.

Featuritis vás dostane ven na 100 zdrojových souborů a několik set KLOC v žádném okamžiku :)

5
richo

"Neukazují vám, jak vyvinout komplexní programy, které ve skutečnosti dělají něco užitečného!"

Bez definice „užitečné“ není toho moc, co bychom mohli udělat, abychom vás dostali na „správnou“ stopu.

Nevíme, jak se vám daří, nebo co se děje. Nemůžeme říct, na jaké trase jste.

Nějak máte v hlavě představu, že nekomunikujete.

Software - programování - je jen o tom, jak z vaší hlavy vymyslet nějaký jazyk (Python, Java, angličtina, cokoli).

Jedním z důležitých kroků v programování (a kladení otázek) je definování vašich podmínek. Co myslíš tím „udělat něco užitečného“? Být velmi jasný, velmi úplný a velmi přesný.

5
S.Lott

Tuto otázku jsem dostal pokaždé, např. jak začít. Je to opravdu jednoduché. Zde je krok za krokem.

  1. Pojď s nápadem. Zní to, jako byste to už měli.
  2. Zjednodušte svůj nápad na jeho základní jádro - něco, co si myslíte, že byste mohli zvládnout
  3. UI rozložte na kus papíru nebo ubrousku, cokoli.
  4. Zkuste a rozvrhněte uživatelské rozhraní ve vývojovém prostředí.
  5. Pokud narazíte na potíže, google, google, google, zeptejte se na stackoverflow, získejte pomoc pomocí živého kecy z internetových zdrojů. Požádejte přátele a spolupracovníky, kteří jsou programátory, aby vám pomohli s konkrétními situacemi. Vraťte se ke kroku 4.
  6. Začněte psát logiku vaší aplikace. Pokud narazíte na potíže, přejděte na předchozí krok a akci opakujte.
  7. Brzy budete mít brzy něco funkční.
5
AngryHacker

Vytvořte něco malého. Nevadí, že váš program bude 1000. tím.

Několik nápadů:

  • hodiny (nejprve digitální, pak analogový),
  • automatický tvůrce labirynthu,
  • prohlížeč struktury adresářů,
  • seznam alb mp3,
  • atd.

Výběr platformy, nástroje jsou součástí úkolu.

4
ern0

Dobře, pojďme začít s tvým nápadem na program X, který udělá něco užitečného a rozebíráme to:

  • K rozložení logického toku/toků programu použijte papír, mapování mysli nebo diagramy.

  • Protože právě začínáte, vyberte JEDEN z těchto položek (nejlépe na začátku) a rozdělte je ještě dále.

  • Nejprve do toho napiš svůj kód a buduj na něm

Musí program X otevřít soubor, manipulovat s ním a vytvořit výstupní soubor? Podívejte se, zda můžete soubor otevřít a poslat echo jako první krok. Chcete uživatelské rozhraní Nice? Postavte ten, který může spouštět váš souborový echo program, atd. Nebudete jen budovat kód, který můžete použít ve složitém programu krok za krokem, ale budete také budovat své jazykové znalosti, protože musíte vyhledávat a vyhledávat informace.

Jak se říká - Gnome nebyl postaven za den :-)

3
DKnight

(odpověděl výše v komentářích již. Navrhlo se to předložit jako odpověď po opětovném otevření otázky.)

Začnete s problémem - něčím, co chcete vyřešit - bez ohledu na to, jak složité si myslíte, že je. Pak si vezmete tento problém a zapíšete si jej a začnete rozdělit na menší problémy. Poté rozložíte tyto menší problémy atd., Dokud nebudete mít něco primitivního, že už víte, jak to vyřešit, nebo to dokážete s určitým úsilím. Začnete kódovat každou z těchto skladeb a uspořádat je do různých funkcí nebo různých tříd atd.

Poté pracujete na dalším dílčím problému. Když pracujete na každém problému, můžete psát malé testovací případy a skutečně vidět, jak postupujete k uskutečnění. Na cestě budou vždy výzvy, ale v žádném okamžiku to neuvidí jako něco příliš kolosálního na to, aby se vyrovnal (to, co se nyní zdá být). To platí pro programování a mnoho životních výzev. Klíčem je to rozbít.

Co dělat - nápad. Můžete se pokusit vymyslet něco nového, ale můžete si také vzít něco, pro co byste mohli mít vášeň a již existuje, ale jen to vylepšte, nebo jen změňte. Momentálně píšu aplikaci pro kytarový tuner pro Android ve svém volném čase. Vím, že již existuje mnoho dalších aplikací pro kytarový tuner, ale myslel jsem si, že by to byl zábavný a náročný projekt, tak jsem vzal Zpočátku se to zdálo téměř nemožné, ale poté, co jsem problém rozdělil na menší kroky, se to vlastně dobře spojilo. Rozdělte a podmante si a vytrvejte ve svých cílech.

3
jeffp

Jednou z nejobtížnějších věcí, kterou musíte udělat, když jste začátečník, je stanovení realistických cílů toho, co by cvičení, které mohu zlepšit, mělo obsahovat na vaší současné úrovni.

Proto bych navrhl, abyste se rozhodli procvičovat řešení malých, daných cvičení, protože schopnost dokončit program podle dané specifikace je velmi cenná pro každého, kdo programuje život.

Navrhuji, abyste se blíže podívali na http://projecteuler.net/ , který má spoustu cvičení a automatizovaný systém „check answer“, který vám umožní pracovat vlastním tempem. Cvičení jsou dobře formulována, ale mohou vyžadovat, abyste přemýšleli. Někteří mohou dokonce vyžadovat, abyste hodně přemýšleli, ale i když je nevyřešíte, naučí vás něco užitečného.

Úplné znění problému 1 je:

Pokud uvedeme všechna přirozená čísla pod 10, která jsou násobky 3 nebo 5, dostaneme 3, 5, 6 a 9. Součet těchto násobků je 23.

Najděte součet všech násobků 3 nebo 5 pod 1000.

Myslíte si, že byste to mohli vyřešit? Tak to udělej!

3
user1249

Potřebujete zážitek ze skutečného světa !!. Žádná kniha vás to nemůže naučit!

Musíte se naučit, jak číst ostatní kódy, jak je udržovat, jak je nenávidět (kód i kodér), jak je vylepšit, jak si myslet, že to dokážete lépe a o několik měsíců později křičí nahlas - Zabiju toho, kdo kdy napsal tyto kousky kódu !!! Pouze abych zjistil v ovládání zdrojové verze, byl jsi to ty!

Musíte pochopit, že knihy jsou velmi specifické a někdy pro lidi, kteří již vědí, jak vyvíjet software.

Takže bych vám navrhl najít nějakou programovací práci. V případě potřeby požádejte o nejzákladnější vstupní úroveň. Pravděpodobně nebudete vydělávat tolik, kolik si myslíte, že si zasloužíte, ale použijte několik měsíců k tomu, abyste zjistili, jak je software vyvíjen v reálném světě (a není vždy tak dokonalý a se všemi těmi krásnými osvědčenými postupy, které čteme na webu) , mnohokrát je kvalita kódu velmi nízká, v závislosti na tom, kde pracujete, ale to je část zkušeností)

Pokračujte ve čtení knih, zjistíte, že každý rok rozumíte trochu více (nebo jinak) stejnému tématu, protože to můžete vidět díky sklenici zkušeností.

Pokud se vám podaří získat práci s talentovanými vývojáři, mnohem lépe. Učte se od nich, nebojte se dělat chyby.

Dokud nebudete muset opravit první naléhavou chybu v živé produkci, nebudete vědět, jaká je chyba softwaru!

:)

3
OscarRyz

Za prvé, již děláte předpoklady tím, že si vezmete třídy, přečtete referenční materiály, podíváte se na open source projekty a zůstanete zvědaví na otázky. Zdůrazňuji to proto, že jsem se osobně setkal s podobnými otázkami předtím, než osoba provedla jakoukoli práci na noze z jejich strany (konkrétně jednotlivci obcházející třídy a doufali, že si vezmou zkratky). Teď si myslím, že když jsme měli laboratoře o Turingových strojích a jak jsem tehdy cítil, že to není skutečné programování. To jsou zážitky, které budete mít, že kdokoli, kdo si vezme zkratky, přeskakuje.

  • Registrace na studentské projekty. Zapojil jsem se do skupiny (CSUA) skupiny podobně smýšlejících studentů, abych vytvořil hru pro karnevalový stánek můj starší rok. Pokud si to budete i nadále užívat a myslíte si, že chcete rozšířit svou angažovanost, opravdu využijte zdroje. Zjistěte více o projektech, promluvte si se svými spolužáky, profesory a přistupte na stáž.

  • Posaďte se zkušeným programátorem. V mé historii bylo asi třikrát, když jsem sledoval program jiné osoby, který byl opravdu inspirativní. Pro ně jen psali kód a hlasitě přemýšleli. Žádné nadsázky, cítil jsem se, jako bych se pohltil víc, než jsem je poslouchal. Pokud se setkáte více, jste mnohem bohatší. Máme štěstí, že jsme ve věku, kdy můžeme sledovat videa, prohlížet kompletní zdrojové úložiště a okamžitě vyhledat obrovský internetový obchod znalostí. Není to náhrada osobní zkušenosti, ale v případě neexistence mentora je to dramatické zlepšení oproti tradičnímu materiálu. Samotné prohlížení surového kódu však nemusí k ničemu vést. Budete chtít mít na mysli něco a dobrého debuggeru, který vstoupí do logiky. Jedním z mých nejkrásnějších okamžiků bylo vytvoření Quake modu a nebyl to samotný mod, který měl něco nezapomenutelného. Viděl Carmackovu logiku ve hře. Mod byl jen důvod, proč jsem se mohl ponořit.

  • Procvičte si vysvětlení a zodpovězení otázek položených vaším laboratorním partnerem. Dobrovolník, který pomůže s výukou. Možná vytvoří studijní skupinu a vyžaduje, aby se každý člen stal odborníkem na téma třídy. Pak grilovejte tu osobu a nechte je grilovat. Pokud jste nuceni odpovídat na otázky, jste povinni se učit odpovědi sami. Když můžete vysvětlit pojmy jasně ostatním, obohatili jste své vlastní porozumění do té míry, že jste schopni sdělit to mimo knihu a své myšlenky.

  • Poslední, nebojte se učit tvrdým způsobem , znečišťujte si ruce, dělejte chyby. To lze také nazvat zážitkem. Praktičtější příklad s ohledem na vaši otázku o projektech s těžkopádnou kódovou základnou a velkým počtem souborů, proveďte toto cvičení: použijte pro svou práci jediný soubor. Opravdu si nedělám legraci. Tato stejná otázka se ve skutečnosti objevila v mé současné i předchozí společnosti. Zde další vývojář poznamenal, že dávám přednost uchování jednoho souboru pro každou třídu. Zdálo se mu to cizí a v souvislosti s tím také neměl rád dílčí třídy. Jedním ze způsobů, jak zjistit, kdy nebo kde je vhodné rozdělit logiku na samostatné soubory, by tedy bylo začít s jediným souborem. Poté, co jste praktikovali pravidlo jednoho souboru na více projektech, doufejme, že se zvyšuje složitost, můžete narazit na projekt, ve kterém máte tolik tříd v jednom souboru, pro které je obtížné číst, nebo kvůli řízení verzí je obtížné spolupracovat. V tomto okamžiku chcete vytvořit samostatné soubory pro seskupení různých tříd. Podle vašich preferencí se můžete brzy rozhodnout, že se vám budou líbit všechny třídy dat v jednom souboru. Potom znovu možná později se můžete rozhodnout, že máte rádi samostatné soubory i mezi datovými třídami jako skupina.

2
patterns

Rozděl a panuj.

Je to tak jednoduché nebo těžké.

2
ocodo

Vyzkoušejte projekt s otevřeným zdrojovým kódem, zjistěte, zda se do něj vejde. Začněte stažením zdroje a zjistěte, zda si můžete vyzvednout nějaké lístky

2
Martijn

Když se chci naučit nový jazyk, obvykle se snažím implementovat nějaký fraktální graf. Tímto způsobem budete mít okamžitou zpětnou vazbu, pokud to funguje a je to velmi prospěšné. A existuje spousta způsobů, jak fraktál vylepšit. Naivní implementace mandelbrotu je pomalá jako peklo.

Není to moc užitečné, ale hodně se naučíte a je krásné se na ni podívat.

2
onemasse

Když jsem začal programovat, miloval jsem počítačové hry. Začal jsem tedy psát vlastní hry, jakmile jsem měl k dispozici nějaké nástroje.

Moje první hra byla zcela přirozeně textovým dobrodružstvím. Podobně můžete začít s kvízem nebo něčím, nebo s nějakým hádáním.

Také byste mohli začít s něčím, jako je hrací automat (opravdu nepotřebujete animace nebo dokonce obrázky. Stačí použít A = Apple, L = citron, S = start, P = Švestka atd.).

Naučí vás základy manipulace s některými vstupy uživatelů, udržování stavu hry a odpovídajícím způsobem generování výstupu.

Dostal jsem se touto cestou docela daleko. Postupně jsem se naučil, jak číst stav klávesnice nebo myši, jak používat grafický kód. Dozvěděl jsem se více o samotném jazyce (začal jsem s Pascalem) a použil jsem to k vylepšení mých stávajících her nebo právě začal něco nového.

Myslím, že hry se opravdu skvěle učily programovat. I s malými zkušenostmi můžete vytvářet malé věci, které vám dávají malé okamžiky hrdosti. Protože něco vytvoříte, je to zábava. Vytváření skutečných aplikací je zcela zbytečné, protože vytvoření něčeho, co je skutečně užitečné, vyžaduje hodně práce, zatímco je překvapivě jednoduché vytvořit malou hru, která se ukáže návykovou.

Možná budete chtít použít vzdělávací jazyk (v mém případě to byl Pascal a v retrospektivě si myslím, že to byla docela dobrá volba). Mnoho z nich je konkrétně zaměřeno na vytváření her apod.

Vytváření aplikací je víc než jen vytváření algoritmů. Musíte navrhnout funkce, musíte organizovat a strukturovat svůj kód do různých vrstev a modulů. Na rozdíl od poněkud „atomových“ problémů, které máte na univerzitě, jsou aplikace někdy nejlépe vyvinuty inkrementálním způsobem. Začnete s něčím a přidáte na to věci. Takže už s něčím, co začíná (jako v některých jazycích uvedených v článku wikipedie), ušetříte spoustu frustrace a začnete hned něco vytvářet. (Můj kolega začal programovat psáním zemětřesení 2 modů). V určitém okamžiku zjistíte omezení těchto snadno použitelných nástrojů, ale do té doby budete mít mnohem lepší přehled a porozumění. Pravděpodobně dost na doplnění funkcí, které vám dali, abyste mohli začít sami.

2
back2dos

Programování se týká řešení problémů a komunikace, ne psaní velkého množství kódu. Kód je jen nutností, obvykle byste se měli snažit psát méně kódu, ne víc.

Pokud nevíte, kde začít, možná nemáte žádné problémy!

Podívejte se na Linux a další unixové systémy: všechny se skládají z mnoha malých aplikací, které dělají pouze jednu věc, ale dobře .

Když jsem potřeboval skript, abych našel 10 největších souborů ve složce v počítači, nečetl jsem knihy. Jen jsem googlil a použil jedno z existujících řešení. Napsal jsem nějaký kód? - Ne. Je problém vyřešen? - Ano. Je tento jednořádkový program užitečný? - Sakra ano.

Programy s tisíci řádků kódu jsou obvykle psány více než jedním programátorem. Nebudete moci psát celé operační systémy sám a nemusíte. Často také používají cheaty jako kontrola verzí a testování jednotek .

2
kolobos

Na vysoké škole byla třída zvaná programovací praktikum, která tuto rampu v podstatě učila. Brzy jste dostali uživatelské rozhraní pro základní nákupní aplikaci a museli jste kódovat backend, poslední měsíc byl Tetris od nuly. Myslím, že asi 50% nových studentů (ne opakování třídy) selhalo, protože rampování od malých po velké je neuvěřitelně obtížné.

Navrhl bych jeden nebo více z následujících:

  • Stáhněte si open source projekt a něco přidejte. Nemusí to být užitečné nebo dobré, ale musíte se podívat na strukturu, která vám dá pocit, jak velký projekt je postaven.

  • Stačí jen navrhnout svůj konečný projekt na papíře se šipkami pro závislosti. Pokud děláte hada, můžete mít Hadí hlavu, ocas hada, jídlo, prázdné místo, zeď, desku, aktuální směr atd. Může vám pomoci uvědomit si, že váš projekt je mnohem větší, než si myslíte.

  • Vezměte základní projekt a zvětšete ho. Pravděpodobně budete dělat hodně refactoring, a doufejme, že se naučíte, jak vytvořit menší projekty, které lze snadno přidat.

  • Pokud víte, že někdo zažil, řekněte jim svůj nápad na projekt a nechte je psát své třídy + některé důležité metody, pravděpodobně by to trvalo asi hodinu. Tímto způsobem můžete tyto metody jednoduše vyplnit a vždy vědět, co musíte udělat dál.

A konečně, ať už děláte cokoli, měli byste pravděpodobně použít základní návrhový vzor MVC (Model, View, Controller). Aniž byste šli do podrobností, vložte svůj pohled (UI) do 1+ tříd, váš řadič (vstup, výstup atd.) Do 1+ tříd a váš model (logika, data, v podstatě všechno ostatní) do několika tříd. Je to snadný způsob, jak získat základní organizaci.

Pamatujte, že tento krok je těžký. Je pravda, že někteří lidé prostě nemohou programovat, ale v této fázi jste pravděpodobně jen zaseknutí. Hodně štěstí!

2
Mark

Zkuste vymyslet nejmenší program, který chcete, a kódujte ho. Ještě jednoho dne jsem napsal kód, který automaticky stáhl každý soubor ze seznamu souborů. To byla vlastně snadná část. Hodina byla většinou věnována tvorbě grafického uživatelského rozhraní, jeho načtení a uložení nastavení a podobných malých jednoduchých věcí. GUI je časové vakuum.

Také doporučuji používat jazyk s rozsáhlou knihovnou (nezáleží na tom, zda je přenosný nebo ne). A staticky kompilovaný jazyk, pokud začínáte (což znamená ne Ruby , Python nebo JavaScript). Líbí se mi .NET používající C # jazyk. Můžete zkusit Boo s SharpDevelop nebo použít C # nebo VB.NET pomocí Visual Studio Express . Líbí se mi Visual Studio, protože jsem mocný uživatel a používám věci jako Ctrl + -, Ctrl + [ Ctrl + ',' . Ale cokoli s breakpoints a callstack je dobré. Jediný důvod, proč můžu obstát v ladění kódu JavaScript, je ten, že Firebug je má (spolu s okamžitým oknem a hodinkami).

1
user2528

V nějaké hře ZX Spectrum jsem příliš zemřel, takže jediným způsobem bylo přidat další životy. Měl jsem knihu, která popisovala, jaký kód a kde se musím změnit, takže to bylo docela snadné. Pak jsem našel, jak přidat munici (bohužel hra bude zbytečná poté).

Takže z mého pohledu je nejlepším způsobem, jak se učit - dosáhnout malých a snadných cílů. Pro mě to byla úprava existujícího kódu. Pokud jste spokojeni s každým programem, který potkáte, možná není programování pro vás?

1

Myslím, že váš problém pochází z: 1. konfliktu, který existuje mezi teorií a praxí, a také, že ... 2. ... musíte si uvědomit, že váš kód bude spuštěn jiným kódem. 3. nemůžete něco kódovat, pokud nemáte představu o tom, co byste mohli udělat. 4. Znáte polovinu obtížnosti

  1. Znalost jazyka teoreticky neznamená, že to „mluvíte“: to je rozdíl mezi čtením angličtiny a mluvením. Také velké množství různých nástrojů dostupných pro kompilaci, propojení, úpravu zdrojového kódu způsobí, že se vám točí hlava.

  2. při učení, jak programovat, nejvíce pokud je terminál používán pro vstup/výstup textu, protože to je nejjednodušší způsob, jak se vypořádat s programováním. Ve skutečnosti programátoři využívají knihovny (jako Qt), frameworks (myslím Django) a další zkratkové kódy, aby byly produktivní. Samozřejmě, pokud máte pocit, že můžete napsat vlastní kolo, neotevírejte jej a nečtěte knihy o návrhu kompilátoru a designu jádra: v nich je toho co se naučit: možná máte pocit, že je hloupé de aplikace, které to hodně nevyžadují techniky.

  3. Vymysli něco! Samozřejmě byste mohli udělat textový editor, hru atd. Jde o to, že ty neuděláte, pokud nevidíte žádný důvod: tyto programy pro vás budou zbytečné, pokud vše, o čem přemýšlíte, již bylo vytvořeno . Osobně stále sní o tom, že budu moci kódovat decentralizovaný p2p protokol podobný facebooku pomocí chatu, offline zpráv atd. Vše v jednom, aby mohl být použit s bezdrátovými integrovanými zařízeními. Internet poskytuje mnoho možností, nezapomeňte na to myslet.

  4. Teorie je ve skutečnosti nezbytná pro praxi, ale to není vše: algoritmy a techniky nejsou součástí teorie programování, existuje mnoho paradigmat a dalších „standardních“ způsobů, jak kód dělat: návrhové vzory, propojené seznamy, atd. atd.

1
jokoon

"Myslet mimo krabici"

Hej, položil jsem si stejné otázky pět let zpět (v té době jsem neslyšel o Stack Exchange). Studium programování pokaždé nebude mít smysl, musíte něco vyvinout.

Zjistěte, co se má vyvinout

1) Malé cíle vytvářejí malé a úspěšné první projekty

2) Naplánujte si, abyste měli malé části, které jasně fungují a ukazují vám pokrok

3) Najděte něco, co vás zajímá, ale je stále dost malé na to, abyste ho dosáhli

  • Vytvářím osobní alba - které jsem získal nějaké znalosti Flash, Photoshop
  • Stavím si své vlastní osobní blogy - získal jsem nějaké znalosti PHP=)
  • Koupené internetové domény - získaly znalosti serverů

  • Našel jsem mnoho nezávislých projektů - četl jsem jejich požadavky a snažil se vytvářet vlastní aplikace, získal jsem spoustu znalostí o programování, dokumentaci atd.

1
RSK

Ale stále nemůžu přijít na to, jak napsat program, který udělá cokoli užitečného.

Opravdu?? No, předpokládám, že pokud si jen přečtete knihy a neuděláte žádné ukázkové programy a tak dále, je to možné, ale zdá se to trochu přehnané.

Nejlepším doporučením je přesto začít pracovat na nějakém nápadu, který vás zajímá. Pokud máte skutečný zájem, může začít malý a růst a růst. To se obvykle stane se mnou. Mohl bych zahájit projekt jen pro zábavu, myslet si, že to bude jen malý testovací projekt. Pak přidám a přidám ....

1
user11432

Myslím, že součástí problému je to, že když čtete programovací knihy, oni vás jen naučí jazyk. Nezmiňují se o tom, že pokud chcete naprogramovat téměř cokoli, potřebujete přístup k programování KNIHOVNY a SDKS atd. Jen znalost jazyka bohužel nestačí.

1
David-S

Dalším problémem je, že potřebujete jiný programovací jazyk v závislosti na tom, co se snažíte programovat.

Pokud chcete naprogramovat aplikaci Windows, která rozšiřuje produkt společnosti Microsoft, musíte použít .NET C # nebo VB.NET nebo VBScript. Pokud chcete iPhone naprogramovat, musíte použít Objective-C, Java pro Android, Silverlight pro Windows Mobile, možná Java pro finanční aplikace atd.).

Není to jako byste se mohli naučit jeden jazyk a pak být schopni programovat cokoli chcete ...

1
David-S

Nemusíte mít skvělý nápad, abyste něco začali programovat. Začal bych od té snadné části. Jako program, který již používáte. Zkuste udělat něco, co už víte, jak to funguje. Tváří v tvář vašim problémům, takže se to naučíte rychleji. Jakmile budete mít více zkušeností, začnete mít několik dobrých nápadů programů, které vám usnadní život při programování, nebo jen dobrý program, abyste udělali něco, o čem jste si o tom nikdy nemysleli. Téměř rok jsem programoval Java a další jazyky). Začal jsem dělat to, co jsem opravdu chtěl dělat, nějakou dobu trvalo. Začal jsem dělat své vlastní věci. Díky StackOverflow, o tom jsem předtím nevěděl.

1
pringlesinn

Možná byste si mohli vybrat skriptovací jazyk, který chcete začít. Začal jsem programovat s jazykem C. Domnívám se, že jazyk C lze snadno začít, ale je třeba znát algoritmus a něco o operačním systému mnohem více času. A pokaždé, když cvičím, jsem jednoduše s DOS GUI, což mě deprimovalo.

A později jsem si vybral skriptovací jazyk s názvem ActionScript. Skriptovací jazyk je objektově orientovaný jazyk a může řídit chování filmu Flash. Skriptovací jazyk je snadný pro práci, která je blízko k problémové doméně, stejně jako trace("HelloWorld") v ActionScriptu pro výstup řetězce. A má silný IDE), který vám umožní zkontrolovat, zda váš program funguje dobře.

V programu Word, pokud chcete začít programovat rychle, může být skriptovací jazyk dobrou volbou :-)

1
Tomyail

Četli jste Kód dokončen 2 a Pragmatický programátor ?

Tyto dvě knihy mě naučily mnohem víc než jakýkoli kurz, kurz, knihu nebo video.

Programování je o učení, jak postavit něco od nuly pomocí specifické sady nástrojů. Ale pokud neznáte základy, nemůžete nic dělat.

1
Pablo

Takže existuje spousta odpovědí, takže mi odpusťte, pokud opakuji hodně z toho, co již bylo řečeno, ale tady jsou moje 2 centy.

Nejprve vyberte nápad. Každý nápad bude v pořádku, něco jednoduchého by asi bylo lepší než velké. Projekty mají tendenci růst ve svém rozsahu velmi rychle (někteří říkají, že se tečou).

Dále vytvořte kostru projektu. To bude vyžadovat trochu architektonických a designových znalostí a pravděpodobně si to špatně při prvních deseti pokusech - udělal jsem. Jednoduše rozvrhněte slušnou strukturu souborů a možná malou kostru kódu, která ukazuje důležité části systému.

Uložte kostru do svého VCS (vyberte si tento jed a vydržte, pokud vede ke svaté válce). Jakmile začnete používat VCS, stává se neustálé používání pro malé změny druhou přirozeností, ale ujistěte se, že chcete začít.

Nyní vyberte malou, ale důležitou funkci systému a vytvořte ji. Nedělejte si starosti, abyste se ujistili, že máte vše zapouzdřené dokonale a že má „nejlepší“ design (který se bude vyvíjet se systémem). Jen si něco, co bude fungovat. Rovněž získání některých testů jednotek vám pomůže zajistit, abyste věděli, co se stalo, když se něco rozbije, pokud pravidelně testujete.

Vytvořte si svůj systém. Také by byl vhodný čas na získání automatizovaného systému sestavení a nepřetržité integrace. Pokud nevíte, co to je, buď se to naučte a zkuste, nebo jen pokračujte na vlastní nebezpečí; v každém případě pokračujte v práci.

Nyní vyberte jinou funkci a opakujte a opakujte a opakujte.

Jakmile si myslíte, že to funguje dobře, ukažte to příteli. Přítel nemusí vědět, jak programovat nebo dokonce vědět, co program dělá. Jeden vám bude dobrý pocit ukázat někomu a dva vám pomůže přesně vědět, co systém dělá.

Pokud se dostanete do bodu, kdy jste si velmi jistí, co jste udělali, uvolněte jej online a zkuste získat zpětnou vazbu. Centrum úložiště nebo sub-reditt programátorů vám může poskytnout nějakou konstruktivní kritiku. Pokuste se najít profesora CS/SE a nechte si ho prohlédnout. Možná se zeptejte profesionálního programátora. Stačí získat jiný názor programátorů.

Jakmile dokončíte (nebo pravděpodobně dříve), zjistíte, že kód, který jste původně napsali, je mnohem horší, než to, co jste nedávno vytvořili. To je naprosto přirozené a stalo se nám všem. Nyní musíte najít nový projekt a naučit se něco nového - možná novou strategii testování nebo jak používat architekturu orientovanou na služby.

1
Jonathan

Něco, co může pomoci, je myšlenka na jednoduchý problém, který máte každý den, kdy by něco, co byste mohli udělat tužkou a papírem, mohlo být nahrazeno programem.

To vám dává poměrně jednoduchý problém s poměrně známým řešením, které potřebuje pouze úroveň automatizace. Mějte na paměti, že to nemusí být další MS Word/WordPad/NotePad; jen něco, co řeší váš (jednoduchý) problém.

Například problém, který neustále opakuji při práci s novým jazykem, je jednoduchá aplikace pro časoměřiče. Aplikace se používá ke sledování fakturovatelných hodin na různé projekty během dne. Poměrně jednoduchý program se spoustou malých gotků, jako je způsob, jak řešit restartování uprostřed dne nebo jak přidávat/odebírat položky ze seznamu.

1
Ken Henderson

Napište specifikaci. Co chcete, aby váš program udělal? Obrazovky (pokud se jedná o program založený na uživatelském rozhraní), logika, vstup/výstup atd. Udržujte rozsah omezený na to, co můžete dělat v přiměřeném množství času (jeden týden? Jeden měsíc?).

Pak to postavte. Držte se specifikace a zajistěte, aby fungovala podle toho, co specifikace vyžaduje. Určitě narazíte na rozptýlení, určitě budete muset udělat nějaký výzkum, protože jste ještě nikdy nestáli před konkrétním problémem, ale budete stavět něco, co chcete stavět. To se liší od budování něčeho, co jen můžete „stavět“.

Po dokončení upravte svůj kód a zkuste jej zefektivnit. Pokud si myslíte, že váš program stále není dokončen, začněte znovu, vylepšujte specifikace, vylepšujte kód a pokračujte v tom.

Pamatujte, že většina komerčního softwaru řeší potřebu. Je velmi důležité definovat potřebu a řešení, které tuto potřebu naplní, než skutečně problém vyřeší. A jak roste potřeba, váš software poroste i v průběhu času!

1
Roopesh Shenoy

Naučil jsem se programovat, protože vím, co chci naprogramovat.

Programování vyžaduje dovednosti pro řešení problémů, které je těžké se naučit. Pokuste se reprodukovat něco „každodenního“, jako je program prodejních automatů, který počítá změny v mincích, a také simulaci výtahu.

0
Ming-Tang

Největší výzvou, jak se naučit, jak programovat, je přijít s něčím, co někdo považuje za užitečné.

Mým největším problémem v programování pro sebe bylo vždy vymýšlení problémů, které je třeba vyřešit.

Programování jsem začal v polovině osmdesátých let kurzem a poté pracoval pro společnost, která mi řekla, co mám řešit. Vaše alternativa je dělat to, co jsem udělal v 90. letech, když jsem se chtěl učit JavaScript - připojil jsem se ke komunitám (jedna byla volání na přetečení zásobníku na Hyphened site - start downvoting ...), kde lidé kladli otázky, a komentoval mé návrhy, jak problém vyřešit. Měl jsem konkrétní úkol se známým vstupem a výstupem, opravdu mi pomohl soustředit se na nalezení odpovědi nebo podobné odpovědi a uplatnění tohoto problému. Po několika letech zodpovězení otázek jsem plynule mluvil.

Teď dělám to samé s jQuery. Těžko bych se naučil syntaxi jQuery bez konkrétních problémů, které lze pomocí tohoto rámce vyřešit.

0
mplungjan

"Tajemství je, že neexistují žádná tajemství" - Kung Fu Panda. Nejprve nepanikařte, zvolte jazyk a začněte psát něco jako hru tic tac toe a pokračujte v přidávání nových funkcí. Zmínili jste, že jste četli příliš mnoho knih, ale implementovali jste to, co jste se naučili? Zkuste se rozhlédnout kolem sebe a najít, jaký manuální systém můžete převést na automatizaci nebo jaký stávající program můžete přepracovat. Trpělivost a představivost je klíčem k úspěchu v programování, i když nejsem skvělý programátor, ale zkouším to, co jsem sdílel a jak funguje. :)

0
CodeCracker

Přemýšlejte o něčem, co byste považovali za užitečné, a zkuste to udělat. Mám na mysli něco rozumného, ​​ne Photoshop :-)

0
nih

Jediným způsobem, jak se naučíte programovat, je ... psaní programů.

0
user12062

Primární rozdíl mezi úspěšnými velkými aplikacemi a akademickými cviky je obvykle v tom, že první z nich jsou navrženo proti souboru požadavky. Pokud jednoduše začnete s vágním nápadem v hlavě a začnete psát kód, není pravděpodobné, že se dostanete daleko.

Takže schopnost programování zde pravděpodobně není problém; to, co vás opravdu potřebuje, je softwarové inženýrství dovednosti; tj. schopnost zachytit a specifikovat projektové požadavky, a poté navrhnout softwarovou architekturu a podrobný design, který tyto požadavky splní - to je cestovní mapa, která vás během vývoje udrží na správné cestě. To neznamená, že požadavky a návrh musí být kompletní, než začnete kódovat (metoda vodopádu), přírůstkový vývojář je flexibilnější přístup; ale měli byste mít nějaký rámec a představu o tom, jak prvky aplikace budou interagovat a komunikovat.

Kromě toho je specifikace a návrh požadavků více či méně zásadní, pokud má být vývoj projektu prováděn více než jedním vývojářem (další společný rys velkých projektů).

Dalším rysem úspěšných rozsáhlých aplikací je silná motivace k dokončení. Co by vás motivovalo k tomu, že nemůžu říct, ale v mém případě jsem za to placen, zřídka psám software pro pouhou zábavu, ale dostat zaplaceno za to, co byste jinak mohli udělat v každém případě, je skvělý způsob, jak vydělat na živobytí.

0
Clifford

Jednoduché, zkuste to udělat lépe, než je uvedeno ve vaší knize.

0
user12069

Zjistil jsem, že něco, co mi v této oblasti velmi prospělo, se dívalo na kód, který napsali jiní lidé. Mám na mysli kód, který psali mimo školu, protože školní úkoly se obvykle nevztahují na skutečný svět.

0
THE DOCTOR

Najdete zde spoustu dobrých odpovědí, ale přidejte to.

Za prvé, nepropadejte panice. Mnoho lidí se naučilo programování v různých stupních, najdete úroveň, která vám vyhovuje, to je jisté. Tvrdě pracujte na dosažení poměrně vysoké úrovně, jeden krok po druhém.

Začněte v malém. Pamatuji si jednu z mých prvních aplikací, v podstatě to bylo rozhraní pro kodér MP3. Nic fantazie, právě to spustilo aplikaci příkazového řádku s různými parametry. Ale líbilo se mi to!

PS: Jednou z nejužitečnějších dovedností je, že byste měli trénovat neustále: jak se zeptat lépe. Pokud se můžete zeptat opravdu dobrým způsobem, najdete odpověď v žádném okamžiku.

0
Scorchio

Hráli jste hru Chess ??. Člověk vás může naučit pohyby, ale učinit je užitečnými je vaše vlastní starost. Nemůžete se poučit ze sledování šachové hry hrané dvou či dvou jedinců namísto hraní sami; Podobně, učení se z jediného UŽITEČNÉHO projektu, jak jste řekl, nepomůže. Musíte se ponořit do svých vlastních požadavků a vytvořit z toho projekt.

Každý projekt má své vlastní požadavky. Zřídka najdete projekt se všemi funkcemi jazyka. Knihy se proto zaměřují spíše na základní rysy než na projekt a čtení.

Abych byl upřímný, i já jsem hledal funkční vzorek aplikace WPF, když jsem musel udělat před několika měsíci. Nic nenašel a poté si přečetl z knih a internetu a všechno se rozjelo.

A poslední věc je, že tyto již vytvořené aplikace nebo projekty vás dělají zmatenější než kdy jindy, protože jsou vytvářeny profesionály, kteří mají svůj vlastní styl a vyladění. Chcete-li se dostat na tuto úroveň, musíte zapomenout na všechno ostatní a začít kódování a později na StackOverflow je vždy k dispozici, aby vám pomohl.

0
Pankaj Upadhyay

Ano, je úžasné, kolik „pohyblivých částí“ se podílí na běhu našeho softwaru/hardwaru. Částečně je to proto, že problémy jsou neuvěřitelně složité a je třeba je rozdělit na zvládnutelné části. Částečně je to proto, že problémy jsou neuvěřitelně složité a nikdo neví, co dělají. :) Máme desítky programovacích jazyků a stovky programovacích rámců a knihoven. Vše je černé a vrstvené. V jedné vrstvě tohoto nepořádku nemůžete udělat nic užitečného. Potřeba se naučit a zvládnout omezení a vtípky více vrstev. A psaní všeho je téměř nemožné. Jak se zvyšuje kódová základna, jednoduché věci jsou nepředstavitelně obtížné.

0
AareP