it-swarm-eu.dev

Ideální posloupnost výuky programovacího jazyka?

Co myslíš? Jaká je ideální posloupnost výuky programovacího jazyka, která pokryje většinu dnes používaných jazyků a paradigmat a pomůže pochopit běžné základy programování, nápady a postupy? Můžete dokonce navrhnout učební posloupnost spíše pro paradigma než pro jazyky.

N.B. : Toto je port otázky, kterou jsem položil v stackoverflow a byl uzavřen kvůli subjektivním a argumentačním.

17
Gulshan

Python, LISP, C, Haskell

Za předpokladu, že se jednalo o ideální učební posloupnost pro nováčky v programování (protože staré ruce při programování budou mít svou vlastní (pravděpodobně náhodnou) učební posloupnost), navrhl bych si přečíst Norvigova esej o tom, jak se naučit programování v 10 roky , pak:

  1. Python : Začněte s dynamickým, na vysoké úrovni, OO & funkční jazyk.) Protože je opravdu důležité, aby se začátečníci cítili produktivně ASAP , a nesmí být vypnuta mimozemskou syntaxí, nedostatkem knihoven, nedostatkem více platforem, nedostatkem učebních zdrojů a nedostatkem komunity. Python je velmi čitelný, má spoustu dobrých knihoven (zejména vědeckých knihoven - moderní vědec/inženýr musí vědět, jak programovat), snadno se spouští z většiny operačních systémů, má spoustu tutoriálů a celé knihy zdarma a je obecně uživatelsky přívětivý - přestože jste stále dostatečně výkonní, aby s vámi rostli, když se stanete pokročilým programátorem, který pracuje na velkých problémech. Je také důležité posílit důležité + užitečné konvence pro začátečníky: čitelnost kódu počítá LOT, a měli byste psát kód pro sebe a ostatní. snadno pochopit.

  2. LISP: Zejména alespoň překrýt Struktura a interpretace počítačových programů nebo sledovat videa SICP , a mít oči otevřené velmi širokým pohledem na základy a expresivní sílu programování - člověk může udělat tolik s tak malým. Naučte se, jak LISP dokáže vyjádřit nejen funkční paradigma, ale také OO, logické/deklarativní a další - například vytváření nových jazyků specifických pro určitou doménu. Přečtěte si Norvigův PAIP , abyste byli svědky toho, co může pán s tímto jazykem dělat. Pak se podívejte na Clojure , moderní dialekt LISP, který by mohl být jednou z Next Big Things.

  3. C: Jen proto, že je to lingua-franca výpočetní techniky. :) Pravděpodobně volitelné v těchto dnech, pokud je jeden primárně programátor v konkrétní softwarové doméně. Připadá mi to ošklivé, ale stojí za to vědět o získání ocenění za základní hardware. Jděte samozřejmě s K&R .

  4. Haskell : Čistý funkční výkon. Kde aktuální Com.Sci. setkává se teorie a praktická expresivní moc. Viz Real World Haskell .

Po výše uvedené cestě by člověk byl velmi zběhlý v řešení problémů a vyjadřování řešení v kódu a byl by naprosto pohodlný s paradigmata zde :

alt text

26
limist

Takto bych to udělal:

  1. Python (nebo Ruby nebo Lua): Interpretovaný jazyk, žádné typy, můžete věci udělat za pár řádky. Obrovská knihovna (Python je pro to asi nejlepší). Můžete jít hluboko do algoritmů, protože nedochází k rozptylování. Není nutná kompilace, stačí spustit. Kromě toho s Python you you implicitně učit dobrý styl, protože odsazení v Python je povinné. Můžete také učit Orientaci objektů (v Lua je větší problém). Účelem je mít spoustu zábavy a ukázat studentovi, co lze udělat.

  2. C++ (nebo možná Java): Psaný rychlý jazyk. Pokud potřebujete Object Orientation, pak už znáte některé koncepty. Hlavní myšlenkou je „překládat“ to, co jste udělali v Python a udělat to s novými omezeními (hlavně typy).) Nyní, pokud máte koncepty správné, přidání typů není takový problém. Dalším krokem je zamyslet se nad nízkou úrovní (Java zde nepomáhá) a učit ukazatele dobře. Tím myslím mínění o adresním prostoru, CPU, OS, trochu tak, abyste mohli začít vidět pod svým programem. Kompilovaný jazyk představuje rozlišení mezi interpretací a kompilací, velmi užitečné pro vysvětlení, jaký je strojový jazyk, atd.

  3. Shromáždění : A konečně, žádná magie, prostě mluvíš se strojem. Diskutuje se o syntaxi Intel a GAS, není to důležité. Pokud máte MIPS, věřím, že je to lepší pro výuku, ale předpokládám, že x86 je výhodnější, protože je rozšířenější (x86_64 lepší, protože má více registrů a pěkností). Musíte jen odstranit část složitosti a nechat studenty zkoumat další, pokud chtějí.

