1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# Общи концепции - УПП, Седмица 1, 02.10.2025
'define expected-reading 4 min
'define created 27 September 2025
'define edited 28 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 упътване"]
|