Общи концепции - УПП, Седмица 1, 02.10.2025



Общи концепции

Компютър, код, компилиране

  • Компютърът е една гигантска елка с много бутони и памет
  • Видео, аудио, ... се свеждат до записване на число в паметта
    • Например, записване на 255 в определена памет, казва че червеното на първия пиксел е с максимална яркост
  • Как числото става нещо осезаемо е въпрос по елетротехника
  • В древността (около 1940те) програмистите са ръчно са размествали жички за да работят с компютъра
  • Електротехниката се развива и това "разместване" се случва без нуждата от промяна в електрическата схема
  • На хората им омръзва от писането на числа, изобретяват програмните езици
  • Това е (неформатиран) текст, като комбинации от знаци се свеждат до съответните цифри
    • Например, нека числото 200 да обозначава
      "добавяне на единица към (регистър) Y"
    • С програмен език текста INY или ++Y се свежда до числото 200
  • Програмите които превръщат този текст в числа се наричат компилатори. Самия процес - компилиране.
  • Разногласия по какъв текст какво трябва да значи още текат, затова имаме различни (програмни) езици
  • Допълнително, хората правят комбинации от знаци, които се превеждат до много числа по сложни начини
  • Така се зараждат парадигмите

История на версиите, git

  • Microsoft Word, браузърите, ... следят история на действия
  • Можем да се движим назад и напред
  • Но ако се върнем назад и направим нова промяна, "бъдещите" промени се забравят
  • Би било полезно в някои ситуации всъщност да правим разклонение и да пазим и двете редици промени
  • git е програма, която пази такива разклонени редици от промени върху файловете в директории
  • Всяка промяна се нарича "commit"
  • Различните разклонения се наричат "branch"-ове
  • Всеки "commit" трябва да има автор и описание, тоест commit-ове не се правят автоматично!
  • Създаването/изтриването на файлове с/без съдържание също се включва в commit-ите
  • Папка (и всички под-папки в нея) в която git следи за промени се нарича "repository" (хранилище)
  • Понякога искаме да споделим нашите промени и да смесим чужди промени при нас
    (примерно няколко програмиста паралелно правят модификации по един и същ код)
  • Можем да използваме Google Drive/Dropbox/... и ръчно да смесваме, но става сложно и тромаво
  • Сайтове като GitHub са специализирани за работа с repository-та. Предоставят:
    • безплатно пространство (облак) за repository-и
    • съвместна интеграция с git
    • "pull request": улеснено смесване на два branch-а с възможност за дискусии
  • git и GitHub (или техни близки алтернативи) се използват масово от програмисти по целия свят
  • С цел да видите как се ползват и свикнете с тях, ще ги използваме по време на упражнения

GitHub Classroom

  • Чрез GitHub Classroom ще създавам задания с ограничен срок (края на съответното упражнение)
  • Когато вие приемете заданието, автоматично се създава git repository към което имате (ограничен) достъп
  • Преди срока трябва да добавите commit с вашата работа по време на упражнението, колкото и малко да е!
  • Добавя се един автоматичен "pull request" в който ще пиша отзивите.

Да, странно е, че използваме системата за смесване на branch-ове за обратна връзка, но така са решили да го направят.