Историја програмског језика Пајтон

Историја програмског језика Пајтон датира још из 80-их година 20. века.

Пајтон је осмишљен крајем 80-их година [1] а његова имплементација је започета 1989. године [2] од стране Гвида ван Росума на CWI у Холандији. Пајтон је у ствари осмишљен као наследник програмског језика АBC, са способношћу управљања изузецима и интерфејсинга са Амеоба оперативним системом.[3] Ван Росум је главни аутор програмског језика Пајтон и колика је његова улога била у развоју Пајтона, говори податак да су му чланови такозване Пајтон заједнице дали награду која се додељује програмерима а назива се Доброћудни диктатор заувек.

Пајтон 2.0 је изашао 16. октобра 2000. године и имао је мноштво нових главних особина као што је циклични детектор сакупљача смећа за управљање меморијом и подршку за Јуникод. Најбитнија промена се огледа у развојном процесу, где је извршена смена на више транспарентан и социјалан процес.[4] Пајтон 3.0 је изашао 3. децембра 2008. године [5] након дуготрајног тестирања. Има доста сличности са верзијама 2.6 и 2.7.[6]

Прво издање уреди

Ван Росум је 1991. године објавио код (означена верзија 0. 9. 0) за alt.sources.[7] У развоју су постојале класе са наслеђивањем, руковање изузецима, функције, срж типова података као што су листе, речници, ниске итд. У овој првој верзији Пајтона је постојао модуларни систем позајмљен од Модула-3; Ван Росум је сматрао да је Модул једна од главних Пајтонових програмских јединица.[1] Пајтонов модел такође личи на Модул-3, са додатком еlse клаузуле.[3] Године 1994. се прави велики форум за дискусију око програмског језика Пајтон, што доводи до огромног развоја Пајтонове корисничке базе.[1]

Датуми изласка верзија уреди

[8]

  • Пајтон 1.0 - Јануар 1994
  -Пајтон 1.5 - 31. децембар 1997
  -Пајтон 1.7 - 5. децембар 2000
  • Пајтон 2.0 - 16. октобар 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
  • Пајтон 3.0 - 3. децембар 2008
  -Пајтон 3.1 - 27. јун 2009
  -Пајтон 3.2 - 20. фебруар 2011
  -Пајтон 3.3 - 29. септембар 2012
  -Пајтон 3.4 - 16. март 2014
  -Пајтон 3.5 - 12. септембар 2015

Верзија 1.0 (1994) уреди

Пајтон је избацио верзију 1.0 1994. године. Главне новости у овој верзији су били функционални програмски алати као што су lambda, map, filter and reduce. Ван Росум је изјавио да је Пајтон стекао Lambda, Map, Filter и Reduce захваљујући љубазношћу Lisp хакера.[9] Последња верзија коју је Ван Росум избацио док је био у Холандији на CWI-у је Пајтон 1.2. У 1995. години, Росум наставља да ради на Пајтону на CNRI-у у Рестону, Вирџинија одакле је избацио више верзија.

Са верзијом 1.4, Пајтон добија пар новина. Значајно је то да Модула-3 омогућује увођење аргумената кључних речи и има уграђену функцију са рад са комплексним бројевима. Такође је укључена и основна форма скривања података иако је она лако заобиђена.[10]

Док је Ван Росум био на CNRI, покренуо је акцију Програмирање за све (CP4E) у намери да програмирање постане што приступачније људима, са основном програмерском писменошћу, слично основама писмености енглеског језика и математичких вештина које запослени морају да имају. Пајтон је одиграо ту главну улогу: због разумних синтакса, већ је био погодан и идеје CP4E су се тешко пробијале слично као и код његовог претходника АBC. Акција је финансирана од стране DARPA.[11] Ипак, 2007. године је ова акција укинута и иако је Пајтон покушавао да буде лак за учење и не толико тежак у синтаксама и семантици, допирање до не-програмера није био главни циљ.[12]

BeOpen уреди

