 |
Onderricht Uzelf die in Tien Jaren
Peter
Norvig Programmeert
Waarom
is iedereen in zo'n haast?
De gang in
boekenwinkels en u zult zien hoe Te Onderrichten Uzelf Java in 7
Dagen naast eindeloze variaties te onderrichten Visuele basis aan te
bieden, Windows, het Internet, enzovoort in enkele dagen of uren. Ik
deed de volgende
machtzoektocht aan Amazone.com:
pubdate: na 1992 en titel: dagen en (titel: leer of titel:
onderricht uzelf)
En werden terug 248 slagen. De eerste 78 waren computerboeken (nummer
79 was Leer Bengaalse in 30 dagen). Ik verving "dagen" met "uren"
en werd merkwaardig gelijkaardige resultaten: 253 meer boeken, met
77 computerboeken
volgde
door Onderricht Uzelf Grammatica en Stijl in 24 Uren aan nummer
78. Uit het hoogste 200 totaal was 96% computerboeken. Het besluit
is dat ofwel mensen in een groot snel zijn over computers te leren,
ofwel dat computers hoe dan ook fabelachtig gemakkelijker zijn te
leren dan nog iets. Er zijn geen boeken op hoe Beethoven of Quantum
Fysica te leren of zelfs de Hond Verzorging in enkele dagen. Verhuur
ons analyseren wat een titel zoals
Pascal in Drie Dagen Leer kon betekenen:
* Leer:
In 3 dagen zult u tijd niet hebben om enkele beduidende programma's
te schrijven en leer van uw successen en mislukkingen met hen. U
zult tijd niet hebben om met een ervaren programmeur te werken en te
begrijpen wat het is zoals in die omgeving te leven. In kort, zult u
tijd niet hebben om veel te leren. Zo dat zij enkel over een
oppervlakkige vertrouwdheid kunnen praten, geen diep begrip. Toen
Alexander Paus zei, is een kleine leren een gevaarlijk ding.
* Pascal: In 3
dagen zou u de syntaxis van Pascal misschien kunnen leren (indien u
reeds een gelijkaardige taal) wist, maar u kon veel niet leren over
hoe de syntaxis te gebruiken. In kort, indien u was, zeg, een
Basisprogrammeur, u kon leren programma's in de stijl van basis te
schrijven met Pascal syntaxis, maar u kon niet leren wat Pascal
eigenlijk goed (en slecht) voor is. Zo dat wat het punt is?
Alan Perlis zei eenmaal: "Een taal die de weg niet treft die u
aan programmering denkt, is niet waard voorspellen". Een mogelijk
punt is dat u een minuscuul beetje van Pascal moet leren (of
waarschijnlijker, iets houdt van Visuele basis of Javascript) omdat
u met een bestaand werktuig moet koppelen om een specifieke taak te
bereiken. , Maar dan leert niet u hoe te programmeren; u leert die
taak te bereiken.
* In Drie Dagen:
Jammerlijk dit is niet genoeg, als het volgende onderdeel toont.
Onderricht Uzelf Programmeert in Tien Jaren
Onderzoekers
(de
Bloem (1985),
Bryan & Harter (1899),
Hooi
(1989), Simmon &
de Achtervolging (1973)) hebt getoond het neemt ongeveer tien
jaren te ontwikkelen expertise in een grote verscheidenheid van
gebieden, inclusief schaakspelspelen, muziekcompositie,
telegraafoperatie, schilderij, pianospelen, zwemmend, tennis en
onderzoek in neuropsychologie en topologie. waarom. Verschijn daar
geen echte korte wegen te zijn: zelfs Mozart, die een muzikale
wonder met een leeftijd van 4 was, die 13 meer jaren is genomen voor
hij begon wereld-klasmuziek te produceren. In nog een genre scheen
de Beatles op de scène met een reeks van #1 slag en een verschijning
op de Ed Sullivan vertoning in 1964 te barsten. Maar zij hadden
kleine clubs in Liverpool en Hamburg sinds 1957 gespeeld, en terwijl
zij massaberoep al vroeg hadden, hun eerst geweldig kritisch succes,
Sgt. Peper, werd in 1967 vrijgegeven. Samuel Johnson (1709-1784)
dacht het dat langer wordt genomen dan tien jaren: "Voortreffelijkheid
in departementen kan enkel door de arbeid van een levenstijd worden
bereikt; het te geen kleiner prijs gekcht te worden". En Chaucer
(1340-1400) klaagde "de lyf zo kort, de handwerk zo snak naar lerne".
Hippocrates (c. 400BC) wordt voor het uittreksel geweten "ars longa,
vita brevis", die deel van de langere prijsopgave is "Ars longa,
vita brevis, occasio praeceps, experimentum periculosum, iudicium
difficile", die in het engels vertolkt als "Leven kort is, [het]
handwerk snakt, gelegenheid vluchtig, experiment verraderlijk,
oordeel moeilijk". Hoewel in Latijn, kan ars betekenen ofwel kunst
ofwel handwerk, in de oorspronkelijke Griek de woord "techne" kan
enkel "vaardigheid" betekenen, niet "kunst".
Hier is
mijn recept voor het programmeren van succes:
* Word u in programmering geïnteresseerd en doe enige omdat het
plezier is. Vergewis u ervan dat het bijhoudt zijn genoeg plezier
zodat u gewillig zult zijn in tien jaren te zetten.
* Praat met andere programmeurs; lees andere programma's. Dit is
belangrijker dan boeken of opleidingscursus.
* Het Programma. De best soort van het
leren leert door te doen. Om het meer technisch te zetten, "het
maximale vermogen voor individuen in een gegeven domein wordt
automatisch als een functie van verlengde ervaring, maar het
vermogen niet kan worden toegenomen zelfs door zeer ervaren
individuen tengevolge van opzettelijk inspanningen bereikt om te
verbeteren". (P. 366) en "de doeltreffendste leren vereist een
goed-gedefinieerde taak met een geschikt moeilijkheidsniveau voor
het bijzondere individu, informatieve feedback en gelegenheden voor
herhaling en correctie van fouten". (P. 20-21) Het boek
Kenvermogen in de praktijk: Geest, Wiskunde en Cultuur in Alledaags
Leven zijn een interessante referentie voor dit standpunt.
* Indien u wilt, zet in vier jaren aan een universiteit (of meer aan
een universiteit). Dit zal aan u toegang tot sommige banen geven die
referentie vereisen en het zal aan u een dieper begrip van het veld
geven, maar indien u van school niet geniet, u kunt (met wat
toewijding) krijg gelijkaardige ervaring op de baan. In elk geval
boek dat alleen leert zal niet zijn genoeg. "Informaticaopvoeding
kan niet uitvoering iemand een deskundige programmeur die meer dan
borstels en pigment studeert kan maken aan iemand een deskundige
schilder" zegt Eric Raymond, auteur van het Woordenboek van De
Nieuwe Computerkraker. Een van de best programmeurs die ik ooit
aanwierf gehad enkel een middelbare Schoolgraad; hij heeft veel
geweldige software
geproduceerd, heeft zijn eigen
nieuwsgroep en maakte genoeg in aandelenopties om zijn eigen
nachtclub te
kopen.
* Werk aan
projecten met andere programmeurs. Wees de best programmeur op
sommige projecten; wees het slechtste op sommige anderen. Wanneer u
het best bent, kunt u uw bekwaamheden testen om een project te
leiden en anderen met uw visie te inspireren. Wanneer u het
slechtste bent, leert u wat de meesters doen en u leert wat zij niet
houden van te doen (omdat zij u maken doen het voor hen).
* Werk aan projecten na andere programmeurs. Wordt betrokken in
overeenkomst een programma schreef door iemand anders. Zie wat het
neemt te begrijpen en te repareren het wanneer de oorspronkelijke
programmeurs niet rondom zijn. Denk aan hoe uw programma's te
ontwerpen om het gemakkelijker voor die te maken die het zullen
handhaven na u.
* Leer tenminste een half dozijn programmeringstalen. Omvat een taal
die steunt klasseert abstracties (zoals Java of C + +), een die
functionele abstractie (zoals Lispelende Uitspraak of ML) steunt,
een die syntactische abstractie (zoals DE Lispelende Uitspraak)
steunt, een die verklarende specificaties (zoals Proloog of C + +
mallen) steunt, een die coroutines (zoals Beeld of Plan) steunt, en
een die parallellisme (zoals Sisalvezel) steunt.
* Herinner u dat er een "computer" in "informatica" is. Weet hoe
lang het uw computer neemt om een instructie uit te voeren, haal een
woord van herinnering (met en zonder een opslagplaatsjuffrouw),
lezing opeenvolgende woorden van schijf en zoek naar een nieuwe
locatie op schijf. (Antwoorden
hier).
* Word in een taalstandaardiseringsinspanning betrokken. Het kon de
ANSI-C zijn + + commissie of het zou kunnen beslissen of uw
plaatselijke coderingstijl 2 of 4 ruimteinsnijdingsniveau zal hebben.
Ofwel weg, leert u ongeveer welke andere mensen van in een taal
houden, hoe diep zij zo voelen en misschien zelfs een klein over
waarom zij voelen zo.
* Heb de goede zin om de taalstandaardiseringsinspanning uit te
stappen even vlug als mogelijk.
Met iedereen die in geest, zijn twijfelachtig hoe ver u slechts door
boekleren kunt werden. Voor mijn eerst kind geboren was, lees ik
alle Hoe Naar boeken en nog steeds gevoelde hou van een domme
beginneling. 30 Maanden later, toen mijn tweede kind schuldig was,
ben ik terug naar de boeken voor een verfrissing gegaan? De nr. in
plaats daarvan steunde, ik op mijn persoonlijke ervaring, die uit
draaide om ver nuttiger te zijn en gerust te stellen naar mij dan de
duizenden van pagina's door experts schreven.
Bevrijde Beken, in zijn essay
Geen Zilveren
Kogel identificeerde een drie-deel plant bevinding geweldige
softwareontwerpers:
1. Identificeer systematisch hoogste ontwerpers even vroeg als
mogelijk.
2. Wijs een carrièrementor toe om verantwoordelijk voor de
ontwikkeling van het vooruitzicht te zijn en hou voorzichtig een
carrièrebestand bij.
3. Verzorg gelegenheden voor het groeien van ontwerpers om op elkaar
in te werken en elkaar te stimuleren.
Dit neemt aan dat sommige mensen reeds de kwaliteiten hebben die
noodzakelijk zijn voor het zijn van een geweldige ontwerper; de baan
is goed hen langs te overhalen. Alan Perlis zet het meer beknopt: "Iedereen
kan worden onderricht te beeldhouwen: Michelangelo zou hoe niet naar
moeten hebben onderricht worden. Zo dat het met de geweldige
programmeurs is".
Ga zo vooruit en koop dat het Java boek; u zult vermoedelijk sommige
gebruiken uit het krijgen. Maar u zult niet veranderen uw leven, of
uw echte totale expertise als een programmeur in 24 uren, dagen, of
zelfs maanden.
Referenties:
Bloem, Benjamin (ed).
Ontwikkelingstalent in Jeugd, Ballantine, 1985.
Beken, Bevrijde,
Geen Zilveren Kogel, IEEE Computer, vol. 20, nr. 4 1987 p.
10-19.
Bryan, W L. & Harter, N. "Studeert op de telegraphic taal: De
aanwinst van een hiërarchie van gewoonten. De psychologie Herziening,
1899 8 345-375
Hooi, John R.,
Vervolledig Probleem Oplosser Lawrence Erlbaum, 1989.
Achtervolging, William G. & Simon, Herbert A. "het
Inzicht in Schaakspel" de Cognitieve Psychologie, 1973 4 55-81.
Was, Jean,
Kenvermogen in de praktijk: Geest, Wiskunde en Kweek in Alledaagse
Leven, Cambridge Universiteitspers, 1988.
Antwoorden:
Benaderen
timing voor verschillende operaties op een typische 1GHz PC in
zomers 2001:
Voer enkele instructie 1 nanosec uit = (1/1,000,000 sec haal woord
van L1 opslagplaatsherinnering 2 nanosec
haal woord van centrale geheugen 10 nanosec haal woord van
opeenvolgende schijflocatie 200 nanosec haal woord
van nieuwe schijflocatie (zoek) 8.000.000 nanosec = 8 millisec
Het aanhangsel: Boeken
en Andere
Hulpbronnen Enkele mensen hebben gevraagd welke boeken en web
oproept zij van zouden moeten leren. Ik herhaal dat "boek dat alleen
leert zal genoeg niet zijn", maar ik kan de volgen aanraden:
* Het Plan:
Structureer en
Interpretatie van Computerprogramma's (Abelson & Sussman) zijn
vermoedelijk de best introductie naar informatica en het onderricht
programmering als een weg van overeenkomst de informatica. U kunt
online video's van lezingen op dit boek evenals het
volledige tekst online zien. Het boek daagt uit en zal sommige
mensen verwijderen die misschien succesrijk met nog een benadering
konden zijn.
* Het Plan:
Hoe om
Programma's (Felleisen et al) Te Ontwerpen. is een van de best
boeken op hoe eigenlijk programma's in een elegante en functionele
weg te ontwerpen.
* Python:
Het python
Programmering: Een Introductie naar CS (Zelle) is een goede
introductie met Python.
* Python: Enkele online handleiding
zijn verkrijgbaar aan Python.Organisatie.
* Oz:
Begrip,
Techniek en Modellen van Computer Programmering (Busje Roy & Haridi)
worden gezien door enige als de modern-dag opvolger naar Abelson &
Sussman. Het is een reis door de grote ideeën van programmering, en
bedekt een wijder bereik dan Abelson & Sussman terwijl misschien
gemakkelijker zijnd te lezen en te volgen. Het gebruikt een taal,
Oz, dat niet ruim wordt geweten, maar dient als een basis voor het
leren andere talen.
Copyright ©
2001 Peter Norvig |
 |