# Общи концепции - УПП, Седмица 1, 02.10.2025 'define expected-reading 4 min 'define created 27 September 2025 'define edited 27 September 2025 [$pagenav] [$presentation-controller] :title_slide35 # Общи концепции :slide35 ## Компютър, код, компилиране [$br2] :unordered - Компютърът е една гигантска елка с много бутони и памет - Видео, аудио, ... се свеждат до записване на число в паметта .unordered - Например, записване на 255 в определена памет, казва че червеното на първия пиксел е с максимална яркост - Как числото става нещо осезаемо е въпрос по елетротехника :middle_slide .unordered - В древността (около 1940те) програмистите са ръчно са размествали жички за да работят с компютъра - Електротехниката се развива и това "разместване" се случва без нуждата от промяна в електрическата схема - На хората им омръзва от писането на числа, изобретяват програмните езици - Това е (=[неформатиран]=) текст, като комбинации от знаци се свеждат до съответните цифри .unordered - Например, нека числото 200 да обозначава\n "добавяне на единица към *[(регистър)]* Y" - С програмен език текста `[INY]` или `[++Y]` се свежда до числото 200 :middle_slide35 .unordered - Програмите които превръщат този текст в числа се наричат =[компилатори]=. Самия процес - =[компилиране]=. - Разногласия по какъв текст какво трябва да значи още текат, затова имаме различни (програмни) езици - Допълнително, хората правят комбинации от знаци, които се превеждат до много числа по сложни начини - Така се зараждат =[парадигмите]= :slide35 ## История на версиите, git [$br2] .unordered - Microsoft Word, браузърите, ... следят история на действия - Можем да се движим назад и напред - Но ако се върнем назад и направим нова промяна, "бъдещите" промени се забравят - Би било полезно в някои ситуации всъщност да правим разклонение и да пазим и двете редици промени :middle_slide35 .unordered - [url https://git-scm.com/ git] е програма, която пази такива разклонени редици от промени върху файловете в директории - Всяка промяна се нарича "=[commit]=" - Различните разклонения се наричат "=[branch]="-ове - Всеки "commit" трябва да има автор и описание, тоест commit-ове не се правят автоматично! - Създаването/изтриването на файлове с/без съдържание също се включва в commit-ите - Папка (и всички под-папки в нея) в която git следи за промени се нарича "=[repository]=" (хранилище) :slide35 .unordered - Понякога искаме да споделим нашите промени и да смесим чужди промени при нас\n *[(примерно няколко програмиста паралелно правят модификации по един и същ код)]* - Можем да използваме Google Drive/Dropbox/... и ръчно да смесваме, но става сложно и тромаво - Сайтове като [url https://github.com GitHub] са специализирани за работа с repository-та. Предоставят: .unordered - безплатно пространство (облак) за repository-и - съвместна интеграция с git - "pull request": улеснено смесване на два branch-а с възможност за дискусии :middle_slide35 .unordered - git и GitHub (или техни близки алтернативи) се използват масово от програмисти по целия свят - С цел да видите как се ползват и свикнете с тях, ще ги използваме по време на упражнения :slide35 ## GitHub Classroom [$br1] .unordered - Чрез [url https://classroom.github.com GitHub Classroom] ще създавам =[задания с ограничен срок]= (края на съответното упражнение) - Когато вие приемете заданието, автоматично се създава git repository към което имате (ограничен) достъп - Преди срока трябва да добавите commit с вашата работа по време на упражнението, =[колкото и малко да е!]= - Добавя се един автоматичен "pull request" в който ще пиша отзивите. Да, странно е, че използваме системата за смесване на branch-ове за обратна връзка, но така са решили да го направят. :title_slide35 .p [url ./github_classroom.html?a Към "GitHub Classroom упътване"]