Istorija programskog jezika Pajton

S Vikipedije, slobodne enciklopedije

Istorija programskog jezika Pajton datira još iz 80-ih godina 20. veka.

Pajton je osmišljen krajem 80-ih godina[1] a njegova implementacija je započeta 1989. godine[2] od strane Gvida van Rosuma na CWI u Holandiji. Pajton je u stvari osmišljen kao naslednik programskog jezika ABC, sa sposobnošću upravljanja izuzecima i interfejsinga sa Ameoba operativnim sistemom.[3] Van Rosum je glavni autor programskog jezika Pajton i kolika je njegova uloga bila u razvoju Pajtona, govori podatak da su mu članovi takozvane Pajton zajednice dali nagradu koja se dodeljuje programerima a naziva se Dobroćudni diktator zauvek.

Pajton 2.0 je izašao 16. oktobra 2000. godine i imao je mnoštvo novih glavnih osobina kao što je ciklični detektor sakupljača smeća za upravljanje memorijom i podršku za Junikod. Najbitnija promena se ogleda u razvojnom procesu, gde je izvršena smena na više transparentan i socijalan proces.[4] Pajton 3.0 je izašao 3. decembra 2008. godine[5] nakon dugotrajnog testiranja. Ima dosta sličnosti sa verzijama 2.6 i 2.7.[6]

Prvo izdanje[uredi | uredi izvor]

Van Rosum je 1991. godine objavio kod (označena verzija 0. 9. 0) za alt.sources.[7] U razvoju su postojale klase sa nasleđivanjem, rukovanje izuzecima, funkcije, srž tipova podataka kao što su листе, речници, ниске itd. U ovoj prvoj verziji Pajtona je postojao modularni sistem pozajmljen od Modula-3; Van Rosum je smatrao da je Modul jedna od glavnih Pajtonovih programskih jedinica.[1] Pajtonov model takođe liči na Modul-3, sa dodatkom else klauzule.[3] Godine 1994. se pravi veliki forum za diskusiju oko programskog jezika Pajton, što dovodi do ogromnog razvoja Pajtonove korisničke baze.[1]

Datumi izlaska verzija[uredi | uredi izvor]

[8]

  • Pajton 1.0 - Januar 1994
  -Пајтон 1.5 - 31. децембар 1997
  -Пајтон 1.7 - 5. децембар 2000
  • Pajton 2.0 - 16. oktobar 2000
  -Пајтон 2.1 - 17. април 2001
  -Пајтон 2.2 - 21. децембар 2001
  -Пајтон 2.3 - 29. јул 2003
  -Пајтон 2.4 - 30. новембар 2004
  -Пајтон 2.5 - 19. септембар 2006
  -Пајтон 2.6 - 1. октобар 2008
  -Пајтон 2.7 - 3. јул 2010
  • Pajton 3.0 - 3. decembar 2008
  -Пајтон 3.1 - 27. јун 2009
  -Пајтон 3.2 - 20. фебруар 2011
  -Пајтон 3.3 - 29. септембар 2012
  -Пајтон 3.4 - 16. март 2014
  -Пајтон 3.5 - 12. септембар 2015

Verzija 1.0 (1994)[uredi | uredi izvor]

Pajton je izbacio verziju 1.0 1994. godine. Glavne novosti u ovoj verziji su bili funkcionalni programski alati kao što su lambda, map, filter and reduce. Van Rosum je izjavio da je Pajton stekao Lambda, Map, Filter i Reduce zahvaljujući ljubaznošću Lisp hakera.[9] Poslednja verzija koju je Van Rosum izbacio dok je bio u Holandiji na CWI-u je Pajton 1.2. U 1995. godini, Rosum nastavlja da radi na Pajtonu na CNRI-u u Restonu, Virdžinija odakle je izbacio više verzija.