(Tyto první 3 jsou „hloubka“. Až dosud jsme šli dolů, dokud se nedotknete dna, které je „blízko kovu“, jak se říká. Myslím, že je to velmi důležité, mnoho otázek v programování je vyřešeno, když máte jasnou představu o tom, co se děje. Když to víte, můžete získat důvěru další znalosti.)

  1. Schéma (nebo obyčejný LISP nebo Clojure): Jak řekl @dukeofgaming, jazyky LISP vám umožňují dobře se učit rekurzi (pro tento Schéma je nejlepší, protože ne mají explicitní smyčky). Ale já bych šel a učil dvě další věci: uzávěry a makra. Makra oddělují jazyky LISP od ostatních. Osobně se mi nelíbí Scheme makra, ale to není příliš důležité. Myslím, že Clojureova makra jsou například Nice (ale rekurze v Clojure není tak čistá, protože JVM nemá rekurzi ocasu). Uzávěry jsou velmi důležitým pojmem, jakmile je zapíchnete, okamžitě uvidíte „Javascript“. Po studiu C++, Python a LISP se Javascript stává „triviální“.

  2. Haskell : Pokud jde o funkční jazyk, nemyslím si, že můžete porazit Haskella. LISP a schéma jsou považovány za funkční, ale pro zdůraznění funkčního programování je třeba studenty donutit, aby přemýšleli bez státu. Haskell má také další velmi pěkné věci, jako je kari a přizpůsobení vzorů pro „destrukci“. Haskella moc neznám, ale stručnost kódu, který můžete napsat, je prostě krásná. Znalost Haskella dobře dělá cestu k pochopení Erlang mnohem jednodušší.

  3. Forth : Jazyk zásobníku. Zase to zcela poruší vaši logiku (pokud LISP a Haskell nestačily). Chtěl bych jít až k učení Jones's Forth , protože vědí shromáždění a pak můžete zcela pochopit, co se děje. (Například Know Forth otevře PostScript.)

(Takže poslední tři jsou šířka, kterou jste říkal. Pro mě jsou tyto jazyky dost podivné, že změní váš způsob myšlení. Aspoň pro mě udělali. A myslím, že s nimi rozumíte dost paradigmatům, abyste se naučili nový jazyk velmi rychle.)

Volitelně můžete studovat tyto:

  1. Smalltalk : Čistě objektově orientovaný jazyk. Aby se zjistilo, co se stane, když berete objektovou orientaci vážně, jazyk nepotřebuje „if“, „for“. Všechno je poselství: velká realizace znovu. (To by teď Objective-C usnadnilo.)

  2. Go : (Krásný) jazyk s důrazem na souběžnost. Považuji to za velmi pěkné a pohodlné programování.

  3. Prolog : Další paradigma programování. Nepsal jsem žádný Prolog, ale chápu, že je to další ohromující jazyk.

28
Pau Fernández
  • Ten, který nyní potřebujete
  • Ten, který potřebujete dál
  • Ten, který poté potřebujete