У 2000. години, срж Пајтоновог развојног тима је пребачен у BeOpen.com у форми BeOpen Пајтоновог лабораторијског тима. CNRI је затражио да се избаци верзија 1.6, сумирајући Пајтонов развој до тренутка када је развојни тим напустио CNRI. Стога су се распореди излажења за 1.6 и 2.0 поклапали.[4] Пајтон 2.0 је једина верзија издата од BeOpen.com-a. Након што је верзија 2.0 избачена од стране BeOpen.com, Ван Росум и остали чланови тима су се придружили Дигиталним Креацијама.

Пајтон 1.6 садржи нову CNRI лиценцу која је знатно дужа него CWI лиценца претходних верзија. Нова лиценца подразумева клаузулу која потврђује да лиценцу контролише закон државе Вирџинија. Бесплатна софтверска фондација је била љута због избора законске клаузуле која је била неспојива са GNU GPL. BeOpen, CNRI и FSF су се сложили да ће промена у Пајтонову бесплатну софтверску лиценцу бити GPL-компатибилна. Верзија 1.6.1 је прилично слична са верзијом 1.6, уз поправљање неких ситних багова и новом GPL-компатибилном лиценцом.[13]

Верзија 2.0 уреди

Пајтон 2.0 је представио листу схватања, карактеристику позајмљену од функционалног програмског језика SETL и Haskell-a. Пајтон-ова синтакса за овај садржај је веома слична Хаскеловој, осим Хаскелове склоности ка интерпукцијским знаковима и Пајтоновим алфабетским кључним речима. Пајтон 2.0 је такође представио отпадни систем способан за прикупљање референтних циклуса.[4]

Пајтон 2.1 је био сличан Пајтону 1.6.1, као и Пајтон 2.0. Његова лиценца је преименована у Пајтонова Софстверска Фондација Лиценца . Цео додат код, документација и спецификација од када је Пајтон 2.1's алфа издат је у власништву Пајтонове Софстверске Фондације (ПСФ), непрофитне организације, основане 2011, по узору на Апаче Софстверску Фондацију.[13] Издавање је укључивало промену у језичким спецификацијама, да подржи уметнуте домете као остале статичке доменске језике.[14] (Функција је искључена подразумевано, а не захтевано, све до Пајтона 2.2.) Главна иновација у Пајтону 2.2. је обједињавање Пајтонових врста (врста писаних у C) и класа (врста писаних у Пајтону) у једну хијерархију. Ово једно обједињавање је направило Пајтонов објекат исључиво и консатнтно објектно (циљно) оријентисан.[15] Такође су додати генератори, инспирисани Icon (програмски језик)-ом.[16]

У новембру 2014. је објављено да ће Пајтон 2.7 бити подржан до 2020. и потврђено да неће бити 2.8 издања, као што су корисници очекивали да пређу на Пајтон 3.4+, што је пре могуће.[17]

Верзија 3.0 уреди