Sa verzijom 1.4, Pajton dobija par novina. Značajno je to da Modula-3 omogućuje uvođenje argumenata ključnih reči i ima ugrađenu funkciju sa rad sa kompleksnim brojevima. Takođe je uključena i osnovna forma skrivanja podataka iako je ona lako zaobiđena.[10]

Dok je Van Rosum bio na CNRI, pokrenuo je akciju Programiranje za sve (CP4E) u nameri da programiranje postane što pristupačnije ljudima, sa osnovnom programerskom pismenošću, slično osnovama pismenosti engleskog jezika i matematičkih veština koje zaposleni moraju da imaju. Pajton je odigrao tu glavnu ulogu: zbog razumnih sintaksa, već je bio pogodan i ideje CP4E su se teško probijale slično kao i kod njegovog prethodnika ABC. Akcija je finansirana od strane DARPA.[11] Ipak, 2007. godine je ova akcija ukinuta i iako je Pajton pokušavao da bude lak za učenje i ne toliko težak u sintaksama i semantici, dopiranje do ne-programera nije bio glavni cilj.[12]

BeOpen[uredi | uredi izvor]

U 2000. godini, srž Pajtonovog razvojnog tima je prebačen u BeOpen.com u formi BeOpen Pajtonovog laboratorijskog tima. CNRI je zatražio da se izbaci verzija 1.6, sumirajući Pajtonov razvoj do trenutka kada je razvojni tim napustio CNRI. Stoga su se rasporedi izlaženja za 1.6 i 2.0 poklapali.[4] Pajton 2.0 je jedina verzija izdata od BeOpen.com-a. Nakon što je verzija 2.0 izbačena od strane BeOpen.com, Van Rosum i ostali članovi tima su se pridružili Digitalnim Kreacijama.

Pajton 1.6 sadrži novu CNRI licencu koja je znatno duža nego CWI licenca prethodnih verzija. Nova licenca podrazumeva klauzulu koja potvrđuje da licencu kontroliše zakon države Virdžinija. Besplatna softverska fondacija je bila ljuta zbog izbora zakonske klauzule koja je bila nespojiva sa GNU GPL. BeOpen, CNRI i FSF su se složili da će promena u Pajtonovu besplatnu softversku licencu biti GPL-kompatibilna. Verzija 1.6.1 je prilično slična sa verzijom 1.6, uz popravljanje nekih sitnih bagova i novom GPL-kompatibilnom licencom.[13]

Verzija 2.0[uredi | uredi izvor]

Pajton 2.0 je predstavio listu shvatanja, karakteristiku pozajmljenu od funkcionalnog programskog jezika SETL i Haskell-a. Pajton-ova sintaksa za ovaj sadržaj je veoma slična Haskelovoj, osim Haskelove sklonosti ka interpukcijskim znakovima i Pajtonovim alfabetskim ključnim rečima. Pajton 2.0 je takođe predstavio otpadni sistem sposoban za prikupljanje referentnih ciklusa.[4]

Pajton 2.1 je bio sličan Pajtonu 1.6.1, kao i Pajton 2.0. Njegova licenca je preimenovana u Pajtonova Sofstverska Fondacija Licenca . Ceo dodat kod, dokumentacija i specifikacija od kada je Pajton 2.1's alfa izdat je u vlasništvu Pajtonove Sofstverske Fondacije (PSF), neprofitne organizacije, osnovane 2011, po uzoru na Apače Sofstversku Fondaciju.[13] Izdavanje je uključivalo promenu u jezičkim specifikacijama, da podrži umetnute domete kao ostale statičke domenske jezike.[14] (Funkcija je isključena podrazumevano, a ne zahtevano, sve do Pajtona 2.2.) Glavna inovacija u Pajtonu 2.2. je objedinjavanje Pajtonovih vrsta (vrsta pisanih u C) i klasa (vrsta pisanih u Pajtonu) u jednu hijerarhiju. Ovo jedno objedinjavanje je napravilo Pajtonov objekat isljučivo i konsatntno objektno (ciljno) orijentisan.[15] Takođe su dodati generatori, inspirisani Icon (programski jezik)-om.[16]