Vážně, možná jsem se ve své době naučil BASIC, COBOL, Fortran, Forth, Pascal a Prolog, ale nikdy jsem je zvlášť nepotřeboval, abych je mohl použít, a opravdu nevidím žádný způsob, jakým ovlivňovali moje použití jiných jazyky, s výjimkou snad nesprávného uplatňování paradigmat z jednoho na druhého. Trvalo mi věky, než jsem se naučil BASIC natolik, abych skutečně napsal strukturovaný Pascal, pár let, než jsem přestal psát Pascalův kód v C, a dalších pár let, než jsem začal používat Objective- OOP) C a Java. Na druhou stranu, protože jsem pracoval (téměř) výhradně v OO jazycích), mohl jsem se soustředit na zdokonalení používání OO jazyky, aniž by se snažili, aby vypadaly jako Scheme nebo PostScript.

12
user4051

Je těžké tvrdit, že jakákoli sekvence je ideální, ale sestavím plán, který mohu ospravedlnit:

  1. C

    Learning C vyžaduje trpělivost a pilnost a seznámí vás se základními způsoby, kterými počítače pracují s daty, a ukáže vám téměř nejširší soubor povinností, které může programátor přijmout, aby se s takovým strojem vypořádal.

  2. Perl

    Jako protijed na přísnost vyžadovanou C, zkuste neuvěřitelně odpouštějící Perl. Co trvalo týden, než psát v C, můžete napsat za hodinu v Perlu. Představuje jiný druh potěšení, který lze nalézt v programování, a ukazuje, jak vyloučení určitých obav a podrobností uvolní programátora soustředit se na různé věci.

  3. C++ nebo možná Java

    Dále se podívejte, jak C zaměření na nízké a primitivní aspekty programování slouží jako základ pro zvyšování úrovně abstrakce, přičemž si všimněte, že obchody dosahují účinnosti, když se pohybujete vzhůru v abstrakci. Prozkoumejte, jak vytvořit abstrakce, které si stále mohou zachovat efektivitu, která je pro váš program důležitá.

  4. Common LISP

    Toto je odměna za předchozí slogan. Najdete ozvěny toho, co jste se naučili ve všech předchozích jazycích, a uvidíte, jak hloupě se tolik předchozích ústupků zdá při programování v LISP. Preprocesor C a šablony C++ připravují jeden na ocenění makro systému LISP. Získáte snadnost vyjádření z Perlu, příležitosti k optimalizaci na nízké úrovni z C, schopnosti budování abstrakce v C++ nebo Java a projdete je všemi. Žádný z předchozích tří - snad kromě Perlova debuggeru - vás nebude připravovat na interaktivní programovací zážitek se schopnou [~ # ~] replikou [~ # ~] ("read, eval, tisková smyčka "). Práce s prostředím založeným na image - které mění vztah mezi zdrojovým kódem a myšlenkou „spustitelného programu“ - změní celou vaši představu o tom, co to znamená vytvořit program.

Kromě těchto čtyř, zkoumání dalších stylů programování, jako je funkční programování v Haskellu, nebo logické programování v Prologu, umožňuje komplexnější porozumění rozsahu programování - pokud to budete chtít - rozsáhlé znalosti, ale v tom okamžiku je váš čas lépe obsloužen vylepšením svého řemesla - hlubokých znalostí - jakýmkoli jazykem, který znáte.

Po ochutnávání dostatečně odlišných jazyků se váš názor zvýší, aby se zaměřil na myšlenky, které přesahují kterýkoli z nich. Je to jako rozdíl mezi učením se řídit auto vašeho otce a věděním, jak řídit jakékoli auto: Nemusíte si užít, abyste museli řídit mini-van na několik dní, dobře znát potěšení z řízení oblíbeného sportovního vozu, ale zjistíte, jak s ním jezdit, a určitě z chudého zvířete jistě více než amatér.

8
seh

1. Smalltalk

Navrženo původně alespoň částečně jako způsob, jak mohou děti používat počítače k ​​učení. Syntaxe je dostatečně jednoduchá, aby byla popsána v odstavci. Stejně jako LOGO je příkladem principu „nízká bariéra vstupu, vysoký strop“.

Smalltalk je čistý OO jazyk v tom smyslu, že „všechno je objektem“.

Učí také mnoho funkčních technik, zejména v rozhraní API pro sběr: řetězení zpráv, funkce vyššího řádu, mapování, snižování atd.

Komunita Squeak je živá a přívětivá. Uvidíte také mnoho diskusí o pokročilých technikách: podobně jako v komunitě LISP existuje mnoho velmi zkušených Smalltalkersů na mailing list ochotných podělit se o své znalosti. (To neublíží, že Squeak komunita má velkou populaci profesionálních pedagogů.) Je zde také jiný seznam pro začátečníky.

2. PROLOG

logický programovací jazyk , který vám poskytne velmi odlišný pohled na výpočet, než jakýkoli jiný jazyk. Prolog je také vysoce deklarativní (ale ne úplně tak: operátor ! Nebo cut může mít významný význam sémantického účinku na predikát).

3. Společný LISP

Nahraďte zde schéma, pokud chcete. Common LISP podporuje více paradigmat, zejména OO a funkční. Má také dlouhou historii (LISP je druhým nejstarším dosud široce používaným jazykem: pouze starší FORTRAN).

4. Haskell

(Caveat: Právě jsem se to začal učit.) Pravděpodobně nejčistší funkční jazyk na planetě. Má velmi pokročilý systém statického typu. Handy introknihy existují.

5. C nebo Delphi

Musíte vědět, jak počítače fungují. Musíte vědět, jak paměť a CPU skutečně fungují. Obě tyto skupiny jsou tradičně „blízké metalu“ a mají společenství, která podporují přemýšlení o tom, jak se jejich jazyk kompiluje do shromáždění.

Proč tato objednávka?

Smalltalk se velmi snadno učí, takže se můžete rychle začít soustředit na řešení problémů, než na boj s kompilátorem („nízká bariéra vstupu“). Jakmile začnete programovat, neexistuje žádné umělé omezení toho, co můžete udělat - „vysoký strop“.

Jakmile budete mít férovou představu o tom, jak OO funguje (a - s výhradou, že existuje mnoho různých pochopení toho, co znamená „OO - je spravedlivé říci, že OO dominuje na trhu) a přesunout se na Prolog zajišťuje, že nezačnete myslet, že OO je jediný způsob. Prolog je velmi velmi odlišný od většiny jazyků a roztáhne vaše mentální svaly, takže nezačnete myslet, že víte všechno.

Společný LISP je zase dospělým jazykem. Má vyzrálý standard, je vedoucím jazykovým designem po celá desetiletí (spolu s Smalltalk) - všechny ty nové fantastické funkce, které váš oblíbený jazyk právě získal? Šance jsou nápady inkubované v LISP nebo Smalltalk. Běžné LISP je také trochu válečné a všude, kam jdete, najdete bradavost.

Haskell je čtvrtý na seznamu, protože (říkám: teprve jsem se ho začal učit) jeho čistota znamená, že některé velmi běžné věci (jako I/O) je obtížnější než v méně čistě funkčních jazycích. Haskellští lidé také používají některé docela exotické terminologie (například slova jako „katamorfismus“) a pravděpodobně byste měli být s některými zkušenostmi s programováním pod pásem lépe, než se s tím vypořádáte. (Ale musím to zopakovat, teprve jsem se to začal učit! Vezměte si tento názor špetkou soli!)

A proč C/Delphi vydrží? Protože pokud nepracujete ve vestavěných systémech, neměli byste se opravdu učit programování, protože ruční správa paměti je vše. Sběr odpadu fungoval dost dobře pro stroj na úrovni 80. let. Váš telefon je tak silný!

Nakonec jsem do výše uvedeného seznamu nevložil Erlang , i když bych měl opravdu.

6
Frank Shearar
  1. Krajta. Vynikající úvod do programování. To se také spojí s jakýmkoli předchozím vystavením programování.

  2. Systém. Také vynikající úvod do programování. Pokud se zabýváte programovacími nováčky, možná budete chtít učit nejprve a Python sekunda. Jedna alternativa by byla Python a potom Common LISP místo Scheme: více) práce, ale více odměny.

  3. C. Nízkoúrovňový jazyk, který zůstává blízko křemíku. Dobré pro učení, co počítač dokáže. Dalo by se nahradit nějakou formu jazyka assembleru, ale C je docela blízko základům a mnohem jednodušší s ním pracovat.

  4. Prolog. Případně nahraďte jakýkoli obecný jazyk pro deklarativní styl, pokud najdete ten, který se vám líbí lépe.

  5. Haskell. Pro typový systém a čistou funkčnost, pokud nic jiného.

  6. Je zde několik kandidátů, protože je nemožné pokrýt všechny koncepty šesti jazyky. Obyčejný LISP se vyplatí učit, i když pouze pro makro a objektový systém (který se liší od většiny ostatních, které jsem viděl). Forth, Tcl a APL jsou všechny liché jazyky, které zaznamenaly určitý úspěch, a jeden z nich by byl dobrý, aby zabránil studentovi cítit se, jako by se toho všechno naučil. Erlang by byl dobrý pro souběžnost.

