Python äidinkielenä

Original page: http://mcsp.wartburg.edu/zelle/python/python-first.html

John M. Zelle
Matematiikan, Computer Science, ja fysiikka
Wartburg College
Waverly, IA 50677
zelle@wartburg.edu

Abstrakti

Tällä hetkellä on vain vähän yksimielisyyttä siitä, mikä ohjelmointikieli on sopivin johdanto tietojenkäsittelytieteen luokissa. Useimmat koulut käyttävät perinteistä järjestelmää ohjelmointikieli kuten C, C ++, Java tai Ada CS1 ja CS2. Kuitenkin ohjelmointikieliä kuten TCL, Perl ja Python ovat yhä suositumpia ohjelmistokehitystyökaluille. Tässä artikkelissa käsitellään etuja käyttämällä skriptikieli ensimmäisenä kielenä tietojenkäsittelytieteen opetussuunnitelmaan. Skriptikielet ovat yksinkertaisempia, turvallisempia ja joustavampi kuin järjestelmän kielellä. Python erityisesti nousee lähes ihanteellinen ehdokas ensimmäisen ohjelmointikieli.

1. Esittely

Vielä viisi vuotta sitten, lähes kaikki olivat samaa mieltä, että Pascal oli oikea kieli havainnollistaa käsitteitä tietotekniikassa. Orastava tietotekniikan tutkijoita alkoi oppimalla ohjelmoida Pascal, ja ylemmän tason opiskelijat käytetty oppikirjoja perustuu Pascal. Sitten tuli olio-vallankumous. Nykyisin noin ainoa yksimielisyyttä kielillä tietojenkäsittelytieteen opetussuunnitelma on, että Pascal on passe. Muutto pois Pascal on korostunut viime vuosina, mutta yksikään kieli on tullut selvä seuraaja. Yksi äskettäinen tutkimus CSAB akkreditoidut ohjelmat osoitti suosituin ensimmäinen kieli, C ++, opetetaan vain 22% vastanneiden instituutioiden (McCauley & Manaris, 1998). Lisäämällä sekaannus on rakettimaista nousta Java sekä teollisuuden ja tiedeyhteisön.

Jotkut ovat ehdottaneet, että ”kieli sodat” ovat ohi ja (vain) kohtuulliset vaihtoehdot ovat: C, C ++, Java, Ada (ja ehkä Eiffel). ([Alaviite] Tämä tuntui olevan yksimielisyys paneelikeskustelu ”mahdollisia tulevaisuuksia CS2” at SIGCSE ’98.) uskon julisti sotia on myöntää tappion liian aikaisin. Jolloin on vähän yksimielisyyttä yhdellä äidinkieli tuntuu sopivan aika palata ensimmäiset periaatteet ja miettiä, mitä ensimmäisenä kielenä pitäisi olla. Matkan varrella, voimme havaita, että jotkut parhaista ehdokkaista ei ole edes harkittu.

Tässä artikkelissa, olen sitä mieltä, että erittäin korkean tason ohjelmointikieliä, kuten Python, Perl, Tcl, Rexx, ja Visual Basic ovat parempia ehdokkaita ensimmäinen kieli. Yksi erityisesti, Python, näyttää lähes ihanteellinen.

2. Kriteerit Ensimmäisenä Kielenään

2.1 Oletukset CS1 ja CS2

Huomattuaan, että on huomattavaa erimielisyyttä siitä, mitä materiaalia pitäisi opettaa CS1 ja CS2, mahdolliset älykästä keskustelua mitkä kielet ovat sopivin on alettava perusolettamuksia kursseista itsestään. Seuraavat oletukset heijastavat melko yleinen lähestymistapa, mutta ymmärrän, että ne eivät ole täysin kiistaton.

Ensinnäkin CS1/CS2 järjestys on pohjimmiltaan ohjelmointi. Vaikka nämä kurssit varmasti laajempien kysymysten tietojenkäsittelytieteen teorian ja käytännön ydin tietojenkäsittelytieteen ja näistä ensimmäiset luokat on edelleen ongelmanratkaisu, suunnittelu ja ohjelmointi. Oppiminen Ohjelma on hyvin käytännönläheinen toimintaa, ja nämä luokat suunnittelua sisältävistä ja ohjelmointiprojekteissa erikokoisia joko avo- tai suljetun lab asetuksia.

Toiseksi ohjelmointikieli sinänsä ei ole keskittyä näiden luokkien. Vaikka meidän opiskelijat viittaavat usein näihin luokkiin kuin ”C ++ luokka” tai ”Java-luokan” kursseista on suunniteltu tarjoamaan johdatus alan tietotekniikassa. Käytetystä kielestä on todella toissijainen asia. Taipumus ajatella CS1 olevan johdatus tietyn kielen oire monimutkaisuus kieliä, joita usein käytetään.

