CS101 utforskar de viktigaste egenskaperna hos datorer, hur de fungerar, vad de kan och inte kan göra, och kräver ingen datorbakgrund alls.Vi börjar med att titta på datorns grundläggande egenskaper och börjar leka med datorkod.
Acknowledgements: Tack till Nick Parlante för hans material. Från Nick: ”Tack till Google för stöd till min tidiga forskning som har bidragit till att skapa den här klassen. Tack till Mark Guzdial som populariserade idén om att använda digitala medier för att introducera datorer.”
Datorers grundläggande ekvation
Datorers grundläggande ekvation är:
Dator = kraftfull + dum
- Kraftfull nog för att kunna titta igenom massor av data
-Biljoner ”operationer” per sekund - Dum eftersom varje operation är enkel och mekanisk.
-Inget som liknar ”insikt” eller ”tänkande” (HAL 9000 video) - Mäktigt + dumt … kommer att komma fram i våra övningar
- Varför är datorer användbara trots sina begränsningar?
- Det är vad CS101 handlar om
-Visit this funny world of the computer, see how it works
-Understand what they can do and how humans leverage them
-Not be intimidated - Hidden agenda: open eyes for some, more computer science courses
Datorer är mycket kraftfulla när det gäller att snabbt titta igenom stora mängder data. Datorer kan bokstavligen utföra miljarder operationer per sekund. De enskilda ”operationer” som datorer kan utföra är dock extremt enkla och mekaniska, inget som liknar en mänsklig tanke eller insikt. Typiska ”operationer” är till exempel att jämföra två tal eller addera två tal tillsammans.
Så även om datorerna är snabba på det de gör, är de operationer som de kan utföra extremt stelbenta, enkla och mekaniska. Eller uttryckt på ett annat sätt, datorer är inte som HAL 9000 från filmen 2001: A Space Odyssey: HAL 9000 video.
En viktig slutsats är att en dator inte fungerar som en mänsklig hjärna. Datorn är ett mekaniskt verktyg som kan göra fantastiska saker, men den kräver att en människa talar om för den vad den ska göra.
Hög nivå – Hur fungerar en dator?
- Datorn följer en serie ”kodinstruktioner”
- Varje instruktion är enkel (t.ex. addera 2 tal)
- Datorn ”kör” en lång serie instruktioner
- Enbart mekanisk
Datorer är mycket användbara
- Tänk på alla användbara datorfunktioner (telefon, kamera)
-Meddelanden, e-post
-MP3-ljud
-Reduktion av röda ögon - Om datorer är så dumma…. hur kan de då vara så användbara?
- Vad förbinder de två sidorna?
Programmerare
- Programmerare utnyttjar kraften i en dator!
- Programmeraren tänker ut en användbar funktion
-Kräver kreativitet, insikt om mänskliga behov och kunskap om datorer - Programmerare bryter ner stegen och skriver kod för datorn
– Förminskar det för datorn! - Bästa egenskaper hos båda sidor: billig/snabb datorbehandling + kreativ insikt hos programmeraren
- CS101 utforskningar: algoritmer och kod
Om datorer är helt mekaniska och dumma, varför är de då så allestädes närvarande? Det är i gapet mellan datorn och att göra något användbart som den mänskliga programmeraren skapar lösningar. Programmering kräver att en människa är kreativ och har insikt om ett problem samt förmågan att bryta ner lösningen till instruktioner som en dator kan följa.
Kod avser det språk som datorn kan förstå. Under de här föreläsningarna kommer vi att skriva och köra korta kodstycken för att förstå vilka de väsentliga egenskaperna hos datorer är, och framför allt deras styrkor och begränsningar.
Vid experimenterande med kod kommer datorernas natur att framträda mycket tydligt … kraftfulla på sitt eget sätt, men med en begränsad, mekanisk kvalitet. IMHO är denna blandade natur hos datorer något som alla bör förstå för att kunna använda dem på ett bra sätt och inte skrämmas av dem.
För att koda – tålamod
- Vi börjar med lite enkel kodning nedan
- Kod är som legobitar…
- -Individuella bitar är superenkla
- -Eventuellt bygger man upp fantastiska kombinationer
- Men vi måste börja i liten skala
Förskjutning
Inom några timmars föreläsning kommer vi att göra specialeffekter med bilder som till exempel följande:
Men för tillfället har vi bara print()!
Tålamod Vi kommer att börja med att lära oss några programmeringselement samt de olika delarna av en dator, och senare kommer vi att kombinera dessa få element på nytt för att lösa många problem. Dessa första element är enkla, så de är inte mycket att titta på på egen hand. Ha tålamod, snart kommer vi att sätta ihop dessa element — som legobitar — för att göra ganska snygga projekt.
Javascript Computer Langauge
- Javascriptkod plus några tillägg bara för CS101
- Våra kodfraser är små…
- -Genom tillräckligt stora för att experimentera med viktiga idéer
- -Inte fullständiga, professionella program
- -Men tillräckligt stora för att visa de verkliga utmaningarna med kodning
För den här kursen kommer vi att använda en variant av språket som kallas Javascript, med några extra funktioner för den här kursen. Språket Javascript fungerar i webbläsaren, så alla våra experiment kan leva direkt i webbläsaren utan att något annat krävs. Vi kommer bara att använda de delar av Javascript som behövs för våra experiment, inte hela språket som man kan se när man använder Javascript professionellt. Med det sagt är Javascript ett riktigt språk, och vår kod är riktig kod. Våra små program visar de viktiga funktionerna i kod, samtidigt som vi håller det hela snabbt och litet.
Första kodexemplet – Print
Här är en kod som anropar funktionen ”print”. Klicka på knappen Kör nedan så kommer din dator att köra den här koden och kodens utdata visas till höger.
- Kör kör varje rad en gång, och körs från början till slut
- print är en funktion, ett verb som representerar en handling som datorn ska utföra.
- Data inom parentesen skickas in till print-funktionen (substantiv)
-dessa data är objektet för ”verbet”
-data kallas för funktionens argument - Multipla värden separeras med kommatecken
- Experiment ändra koden och kör efter varje ändring se den nya utmatningen:
-ändra en siffra
-tillfoga fler siffor separerade med kommatecken inuti print(…)
-Kopiera den första raden och klistra in den två gånger efter den sista raden
-Jag lovar att resultatet kommer att bli mer intressant! - Smal syntax, inte fri form
-Den tillåtna syntaxen är superstark och smal
-till exempel kan man inte utelämna den högra parentesen )
-En avspegling av datorns inre mekaniska natur
-Låtsas inte avskräckas – ”When in Rome…”
-Vi besöker datorns värld - Notera att detta ”print” inte är en normal del av Javascript, jag lade till det för CS101
Print And Strings
- En kommentar börjar med // och sträcker sig till slutet av raden. Ett sätt att skriva anteckningar om koden, som ignoreras av datorn.
Varför kan programmerare använda kommentarer? - En sträng är en sekvens av tecken som skrivs inom citationstecken för att användas som data i koden
– t.ex. ”hello” eller ”123”
-Strängar fungerar med utskriftsfunktionen, utöver siffror
-Strängar i datorn lagrar text, t.ex. webbadresser eller texten i stycken etc. - Experiment:
-Redigera texten inom en sträng
-Lägg till fler strängar som är separerade med kommatecken
-Lägg till strängen ”print” – knepigt!
-Inom citationstecken är det bara data - Kod = instruktioner som körs
- Data = siffror eller strängar; hanteras av koden
Bemärk att print känns igen som en funktion i koden jämfört med strängen ”hello” som bara är passiva data (som verb och substantiv).Datorn ignorerar kommentarerna, så de är bara ett sätt för dig att skriva anteckningar till dig själv om vad koden gör. Kommentarer kan användas för att tillfälligt ta bort en kodrad – ”kommentera ut” koden genom att placera ett ”//” till vänster om den.
Tänka på syntax och fel (dagens nyckelbudskap!)
- Syntax — koden är strukturerad för datorn
- Väldigt vanligt fel — skriver in kod, med ett litet syntaxproblem
- Professionella programmerare gör den sortens ”fel” hela tiden
- Tyvärr är det mycket lätt att åtgärda … oroa dig inte för det
- Inte en återspegling av någon brist hos programmeraren
- Det ligger i sakens natur att skriva in idéer i det mekaniska dataspråket
- Anbörjare kan spåra ur av syntaxsteg och tro att de gör något stort fel
- Försök att göra ett gäng typiska syntaxfel och rätta till dem
- Rättar man dessa små fel är det ett litet, normalt steg
- Anmärkningar: Firefox ger dig de bästa felmeddelandena
Syntax Syntaxen som visas ovan måste följas strikt annars fungerar inte koden: funktionsnamn, parenteser, varje sträng har öppnande och stängande citationstecken, kommatecken som separerar värden för ett funktionsanrop.
Syntaxens rigiditet är en återspegling av datorernas begränsningar, eftersom deras naturliga språk är fast och mekaniskt. Detta är viktigt att ta till sig när man arbetar med datorer, och jag tror att det är här många människor spårar ur när de kommer igång med datorer. Du skriver något som vilken människa som helst skulle kunna förstå, men datorn kan bara förstå koden där den passar in i datorns mekaniska syntax.
Triviala, ytliga syntaxfel är mycket vanliga när man skriver kod. De mest kunniga programmerarna på jorden gör den typen av fel hela tiden och tänker inte på det. Syntaxfelen återspeglar inte någon bristfällig strategi från författarens sida. Det är bara ett naturligt steg i översättningen av våra tankar till datorns mer mekaniska språk. Som vi kommer att se nedan är det mycket snabbt att åtgärda dessa fel.
Det är viktigt att inte låta sig spåra ur av dessa små ytliga felfall. För att hjälpa dig att lära dig mönstren har vi nedan många exempel som visar typiska fel, så att du kan se hur felmeddelandena ser ut och se hur du kan åtgärda dem. För varje kodstycke nedan, vad är felet? Ibland pekar det felmeddelande som datorn genererar på problemet på ett korrekt sätt, men ibland avslöjar felmeddelandet bara att felet har förvirrat datorn så djupt att den inte kan skapa ett korrekt felmeddelande. Firefox producerar för närvarande de mest hjälpsamma felmeddelandena och ofta kommer den att tala om vilken specifik rad som har problem.
Exempel på syntaxfel
Dessa syntaxproblem är snabba att åtgärda.