5
David Thornley

Bylo poskytnuto mnoho dobrých odpovědí, ale neviděl jsem nikoho, kdo by nabídl SQL. Je to úplně jiné zvíře než většina ostatních uvedených a velmi důležité pro každého programátora, který se musí vypořádat s databázemi.

Možná budete také chtít zvážit některé „jazyky“ skriptování na úrovni operačního systému, například Batch, grep, awk atd. Do této kategorie může také spadat „Značka“.

Dalším jazykem, který možná budete chtít zvážit (pokud ještě není úplně mrtvý), je COBOL. Je dostatečně odlišná od ostatních procedurálních jazyků, které si zaslouží zmínku. Varianty C, Fortran, Basic, atd. Se staly tak podobné, že jakmile se s jedním seznámíte, přestěhování se do jiného není velkým problémem, ale COBOL postrádá spoustu konstrukcí považovaných za samozřejmost v ostatních. (Je to nejméně 20 let, co jsem s COBOLem něco dělal, takže moje pozorování již nemusí platit ohledně tohoto jazyka.)

Možná byste chtěli zmínit APL jen z historického hlediska - nebo nechat odpočinout v klidu. Tvoje volba.

4
oosterwal

Začátečník potřebuje pouze jeden jazyk, poté, co se naučí druhý jazyk, již postupuje za hranice mnoha konkurenčních vývojářů. Naučil bych se v následujícím pořadí:

  • Smalltalk - to je nejlepší OO dostane, a jednoduchá expozice otevře oči vašemu způsobu, jak by se mělo dělat. Nejlepší se naučit OO koncepty.
  • Java nebo C # - poskytuje architektoničtější a plánovanější přístup k OO při současném zavedení staticky kontrolovaných typů.
  • Ruby or Python - Nemůžete to ocenit, dokud se necítíte Java nebo C #
  • Erlang - souběžnost provedená tak, aby se zdála snadná. Je to mnohem lepší než vaše OO jazyky nebo C umí).
  • LISP, Haskell nebo jiný funkční jazyk - je to jiný přístup k řešení problémů.
  • C - Buď vytvořením nativních rozšíření pro Javu, nebo implementací algoritmů nižší úrovně, je to tak blízko sestavení, jak někdo potřebuje, dokud nepíšou kompilátory.

