Computer Science
May 28

IT курс от Торвальда

Ссылка на курс: Программирование с нуля

Примечание: я не осилил. Очень много воды.

9 января

00:18
• Аристотель изобрёл логику
• Джордж Буль придумал обозначать логические суждения буквами и стало возможно строить логические связи между суждениями по правилам не вникая в суждения. (A=>B, B=>C, A=>C)
• Кто-то заметил труд Буля и принёс идеи буквенного обозначения в научное сообщество
• Произошло 2 важнейших открытия:
• Создали реле. При подачи тока на неё, она может перенапрявлять поток.
00:42
• 1 - сильный сигнал, 0 - слабый сигнал, а не отсутствие
• Смогли спаять платы с условиями (if а && б => с)
00:56
• Второе открытие: появилась формализация науки => начали появляться формулы.
• После реле появились транзисторы, после полутранзисторы. Большие схемы смогли умещатся в маленьких коробочках. Наши компьютеры и телефоны основаны на полутразисторах. (Что такое транзисторы и чем отличаются от реле и полутоанщисторов)
• В процессоре они уложены слоями, контакты на ружу и есть инструкция, что будет если подать токи на контакты. Процессор - математическая функция
01:10
• Машина - не компьютер, она просто выполняет конкретную функцию
• Случился геймченджер. 2 человека одновременно по своему пришли к 1 выводу - существуют инструкции для считывающей головки, которые смогут расчитать любую вычислимую задачу, при условии бесконечной ленты.
• Тьюринг : можно занести на ленту данные, может быть считыватель который будет их читать и записывать. Существует инструкция для считывателя, что делать при прочтении данных (переместиться на 3 клеточки вправо, прочитать след., записать квадратик..)
1:29
• Как загрузить данные в компьютер на эту ленту? Придумали SR (Set/Reset) - меняет 1 на 0 и обратно при подчаче тока. SR - запоминает свое состояние.
• Так как научились запоминать состояние электроцепи, то поняли что с помощью шифра можно запоминать информацию. Например 101011 - решили допустим будет буква С или яблоко. Так научились хранить информацию в компьютере. И назвали это логическими 0 и 1.
• Чтобы все провода не сливались в один. Создали штуку которая развмыкает и замыкает цепь. Большая часть цепи стоит в выключенном состоянии.
• 1 бит - это 1 ячейка, хранящая 1 или 0
• Герцы в компьютере это количество тактов в секунду. Компьютер работает тактами. За 1 такт электричество пробегает по цепи и выдаёт результат.
• Оперативная память на электричестве и работает быстро, но сбрасывается без тока.
• Жёсткий диск намагничен и запоминает информацию без тока, но Медленный.
• Как работают подробно HDD, SSD, RAM? Отличия.
02:11
• В материнской плате спаяна инструкция так, чтобы считыватель всегда делал то что установлено в зависимости от входных данных (читай => делай то)
• Процессор всегда работает, хотя-бы чтобы отрисовать рабочий стол
2:19
• Государство хотело использовать электричество для передачи сообщений на дальние расстояния и очень быстро. Но звуки могут смешаться, поэтому решили прокинуть еще провода и использовать лампочки, чтобы сразу отображать нужную букву.
• Чтобы понять сколько нужно проводов, сначала посчитали сколько символов нужно уметь отобразить и сошлись на том что нужно 7 проводов в которые вмещается 128 вариантов. (Отступление в степени двойной системы и кол-во вариантов)
• Потом с развитием компьютеров понадобились ещё символы и решили добавить ещё 1 клеточку.
2:40
• Решили объединить 8 клеточек в 1 чтобы считывать за раз и назвали это бит (маленький кусочек)
• Поняли что можно написать инструкцию для процессора для 256 позиций (если тут все нули и тут все нули, то логический курсор идет туда и делает то-то)
• Объяснить что такое dflipflop и как они связаны с шинами. Вставить картинку с курса.
• В байте 8 дефлипфлопов. 1 дефлипфлоп подсоединен к 8 битами
3:15
• RAM (Random access memory) - Оперативная память - логический курсор в любую ячейку обращается очень быстро
• ROM (Read only memory) - память в которую заложены инструкции процессора. Её поменять невозможно
3:24
• Математическая функция - описание строгой зависимости между величинами
• Программисты пишут математические функции для решения прикладных задач
• Функции могут содержать подфункции
3:56
• Вода про подфункции
• Начал историю про Линуса Торвальдса
• Сделать Отступление в системы счисления, чтобы люди понимали как устроена 16-тиричная система. Что такое FFA5A5 и как работает двоичная система.
5:09
• Люди заметили что единицы и нули выглядят как число в двоичной системе.
• Чтобы долго не писать нули и единицы, ведь это не удобно, люди заметили что 16 система хорошо ложится. 8 единиц это FF
• Линус торвальд вводил через 16 систему командв в процессор на прямую, думая что он прогаммирует на асебмлере
• В колледже торвальдс увидел что существуют операционные системы
• Эпоха Unix начинается 1970
• Линус создал ОС Linux и сделал её бесплатной. Благодаря этому интернет рванул вперёд, ведь другие ОС были очень дорогие и были только у гос учреждений
• Аднроид от гугл стоит на Линуксе
• Создал гит для работы в команде
5:36
• Вода