Kolmanneksi nämä luokat perehdytään ensisijainen paradigmoja suunnittelu ja ongelmanratkaisu käytössä nykyään, eli jäsennelty ja olio-menetelmien toteutettu välttämätöntä (selvitys suuntautunut) kieltä. Vaikka on olemassa vahvoja puolestapuhujia muiden lähestymistapojen (esim kuin toiminnallisen kielen ensimmäisen luokan), valtaosa johdanto luokat pyrkivät seuraamaan perinteistä polkua.

Neljänneksi ja ehkä kiistellyin, oletan että tavoite CS1 on harjoittaa ja kouluttaa tietojenkäsittelytieteen suurten ja kenties rekrytoida uusia. Kun otetaan huomioon nykyinen kysyntä valmistuneista ja että kaikkien koulutettua väkeä ymmärtää tietotekniikan, se on suuri karhunpalvelus harkita CS1 kuin ”weedout” luokassa. Ohjelmointi on kova, mutta meidän pitäisi pyrkiä tekemään se ole sen vaikeampaa kuin sen pitäisi olla.

2.2 Vaikutukset ohjelmointikieltä Choice

Jos johdanto luokat ovat todella noin tietotekniikassa yksityiskohtien sijasta tietyn kielen, tästä seuraa, että valitulla kielellä pitäisi olla yksinkertainen syntaksi ja semantiikka. Olemme kaikki kokeneet turhautumista CS1 tietenkin, että juututaan keskusteluun syntaksivirheitä ja kielen rakenteita. Siinä määrin kuin mahdollista, meidän pitäisi valita kieli, joka minimoi monimutkaisuuden, jotta enemmän aikaa voi viettää kehittämiseen suunnittelun taitoja. Luonnollisena seurauksena tämä filosofia on, että yksinkertainen ongelmat pyritään ratkaisemaan yksinkertaisesti. Kieltä, joka edellyttää merkittäviä merkinnällisistä overhead ratkaista jopa triviaaleja ongelmia pakottaa kielen sijasta tekniikoita ongelmanratkaisuun tulla tutkimuskohde.

Hands-on, kokeellisen luonteen johdantokursseja vaikuttaa myös kielivalinnan. Kieli, jolla malleja ilmaistaan ​​pienellä yläpuolella kannustaa kokeilemaan ja uudelleen kirjoittamista. Siksi kieli olisi erittäin korkeatasoista ja joustavaa, jonka avulla opiskelijat voivat nopeasti ja helposti kokeilla vaihtoehtoisia malleja. Tämä helpottaa ajatella algoritmia ja suunnitteluun liittyviä asioita pikemmin kuin matalan tason täytäntöönpanon yksityiskohtia. Mahdollisuuksien, kieli olisi myös turvallisuutta kokeiluihin. Meidän pitäisi suosia kieliä varauduttava salaperäisen kaatuu peräisin osoitin tai array-bounds virheitä. Opiskelijat tällä tasolla ovat vain oppia tekniikoita jäljittää ja virheiden korjaamisesta; Kielen tulisi auttaa heitä oppimaan, ei tyhjäksi niitä.

On myös tärkeää, että kielen tukea modernin lähestymistapoja suunnitella mukana abstraktio, kapselointi ja olio-tekniikoita. Vaikka kohde-pohjainen malleja voidaan toteuttaa millä tahansa kielellä, että se tapahtuu joka tukee esineitä on paljon intuitiivinen ja yksinkertainen. Tämä mahdollistaa jälleen kurssin keskittyä korkeamman tason käsitteellinen kysymyksiin pikemmin kuin täytäntöönpanon yksityiskohtia.

Lopuksi on käytännön seikat valitessaan kielellä. On erittäin toivottavaa, että kieli on laajasti saatavilla eri alustoille. Vastaavasti, kieli, jota käytetään ammattilaiset ulkopuolella akateemisen on parempi kuin kieli, joka on ”opetus vain”, jos se täyttää muut edellä. Opetuskieli X yksinkertaisesti, koska se on yleisesti käytetty kieli ei pitäisi olla tärkeä näkökohta itsestään. Opiskelijamme oppivat ja käyttää monia kieliä uransa aikana. Mikä on tärkeää alkuruokia antaa heille parhaan mahdollisen perustan keskeisiä periaatteita ja tekniikoita, joiden avulla he voivat hyväksyä ja sopeutua eri kielille he kohtaavat ”oikeassa maailmassa.”

3 Python Advantage

3.1 Kotelo Skriptikielet