Пајтон 3.0 (још га зову и Пајтон 3000 или Пајтон3K), је направљен да би се исправиле основне дизајнерске грешке у програмском језику (промене нису могле бити убачене све док се задржавала компатибилност са 2.x серијом, што је изискивало појаву новог главног верзијског броја. Водећи принцип Пајтона 3.0 био је : Смањи одлику дуплирања тако што ћеш одбацити стари начин радње.

Филозофија уреди

Пајтон 3.0 је развијен на темељу исте филозофије као претходне верзије Пајтона. Међутим, Пајтон је постао пренатрпан новим и сувишним решењима за програмирање једног те истог задатка, па је Пајтон 3.0 потенцирао на брисању истих конструкција и модула, придржавајући се принципа "Треба имати само један и очигледан начин да се проблем реши".

Ипак, Пајтон 3.0 је остао мулти-парадигмалан језик. Програмери и даље имају опције између објектно-оријентисаног, структурног програмирања, функционалног програмирања и осталим парадигмама, али са толиким избором, детаљи би требало да буду доста једноставнији него у ранијим Пајтоновим верзијама ( 2.x верзије).

Позадина и компатибилност уреди

Пајтон 3.0 је изашао 3. децембра 2008. године.[5] Пајтонове серије 2.x и 3.x су планиране да коегзистирају заједно тј. да неке верзије из 2.x и 3.x буду заједно избачене, с тим што би 2.x серија постојала углавном због комаптибилности уз додатак неких нових одлика узетих из 3.x серије.[6] Пајтон 2.6 је изашао подударајући се са верзијом 3.0, имајући неке одлике те (3.0) верзије, као и режим Упозорења који је касније обрисан у 3.0 верзији.[18] Слично томе, верзија 2.7 која се подударала и садржала неке одлике верзије 3.1,[19] изашла је 26. јуна 2009. године. Пајтон 2.7 је последња верзија из серије 2.x,[20] која је угашена изласком верзије 3.2.

Пајтон 3.0 је онемогућио коришћење неких синтакси из верзија 2.x . Није било могуће покренути неки код из серије 2.x без његове промене у Пајтону 3.0. Ту су биле неке основне промене као што је промена исказа print у функцију print (тако да ће свако коришћење опције принт као исказ бити окарактерисана као грешка), промене Јуникода (Unicode) за све ниске. Пајтонов систем писања комбинован тешким планом да се промени семантика одређених метода речника, нпр. да се механички пренесе из серије 2. х у Пајтон 3.0. Међутим алатка звана 2 до 3 могла је урадити доста тога у превођењу и поентирању користећи коментаре и упозорења. Чак и у алфа фази, 2 до 3 може бити прилично успешна у превођењу.[21] За пројекте који захтевају компатибилност у серијама 2. х и 3. х, Пајтонов развојни тим је предложио коришћење једног извора (из 2. х серије) и користити у серијама 3. х платформе користећи 2 до 3. Промене у коду у Пајтоновој серији 3. х су довеле до тога да је потребно много времена да се тај исти код изврши у Пајтону 2. х серије. [6]

Одлике уреди

Највеће промене у верзији Пајтон 3.0 :

  • Промена print, која је сада уграђена функција, а не исказ. Ово омогућава лакшу промену модула за различито коришћење принт функције и чини синтаксу исправнијом. У Пајтону 2.6 и 2.7 print() је доступна као уграђена фунцкија али је маскирана исказном синтаксом принт, што се може искључити укуцавањем from __future__ import print_function на врху фајла.[22]
  • Брисање reduce из листе уграђених функција.[23]
  • Додавање подршке за опционалну фукнцију уз напомену да ма се може користити за неформални тип декларација или друге сврхе.[24]
  • Обједињавање str/unicode типова, репрезентујућих текстова, увођење одвојених непормениљивих bytes типвоа и углавном одговарајућих променљивих bytearray типова, оба представљају низове bytes-a.[25]
  • Уклањање backwards compatibility одлике, укључујући стари изглед класа, изузетке ниски и имплицитне релативне уносе.
  • Промена у дељењу бројева. (У Пајтону 2 је 5 / 2 је 2. У Пајтону 3, 5 / 2 је 2.5 и 5 // 2 је 2).

У каснијим верзијама Пајтонове серије 3. х су додати нови додаци, тј. значајне нове карактеристике.

Утицаји других програмских језика уреди

Пајтоново језгро синтакси и сама Пајтонова филозофија је наслеђена од стране ABC. C је направио неке од Пајтонових синтакси и Bourne shell који је представљен као модел за Пајтонов интерпретер који постаје интерактиван када је покренут без и једног податка.[26] Листа спознаја, анонимних функција, лексичких клозура и мап функција су једни од главних позајмљених карактеристика из функционалних језика, пре свега диалекта Lisp-а и Haskell-а.[4][9][14] Генератори и итератори су инспирисани од стране Icon-а, и спојени у једно.[16] Модул-3 је био основ модела изузетка и модуларног система.[1][3] Перл је позајмио Пајтонов Регуларни израз, који се користи за управљање нискама.[27] На Пајтонову библиотеку слика и синтакси је утицала Јава ; logging паковање [28] је убачено у верзију 2.3,[29] threading паковање за више нанизаних апликација,[30] SAX "praser", убачен у верзију 2.0 и декоратор синтакси @ [31] који је убачен у верзију 2.4.[32] Пајтонов метод реда резолуције је промењен у верзији 2.3 где се користи C3 линеаризација алгоритам који је коришћен у Дилану.[33]

Види још уреди

Референце уреди

  1. ^ а б в г „Настајање програмског језика Пајтон”. Artima Developer. Приступљено 22. 03. 2007. 
  2. ^ „Кратак садржај програмског језика Пајтон”. Guido van Rossum. Приступљено 20. 01. 2009. 
  3. ^ а б в „Због чега је пре свега Пајтон направљен?”. Python FAQ. Приступљено 22. 03. 2007. 
  4. ^ а б в г A.M. Kuchling and Moshe Zadka. „Шта је ново у Пајтон 2.0”. Архивирано из оригинала 14. 12. 2009. г. Приступљено 22. 03. 2007. 
  5. ^ а б Излазак Пајтон 3.0 верзије
  6. ^ а б в „PEP 3000”. Архивирано из оригинала 03. 03. 2016. г. Приступљено 01. 11. 2015. 
  7. ^ „Историја”. Израда Пајтоновог извора. Python Foundation. Архивирано из оригинала 17. 02. 2016. г. Приступљено 21. 03. 2007. 
  8. ^ „Releases | Python.org[[Категорија:Ботовски наслови]]”. Архивирано из оригинала 22. 12. 2015. г. Приступљено 01. 11. 2015.  Сукоб URL—викивеза (помоћ)
  9. ^ а б Guido van Rossum. „Судбина Reduce() у верзији 3.0”. Artima Developer. Приступљено 22. 03. 2007. 
  10. ^ „LJ #37: Python 1.4 Update”. Архивирано из оригинала 01. 05. 2007. г. Приступљено 29. 04. 2007. 
  11. ^ Guido van Rossum. „Програмирање за све”. Приступљено 22. 03. 2007. 
  12. ^ „Програмирање за све”. Python Software Foundation. Архивирано из оригинала 29. 03. 2007. г. Приступљено 22. 03. 2007. 
  13. ^ а б „Историја софтвера”. Python Library Reference. Архивирано из оригинала 29. 03. 2007. г. Приступљено 22. 03. 2007. 
  14. ^ а б Hylton, Jeremy. „Statically Nested Scopes”. Приступљено 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. Архивирано из оригинала 17. 09. 2008. г. Приступљено 5. 09. 2008. 
  16. ^ а б A.M. Kuchling (21. 12. 2001). „PEP 255: Simple Generators”. What's New in Python 2.2. Python Foundation. Приступљено 05. 09. 2008. 
  17. ^ Python 2.7 To Be Maintained Until 2020
  18. ^ Norwitz, Neal; Warsaw, Barry (29. 06. 2006). „PEP 361 -- Датуми изласка верзија 2.6 и 3.0”. Приступљено 07. 10. 2012. 
  19. ^ A.M. Kuchling (03. 07. 2010). „Шта је ново у верзији 2.7”. Приступљено 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 -- Датум изласка Пајтон 2.8 верзије”. Приступљено 07. 10. 2012. 
  21. ^ Sam Ruby, 2to3, September 1, 2007
  22. ^ PEP 3105
  23. ^ Поглед на Артима програмерски блог
  24. ^ PEP 3197
  25. ^ PEP 3137: Immutable Bytes and Mutable Buffer
  26. ^ „Интервју са Гуидо Ван Росумом”. July 1998. Архивирано из оригинала 01. 05. 2007. г. Приступљено 2007.  Проверите вредност парамет(а)ра за датум: |access-date= (помоћ)
  27. ^ 7.2. re — Regular expression operations — Python 2.7.11 documentation
  28. ^ „PEP 282 - A Logging System”. Python.org. Приступљено 24. 11. 2008. 
  29. ^ „8 PEP 282: The logging Package”. Python.org. Архивирано из оригинала 20. 12. 2008. г. Приступљено 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. Приступљено 24. 11. 2008. 
  32. ^ „5 PEP 318: Decorators for Functions and Methods”. Python.org. Архивирано из оригинала 10. 12. 2008. г. Приступљено 24. 11. 2008. 
  33. ^ The Python 2.3 Method Resolution Order | Python.org

Спољашње везе уреди