Můžete se zeptat „kde je C++?“ a co X? Upřímně řečeno, učení více jazyků přináší několik věcí: obohacuje vaše zkušenosti a poskytuje hnací sílu k naučení se více jazyků. Seznam jazyků, které dobře znám (Java, C #, Ruby, C++, Javascript), jsou všechny objektově orientované - ale hlavně proto, že to je to, co musím každý den dělat v práci. Seznam jazyků, kterým jsem byl vystaven (Smalltalk, Python, Erlang, JESS, C, Shromáždění [Motorola 6502/6510], Go), mě všechny naučil cenné lekce. Dokážu alespoň pochopit, co se děje s těmito jazyky. Je toho hodně, co jsem prozkoumal, ale v budoucnu to může velmi dobře. Existuje také několik značkovacích jazyků: HTML, XSL: FO, XSLT, CSS, XML, SGML, kterým lidé potřebují vystavení, pokud budou jakýmkoli způsobem pracovat s webem.

Po naučení alespoň dvou různých jazyků si opravdu nemyslím, že byste měli omezovat to, co se někdo, kdo má chuť se učit, rozhodne vybrat dál. Učení by mělo být organickou zkušeností a přílišná struktura procesu vytváří skupinu lidí, kteří myslí přesně stejným způsobem. Monokultura, abych tak řekl.

2
Berin Loritsch

Většina těchto odpovědí se zdá být zhruba stejná, takže nabídnu jiný názor. Dlouho jsem věřil, že nejlepším prvním jazykem je Tcl.

Proč? Pro jednoho je to velmi snadné se naučit. K jazyku není moc syntaxe, takže se student může více soustředit na koncepty programování a méně na syntaktické zvláštnosti konkrétního jazyka. Od tohoto psaní má Tcl přesně 12 pravidel, která řídí celý jazyk (z jedenácti za posledních několik desetiletí).

Tcl přichází s fantastickým vestavěným jazykem GUI, takže můžete získat relativně okamžité uspokojení a naučit se základy programování řízeného událostmi.

Zatřetí, je to rozšiřitelné. Chcete učit o opakované smyčce? Můžete napsat příkaz, který provede opakovací smyčku, abyste se nejen mohli naučit, jak používat opakování ... dokud se nebudete moci naučit, jak se liší od smyčky while, protože jste to vlastně napsali sami.

Také proto, že je to rozšiřitelné, do C. lze snadno sešit. Můžete se naučit základy C a naučit se, jak a) rozšířit Tcl o nové příkazy psané v jiném jazyce, nebo b) naučit se, jak přidat skriptovací jazyk do programu napsaného v C.