Ousterhout (1998) erotetaan järjestelmä ohjelmointikieliä (esim C, C ++, Pascal, Ada, Java) ja ohjelmointikieliä (esim Perl, TCL, Python, Rexx, Visual Basic). Entinen staattisesti kirjoitetaan yleensä koottu, ja ne edustavat vaatimaton vedenotto taustalla kone. Jälkimmäinen on dynaamisesti kirjoitetaan, tulkitaan yleensä, ja erittäin korkean tason. Skriptauskieliä kuvataan yleisesti olevan ”liima kielillä” liittämiseksi itsenäinen komponentteja laajamittaisia ​​sovellutuksia tai prototyyppien työkaluja nopeuttamaan sovelluskehitystä. Koska Ousterhout (1998, 23) toteaa:

… useita viimeaikaisia ​​suuntauksia, kuten nopeampia koneita, parempi ohjelmointikieliä, kasvava merkitys graafisten käyttöliittymien ja komponenttien arkkitehtuurit, ja kasvu Internetin ovat kasvaneet voimakkaasti sovellettavuutta ohjelmointikieliä. Tämä suuntaus jatkuu edelleen seuraavan vuosikymmenen aikana yhä enemmän uusia sovelluksia kirjoitettu kokonaan ohjelmointikieliä ja järjestelmän ohjelmointikieliä käytetään ensisijaisesti luoda komponentteja.

Perinteisesti tietojenkäsittelytiede ohjelmat ovat korostaneet järjestelmän ohjelmointikielet yli ohjelmointikieliä. Kuitenkin ohjelmointikieliä näyttäisi tarjoavan monia etuja, erityisesti johdanto ohjelmointia järjestyksessä. Skriptauskieliä yleensä yksinkertaisempia syntaksin ja semantiikan kuin järjestelmän kielellä. Koska dynaamisen kirjoittamalla ja tulkinta ne ovat hyvin joustavia ja rohkaista kokeilua. Erittäin korkean tason luonne mahdollistaa opiskelijoiden rakentaa entistä kehittyneempiä ja mielenkiintoisia projekteja vähemmän toteutuksen vaivalla.

Luultavasti, kiinnostuksen puute komentosarjakielissä syntyneistä käsitys, että he ovat ”lelu” kieliä eikä sovellu yleiskäyttöinen ohjelmointikieli. Vaikka tämä saattaa olla totta varhaisen ohjelmointikieliä (esim Unix komentoriviskriptejä), se ei todellakaan ole totta modernin variantteja.

3.2 Hieman Python