10 января


• Стандартные операции процессора
• Сложение
• Вычитание
• Инкрементирование
• Декрементирование
• Битовый сдвиг вправо и влево
• Объясняет что такое битовый сдвиг
• Чтобы определить тип данных (картинка, музыка, число, буква) есть маркер который говорит процессору как обрабатывать эти единицы и нули
0:35
• Про то что процессор может посчитать задачу, но вывести её на экран это намного сложнее, ведь тут нужно графический видеокарте в которой куча однотипных процессоров с простым функционалом, отрисовывать каждый пиксель на экране по виртуальной модели стола
• Придумали кодировку ASCI (American Standart Code For International Interchange)
• В кодировке аски 1 символ = 1 байт. Поэтому перед прочтением файла, компьютер смотрит кодировку и понимает по сколько байт ему считывать информацию.
• Роль ленты для считывания играет ОП
• Программу пишут в текстовом редакторе и код это просто текст.
• Число в тексте восприниматься как текст, а не как число
• Чтобы создать переменную, компьютер выделяет память под неё и заносит в эту область памяти значение
• Какие типы данных может хранить в себе ОП
• Int
• Float
• Bool
• Array
• String (проверить, вроде char)
• ассоциативный массив (ключ-знач)
1:31
• Как устроен массив:
• Есть заглавная ячейка (метаданные) в которой инфа о том какой тип данных в массиве, количество элементов, id массива.
• Элементы в массиве лежат вплотную и чтрбы получить элемент нужно просто умножить индекс на размер 1 элемента.
• Массив который хранит любые данные содержит ссылки, а ссылки уже хранят данные. Но они работают медленнее.
• Если ячейки в массиве будут разного размера то мы лишаемся возможности быстро прыгать по элементам
• Почему индекс массивы начинается с 0? Потому что в байте все биты могут быть 000... и если отказаться от нулей то кол-во вариантов будет 255 и непонятно куда девать все нули.
• Как работает int и uint. Знаковый и нет.
• Компьютер не может иметь бесконечность чисел между ...00 и ...01. (Далее смотреть флоат)
2:46
• Типы данных это просто разные инструкции по которым процессор обрабатывает единицы и нули
• Объясняет что такое ассоциативный массив (ключ - только один, и ключ даёт доступ)
3:17
• В криптографии придумали хеш функцию. При помещении в неё разных данных, она всегда даст разный результат. На этой функции основан принцип защиты авторского права.
• В словаре как раз используется хеш функция. При введении ключа рассчитывается хеш функция и по этому адресу кладется значение. (Уточнить как это работает)
3:45
3:59
• Что такое null. Объяснить самому.
4:20
• Языки программирования делиться на:
• Высокоуровневые - с кучей обвеса
• Низкоуровневые - имеют двустороннее соответствие между командами и машинными кодами
• Язык программирования - набор сокращений для команд процессора, чтобы не вводить машинные коды.
• Библиотека - набор команд (методов) написанными другими разработчиками
• В пайтоне массивы состоят из ссылок и этот массив расположен далеко в глуши оперативной памяти, чтобы можно было его менять, переписывать без трудностей. Если места не будет, то массив придётся переписывать ещё дальше. После и перед массивом есть отступ и это пространство не задействовано
5:55
• Языки по характеру исполнения есть компилируемые, интерпретируемые и смешанные
• Интерпретатор - исполняет код построчно. Сначала пробегает, ищет ошибки, осмысливает, потом пробегает и выполняет
• Компилятор сначала осмысливает, создаёт последовательность машинных кодов и они струёй заливаются в процессор.
• Компилятор это функция, которая принимает на вход Текстовый файл (код) как-то обрабатывает и выдаёт новый файл .exe (executable).
• Все файлы на компьютере это просто мёртвые данные единицы и нули, котрые служат аргументом для функций. Чтобы они были нам полезны их нужно открывать через другие приложения которые принимают в качестве аргумента наши файлы и как-то их интерпретируют. Например: чтобы открыть текст, нужен блокнот; чтобы открыть фото нужна галерея. Блокнот и галерея - функции.
• Исполняемый файл при открытии сразу начинает литься струёй в процессор.
• Компьютер по расширению файла понимает через какую программу открывать файл. Запускает функцию и аргументом даёт ей наш файл
6:58