Jakmile se naučíte Tcl a C, většina dalších jazyků leží někde mezi těmito dvěma extrémy a mělo by být relativně snadné si je vyzvednout. Můj úplný seznam, se čtyřmi, které bych učil po Tcl a C, jsou:

  1. Tcl
  2. C
  3. Python - pro OO koncepty, plus jeho chování definovat bloky po odsazení v kontrastu s jinými jazyky).
  4. Ruby - pro jiné využití OO, plus Rails) se dozvíte o rámcích
  5. Java - používá se všude, musíte ji znát a musíte se dozvědět o JVM
  6. groovy - kruh zpět do dynamických jazyků
2
Bryan Oakley

Navrhl bych první čtení Eric Raymonds "Jak se stát hackerem", protože má několik velmi zajímavých bodů o tom, jak začít, včetně LISP, který má pojem "kód jsou data a data je kód".

Pro programování bych také navrhl jazyk Haskell, Prolog, SQL a Assembly (jen některé).

Bez ohledu na to, co se chcete naučit, udělejte si čas, abyste se to správně naučili a napište netriviální množství kódu. Je to jako jízda na kole - nemůžete se to naučit z knihy.

2
user1249

Nejprve> Co chcete dělat, když začnete programovat? Učení, jak být programátorem her, je jiné než učení, jak být databázovým programátorem pro podnikání ... je jiné než webový programátor ...

Druhý> Jakmile se začnete učit, chcete začít vysoko a pracovat dolů? Nebo začněte nízko a postupujte nahoru. Učení C # (vysoká úroveň) je hodně odlišné od učení se sestavení (Nízká úroveň).

Velký výběr bude záviset na tom, co chcete dělat. Programování ovladače bude s největší pravděpodobností zahrnovat C nebo Assembly ... Programování webové stránky bude PHP, C #, asp, atd ... Nebudete se dotýkat Assembly pro programování webu ... atd ...

Pokud jde o základy ... jakmile se rozhodnete, co chcete dělat, je jednodušší vybrat jazyk. Například jsem se stal analytikem dat v nemocnici. Takže moje „volba“ jazyků je SQL/TSQL/DB2 pro přístup k datům, C # WPF pro klienty se systémem Windows, Silverlight pro webové klienty, některé RPG/CL pro back-end logiku IBM ...

Osobně se držím dobré knihy + buduji svůj vlastní program procvičování jazyka. Líbí se mi APress a miloval čtení C # 2008 Illustrated při učení C #. Mají další knihy, které zahrnují základy pro nezúčastněné i odborníky.

2
WernerCD

