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