11 января


• Статическая типизация данных - тип данных указывается явно
• динамическая - переменная может быть любым типом данных и её можно переприсваивать
• Строка - массив символов. Чтобы в пайтоне отличить массив от строки, в конце строки стоит байт null, кодировка которая похожа на 0/
0:26
• Чем машина тьюринг отличается от станка
• Бул = 1бвйт
1:15
• Интерфейс- набор средств для взаимодействия с чем либо. Пример с чайником
• Виды интерфейсов
• Механический - дверь
• Электромех - кнопки гаджетов
• Графический- умные экраны (gui)
• Биомех - голос
• Фронтенд - видимая часть сайта
• Бекенд - серверная сторона
• API (application program interface) - команды для взаимодействия с программой с помощью удалённой программы. На сайтах используется запросы GET POST
1:37
• Как появлялся интернет и что он из себя представляет
• HTML (hyper text markup language) - язык разметки
• Раньше получали информацию с других компьютеров по локальной сети и нудно было знать какую информацию хочешь запросить.
• Hyper - появились ссылки и можно стало получать информацию о которой даже не знал
• Станица в интернете - просто файл на другом компьютере
1:56
• Как работает html
• Браузер принимает на вход строку и хтмл как раз является строкой которая заливается в барузер и говорит что нужно отрисовать.
• Основной вид сайту задают: html, css, js.
• Html содержит только то что должно быть на сайте - контент.
• Чтобы различать содержимое сущностей от самих сущностей используются теги.
• Doctype HTML, чтобы понять тип файла
• Head, который хранит метаданные и служебные, которые мы не видим.
• Body - видимый нам контент
• В html есть вложенные теги, которые пишется с отсутпом слева для лёгкости чтения
2:21
• Div - что это и зачем
• CSS (Cascade Style Sheets) - файл в котором можно указывають размеры, шрифты, цвета, отступы и тд для сущностей.
• Чтобы задать стиль конкретной сущности, ей мы можем указать class или id. Class может быть много, айди - один
• Css, js - подключаются для каждого хтмл отдельно в head, ведь хтмл, кстати, дс может быть несколько и вы должны иметь возможность ставить ту что нужно.
3:19
• JS - событино ориентированый язык. Отвечает за логику на странице. Отслеживает положение курсора, время и тд
3:55
• Объясняет что такое xml. Теги могут быть произвольные. В программе инструкция какие и как теги понимать.
• eXtensible Markup Language» — расширяемый язык разметки.
• Сначала появился html, потом xml
• Json - более компактный способ хранения информации чем xml, основанный на ассоциативном массиве.
• Устройство перед тем как читать json, убирает из него все пробелы и переносы.
4:39
4:47
• Откуда в браузере страницы
• Весь интернет завязан на проводах.
• Объясняет откуда идёт интернет: от провайдера к локальному провайдеру, от лп к дому, от дома к кв, от роутера к человеку
• Вся информация которая есть в интернете она лежит на разных серверах. И если постараться, то можно сделать так, чтобы домашний компьютер стал сервером.
• Чтобы сервер понимал кому отправлять запрашиваемую информацию у каждого устройства есть айпи адрес видимый в сети.
• Почему 255.255.255.0 - потому что люди решили что на айпи выделено 4 байта.
• В мире острый дефицит айпи, так как в 4 байта вмещается 4 млрд адресов. И большая часть айпи роздана спец организациям (военные, гос, и тд)
• На съездах страны договаривались сколько кому выделить адресов, далее как их разделить по региональным провайдерам и тд
• Пользователям провайдер при выходе в интернет даёт динамический айпи из-за нехватки.
• Динамический - айпи даётся на время интернет сессии
• Айпи есть локальный и глобальный
• Локальный - адреса вдрутри роутера.
• Роутер присвает подключённым устройствам локальные номера (192.168.0.1)
• Свитч (в доме) - крайняя точка в интернете.
• Когда пользователь заходит в интернет, он обращается к роутеру, а роутер уже к свичу. Роутер - посредник между юзером и интернетом. Роутер - бутылочное горлышко
• Динамический айпи даётся роутеру, а роуер уже даёт информацию юзеру по локальному айпи.
• 5 Гц- быстрый, но плохо проходит, через стены.
• 2.4 Гц- медленнее, но лучше через стены
• Чтобы обратиться к серверу, нужно знать его глобальный адрес.
• Домен (имя) - подменка для айпи
• Сайт это папка с файлами.
• Объясняет что такое хостинг.
• Мобильный интернет работает с вышками (уточнить)
• Интернет может пропадать в пики трафика, когда динамических айпи не хватает
• Как в интернете ишутся сайты по домену
• Начинает с домена, который показывает страну
5:41
• Когда мы заходим на сайт, то нужно передать аргумент, чтобы получить страницу. Поэтому в конце адреса добавляется пустой слеш, который указывает, что нужно отправить главную страницу.
• Всё что идёт после адреса - это аргумент
• Когда на хостинге снимаешь домен, то тебе даётся общий айпи, но со своим портом.
6:39
• У поисковых систем есть роботы которые регулярно проверяют сайты на обновления и появление новых. И анализируют их по разным критериям, чтобы определить крутость сайта и понять какое место в выдаче ему дать - seo
• Главное мерило - количество ссылок на него, а у ссылок есть вес
6:46
• Рассказывает поверхностно про seo. Теги, h1. Поисковый робот смотрит акутальность и ставит позицию в выдаче

