Piton kao Prvi Jezik

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

John M. Zelle
Odjel za matematiku, računarstva i fizike
Wartburg College
Waverly, IA 50677
[email protected]

Sažetak

Trenutno, malo je konsenzus o tome koji programski jezik je najprikladniji za uvodne nastave informatike. Većina škola koristi tradicionalni sistem programski jezik, kao što su C, C ++, Java, ili Ada u CS1 i CS2. Međutim, programski jezici kao što su Tcl, Perl i Python postaju sve popularniji razvoj softverskih alata. Ovaj članak govori o prednosti koristeći programski jezik kao prvi jezik u računarstvu nastavnog plana i programa. Scripting jezici su jednostavnije, sigurnije i fleksibilnije od sistema jezika. Python posebno pojavljuje kao u blizini idealan kandidat za prvi programski jezik.

1. Uvod

Prije kao nedavno pet godina, gotovo svi su se složili da je Pascal je odgovarajući jezik za opise pojmova u računarstvu. Budding kompjuterski stručnjaci su počeli učeći programirati u Pascal, a studenti gornji nivo koristi udžbenike na osnovu Pascal. Onda je došao revolucija objektno orijentisan. Danas, o jedini konsenzus o jezicima u računarstvu nastavni plan je da Pascal je passe. Ovaj potez od Pascal je izrečena u posljednjih nekoliko godina, ali ni jedan jezik je nastao kao jasan nasljednika. Jedna nedavna anketa csab akreditovanih programa pokazala je najpopularniji prvi jezik, C ++, koji se predaje na samo 22% odgovora institucija (McCauley i Manaris, 1998). Dodavanje u zabunu je meteorski uspon Java iu industriji i akademskim krugovima.
Neki su predložili da se “ jezik ratova ” su preko i (samo) razuman izbor su:. C, C ++, Java, Ada (a možda i Eiffel) ([fusnota] Ovo se činilo da je konsenzus panel diskusija ‘ `mogućih budućnosti za CS2 ” na SIGCSE ’98.) vjerujem proglašava ratove preko je prerano priznao poraz. A kada postoji malo konsenzusa o jednoj prvi jezik čini se da je pravi trenutak da se vratimo na prvu principima i uzeti u obzir ono što bi trebalo da bude prvi jezik. Usput, možemo otkriti da su neki od najboljih kandidata nisu ni uzeti u obzir.

U ovom radu, tvrdim da vrlo visokom nivou programski jezici kao što su Python, Perl, Tcl, Rexx, i Visual Basic su bolji kandidati za prvi jezik. Jedan posebno, Python, čini gotovo idealno.

2 Kriteriji za prvi jezik

2.1 Pretpostavke o CS1 i CS2

Shvativši da postoji značajna neslaganja o tome šta materijala treba učiti u CS1 i CS2, svaka inteligentna rasprava o kojim jezicima su najprikladnije mora početi sa osnovnim pretpostavkama o samim kursevima. U sljedeće pretpostavke odražavaju prilično zajednički pristup, ali sam shvatio da oni nisu potpuno nesporne.
Prvo, CS1 / CS2 sekvenca je u osnovi o kompjuterskom programiranju. Dok ovih kurseva sigurno bave širim pitanjima informatike teorije i prakse, srž informatike i od ove prve klase je i dalje rješavanje problema, dizajn i programiranje. Učenje na programu je vrlo mnogo ruku na aktivnosti a, i ove klase uključuju dizajn i programiranje projekata različitih veličina u bilo otvorenog ili zatvorenog laboratorija postavke.

Drugo, programski jezik po sebi nije u fokusu ove klase. Dok naši učenici često se odnose na ove klase kao “ C ++ klase ” ili “ Java klase, ” kursevi su dizajnirani da daju uvod u oblasti informatike. Jezik koji se koristi je stvarno sekundarno pitanje. Tendencija da mislim o CS1 kao uvod u određeni jezik je simptom složenosti jezika koji se često koriste.

Treće, ove klase se studenti upoznaju osnovne paradigme za dizajn i rješavanje problema u upotrebi danas, naime strukturiranog i objektno orijentiranih metoda implementirana u imperativ (izjava orijentisan) jezik. Iako postoje snažni zagovornici za druge pristupe (npr pomoću funkcionalne jezika u prve klase), velika većina uvodnih klase imaju tendenciju da prate tradicionalne put.

Četvrto, i možda najkontroverznije, pretpostavljam da je cilj CS1 je da se uključe i educirati informatike majora i, možda, zaposliti nove. S obzirom na trenutnu potražnju za naše diplomce i potreba za sve obrazovane pojedince da razumiju informacijske tehnologije, to je velika medvjeđa usluga da razmotri CS1 kao “ weedout ” klasi. Programiranje je teško, ali treba težiti da ga ne teže nego što treba da bude.

2.2 Implikacije za programski jezik izbor

Ako uvodnom klase zaista o računarstvu, a ne detalje o određenom jeziku, slijedi da izabrani jezik treba da ima jednostavnu sintaksu i semantiku. Svi smo iskusili frustracije od CS1 naravno da propadne u raspravi o sintaksi grešaka i jezik konstrukcije. U mjeri u kojoj je to moguće, trebalo bi da izaberete jezik koji minimizira ove složenosti, tako da više vremena može biti potrošen na razvoj dizajna vještine. A posljedica ovog filozofija je da jednostavno probleme treba jednostavno riješiti. A jezik koji zahtijeva značajne notnog iznad glave riješiti čak trivijalan problem prisiljava jezik, a ne tehnike rješavanja problema da postane predmet proučavanja.

Ruke na, eksperimentalne prirode uvodnog predmeta također ima implikacije za izbor jezika. A jezik koji omogućava dizajna da se izrazi s minimalnim nadzemne ohrabruje eksperimentisanje i prepravljanje. Dakle, jezik bi trebao biti vrlo visokom nivou i fleksibilan, omogućujući studentima da brzo i jednostavno eksperimentisati sa alternativnim dizajna. To olakšava razmišljanje o algoritam i dizajn pitanja, a ne detalje implementacije niskog nivoa. Koliko je to moguće, jezik treba da obezbedi sigurnost za eksperimente. Trebalo bi da daju prednost jezike koji štite od misterioznog pada od pokazivača ili niza-granica greške. Studenti na ovom nivou su samo tehnike za pronalaženje i fiksiranje greške učenja; jezik treba pomoći da nauče, da ih ne frustrira.

Također je važno da je podrška jezik moderne pristupe dizajnu uključuju apstrakcije, enkapsulacija i objektno orijentisan tehnike. Dok dizajna objektno baziran može implementirati u bilo kojem jeziku, time na jeziku koji podržava objekata je mnogo više intuitivno i jednostavno. Opet, ovo omogućava kurs da se fokusiraju na konceptualna pitanja na višem nivou, a ne detalji implementacije.

Na kraju, postoje praktična razmatranja u odabiru jezika. To je poželjno da jezik bude široko dostupna na različitim platformama. Isto tako, jezik koji se koristi od strane stručnjaka izvan akademske zajednice je poželjno da jezik koji je za “ učenje samo, ” pod uslovom da ispunjava ostale kriterije gore navedeno. Nastava jezika X jednostavno zato što je obično koristi jezik ne bi trebao biti važan faktor sam po sebi. Naši studenti će naučiti i koristiti mnoge jezike tijekom svoje karijere. Ono što je važno u prvom kurseva dajući im na najbolji mogući temelj osnovne principe i tehnike koje će im omogućiti da usvoje i prilagode različitim jezicima koje će suočiti u “ stvarnom svijetu. ”

3 Piton prednost

3.1 Slučaj za programski jezici

Ousterhout (1998) pravi razliku između sistema programskim jezicima (npr C, C ++, Pascal, Ada, Java) i programski jezici (npr Perl, Tcl, Python, Rexx, Visual Basic). Bivši su statički otkucao, obično sastavljen, i predstavljaju skroman apstrakcija iz osnovnog uređaja. Potonji su dinamički otkucao, obično tumači, i vrlo visokom nivou. Scripting jezici su generalno opisani kao “ ljepilo jezika ” za povezivanje nezavisne komponente u aplikacije velikih razmjera ili kao prototipova alata za brzi razvoj aplikacija. Međutim, kao što Ousterhout (1998, 23) ističe:

… Nekoliko nedavnih trendova, kao što je brže mašine, bolje skriptiranje jezika, sve veći značaj grafičkog korisničkog sučelja i komponentu arhitekture, i rast Interneta, su znatno povećava primjenjivost skriptiranje jezika. Ovi trendovi će se nastaviti u narednih deset godina sa sve više i više novih aplikacija napisana u potpunosti skriptiranje jezika i sistema programskih jezika koji se koriste prvenstveno za stvaranje komponente.

Tradicionalno, programi nauke kompjuterski su naglasili sistema programskim jezicima preko skriptiranje jezika. Međutim, programski jezici se čini da ponudi niz prednosti, posebno za uvodno programiranje sekvence. Scripting jezici uglavnom imaju jednostavnije sintakse i semantike nego sistem jezika. Zbog dinamične kucanja i tumačenje da su vrlo fleksibilni i podstiču eksperimentisanje. priroda vrlo visokom nivou omogućava studentima da se izgradi više sofisticirane i zanimljivih projekata s manje implementaciju napora.

Vjerovatno, nedostatak interesa za skriptiranje jezika je proizašla iz percepcije da su “igračka” jezika i ne odgovara za programiranje opće namjene. Iako je možda bila istina rane skriptiranje jezika (npr Unix shell skripti), to sigurno nije istina modernih varijanti.

3,2 Malo Pytona

Različitih popularnih skript jezika, Piton je vjerojatno najbliži u obliku tradicionalnih jezika sistema (Laird i Soraiz, 1998b). Takođe, verovatno, ima najbolje konstelacije funkcija da ga preporučiti kao prvi programski jezik. To nije namjera ovog rada dati Python tutorial; nekoliko dobrih reference su na raspolaganju za tu svrhu (Lutz, 1996; Watters, Van Rossum, i Ahlstrom, 1996). ([Fusnota] Niz dobrih Python resursa može se naći na internetu na http://www.python.org.). Umjesto toga, ja ću se fokusirati na karakteristike Python da je posebno dobar izbor među programski jezici kao prvi programski jezik napraviti. U toku diskusije ću uporediti Python u C ++, trenutno najčešći prvi jezik, i Java, jezik najčešće navedeni kao “ u obzir. (McCauley i Manaris, 1998) ”

3.2.1 Python je jednostavan

U principu, programski jezici su mnogo jednostavnije nego sistem jezicima kao što su C ++ i Java (Laird i Soraiz, 1998b). Python je jednostavan, običan sintaksu. Izjave su prestaje do kraja linije, a blok struktura je označeno uvlačenja. Python programi izgledaju kao izvršni pseudo-koda. To eliminira niz problematičnih grešaka za početak programere, posebno plasman polu-dvotočke, bracketing i uvlačenja. Na primjer, zajednički greška u C ++ i Java je propust da se priložiti blok u protezu kao:

if (x <0)
   cout << “x je negativan”;
   x = -x;

U Pitonu odgovarajući kod izvršava kao što se očekivalo, jer je sama udubljenje određuje bloka:

ako je x <0:
    print “x je negativan”
    x = -x

Piton podržava upotrebu funkcije i klase, ali to nije na silu. Jednostavni programi zaista jednostavno. Na primjer, razmotrimo sveprisutni program “Hello World” u Piton:

print “Hello World!”
C ++ zahtijeva ovaj program bude umotan u funkciju i prethodi direktive pretprocesora:

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

U Java, situacija je još gora, kao i sve kod mora biti unutar klase:

public class HelloWorld
{
   public static void main (String [] args)
   {
     System.out.println ( “Hello World!”);
   }
}
Semantički, Piton je jednostavan. Piton je dinamički otkucala, tako da nema potrebe za varijablu deklaracije. To smanjuje količinu koda koji studenti moraju pisati i eliminira uobičajene greške koje proizlaze iz nesporazuma suptilne razlike deklaracije, definicije i upotrebu. Na primjer, studenti u C ++ i Java često “slučajno” redeclare varijable gdje su zaista samo žele da ih koriste (kucanje int count = 0; kada oni znače count = 0). Takve greške može biti teško pronaći.

Piton ima minimalan, ali kompletan set jednostavnih kontrolne strukture: jedan izbor konstrukt (ako-elif-drugo), jedan definitivno petlje (za) i jedan neodređeni petlje (a). Piton također ima modernu iznimka rukovanje mehanizam sličan onome naći u C ++ i Java. Za razliku od Java, međutim, ne morate da shvate mehanizam izuzetak pisati jednostavne programe. Iz pedagoškog perspektive, Piton za petlje je ilustrativan. To omogućava kontrolu varijablu da preuzme uzastopnih vrijednosti u nizu. To se može koristiti za ponoviti kroz bilo koji niz kao što su liste (niza) ili string. Na primjer, stavke u listi mogu da se štampaju na sljedeći način:

za stavku u listu:
    print stavka

Operacija opseg proizvodi niz brojeva u određenom rasponu. Na primjer, opseg (5) daje popis [0,1,2,3,4]. To se može koristiti za pružanje numerički kontrolom petlje. U prethodnom kod mogao biti napisan (manje jasno) kao:

for i in range (len (Lista)):
    print List [i]

Petlja je jednostavan i siguran, što joj je omogućilo da se upoznaju vrlo rano bez straha od beskonačne petlje.

Piton ima jednostavan jedinstven model podataka. Varijable su uvijek reference na gomilu dodijeljena vrijednosti (objektima). Ovaj model je u skladu, izbjegavajući konfuzija oko gomile u odnosu na automatske varijable u C ++ ili primitivni u odnosu na vrste objekata u Javi. Oba ova jezika zahtijeva učenje više modela raspodjele za realizaciju čak i relativno jednostavnih programa.

Slično tome, Piton ima jedan mehanizam jedini parametar prolazu (po vrijednosti). Parametar prolazu je jednostavno zadatak stvarnog formalnim parametrima u trenutku poziva. Kada učenici shvate jednostavan model zadatak, oni se prenos parametara za besplatno.

3.2.2 Piton je siguran

Piton pruža punu dinamičan provjere tipa run-time i provjera granica na niz indeksi. Python zapošljava odvoz smeća, tako da nema problema sa visećim pokazivačima ili curenje memorije. Nemoguće je za korisnika kod Python da proizvede segmentacije prekršaj. U tom smislu Python je sličan Java, i oba su mnogo sigurnije nego C ++.

3.2.3 Piton podržava objektno orijentisano programiranje

Iako se ne moraju koristiti klase pisati Piton programa, Piton ne podržava objektno orijentisano programiranje kroz mehanizam klasu sličan onome koji pružaju C ++ i Java. Ovaj model klasa Piton je pojednostavljenje ++ model C i podržava više nasljedstva. Od Pitona je dinamički otkucan, nema potrebe za apstraktne klase a la C ++ ili mehanizam interfejs Java. U tom smislu, Piton je zapravo bliži čisto model objekta koje Smalltalk.

Jedna slabost Piton iz razvoja sistema perspektive je da enkapsulacija se izvršava samo kroz konvenciju. Ne postoji mehanizam za određivanje da su pripadnici klase su privatne. Pedagoški, ovo ne izgleda kao veliki slabost, jer je još uvijek moguće naučiti principe podataka krije; To je samo ne sprovode jezik. Jezik pruža elegantan mehanizam, ali drži je jednostavan, izbjegavajući složenost različitih “prikaza vidljivost” koji moraju biti razmatrano u C ++ ili Java.

Dinamički kucanje model Pitonu čini posebno pogodnim za razmatranje kontejner klase u strukture podataka, naravno. A stack klase, na primjer, može se koristiti za čuvanje bilo koju vrstu objekta. To može biti int stack, float stack, niz dimnjak, ili mješavina vrsta. To se postiže bez potrebe da se uvede generika (predložaka) ili obavlja dinamički tip casting. Slika 1 prikazuje primjer definicija jednostavne ograničene stack klase.


class Stack:   
   def __init__(self,size):
       self.data = [None]*size
       self.size = 0

   def push(self,item):
      self.data[self.size] = item
      self.size = self.size + 1    

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

   def is_empty(self):
      return self.size == 0

   def is_full(self):     
      return self.size == len(self.data)

Slika 1: bstack.py – jednostavan ogranicen stack.


 

Piton također pruža čist sistem modul koji dinamički učitava datoteke u run-time sličan Java (minus glomazna ograničenja organizacije paket). Ovo omogućava jednostavno upravljanje modularnih projekata (Laird i Soraiz, 1998a) bez potrebe za datoteke zaglavlja i pretprocesor direktivama C ++. Realizacija steka se može koristiti preko import izjavu:

od bstack uvoz Stack

myStack = Stack (100)
myStack.push ( “Hello”)

A različite realizacije mogu se zamijeniti jednostavnom promenom ime modula u izjavi za uvoz.

3.2.4 Python je zabavno

Jednostavnost Pitonu olakšava naučiti. Osim liste (dinamički niz) strukturu podataka, Piton pruža torke (nepromjenjivi liste) i rječnika (hash tabele). Zajedno s mehanizmom klase, te se može koristiti za brzo graditi sofisticirane strukture podataka za zanimljivih projekata. Nedostatak tipa deklaracije čini manje kod i fleksibilniji programiranje. Tu je i veliki biblioteku standardnih i module pružanje komponente za programiranje GUI, klijent-server aplikacija, HTML gledatelja, baze podataka, animacije, i još mnogo toga. Rastuća popularnost skriptiranje jezika je direktno pripisati lakoća s kojom sofisticirane aplikacije mogu biti izgrađen kombinacijom off-the-polica komponente. Zanimljivi projekti se mogu razviti samo mali dio koda koji će biti potrebni na jeziku sistemu. Ako smo ozbiljni u vezi dizajniranju privlačan uvodne kurseve, Piton izgleda kao prirodan izbor.

3.2.5 Piton je praktična

Programski jezika općenito postaju sve popularniji ([fusnota] Vidi, na primjer, pitanje dr Dobbs Journal, specijalno izdanje sadrži programski jezici Februar 1998.). Po nekim računima, više softver je napisan u skriptiranje jezika u odnosu na više tradicionalnom sistemu jezika. Iako Python je nešto više nejasno od svog rođaka (Perl, Tcl, Visual Basic), to je zrela jezik i uživa široku upotrebu u industriji (Laird i Soraiz, 1998a). Python je na raspolaganju za sve glavne platforme (Windows, MacOS, Linux, Unix, BeOS, Java). I to je potpuno besplatno.
4 Neki Prepreke (Real i Imagined)

S obzirom na prednosti korištenja programski jezik kao Python za uvodne nastave informatike, dugotrajnim pitanje je zašto se nisu svi (svako) to rade? Scripting jezici su često odbačena bez odgovarajuće razmatranje. U ovom dijelu razmatram neke od tipičnih prigovora.

4 Neki prepreke (istinski i zamišljanje)

S obzirom na prednosti korištenja programski jezik kao Python za uvodne nastave informatike, dugotrajnim pitanje je zašto se nisu svi (svako) to rade? Scripting jezici su često odbačena bez odgovarajuće razmatranje. U ovom dijelu razmatram neke od tipičnih prigovora.

4.1 Nedostatak sastaviti – vrijeme provjera

Neki edukatori prigovor na dinamičan jezika jer im nedostaje sastaviti vremenu provjere, posebno tip-provjere. Nekad sam mislio da je jak statički kucanje je neophodno za prvi jezik. Moja teorija je da je kompajler treba uhvatiti što više grešaka moguće za studente. Svi znamo razvoj mudrost softver koji greške su lakše popraviti ranije su otkrivene.

Iskustvo nastava jezika kao što su Pascal, C ++, a Java me je uvjeren da je trebalo prednosti kompiliranja vremena greška provjeru za početnik programeri su iluzorna. Prvo, velika većina grešaka otkriti kompajler su prilično pešačke (npr sveprisutni nedostaje “;”). A jezik kao Python eliminira mnoge od ovih zajedničkih grešaka kroz jednostavniji sintakse. Osim toga, većina preostalih čisto sintaksi greške će se odmah prijavila Python prevodioca, koji analizira sintakse programa u trenutku opterećenja. Drugo, malo je prednost u hvatanje više suptilne greške (npr tip nekompatibilnosti) u vrijeme kompiliranja. A čest tip greška je uzrokovana neusklađenost između deklaracije i upotrebu. Mnogi od tih grešaka su samo greške u deklaraciji. Na jeziku, bez deklaracije, te greške ne dešavaju. Kada je greška je pravi greška u tome kako se koristi tip, greška će i dalje biti uhvaćen u dinamički tipiziran jezik. Razlika je u tome što će biti uhvaćen i dijagnosticira u run-time. Za vrste programa obično pisane u prva dva CS klase, sastaviti vremenu provjere nije mnogo prednost. Jednostavnost ciklusa edit-tumače daleko nadmašuje bilo kakvu korist pronalaženja više grešaka u kompajliranja.

Sastaviti vremenu provjere zapravo može biti štetno za neke studente u nekoliko načina. Prvo, to je demorališuće. Studenti moraju imati kompletan sintaktički ispravan program prije nego što su dobili nikakve rezultate. Sastavljanje programa i zuri u screenfull od zvocanja poruka je dosadan i ogorčenosti aktivnost. Sa tumačiti jezik, barem nešto dogodi; program generira parcijalne izlaz prije zaustavljanja za grešku. Student vidi program u (parcijalne) Akcija i ima samo jednu grešku popraviti na vrijeme. Svaki fix donosi veći napredak. To je mnogo više ohrabrujuće situacije.

Drugi kleveta opsežnih kompiliranja vrijeme provjere je da daje studentima iluziju temeljitosti. Oni vjeruju da je jednom program sastavlja, ona mora biti prilično tačno. Jedan simptom, to nije dovoljno za testiranje. Drugi problem je u tome što odlaže otkrivanje grešaka dizajna. U mom iskustvu, to nije neuobičajeno za učenike da ulože mnogo vremena na programu i smatraju da su skoro gotov, jer postoji samo jedan mali bug ne mogu shvatiti. Samo što ispada jedan mali bug je i dalje kompajliranja greška. Daleko od toga da “skoro gotov”, zadatak je zbog u nekoliko sati, a oni nisu ni dobili program još sastaviti! Oni nisu imali priliku da otkriju velike nedostatke u logiku njihovog rješavanja. U tumači jezikom, pronalaženje grešaka ide ruku pod ruku sa testiranja; prisustvo tip greške ne mora nužno spriječiti otkriće više ozbiljnih grešaka dizajn.

4.2 Programski jezici su previše neefikasno

Istina je da će se tumačiti jezik biti sporiji (obično za faktor 10) od sastavio jezika. Mnogi rani programski jezici su čak i mnogo gore od ovoga. Međutim, moderni programski jezik, kao što su Piton, Perl ili Tcl je dovoljno brzo za izgradnju velikih aplikacija. Na primjer, Python i Tcl su oba koriste za implementaciju potpuno opremljenog grafičko web preglednicima. Svakako za vrste programa koji su razvijeni u CS1 i CS2, programski jezici, čak i radi na skromnih hardver, bi trebalo biti više nego dovoljno.

U svakom slučaju to briga za efikasnost izvršenja je pogrešno. Počevši programeri obično ne pišemo kod proizvodnje. Njihovi programi obično nemaju teško vremena ograničenja i da će se pokrenuti samo nekoliko puta. Zabrinutost pravi efikasnost je količina vremena provedenog u razvoju programa. Ovo je mjesto gdje skriptiranje jezika sjaj. Brz uredi/tumače ciklus, odsustvo deklaracija, i priroda skriptiranje jezika vrlo visokom nivou im savršen alat za ovo okruženje učiniti.

4.3 Učenici treba da nauče sistem jezik

Istina je da nema informatike većih treba diplomirati bez učenja barem jedan sistem programskom jeziku, kao što su C ++, Java, ili Ada. U stvari, bilo bi dobro da naučite više od jednog. Programski jezici ne zamijeniti sistema jezika; Umjesto toga, oni su komplementarni. Sve više i više softverskih sistema su izgrađeni od dijelova programiran u sistemu jezika i zalijepljen zajedno sa skriptni jezik. Stoga, jednako je istina da studenti treba da uče programski jezik. Na ovaj način oni su naoružani sa setom alata, tako da oni mogu primijeniti najprikladniji za određeni zadatak.

Postavlja se pitanje postaje, onda, koji bi trebao biti jezik prve klase (es)? Jedan argument za učenje jezika poput C ++, Java ili Ada u prve klase je da su ovi sami jezici su tako složene i teško da studenti treba da počne da ih uče odmah, kako bi imali dovoljno vremena da ih savlada. Ovaj argument postaje unazad. Prva klasa ne bi trebalo da bude oko jezika, već o informatike i, u osnovi, dizajn. Pokušavam da nauči jezik je inherentno umanjuje od tog cilja, jer studenti moraju provesti više vremena ovladavanje jezikom i, samim tim, manje vremena savladavanje drugih materijala. To je razlog neki edukatora u potrazi na Java kao jednostavniji alternativu C ++, ali čak i Java je vrlo složena u odnosu na Python.

A više razuman pristup je da se prvo naučiti dizajn, počevši studenti sa jednostavnim, ali moćan jezik. Uz solidnu uhvatite programiranja i dizajn je mnogo lakše shvatiti pojmove kao što su statički kucanje, vidljivost, generičkih i polimorfizam. Kao misaoni eksperiment, zamislite stvarno objašnjavajući značenje svakog dijela programa HelloWorld Java početnik programer. Zamislite koliko lakše bi bilo da objasni javnosti, klasa, statički, prazninu, i String [], da student koji je već razumije funkcije, klase, recimo varijable, varijable klase, vrste podataka i polja. U kompliciranije konstrukcije sistema jezika (npr C ++ šablona, ​​virtualne metode, dinamičan odljevaka) su stvarno mehanizmi za postizanje neke fleksibilnost pruža dinamičan jezika unutar statički otkucala okvir. Zašto prvo ne uči koncepte na jeziku koji ne zahtijevaju takve složenosti da ih izrazi? principi A drugoj razini programskih jezika klase ili sisteme programiranja klase čini više prikladno mjesto za rješavanje zamršenost jezika sistema.

4.4 Piton je nepoznato

Neki fakultet može usprotiviti Piton kao prvi jezik, jer je nepoznato. Međutim, programski jezici su jednostavni, a neko kvalificiran za podučavanje informatike može pokupiti Piton u danima, ako ne i sati. U stvari, ja bih usudio reći da nakon par dana se igra sa Piton, puno fakulteta koji sada predaje C ++ bi bolje znati Piton. C ++ je evoluirala tijekom standardizacije, i mnogo toga što se vidi u udžbenicima je zastarjela. Istina stručnjaka na modernim C ++ su relativno rijetki.

4.5 Naša studenti žele jezik X

Učenici (i roditelji i poslodavci) imaju predrasude o tome šta treba da se uči u nastavnom planu i programu. Međutim, ništa treba reći da to nije u njihovom najboljem interesu da se najjači mogući temelj u programiranju i dizajnu. Kao što je već rečeno, počevši sa skript jezik nije vjerojatno da uspore napredak studenata u učenje jezika X (bez obzira na X). Umjesto toga, to je vjerojatno da ih bolje programera u bilo kojem jeziku (e) su na kraju koriste. Kada sam uveo Piton u klasama gornjem nivou, gotovo univerzalna reakcija je bila ” Zašto nismo se koristiti na prvom mjestu?”

4.6 Ne postoje udžbenici

Glavna poteškoća u pokušaju da nauči nestandardni jezik u uvodnoj sekvenci je nedostatak podrške udžbenika. Jedna opcija može biti da koriste jezik neutralan knjiga i razviti podršku laboratorija koristeći jedan od dostupnih Python reference. Ono što je zaista potrebno je za neke pionire da predaju uvodnom klase koristeći skriptiranje jezika i razviti odgovarajuće bilješke koje bi mogle postati udžbenika. Brojni edukatori uzeo pad sa Java prije bilo tekstova; Kao rezultat toga, postoji mnogo novih naslova koristeći Java sada dolazi na tržište.

Ovaj članak je poziv na buđenje za one koji razmišljaju prekidač za Java. Ako ste možda prebacivanje jezika, pažljivo razmotriti motive za svoj prekidač. Pedagoški razmatranja tvrde za korak dalje od sistema jezika skript jezicima, a Piton je vrlo dobar izbor. Ono što je potrebno je nekoliko stout duše reskirati s Piton i razviti odgovarajuće materijale. Možda neki sadašnji autori možda i pristati da se razvije Piton verzije popularnih tekstova.

4.7 Šta je šema?

Za one koji su pomoću šema u uvodnom klase, poziv za jednostavnu prvi jezik nije ništa novo. Shema ima mnogo zajedničkih karakteristika sa skript jezicima u tome što je mala, dinamičan i interaktivan. (U stvari, to se često koristi kao skriptni jezik.) Shema je dobar izbor za prvi jezik, jer je jednostavan i moćan. Shema omogućava raspravu različitih programskih paradigmi, a tu su i nekoliko vrlo dobrih udžbenika za CS1 koristeći šemu. Čini se da je idealan izbor.

Slabost šeme je u tome što se percipira kao marginalna jezik koji je potpuno drugačiji od jezika sistema koji se koriste drugdje u nastavnom planu i programu. Ovo je ograničena svoju popularnost u CS1. Piton nudi mnoge prednosti šeme dok je još bio sličan jezicima kao što su C ++, Java, i Ada, na taj način olakšava prelazak na te jezike. Za one koji žele istraživati ​​više programskih paradigmi u prvom kursevima, Piton ima podršku za funkcionalnom stilu, uključujući funkcije prvog reda, karta, primijeniti, lambda i zatvaranja.

5 Zaključci

Pojava skript jezika, kao što su Piton, Tcl, i Perl kao glavni alat u razvoju softvera predstavlja potencijalno revolucionarnih promjena u kompjuterskom programiranju. Trenutno, programski jezici su nedovoljno zastupljene u računarstvu nastavnog plana i programa. To je iznenađujuće, kao, iz pedagoških stanovišta, programski jezici se čini idealno pogodna za vrstu programa koji se obično radi u uvodnom klase.

Jedan od glavnih pravila nastojimo usaditi u našim studentima je ideja koristeći odgovarajuće sredstvo za dati posao. Ako klijent došao do mene i predložio joj je potreban program napisan u vrlo kratkom vremenskom periodu, da program nije imao čvrsto vremena ili memorije ograničenja, i da nakon završene bi se pokrenuti samo nekoliko puta, ja bih odmah predložiti scripting jezik kao odgovarajući alat. To su upravo uvjeti pod kojima programiranje javlja u većini CS1 i CS2 klase. S obzirom na postojanje scripting jezika, kao što su Python koji također pružaju dobru podršku za modularni i objektno orijentisanog dizajna programa, ne postoji dobar razlog za njih ne koriste. Scripting jezici su najprikladniji alat za naše uvodne kurseve. S obzirom na trenutni nedostatak konsenzusa na jednom prvi jezik, čini se kao idealno vrijeme za početak pokreta za skriptiranje jezika. Razmislite o korištenju Piton u uvodnom klase.

Reference

Laird, C., Soraiz, K., (1998). Getting Started with Python, SunWorld Online, February, http://www.sun.com/sunworldonline/swol-02-1998/swol-02-python.html

Laird, C., Soraiz, K., (1998). Get a Grip on Scripts, Byte, June, pp. 89-96.

Lutz, M., (1996). Programming Python, O’Reilly & Associates, Inc.

McCauley, R. and Manaris, B., (1998). Computer Science Programs: What Do They Look Like? Proceedings of the 29th SIGCSE Technical Symposium on Computer Science Education, February, pp. 15-19.

Ousterhout, J., (1998). Scripting: Higher Level Programming for the 21st Century, IEEE Computer, March.

Watters, A., van Rossum, G., Ahlstrom, J., (1996). Internet Programming with Python, M & T Books, New York, New York.