U novembru 2014. je objavljeno da će Pajton 2.7 biti podržan do 2020. i potvrđeno da neće biti 2.8 izdanja, kao što su korisnici očekivali da pređu na Pajton 3.4+, što je pre moguće.[17]

Verzija 3.0[uredi | uredi izvor]

Pajton 3.0 (još ga zovu i Pajton 3000 ili Pajton3K), je napravljen da bi se ispravile osnovne dizajnerske greške u programskom jeziku (promene nisu mogle biti ubačene sve dok se zadržavala kompatibilnost sa 2.x serijom, što je iziskivalo pojavu novog glavnog verzijskog broja. Vodeći princip Pajtona 3.0 bio je : Smanji odliku dupliranja tako što ćeš odbaciti stari način radnje.

Filozofija[uredi | uredi izvor]

Pajton 3.0 je razvijen na temelju iste filozofije kao prethodne verzije Pajtona. Međutim, Pajton je postao prenatrpan novim i suvišnim rešenjima za programiranje jednog te istog zadatka, pa je Pajton 3.0 potencirao na brisanju istih konstrukcija i modula, pridržavajući se principa "Treba imati samo jedan i očigledan način da se problem reši".

Ipak, Pajton 3.0 je ostao multi-paradigmalan jezik. Programeri i dalje imaju opcije između objektno-orijentisanog, strukturnog programiranja, funkcionalnog programiranja i ostalim paradigmama, ali sa tolikim izborom, detalji bi trebalo da budu dosta jednostavniji nego u ranijim Pajtonovim verzijama ( 2.x verzije).

Pozadina i kompatibilnost[uredi | uredi izvor]

Pajton 3.0 je izašao 3. decembra 2008. godine.[5] Pajtonove serije 2.x i 3.x su planirane da koegzistiraju zajedno tj. da neke verzije iz 2.x i 3.x budu zajedno izbačene, s tim što bi 2.x serija postojala uglavnom zbog komaptibilnosti uz dodatak nekih novih odlika uzetih iz 3.x serije.[6] Pajton 2.6 je izašao podudarajući se sa verzijom 3.0, imajući neke odlike te (3.0) verzije, kao i režim Upozorenja koji je kasnije obrisan u 3.0 verziji.[18] Slično tome, verzija 2.7 koja se podudarala i sadržala neke odlike verzije 3.1,[19] izašla je 26. juna 2009. godine. Pajton 2.7 je poslednja verzija iz serije 2.x,[20] koja je ugašena izlaskom verzije 3.2.

Pajton 3.0 je onemogućio korišćenje nekih sintaksi iz verzija 2.x . Nije bilo moguće pokrenuti neki kod iz serije 2.x bez njegove promene u Pajtonu 3.0. Tu su bile neke osnovne promene kao što je promena iskaza print u funkciju print (tako da će svako korišćenje opcije print kao iskaz biti okarakterisana kao greška), promene Junikoda (Unicode) za sve niske. Pajtonov sistem pisanja kombinovan teškim planom da se promeni semantika određenih metoda rečnika, npr. da se mehanički prenese iz serije 2. h u Pajton 3.0. Međutim alatka zvana 2 do 3 mogla je uraditi dosta toga u prevođenju i poentiranju koristeći komentare i upozorenja. Čak i u alfa fazi, 2 do 3 može biti prilično uspešna u prevođenju.[21] Za projekte koji zahtevaju kompatibilnost u serijama 2. h i 3. h, Pajtonov razvojni tim je predložio korišćenje jednog izvora (iz 2. h serije) i koristiti u serijama 3. h platforme koristeći 2 do 3. Promene u kodu u Pajtonovoj seriji 3. h su dovele do toga da je potrebno mnogo vremena da se taj isti kod izvrši u Pajtonu 2. h serije.[6]

Odlike[uredi | uredi izvor]

Najveće promene u verziji Pajton 3.0 :

  • Promena print, koja je sada ugrađena funkcija, a ne iskaz. Ovo omogućava lakšu promenu modula za različito korišćenje print funkcije i čini sintaksu ispravnijom. U Pajtonu 2.6 i 2.7 print() je dostupna kao ugrađena funckija ali je maskirana iskaznom sintaksom print, što se može isključiti ukucavanjem from __future__ import print_function na vrhu fajla.[22]
  • Brisanje reduce iz liste ugrađenih funkcija.[23]
  • Dodavanje podrške za opcionalnu fuknciju uz napomenu da ma se može koristiti za neformalni tip deklaracija ili druge svrhe.[24]
  • Objedinjavanje str/unicode tipova, reprezentujućih tekstova, uvođenje odvojenih nepormeniljivih bytes tipvoa i uglavnom odgovarajućih promenljivih bytearray tipova, oba predstavljaju nizove bytes-a.[25]
  • Uklanjanje backwards compatibility odlike, uključujući stari izgled klasa, izuzetke niski i implicitne relativne unose.
  • Promena u deljenju brojeva. (U Pajtonu 2 je 5 / 2 je 2. U Pajtonu 3, 5 / 2 je 2.5 i 5 // 2 je 2).

U kasnijim verzijama Pajtonove serije 3. h su dodati novi dodaci, tj. značajne nove karakteristike.

Uticaji drugih programskih jezika[uredi | uredi izvor]

Pajtonovo jezgro sintaksi i sama Pajtonova filozofija je nasleđena od strane ABC. C je napravio neke od Pajtonovih sintaksi i Bourne shell koji je predstavljen kao model za Pajtonov interpreter koji postaje interaktivan kada je pokrenut bez i jednog podatka.[26] Lista spoznaja, anonimnih funkcija, leksičkih klozura i map funkcija su jedni od glavnih pozajmljenih karakteristika iz funkcionalnih jezika, pre svega dialekta Lisp-a i Haskell-a.[4][9][14] Generatori i iteratori su inspirisani od strane Icon-a, i spojeni u jedno.[16] Modul-3 je bio osnov modela izuzetka i modularnog sistema.[1][3] Perl je pozajmio Pajtonov Regularni izraz, koji se koristi za upravljanje niskama.[27] Na Pajtonovu biblioteku slika i sintaksi je uticala Java ; logging pakovanje[28] je ubačeno u verziju 2.3,[29] threading pakovanje za više nanizanih aplikacija,[30] SAX "praser", ubačen u verziju 2.0 i dekorator sintaksi @[31] koji je ubačen u verziju 2.4.[32] Pajtonov metod reda rezolucije je promenjen u verziji 2.3 gde se koristi C3 linearizacija algoritam koji je korišćen u Dilanu.[33]

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ a b v g „Nastajanje programskog jezika Pajton”. Artima Developer. Pristupljeno 22. 03. 2007. 
  2. ^ „Kratak sadržaj programskog jezika Pajton”. Guido van Rossum. Pristupljeno 20. 01. 2009. 
  3. ^ a b v „Zbog čega je pre svega Pajton napravljen?”. Python FAQ. Pristupljeno 22. 03. 2007. 
  4. ^ a b v g A.M. Kuchling and Moshe Zadka. „Šta je novo u Pajton 2.0”. Arhivirano iz originala 14. 12. 2009. g. Pristupljeno 22. 03. 2007. 
  5. ^ a b Izlazak Pajton 3.0 verzije
  6. ^ a b v „PEP 3000”. Arhivirano iz originala 03. 03. 2016. g. Pristupljeno 01. 11. 2015. 
  7. ^ „Istorija”. Izrada Pajtonovog izvora. Python Foundation. Arhivirano iz originala 17. 02. 2016. g. Pristupljeno 21. 03. 2007. 
  8. ^ „Releases | Python.org[[Kategorija:Botovski naslovi]]”. Arhivirano iz originala 22. 12. 2015. g. Pristupljeno 01. 11. 2015.  Sukob URL—vikiveza (pomoć)
  9. ^ a b Guido van Rossum. „Sudbina Reduce() u verziji 3.0”. Artima Developer. Pristupljeno 22. 03. 2007. 
  10. ^ „LJ #37: Python 1.4 Update”. Arhivirano iz originala 01. 05. 2007. g. Pristupljeno 29. 04. 2007. 
  11. ^ Guido van Rossum. „Programiranje za sve”. Pristupljeno 22. 03. 2007. 
  12. ^ „Programiranje za sve”. Python Software Foundation. Arhivirano iz originala 29. 03. 2007. g. Pristupljeno 22. 03. 2007. 
  13. ^ a b „Istorija softvera”. Python Library Reference. Arhivirano iz originala 29. 03. 2007. g. Pristupljeno 22. 03. 2007. 
  14. ^ a b Hylton, Jeremy. „Statically Nested Scopes”. Pristupljeno 22. 03. 2007. 
  15. ^ A.M. Kuchling (21. 12. 2001). „PEPs 252 and 253: Type and Class Changes”. What's New in Python 2.2. Python Foundation. Arhivirano iz originala 17. 09. 2008. g. Pristupljeno 5. 09. 2008. 
  16. ^ a b A.M. Kuchling (21. 12. 2001). „PEP 255: Simple Generators”. What's New in Python 2.2. Python Foundation. Pristupljeno 05. 09. 2008. 
  17. ^ Python 2.7 To Be Maintained Until 2020
  18. ^ Norwitz, Neal; Warsaw, Barry (29. 06. 2006). „PEP 361 -- Datumi izlaska verzija 2.6 i 3.0”. Pristupljeno 07. 10. 2012. 
  19. ^ A.M. Kuchling (03. 07. 2010). „Šta je novo u verziji 2.7”. Pristupljeno 07. 10. 2012. „Much as Python 2.6 incorporated features from Python 3.0, version 2.7 incorporates some of the new features in Python 3.1. The 2.x series continues to provide tools for migrating to the 3.x series. 
  20. ^ Warsaw, Barry (09. 11. 2011). „PEP 404 -- Datum izlaska Pajton 2.8 verzije”. Pristupljeno 07. 10. 2012. 
  21. ^ Sam Ruby, 2to3, September 1, 2007
  22. ^ PEP 3105
  23. ^ Pogled na Artima programerski blog
  24. ^ PEP 3197
  25. ^ PEP 3137: Immutable Bytes and Mutable Buffer
  26. ^ „Intervju sa Guido Van Rosumom”. July 1998. Arhivirano iz originala 01. 05. 2007. g. Pristupljeno 2007.  Proverite vrednost paramet(a)ra za datum: |access-date= (pomoć)
  27. ^ 7.2. re — Regular expression operations — Python 2.7.11 documentation
  28. ^ „PEP 282 - A Logging System”. Python.org. Pristupljeno 24. 11. 2008. 
  29. ^ „8 PEP 282: The logging Package”. Python.org. Arhivirano iz originala 20. 12. 2008. g. Pristupljeno 24. 11. 2008. 
  30. ^ 16.2. threading — Higher-level threading interface — Python 2.7.11 documentation
  31. ^ „PEP 318 - Decorators for Functions and Methods”. Python.org. Pristupljeno 24. 11. 2008. 
  32. ^ „5 PEP 318: Decorators for Functions and Methods”. Python.org. Arhivirano iz originala 10. 12. 2008. g. Pristupljeno 24. 11. 2008. 
  33. ^ The Python 2.3 Method Resolution Order | Python.org

Spoljašnje veze[uredi | uredi izvor]