Montážní jazyk, C, SQL, C #

Vím, nudný a starý-skool. A celá otázka ignoruje opravdu těžkou část programování, kterou je řešení problémů, modelování domén a konstrukce algoritmů. Ale tady je proč:

  1. nemůžete se probudit jazykem shromáždění; buď to pochopíš, nebo ne. kompilátor vás nezachrání, neexistuje žádná režie rámce ani knihovny a nemůžete se skrýt před architekturou počítače; je to čistě programování (na úrovni začátečníků sčítání dvou čísel)

  2. poté, co jste napsali několik programů v jazyce Assembly, které obsahují více než několik stovek řádků, ukazatele a správa paměti již nejsou záhadné, a měli byste si začít v kódu všimnout vzorců (pokud se jedná o přepínač, pole, smyčky atd.) ). C přináší tyto vzory na sluneční světlo a umožňuje jim svítit. Standardní knihovna je užitečná, aniž by byla obrovská, ale neobtěžujte se makry/šablony/atd. v tomto stádiu.

  3. nyní skočte do databází s SQL. Nejezděte přes palubu s uloženými procedurami, získejte pouze základy tabulek a dotazů.

  4. po napsání několika C programů s více než několika stovkami řádků jsou ukazatele, struktury a správa paměti druhou přirozeností a procedurální konstrukty jsou staří přátelé. Začnete si všímat vzorců vyššího řádu: tyto funkce se vždy vztahují k této datové struktuře, tato část kódu je stejně jako ta část kódu, s výjimkou metod X, Y a Z atd. Přidejte k tomu svůj přehled relačních dat a nyní jste připraveni na objektově orientovaný jazyk. S masivním rámcem a obecně tupou dokumentací. Vítejte ve skutečném světě! Prozkoumejte GUI, psát aplikace pro počítače, psát webové stránky, psát webové služby, psát, co se vám líbí. Jděte si najít práci, pokud jste tak nakloněni.

Jste nyní programovací Jedi? Kód ninja? Ne, nyní jste pouze kompetentní. Ale máte pevný základ, na kterém budete moci prozkoumat nové lesklé zábavné věci.

1
Steven A. Lowe

Potřebujete základy:

  1. Strojový kód
  2. Shromáždění jazyk
  3. C
  4. LISP

Po tom to asi nezáleží.

1
Scott Whitlock

Začněte v blízkosti kovu:

  1. Assembler
  2. C
  3. C++
  4. C#
  5. LISP
  6. Python nebo Ruby

Nyní je problém s takovým širokým přístupem takový, že se nikdo nemůže stát vzdáleně schopný v těchto jazycích bez let studia.

  1. Assembler: 3 měsíce
  2. C: 6 měsíců
  3. C++: 2 roky
  4. C #: 6 měsíců
  5. LISP: 3 měsíce
  6. Python/Ruby: 3 měsíce

Pokud není vaším záměrem je naučit je „Ahoj svět“, což by mělo trvat asi měsíc pro všech 6.

0
SnoopDougieDoug

Schéma C, C++