12 января


• Строка после домена анализурется в бекенде на сервере и сайт показывает информацию исходя из аргументов
• Слеш служит разлелителем аргументов.
• ?x=2&size=56/ - объяснить
• Когда а ссылке кириллица, то, при отправке, она конвертируется в процент-символы
• Когда тыкаешь галочки и устанавдиваешь настройки, то в url отображаются аргументы, чтобы люди могли присылать ссылки с заданными насройками. При вводе пароля, информация в юрл не отображается для безопасности.
• Вче галочки, кнопки, поля - это инпут.
• У инпута есть 2 метода отправки: открытый - GET, секретный - POST
00:54
• Get - сообщаете серверу, что хотите получить
• Post - разместить данные на сервере. Личные данные.
• Https - hyper text transfer protocol secure
• FTP - file transfer protocol
• Рассказать про другие Протоколы и зачем
1:40
• Как работает TCP (для ответственных данных):
• Информация которую нужно передать по интернету разбивается на пакеты (кусочки данных)
• Если какие-то данные пришли поврежденными, то достаточно переотправить только нужные пакеты
• Идёт проверка отправленных пакетов (ты получил пакеты?)
• Как работает UDP (для приблизительных данных):
• Информация для пользователя
• Допускает, что некоторые данные могут быть подпорчены.
• Например для видео
2:34
• Про utf-8
3:09
• Как Компилятор коныертирует стринг в бинарный. Как числа конвертирует (делит на 10)
• Как работают операторы - на самом деле это функции, которые работают с соседними аргументами
3:49
• Как работает деление с целыми и с добрыми. Как работает %.
• При сравнении чисел оператор сравнения смотрит побитово
4:12
4:43
• Про уязвимость WordPress, написанного на php, про внедрение кода через картинку, которая лежит в открытой области.
• То что в пайтон массив с элементами 5, будет ссылаться на одну 5 в памяти.
5:55

13 января


1:16
2:01
• Обьяснял как устроен флоат в битовом виде
• Долгие истории и куча воды про флоат
3:52
6:19

14 января


• То что при конкатенации строк создаются мусорные промежуточные строки
• Нужно не забывать про список приоритетности операторов для каждого языка.
• Как работает оператор && - если слева тру, то возвращает значение справа, но в си шарп, справа обязательно должен быть бул
• Null - лжеподобный
1:38
• Когда входишь в язык нужно изучить какие в нем есть типы данных и какие лжеподобные и правдоподобные
2:47
• Рассказывает как работает if
6:01

15 января


• Объясняет как работает цикл for
1:21
• Сказал что через класс можно посмотреть сколько экземпляров создано

16 января


• Куча воды про массивы
4:09
• Рассказывает про методы сортировки массивов

17 января


• Решают задачку с массивами
1.22
• Скипнул

18 января


• Решают задачку
1:21
• Объясняет что такое tdd - test
• И dsl (domain specific language)
2.44

• устал слушать