.. _preface: .. only:: latex ========= Предговор ========= Програмски језици високог нивоа, за разлику од програмских језика ниског нивоа, по дефиницији нуде јаку апстракцију у односу на архитектуру скупа инструкција рачунара на коме се програми писани у њима извршавају и обично користе елементе природног језика у својој синтакси. По правилу су програмски језици високог нивоа лакши за коришћење, могу делимично или у потпуности аутоматизовати управљање рачунарским ресурсима као што је меморија, и свеукупно убрзавају процес развоја програма чинећи га јаснијим и разумљивијим. Иако се први програмски језик високог нивоа појавио још током Другог светског рата, уосталом као и многе друге технолошке иновације, први значајно распрострањен и нашироко коришћен програмски језик био је Фортран који је створен средином педесетих година прошлог века. Упоредо са појавом и развојем програмских језика високог нивоа, исти су увођени и у наставне процесе електротехнике и рачунарства на универзитетима. Поред Фортрана, у настави су током година обилато коришћени и многи други програмски језици као што су Паскал, C/C++, Јава, али и неки псеудојезици за које је владало уверење да су добри у педагошке сврхе. Никада није постојао, нити ће постојати консензус око тога који је програмски језик најбољи за уводне курсеве на којима се студенти први пут срећу са програмирањем, па и данас елитни светски универзитети нису међусобно усаглашени по том питању. Настава на факултетима у Србији током деценија, пре свега на Електротехничком факултету у Београду, уз извесна кашњења, у великој мери је пратила светске трендове, а остали факултети у земљи махом су копирали оно што се на њему радило. Међутим, током година, само програмирање у пракси се фундаментално мењало. Док су се пре неколико деценија пројекти започињали и проблеми решавали тако што се полазило од празног папира и празне текстуалне датотеке, данас се полази од нечега што већ постоји, а што се у поступку пројектовања и решавања преобликује у оно што је потребно. У програмирању је евидентно да се већ пар деценија највећи део послова обавља користећи већ готове библиотеке. И док је раније акценат бивао како направити елементарне и мање делове и блокове, а затим њих спајати у веће и сложеније системе, сада се траже најпогоднија готова решења које долазе уз обимну документацију. У прве две деценије овог века програмски језик Пајтон, релативно лак за савладавање, али не на уштрб функционалности, захваљујући својој филозофији наглашене читљивости кода и изузетно разноврсној стандардној библиотеци постао је један од најпопуларнијих програмских језика уопште. Не залазећи у квалификације да ли су промене које су се у инжењерству одиграле добре или лоше, чињеница је да су се десиле и да су хардверски и софтверски системи постали далеко сложенији. И посао инжењера и програмера се мењао у смислу да су све више времена проводили читајући све обимнија упуства и користећи већ готове пакете који садрже на стотине и хиљаде класа и функција, а све мање пишући нове такорећи „од нуле”. Другим речима, методологија систематске анализе и синтезе сложених система, на неки начин уступила је место једној другој методологији, више налик научноистраживачкој, у којој се нешто што већ постоји испитује како ради и покушава искористити у неке партикуларне сврхе. И тако се дошло да упркос томе што је градиво учено на факултетима важно у интелектуалном смислу, из практичног угла није више бивало тако релевантно. Најбољи амерички приватни и државни универзитети, као што су Масачусетски технолошки институт и Калифорнијски универзитет у Берклију, укључују програмски језик Пајтон у своје курикулуме 2009. и 2011. године, респективно, па тако Пајтон постаје први програмски језик који се изучава на уводним курсевима из програмирања на овим универзитетима. Наравно, и многи други светски универзитети, чак и пре претходнопоменутих, узимају Пајтон као први програмски језик на коме њихови студенти уче програмирање. Унутар академских кругова у то доба водила се жустра полемика о томе да ли је Пајтон заиста примерен и добар избор и чини се као да до данас није решено то питање. Поборници и противници ретко су мењали своје ставове, али се Пајтон и даље задржао као први језик на универзитетима, а индустријска популарност му и даље расте. Отварањем првог студијског програма који је водио ка звању дипломираног инжењера електротехнике и рачунарства у Шумадији те 2015. године на Факултету инжењерских наука у Крагујевцу указала се прилика и за иновације у курикулуму. Аутор овог уџбеника, после деценије проведене у иностранству, а непосредно по повратку баш са Калифорнијског универзитета у Берклију, бива запослен у звању доцента на Факултету инжењерских наука 1. септембра 2015. године, а већ 5. октобра исте године почиње настава за прву генерацију новоформираног студијског програма основних академских студија. Иако је тадашњом акредитацијом било предвиђено да се, идентично машинском инжењерству, као први програмски језик изучава Фортран и иако у акредитацији није био распоређен да држи наставу на првој години студија, на сопствену иницијативу, а у договору са тадашњим руководством Факултета, преузима почетни курс из програмирања у првом семестру и уводи Пајтон као језик на коме ће се базирати градиво предмета. По ауторовим сазнањима био је то први високообразовни курикулум у Србији према ком су студенти на уводном курсу из програмирања обрађивали и учили основе у Пајтон програмском језику. У међувремену се 2017. године у основне школе у Србији од петог до завршног, осмог разреда, уводи обавезан наставни предмет информатика и рачунарство на коме се учи и програмирање, при чему већ од шестог разреда, текстуално програмирање и то у Пајтон програмском језику. Сва је прилика да ће половином треће деценије 21. века бруцоши који уписују факултете у просеку бити далеко информатички писменији него што је то раније био случај. Самим тим, планови и програми факултетских курсева морају се прилагодити нивоу предзнања које ће ти студенти носити из својих школа и направити да буду адекватни некоме ко већ више од пола деценије слуша програмирање и у доброј мери познаје синтаксу програмског језика на коме ће се настава изводити. Другим речима, обрађивати условна гранања и једноставне петље у Пајтону некоме ко већ, па макар и на прилично ниском нивоу, барата истим седам година (три у основној и четири у средњој) је беспредметно. Па ипак, познајући све одлике и разноликости српског средњошколског система, увек ће бити студената где неће бити на одмет проћи и кроз најосновније концепте како би се што боље припремили за напреднији ниво на који се обично циља. Имајући све претходно у виду, овај уџбеник је пре свега замишљен као уџбеник програмирања као таквог, а не упутство за коришћење и познавање једног програмског језика. Ипак, за објашњавање програмерских парадигми искоришћен је савремен програмски језик какав је Пајтон, чије познавање свакако неће бити бескорисно у општој инжењерској, научној и програмерској пракси, засигурно још дуги низ година. Такође, идеја је да уџбеник буде занимљив и користан некоме са вишегодишњим програмерским предзнањем, али и почетницима који би желели да на систематичан начин буду уведени у чари рачунског начина размишљања. Овај уџбеник је првенствено намењен студентима Факултета инжењерских наука у Крагујевцу који се школују за дипломиране инжењере електротехнике и рачунарства и слушају основе програмирања у првом семестру студија. Он такође може бити користан и студентима сродних факултета на којима се уводни програмерски концепти предају заснивајући се на програмском језику Пајтон, као што је то од недавно случај и на београдском Електротехничком факултету или новосадском Факултету техничких наука, где је поменути програмски језик уведен на јесен 2020. године као први програмски језик на свим одсецима. Уџбеник такође могу користити и самоуки ентузијасти, али и професионалци као референцу, односно неку врсту подсетника надасве добрих програмерских пракси. Као што ће бити наглашено на самом почетку првог поглавља, уџбеник је превасходно заснован на класичној књизи по којој су дуги низ година предавани уводни концепти програмирања на горепоменутим северноамеричким универзитетима, а каква, колико је аутору познато, не постоји на српском и осталим јужнословенским језицима (који се могу разумети и без преводиоца). Књига је писана у `Sphinx `_ генератору документације и поред штампаног издања (на мртвом дрвећу), објављене су слободно доступне и електронске верзије уџбеника које се могу видети и преузети са интернет адресе https://milovanovic.github.io/krp и које су бесплатне. Циљ аутора свакако није зарада на продаји уџбеника овог типа, а нема ни илузије да би се иоле значајнија новчана зарада и могла остварити продајом било ког учила и наставног средства на овим просторима. По мишљењу аутора, који је запослен на државној високошколској установи и који је самим тим највећим делом плаћен средствима свих пореских обвезника у Републици Србији, сви треба да имају увид у резултате његовог рада. Па ипак, искрено говорећи, тешко да би уџбеник овог типа икада био написан у овом облику да то није један од обавезних услова за академско напредовање. Приликом сваког поновног читања аутор је проналазио много правописних и текстуалних грешака које су исправљане. Већих грешака у деловима изворног кода не би требало да буде, пошто је он аутоматски провераван унутар генератора током прављења излазних докумената. Уџбеник свакако није комплетан и затворен, већ потпуно насупрот томе, замишљен је да расте и буде надограђиван и развијан у годинама које долазе, како од самог аутора, тако и од било кога другог ко би желео да га допуни, поправи и унапреди. Пошто је писан претежно након редовног радног времена, аутор се извињава, пре свега својој породици и пријатељима, што је велики део времена неопходан да се једно дело овог типа напише провео седећи поред рачунара, уместо у кругу својих најближих. Аутор се нада да ће укупно време других проведено читајући и студирајући материју из ове књиге у збиру бити веће од времена које је он издвојио да уџбеник настане. Такође се искрено захваљује свима који су на било који начин допринели да овај уџбеник у овом облику угледа светлост дана. | У Крагујевцу, | фебруар 2021. године -- аутор