Eri suosittuja ohjelmointikieliä, Python lienee lähimpänä muodoltaan perinteiseen järjestelmään kieliä (Laird & Soraiz 1998b). Lisäksi se, luultavasti, on paras tähdistössä ominaisuuksia suositella sitä ensimmäisenä ohjelmointikieli. Se ei ole tarkoitus tässä asiakirjassa, jolloin saatiin Python Tutorial; useat hyvät referenssit ovat käytettävissä tähän tarkoitukseen (Lutz, 1996; Watters, Van Rossum, ja Ahlstrom, 1996). ([Alaviite] Lukuisia hyviä Python resurssit löytyvät internetistä osoitteesta http://www.python.org.). Sen sijaan aion keskittyä ominaisuuksista Python, jotka tekevät siitä erityisen hyvä valinta keskuudessa ohjelmointikieliä ensimmäisenä tietokoneohjelmointikielellä. Vuoden keskustelun aion verrata Python C++, nykyisin yleisin ensimmäinen kieli, ja Java, kieli yleisimmin lueteltu ”huomioon.

3.2.1 Python on yksinkertainen

Yleensä ohjelmointikieliä ovat paljon yksinkertaisempia kuin järjestelmä kieliä kuten C ++ ja Java (Laird & Soraiz 1998b). Python on yksinkertainen, säännöllinen syntaksin. Lausunnot lopetetaan rivin loppuun, ja lohko rakenne on merkitty sisennys. Python-ohjelmat näyttävät suoritettavaa pseudokoodi. Tämä eliminoi monia hankala virheitä aloitteleville ohjelmoijille, erityisesti sijoittaminen puolipisteillä, haarukointi ja sisennys. Esimerkiksi, yleinen virhe C ++ ja Java on epäonnistuminen liittää lohkoon aaltosulkeilla kuten:

jos (x <0)
   cout << "x on negatiivinen";
   x = -x;

Python vastaava koodi suorittaa odotetusti, koska syvennys itse määrittää lohko:

jos x <0:
    print "x oli negatiivinen"
    x = -x

Python kannattaa käyttää toimintojen ja luokat, mutta ei väkisin. Yksinkertaisia ​​ohjelmia todella ovat yksinkertaisia. Otetaan esimerkiksi arjen ”Hello World” -ohjelma Python:

print "Hello World!"

C ++ vaatii tämän ohjelman kääritty funktio ja edeltää esikäsittelijään direktiivi:

#include <iostream.h> 
int main ()
{  
   cout << "Hello World!"; 
}

Java, tilanne on vielä pahempi, koska kaikki koodi voi olla sisällä luokan:

public class HelloWorld
{  
   public void main (String [] args)
   { 
     System.out.println ( "Hello World!");
   }
}

Semanttisesti, Python on myös yksinkertainen. Python on dynaamisesti kirjoitetaan, joten ei ole tarvetta muuttujamääritelmiä. Tämä vähentää koodin että opiskelijat täytyy kirjoittaa ja poistaa myös tavallisia virheitä, jotka johtuvat väärinkäsitys hienovaraisia eroja ilmoitus-, määrittelemisestä ja käytöstä. Esimerkiksi opiskelija C ++ ja Java usein ”vahingossa” redeclare muuttujia missä he todella haluavat vain käyttää niitä (tyypitys  int count = 0;  kun ne tarkoittavat  count = 0). Tällaiset virheet voivat olla vaikea jäljittää.

Python on minimaalinen, mutta täydellinen yksinkertainen ohjaus rakenteiden: toinen valinta konstrukti (jos-elif-muu), yksi selvä silmukka (varten) ja yhden toistaiseksi silmukka (kun taas). Python on myös moderni poikkeuksen käsittely mekanismi samanlainen kuin C++ ja Java. Toisin Java, mutta sinun ei tarvitse ymmärtää poikkeus mekanismi kirjoittaa yksinkertaisia ohjelmia. Pedagogisesta näkökulmasta, Pythonin  varten  silmukka on havainnollinen. Se mahdollistaa säätösuure ottaa peräkkäisiä arvoja sekvenssin. Sitä voidaan käyttää iteroitava mikä tahansa sekvenssi, kuten luettelo (array) tai merkkijono. Esimerkiksi luettelon kohtia voidaan tulostaa seuraavasti:

riviltä List:
    Tulosta kohde 

Alue  toiminta tuottaa numerosarja tietyllä alueella. Esimerkiksi,  alue(5) tuottaa luettelo [0,1,2,3,4]. Tätä voidaan käyttää antamaan numeerisesti ohjattu silmukoita. Edellisen koodi olisi voitu kirjoitettu (vähemmän selkeästi) seuraavasti:

kun i kantaman (len (List)):
    Tulosta lista [i]

For silmukka on yksinkertainen ja turvallinen, jolloin se voidaan ottaa käyttöön hyvin varhaisessa ilman pelkoa ääretön silmukoita.

Python on yksinkertainen yhtenäinen tietomalli. Muuttujat ovat aina viittauksia kasaan kohdennetaan arvot (objektit). Malli on yhdenmukainen, vältetään sekaannus pino verrattuna automaattinen muuttujat C++ tai primitiivinen verrattuna kohdetyyppien Java. Molemmat näistä kielistä edellyttävät opetuksen useita jako malleja toteuttaa jopa suhteellisen yksinkertaisia ​​ohjelmia.

Vastaavasti, Python on vain yksi parametri välitysmekanismi (arvon). Parametri ohimennen on yksinkertaisesti tehtävä todellisten virallisiin parametria päivystysaikaa. Kun opiskelijat ymmärtävät yksinkertainen perusmalli, he saavat parametri kulkee ilmaiseksi.

3.2.2 Python on turvallista

Python tarjoaa täyden dynaamisen ajonaikaisen tyyppitarkistuksia ja rajojen tarkistusta päälle array alaindekseiksi. Python käytetään roskien keräys joten ei ole ongelma roikkuvaa osoittimia tai muistin vuotoja. On mahdotonta käyttäjätunnuksen Python tuottamiseksi segmentointi rikkomisesta. Tässä suhteessa Python on samanlainen Java, ja molemmat ovat paljon turvallisempia kuin C++.

3.2.3 Python tukee olio-ohjelmointi

Vaikka yksi ei tarvitse käyttää luokkia kirjoittaa Python-ohjelmia, Python ei tue olio-ohjelmoinnin kautta luokan mekanismiin samankaltainen kuin C++ ja Java. Luokan malli Python on yksinkertaistaminen C++ mallia ja tukee useita perintö. Koska Python on dynaamisesti kirjoitetaan, ei ole tarvetta abstraktin luokan la C++ tai liitäntä mekanismi Java. Tässä suhteessa, Python on itse asiassa lähempänä puhtaan esineen antaman mallin Smalltalk.

Yksi heikkous Python peräisin järjestelmien kehittämisen kannalta on se, että kapselointi on vain valvotaan sopimusta. Ei ole mekanismia täsmentää, että luokan jäsenet ovat yksityisiä. Pedagogisesti, tämä ei tunnu olevan merkittävä heikkous, koska se on vielä mahdollista opettaa periaatteita tietojen piilottaminen; se ei vain ole täytäntöön kieltä. Kielen tarjoaa tyylikkään mekanismin mutta pitää asiat yksinkertaisina, välttäen monimutkaisuus eri ”näkyvyys tilat”, joka on keskusteltava C ++ tai Java.

Dynaaminen tyypitys mallia Python tekee siitä erityisen kätevä keskustella kontti luokissa on tietorakenteita kurssin. Pino luokka, esimerkiksi, voidaan käyttää tallentamaan mitä tahansa esinettä. Se voi olla int pino, uimurin pino, merkkijono pino, tai erityyppiset sekoitukset. Tämä saadaan aikaan ilman, että käyttöön geneeriset (mallien) tai suorittamalla dynaaminen tyyppi valu. Kuvio 1 esittää esimerkkiä määritelmä yksinkertainen rajoitettu pino luokka.

luokka Stack:   
   def __init __ (itse, koko):
       self.data = [Ei] * koko
       self.size = 0

   def push (itse, kohta):
      self.data [self.size] = kohde
      self.size = self.size + 1    

   def pop (itse):
      self.size = self.size - 1
      paluu self.data [self.size]    

   def is_empty (itse):
      palata self.size == 0

   def is_full (itse):     
      palata self.size == len (self.data)

Kuvio 1:  bstack.py -a yksinkertainen rajoitettujen pino.


Python myös puhtaan moduuli, joka dynaamisesti lataa tiedostoja ajon aikana samanlainen Java (miinus raskas paketti organisaation rajoituksia). Tämä mahdollistaa helpon hallinnan modulaarinen hankkeita (Laird & Soraiz 1998a) ilman header-tiedostot ja esiprosessoria direktiivien C ++. Täytäntöönpanoa pino voitaisiin käyttää kautta tuonti toteamus:

alkaen bstack tuonti pino

myStack = Stack (100)
myStack.push ( "Hello")

Eri täytäntöönpano voidaan korvata yksinkertaisesti vaihtamalla moduulin nimi tuonnin selvitys.

3.2.4 Python on hauskaa

Yksinkertaisuus Python on helppo oppia. Lisäksi lista (dynaaminen array) datan rakenne, Python tarjoaa monikon (muuttumaton listat) ja sanakirjat (hash taulukot). Yhdessä luokan mekanismiin, niitä voidaan käyttää nopeasti rakentaa kehittyneempiä tietorakenteita mielenkiintoisia projekteja. Koska tyypin ilmoitusten tekee vähemmän koodia ja joustavampi ohjelmointia. On myös valtava kirjasto standardin ja osaltaan moduulit tarjoavat komponenttien ohjelmointiin graafisia, client-server sovellukset, html katsojia, tietokannat, animaatioita ja paljon muuta. Kasvava suosio ohjelmointikieliä johtuisivat suoraan helppous, jolla monipuolisia sovelluksia voidaan rakentaa yhdistämällä off-the-hylly komponentteja. Mielenkiintoisia hankkeita voidaan kehittää vain osa koodia, joka tarvittaisiin järjestelmässä kielellä. Jos haluamme tosissamme suunnittelussa harjoittaa perehdyttämiskoulutukseen, Python näyttää olevan luonnollinen valinta.

3.2.5 Python on käytännöllinen

Skriptauskieliä yleensä ovat saamassa suosiota ([alaviite] Katso esimerkiksi, helmikuun 1998 numerossa Dr. Dobbs Journal, erikoispainos featuring ohjelmointikieliä.). Jotkut tilit, enemmän ohjelmisto on kirjoitettu ohjelmointikieliä kuin perinteisemmät järjestelmäkielet. Vaikka Python on hieman epäselvä kuin sen serkut (Perl, Tcl, Visual Basic), se on kypsä kieli ja nauttii laajaa käyttöä teollisuudessa (Laird & Soraiz 1998a). Python on käytettävissä kaikissa suurissa alustoilla (Windows, MacOS, Linux-, Unix-, BeOS, Java). Ja se on täysin ilmainen.

4. Joitakin esteitä (todellisen ja kuvitellun)

Annetaan etuja käyttämällä skriptikieli kuten Python for johdanto tietojenkäsittelytieteen luokat, viipyvä kysymys on, miksi ei ole kaikille (joku) tekee sen? Skriptauskieliä hylätään usein ilman asianmukaista harkintaa. Tässä osiossa käsittelen joitakin tyypillisiä vastalauseita.

4.1 Puute käännettäessä tarkistaminen

Jotkut kasvattajat vastustavat dynaamisia kieliä, koska heillä ei ole käännettäessä tarkkailun, erityisesti tyypin tarkkailun. Ajattelin, että voimakas staattinen kirjoittamalla oli välttämätön ensimmäinen kieli. Teoriani oli, että kääntäjä olisi kiinni niin paljon virheitä kuin mahdollista opiskelijoille. Me kaikki tiedämme, ohjelmistokehityksen viisaus virheet on helpompi korjata aikaisemmin ne havaitaan.

Kokemus opetuksen kieliä kuten Pascal, C++ ja Java on vakuuttanut minut siitä, että oletettu edut käännettäessä virheentarkastusta varten neophyte ohjelmoijat ovat näennäisiä. Ensimmäinen, valtaosa havaittujen virheiden kääntäjän ovat melko jalankulkija (esim kaikkialla läsnä puuttuu ”;”). Kieli kuten Python poistaa monia näistä yleisistä virheistä yksinkertaisemmalla syntaksin. Lisäksi useimmat jäljellä puhdas syntaksivirheistä raportoidaan myös välittömästi Python-tulkki, joka analysoi syntaksi ohjelman latauksen aikana. Toinen, ei ole juurikaan hyötyä kiinni hienovaraisempaa virheitä (esim tyyppi ristiriitojen) käännöksen yhteydessä. Tavallisin virhe johtuu epäsuhta ilmoitus ja käyttöä. Monet näistä virheistä ovat yksinkertaisesti virheitä ilmoituksessa. Kielellä ilman julistuksia, nämä virheet eivät esiinny. Kun virhe on todellinen virheen, jossa tyyppiä käytetään, virhe on edelleen kiinni dynaamisesti kirjoitettu kieli. Erona on, että se on kiinni ja diagnosoidaan ajon aikana. Minkä tyyppisiä ohjelmia kirjoitetaan tyypillisesti kahdessa ensimmäisessä CS luokkaa, käännettäessä tarkistus ei ole paljon hyötyä. Yksinkertaisuus muokkauksen tulkita sykli on paljon suurempi kuin mitään hyötyä löytää useita virheitä käännöksen yhteydessä.

Käännettäessä tarkastuksen voi todella olla haitallista joillekin opiskelijoille pari tapaa. Ensinnäkin se on itseluottamuksen. Opiskelijalla on oltava täydellinen syntaktisesti oikeaa ohjelmaa ennen kuin he saavat tuloksia. Ohjelmaa koostettaessa ja tuijottaa ruudullinen nalkuttava viestejä on tylsä ​​ja ärsyttävä vaikutus. Joiden tulkittu kieli, ainakin jotain tapahtuu; ohjelma tuottaa osateho ennen pysäyttämistä varten virheen. Opiskelija näkee ohjelman (osittain) toimintaa ja on vain yksi virhe korjata kerralla. Korjausmoduuleista tuo enemmän edistystä. Tämä on paljon enemmän rohkaiseva tilanne.

Toinen detraction laajojen käännettäessä tarkistus on, että se antaa opiskelijoille illuusion perusteellisuus. He uskovat, että kun ohjelma kokoaa, se on aika paljon oikeassa. Yksi oire tästä on puutteellisesta testauksesta. Toinen ongelma on, että se viivästyttää havaitseminen suunnittelu virheitä. Kokemukseni mukaan se ei ole harvinaista, että opiskelijat huomattavasti aikaa ohjelmasta ja kokevat lähes valmis, koska siellä on vain yksi pieni vika he eivät voi selvittää. Vain se osoittautuu yksi pieni vika on vielä koota virhe. Kaukana ”melkein valmis” tehtävän johtuu pari tuntia, ja ne eivät ole edes saanut ohjelman laatimiseen vielä! Heillä ei ole ollut mahdollisuus tutustua suuria puutteita logiikan niiden ratkaisu. Vuonna tulkittu kieli, löytäminen virheet kulkee käsi kädessä testaus.

4.2 Skriptikielet liian tehoton

On totta, että tulkittu kieli on hitaampaa (tyypillisesti tekijällä 10) kuin käännetty kieli. Monet varhain ohjelmointikieliä olivat jopa paljon pahempi kuin tämä. Kuitenkin moderni skriptikieli kuten Python, Perl tai Tcl on riittävän nopea rakentaa suuria sovelluksia. Esimerkiksi Python ja Tcl on annettu sekä toteuttaa monipuolinen graafisen web-selaimet. Varmasti myös tyyppisiä ohjelmia, joita kehitetään CS1 ja CS2, ohjelmointikieliä, vaikka käynnissä vaatimaton laitteisto, pitäisi olla enemmän kuin riittävä.

Joka tapauksessa tämä huoli toteutettavaksi tehokkuus on aiheeton. Alku ohjelmoijat eivät yleensä ole kirjallisesti tuotanto koodia. Ohjelmansa yleensä ole vaikea ajanpuute ja vain ajaa muutaman kerran. Todellinen tehokkuus huolenaihe on käytetty aika kehittää ohjelmaa. Tässä on ohjelmointikieliä loistaa. Nopea muokata/tulkita syklin puuttuminen ilmoitusten ja erittäin korkean tason luonne ohjelmointikieliä tehdä niistä täydellinen työkalu tässä ympäristössä.

4.3 Opiskelijat täytyy oppia Järjestelmäkieli

On totta, ettei tietokone pääaineen pitäisi valmistua ilman oppimista ainakin yksi järjestelmä ohjelmointikieli kuten C++, Java tai Ada.Itse asiassa olisi hyvä oppia enemmän kuin yksi. Skriptauskieliä eivät korvaa järjestelmän kieliä; pikemminkin ne ovat toisiaan täydentäviä. Yhä enemmän ohjelmisto järjestelmiä rakennetaan komponenteista ohjelmoitu järjestelmäkielet ja liimataan yhteen skriptikieli. Siksi on myös totta, että opiskelijoiden pitäisi myös oppia skriptikieli. Näin he ovat aseistettu joukko työkaluja, jotta he voivat soveltaa yhtä sopivin tiettyyn tehtävään.

Kysymys tulee sitten, jonka pitäisi olla kieli ensimmäinen luokka (luokat)? Yksi argumentti opetuksen kieli kuten C++, Java tai Ada ensimmäisessä luokassa on, että nämä kielet ovat itsessään niin monimutkaisia ​​ja vaikeita, että opiskelijat tarvitsevat alkaa opetella ne heti, jotta on riittävästi aikaa hallita niitä. Tämä väite saa sitä taaksepäin. Ensimmäiset luokat eivät saisi kieli, vaan pikemminkin tietojenkäsittelytieteen ja pohjimmiltaan suunnittelu. Yrittää opettaa monimutkainen kieli luonnostaan ​​heikentää tätä tavoitetta, koska opiskelijoiden on enemmän aikaa hallitsemaan kielen ja siten vähemmän aikaa masterointiin muuta materiaalia. Tämä on syy, jotkut kasvattajat etsivät Java yksinkertaisempi vaihtoehto C++, mutta myös Java on hyvin monimutkainen verrattuna Python.

Vielä järkevä lähestymistapa on opettaa suunnittelun ensimmäinen, aloittavien opiskelijoiden yksinkertainen mutta tehokas kieli. Vankka käsitys ohjelmointi ja suunnittelu on paljon helpompi ymmärtää käsitteitä kuten staattinen tyypitys, näkyvyys, rinnakkaislääkkeiden ja monimuotoisuutta. Koska ajatuskokeen kuvitella todella selittäminen kunkin osan HelloWorld Java-ohjelma noviisi ohjelmoija. Kuvittele, kuinka paljon helpompaa olisi selittää  julkisiaclassstaattinenmitätön, ja  String[], Että opiskelija, joka jo ymmärtää toimintoja, luokat, instanssimuuttujat, luokka muuttujia, tietotyyppejä ja taulukot. Monimutkaisempia konstruktioita järjestelmän kieliä (esim C++ malleja, virtuaalinen menetelmiä, dynaamiset valujen) ovat todella mekanismeja saavuttamiseksi joidenkin tarjoamaa joustavuutta dynaamisia kieliä sisällä staattisesti kirjoitetaan puitteet. Miksi ei opeta käsitteitä ensimmäinen kielellä, joka ei vaadi tällaista monimutkaisuutta ilmaista niitä? Toisen vuoden opiskelija tason periaatteita ohjelmointikielet luokassa tai järjestelmien ohjelmoinnin luokan tuntuu tarkoituksenmukaisempaa puuttua koukerot järjestelmän kielen.

4.4 Python on tuntematon

Jotkut Tiedekunta voi vastustaa Python äidinkielenä, koska se ei tunne. Kuitenkin ohjelmointikieliä ovat yksinkertaisia, ja kuka tahansa pätevä opettamaan tietojenkäsittelyn voi poimia Python päivinä, jos ei tuntia. Itse uskallan sanoa, että parin päivän leikkii Python, monet tiedekunnan jotka ovat nyt opetus C++ tietäisivät Python paremmin. C++ on kehittynyt aikana standardointia, ja paljon siitä, mitä näkee oppikirjoissa on vanhentunut. Totta asiantuntijat modernin C++ ovat suhteellisen harvinaisia.

4.5 Meidän opiskelijat haluavat Kieli X

Opiskelijat (ja vanhemmat ja työnantajat) on ennakkoluulojen mitä pitäisi opettaa opetussuunnitelmaan. Kuitenkaan mikään olisi sitä mieltä, että se ei ole niiden edun mukaista saada mahdollisimman vahva perusta ohjelmoinnissa ja suunnittelussa. Kuten edellä todettiin, aloittamassa komentojonokieliin ei todennäköisesti hidastamaan opiskelijan edistymistä kielenoppimisessa X (mikä X on). Pikemminkin se on omiaan tekemään ne paremmin ohjelmoijat millä tahansa kielellä (t) he päätyvät käyttävät. Kun olen käyttöön Python ylempiin luokkiin, että lähes kaikki maailman reaktio on ollut ”Miksi emme käyttäisi tätä ensiksi?”

4.6 Ei ole mitään Oppikirjat

Suurin vaikeus yrittää opettaa epästandardeja kielen johdanto järjestyksessä on puute oppikirjan tukea. Yksi vaihtoehto voisi olla käyttää kieltä neutraali kirja ja kehittää tukemalla labs jollakin käytettävissä Python viittauksia. Mitä todella tarvitaan on joitakin pioneereja opettaa johdanto luokkia komentosarjakieliä ja kehittää toteaa, että voisi tulla oppikirjoissa. Lukuisat kasvattajat otti ratkaisevan askeleen Java Ennen oli tekstejä; Tämän seurauksena monet uudet nimikkeet Java nyt tulossa markkinoille.

Tämä artikkeli on herätys niille, jotka harkitsevat siirtymistä Java. Jos voitaisiin vaihtamalla kieltä, huolellisesti motiiveja oman kytkimen. Pedagoginen näkökohdat puoltavat siirtymistä pois järjestelmästä kielten skriptauskielten ja Python on erittäin hyvä valinta. Tarvitaan muutama stout sielut ottamaan askelen Python ja kehittää sopivia materiaaleja. Ehkä jotkut nykyiset kirjoittajat saattavat myös vakuuttunut kehittää Python versiot suosituimmista teksteistä.

4.7 Entä Scheme?

Niille, jotka ovat käyttäneet Scheme johdanto luokassa, puhelu yksinkertainen ensimmäinen kieli ei ole mitään uutta. Järjestelmässä on monia yhteisiä piirteitä ohjelmointikieliä, että se on pieni, dynaaminen ja vuorovaikutteinen. (Itse asiassa se on usein käytetty skriptikieli). Ohjelma on hyvä valinta ensimmäinen kieli, koska se on yksinkertainen ja tehokas. Malli mahdollistaa keskustelun eri ohjelmointiparadigmoista, ja on olemassa useita erittäin hyviä oppikirjoja CS1 käyttää järjestelmää. Se näyttäisi olevan ihanteellinen valinta.

Heikkous Kaavion on, että se koetaan marginaalinen kieli, joka on varsin erilainen kuin järjestelmä kieliä, joita käytetään muualla opetussuunnitelmaan. Tämä on rajoittanut sen suosio CS1. Python tarjoaa monia etuja kaavion mutta silti samanlainen kuten C++, Java, ja Ada, mikä helpottaa siirtymistä näistä kielistä. Niille, jotka haluavat tutkia useita ohjelmointiparadigmoista ensimmäisellä kursseille, Python on tukea käytännölliseen tyyliin sisältäen ensimmäisen kertaluvun toimintoja, kartan, hakea, lambda ja sulkemiset.

5. Päätelmät

Syntyminen ohjelmointikieliä kuten Python, Tcl ja Perl merkittävinä työkaluja ohjelmistojen kehitys on potentiaalisesti vallankumouksellinen muutos tietokoneohjelmoinnissa. Nykyisin ohjelmointikieliä ovat aliedustettuja tietojenkäsittelytieteen opetussuunnitelmaan. Tämä on yllättävää, sillä, pedagogisesta näkökulmasta, ohjelmointikieliä näyttäisi soveltuu erinomaisesti tyyppi ohjelmoinnin, että tehdään tyypillisesti johdanto-luokissa.

Yksi suurimmista käskyt yritämme juurruttaa meidän opiskelijoiden on ajatus käyttää oikea työkalu tietyn työn. Jos asiakas tuli minulle ja ehdotti hän tarvitsi ohjelma kirjoitettu hyvin lyhyessä ajassa, että ohjelma ei ollut tiukka tai muistia rajoituksia, ja että sen valmistumisen se vain ajaa muutaman kerran, haluaisin heti ehdottaa scripting kielen sopiva työkalu. Nämä ovat juuri ne olosuhteet, joissa ohjelmointi tehdään useimmissa CS1 ja CS2 luokissa. Koska on olemassa ohjelmointikieliä kuten Python, jotka tarjoavat myös hyvän tuen modulaarinen ja olio-ohjelman suunnittelu, ei ole mitään syytä olla käyttämättä niitä. Skriptikielet ovat sopivin väline meidän perehdyttämiskoulutukseen. Kun otetaan huomioon nykyinen ei ole päästy yksimielisyyteen yhdestä ensimmäinen kieli, se tuntuu ihanteellinen aika aloittaa liikkeen ohjelmointikieliä. Harkitse Python omassa johdanto luokissa.