Budu zaujatý a použiji model, který moje univerzita v současné době používá pro své hlavní učební osnovy z oblasti informatiky. Byl jsem proti tomu během prvního roku, ale v následujících letech jsem za to vděčný. Model je založen na tom, že nevyžaduje žádné zkušenosti s programováním, ale vyžaduje schopnost učit se.

  1. Schéma
    Jsme první, kdo se učí programování, čím méně kouzel, tím lépe. Výukový jazyk schématu představuje jasnou a rozumnou definici jazyka, opravdu malé sady axiomů („magie“), na kterých můžete stavět a rozšiřovat. Každý, kdo dokáže rozumět funkcím v matematice, může programy Scheme sledovat a uvažovat. Začínáme se schématem poskytuje čistý, ale výkonný způsob, jak přemýšlet o výpočtu, aniž byste se museli starat o detaily specifické pro daný jazyk.

  2. C
    Přechod ze schématu na C je drastický, ale umožňuje vám získat informace o velmi důležitém mapování jazyků vysoké úrovně na jazyky nízké úrovně. Naučit se paměťový model (ukazatele, haldy, hromady atd.) A jak jsou kompilovány a spouštěny programy, jak fungují ukazatele, hromady a haldy, jsou základní dovednosti. Díky tomuto porozumění na nízké úrovni můžete začít analyzovat programy na vyšší úrovni (Big O). Můžete začít převádět své vlastní abstraktní datové typy a hrát si s různými implementacemi (řekněme jednoduchou hashovací tabulku vs. binární strom pro sadu).

  3. C++
    Prostřednictvím učení C a schématu začneme vidět různá paradigmata programovacích jazyků a jak se mohou aplikovat na různé problémy. Nyní můžete přistupovat k nejděsivějším aspektům programování: výběr a kompromisy. Volba programovacího jazyka může ovlivnit výkon, čitelnost, udržovatelnost, robustnost atd. Pro řešení problémů větších než věci, které můžete mít v hlavě, je tato volba skvělá, ale také nebezpečná. C++ se snaží udělat pro programátora co nejméně možností. Prostřednictvím učení C++ se naučíte, jak tyto kompromisy a sami se rozhodnout vyřešit své problémy.

Nemusíte používat žádný z těchto jazyků v průmyslu nebo se jich nikdy znovu dotknout, ale proces jejich učení vám pomůže porozumět jiným jazykům, které budete používat. Dalším aspektem je, že se učíte nástroje kolem konkrétního jazyka. Spuštění gcc přes příkazový řádek, učení Vim, krokování programem pomocí GDB, vytváření Make souborů, kontrola kódu pomocí SVN, psaní skriptů Shell pro automatizaci testování atd.

Nezapomeňte, že základní kurikulum má také další kurzy (počítačová architektura, datové struktury a algoritmy, kompilátory, operační systémy atd.). Pouhé studium těchto jazyků tedy nestačí na zdatné programování.

0
Kirk Fernandes

Cesta ze základního jazyka na vysokou úroveň je cesta. Takto máte stále představu, co se děje v zádech.

  • C - Správa ukazatelů a paměti
  • C++ - OO základy a stále velmi populární)
  • Java/C # - Nejoblíbenější jazyky
  • Některé základní shromáždění
  • Funkční jazyk - např. Haskell
  • Skriptovací jazyk - např. Krajta
0
Carra

Dobře, toto je poslední den odměny. A přidávám svou odpověď. Moje navrhovaná sekvence-

C, C++, Java/C #, Python/Ruby, Jakýkoli jiný jazyk (Assembly/LISP/Prolog atd.)

  • Nemyslím si, že první jazyk musí být nejjednodušší. Spíše si myslím, že by to mělo podat celkovou představu o tom, jak počítač funguje tak, že si zachovává určité abstrakce.
  • Přechod z C na C++ bude snazší. V současnosti bude OOP, nejpoužívanější paradigma.
  • Přechod z C++ na C #/Java bude snazší. Dávám přednost C #, protože zahrnuje mnoho paradigmat, jako je funkční programování.
  • Když někdo nyní přijde na dynamické jazyky jako Python nebo Ruby), bude existovat "WoW". Bude snazší cítit krásu dynamického psaní. Ale učení dynamické jazyky nejprve a statické jazyky později způsobí, "Oh! Proč musím přidat všechny tyto?"
  • Nyní jsou nejpoužívanější paradigma a jazyky téměř hotové. Prozkoumejte, co chcete. Od montáže po LISP, Prolog nebo Haskell. A objevte novější kontexty a funkce různých programovacích jazyků.
0
Gulshan
  1. Krajta. Chcete-li dělat věci, proveďte běžné programování. Procedurální, OO a (do určité míry) funkční).

  2. Regulární výrazy. Jsou v knihovně Python), ale je to samostatný DSL.

  3. Shell (BASH nebo cokoli). "&", "|", ";" operátoři pro kombinování procesů jsou v Pythonu kritičtí a nepříjemní.

  4. SQL. Toto je prozatím lingua franca pro přístup k datům.

  5. XHTML. Toto je prozatím lingua franca pro prezentaci dat.

  6. CSS.

Možná C, pokud to bude nutné.

0
S.Lott