background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Как работает язык программирования(Компилятор)? Основы программирования."

input logo icon
Обложка аудиозаписи
Подождите немного, мы готовим ссылки для удобного просмотра видео без рекламы и его скачивания.
console placeholder icon
Теги видео
|

Теги видео

компиляторы
интерпретаторы
java
C++
джава
С++
javascript
основы
новичек
новичку
программист
как стать
разработка
информатика
самообучение
введение
как работает программирование
что такое язык программирование
язык
программирование
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:04
компилятор это транслятор и транслирует
00:00:07
он одну форму кодов другую но есть еще
00:00:09
одно определение который мне нравится
00:00:11
больше звучит она следующим образом
00:00:13
компилятор это программа которая
00:00:15
имплементировать язык программирования
00:00:18
слова имплементировать мне не особо
00:00:20
импонирует но слова выполняет реализует
00:00:23
или приводит к жизни менее нравится еще
00:00:24
больше вы скорее всего слышали выражение
00:00:27
типа как написать свой язык
00:00:28
программирования как работают языки
00:00:30
программирования
00:00:31
сейчас я постараюсь дать вам ответ на
00:00:32
эти или другие похожие вопросы
00:00:34
и если вы думаете что вам это
00:00:36
неинтересно то я все равно призываю
00:00:38
посмотреть этот ролик потому что
00:00:39
понимание того что такое компиляторы как
00:00:42
примерно работает даст вам более
00:00:43
глубокое понимание того как работает
00:00:45
язык на котором вы программируете и так
00:00:48
один из способов создания языка
00:00:49
программирования то создание компилятора
00:00:51
вообще опираясь на первое определение на
00:00:53
тот факт что компилятор это своего рода
00:00:55
транслятор то стоит сказать пару слов о
00:00:57
том какие танца тары вообще имеем есть
00:00:59
две общепринятые разновидности это
00:01:01
компиляторы и интерпретаторы это видео
00:01:03
будет по большей части именно у
00:01:05
компиляторах но я скажу и пару слов об
00:01:07
интерпретатора разница между
00:01:09
компилятором и интерпретатором
00:01:11
выражается в следующем интерпретатор как
00:01:13
большинство других программ получает на
00:01:14
вход какой-то им put in a вы хоть в
00:01:16
какой-то а утку
00:01:17
то что происходит между этими двумя
00:01:19
действиями отличает интерпретатор
00:01:21
компилятора примерно так выглядит вся
00:01:24
картина на входе мы передаем свою
00:01:26
программу виде торцов или исходного кода
00:01:28
плюс какие-то данные на которыми нашего
00:01:30
программы должны работать как только все
00:01:32
это попал в интерпретатор то без всякого
00:01:34
при процессинга ваша программа начинает
00:01:36
работать то есть интерпретатор начинает
00:01:37
исполнять строчку кода за строчки вы тут
00:01:39
же получаете а вот тут то есть
00:01:40
интерпретатор работает можно сказать в
00:01:42
реал тайме или онлайн
00:01:44
с другой стороны структуру компилятора
00:01:46
принципиальна разница и выглядит
00:01:47
следующим образом на входе компилятор
00:01:49
принимает ту же программу но в качестве
00:01:51
от пут он выдает не кексик юта был ли
00:01:53
промежуточных то есть другую программу и
00:01:56
в зависимости от того какое это
00:01:58
компилятор то в качестве творит был
00:01:59
может быть как несколько объект ников
00:02:01
или файлов которые из исходного кода
00:02:04
превратились физика сэмпл с частичным
00:02:06
другие данные так и байт код или что то
00:02:08
другое это уже зависит от конкретной
00:02:10
реализации конкретного языка и самой
00:02:12
платформы суть тут в том что executable
00:02:15
говоря по-русски не что запускаемые
00:02:17
работает над данными независим от
00:02:18
компилятора и выдает output также
00:02:20
независимо от него то есть если
00:02:22
интерпретатор это онлайн транслятор the
00:02:24
compiler соответственно оффлайн
00:02:26
очевидной разницы тут в том что в случае
00:02:28
с интерпретатором он каждый раз как вы
00:02:30
запускаете вашу пробу и заливаете туда
00:02:32
какие-то данные будет транслировать соци
00:02:34
в машинный код . за строчкой тут же
00:02:36
выдавать а вот под а в то время как
00:02:37
компилятор отработав однажды
00:02:39
или единожды не будет задействован при
00:02:41
запуске программы вообще и работать же
00:02:43
будет самых зику doblo который уже
00:02:45
состоит из машинного кода
00:02:46
если сделать небольшую отсылку к истории
00:02:48
то первым компилятором был компилятор
00:02:51
fortran его создатель джон бэкус после того как
00:02:54
изобрел интерпретатор
00:02:55
захотел большего именно трансляции
00:02:58
исходников сразу машинный код чтобы все
00:02:59
работало как то быстрее забавный факт в
00:03:01
том что этот проект был настолько
00:03:03
успешен что в то время это были 60 на
00:03:07
фортране было написано больше 50-ти
00:03:09
процентов всего софта в принципе именно
00:03:12
по этой причине фортран испытал влияние
00:03:13
на такие языки как сие basic nuasea в
00:03:16
свою очередь повлиял на такие языки как
00:03:17
си плюс плюс java java скрипт php perl
00:03:20
гоу python и так далее то есть резюме
00:03:23
этого вступление такое что компилятор
00:03:25
это такая программа который имеет
00:03:27
несколько интерфейсов
00:03:28
один из них это язык программирования и
00:03:30
говоря проще язык программирования как
00:03:32
бы встроен сам компилятор и как только
00:03:35
вы что-то напишите вы отдаете ваш
00:03:37
исходники мун на проверку и он то есть
00:03:39
компилятор прогоняет вас код через
00:03:41
самого себя при условии что вы написали
00:03:43
все правильно с точки зрения синтаксиса
00:03:45
и семантики то вы получаете тот самый
00:03:47
output который с помощью операционной
00:03:49
системы может
00:03:50
пускать процессор но также компилятор
00:03:52
имеет и другой интерфейс вы например
00:03:54
можете сказать ему как именно стоит
00:03:56
компилировать ваш код например сколько
00:03:58
места выделить под стек как быть с
00:04:00
визовыми функций оптимизационные флаги и
00:04:02
многое другое что вы можете указывать
00:04:04
вместе с компиляцией и вашей праге
00:04:07
теперь пару слов вообще о структуре
00:04:09
компилятора компилятор fortran как и
00:04:12
большинство современных компиляторов
00:04:13
состоит из пяти частей разница 1
00:04:15
компиляторах другому варьируется лишь во
00:04:17
времени проведенном на той или иной
00:04:19
частью эти 5 частей включают себя
00:04:21
синтаксический анализ парсинг
00:04:23
семантический анализ
00:04:25
оптимизация и генерация кода говоря
00:04:27
обобщенно первые две части отвечают за
00:04:29
анализ синтаксиса то есть и fly for .
00:04:32
запятой в конце строки и так далее это
00:04:34
синтаксис языка семантика это отношение
00:04:39
между типами данных областями видимости
00:04:40
и так далее или говоря проще semantic
00:04:42
это то что комбинация синтаксиса
00:04:44
означают если так будет понятнее the
00:04:46
compiler обычно ругаются на синтаксис те
00:04:49
кто читает ваш код на семантику
00:04:50
оптимизация это например выделение
00:04:53
памяти под стек in лайнинг вы с функцией
00:04:56
и тому подобное и пятая часть это
00:04:58
генерация кода в зависимости от
00:05:00
компилятор генератор может выдавать
00:05:01
машинный код байт код 3 вообще какой-то
00:05:04
высокоуровневый язык например clank и
00:05:06
реселлинг
00:05:07
имеет флаг ты компиляции си плюс плюс
00:05:09
psy но те это слишком высоко давайте
00:05:12
чуть более подробнее посмотрим на весь
00:05:14
процесс компиляции вообще компиляторы
00:05:16
как и многих другой соус берут свое
00:05:18
основу из уже решено их жизненных
00:05:20
проблем что-то значит парсинг языка
00:05:22
программирования парсинг в общем смысле
00:05:24
этого слова они часть компилятора
00:05:26
decompiler выглядит как парсинг
00:05:28
естественного языка для человеческого
00:05:29
мозга возьмем за основу например
00:05:31
следующее предложение
00:05:33
вы не успев дочитать это предложение уже
00:05:35
поняли его смысл хотя здесь есть
00:05:37
определенный вычислительный процесс
00:05:39
который происходит где-то на бэкграунде
00:05:40
вашем мозгу вы отличаете начало
00:05:42
предложения за счет заглавной буквы
00:05:44
между словами есть разделители в
00:05:46
качестве пробелов в конце предложениям
00:05:48
есть . как индикатор того что она
00:05:49
закончена и так далее и чтобы сделать
00:05:51
этот пример более наглядным можно
00:05:53
посмотреть на это предложение под другим
00:05:55
углом вы так же понимаете что здесь
00:05:58
написано теперь но это занимает какое-то
00:06:00
время и все равно у себя на подсознание
00:06:02
вы видите это предложение таким какое
00:06:04
оно должно быть синтаксический
00:06:05
корректным лексический анализ как раз
00:06:07
таки отвечает за таки не за цию то есть
00:06:09
его задача делить исходники на маленькие
00:06:12
части или talkin' токен это общий термин
00:06:14
который
00:06:15
обширно используется программирование
00:06:16
компиляторов в качестве еще одного
00:06:18
примера мы можем взять скажем эту
00:06:20
строчку кода
00:06:21
условно здесь есть какие-то дескрипторы
00:06:23
то есть и в daniels переменные их
00:06:26
название foobar бас литералы типа true
00:06:28
if all star у операторов в сравнении
00:06:30
присваивания пунктуации в эти точки
00:06:32
запятой и разделители виде пробелов то
00:06:35
есть каждая малая часть того что я
00:06:37
сейчас вам сказал является токена окей
00:06:39
мы получили все токены синтаксический
00:06:42
анализ пройдем далее идет парсинг как и
00:06:44
в случае с естественными языками где у
00:06:46
нас есть какая-то диаграмме к то есть мы
00:06:47
можем представлять предложение виде
00:06:49
дерева в котором скажем корень это само
00:06:52
предложение которое делится на объект и
00:06:53
субъект условно который свою очередь
00:06:55
делится на подлежащее и сказуемое другие
00:06:57
члены предложения
00:06:58
точно также мы работаем с кодом в
00:07:01
качестве примера берем ту же строчку
00:07:02
кода в качестве корня здесь выступает
00:07:04
конструкцию daniels
00:07:06
она свою очередь делится на три части
00:07:07
предикат дэн и фил statement и предикат
00:07:11
также состоит из нескольких частей это
00:07:12
две переменных и оператор сравнения
00:07:15
вторая часть denso стоит также низких
00:07:17
частей именно переменной босые какое-то
00:07:20
значение и то же самое происходит с
00:07:22
третьей частью все вместе это называется
00:07:24
парс 3 или синтетическое дерева и все
00:07:27
здесь выглядит в общем то просто
00:07:28
и после того как мы прошли эти две
00:07:30
стадии то мы переходим к семантике или к
00:07:32
семантическому анализу и семантический
00:07:34
анализ это наверное самое сложное что
00:07:36
вообще из в компиляторе
00:07:37
семантика как я сказал в начале это
00:07:39
выявление значение того что значит та
00:07:42
или иная строчка кода но на данный
00:07:44
момент времени сколько я знаю мы пока не
00:07:46
поняли как именно это делает наш мозг
00:07:48
но точно знаем что мозг делает
00:07:50
синтетический анализ и парсинг поэтому
00:07:52
это взято за основу устройства
00:07:54
компилятора но вот семантический анализ
00:07:56
это совсем другое в силу того что мы еще
00:07:59
не знаем как работает мозг у нас
00:08:00
соответственном нет соответствующих
00:08:02
алгоритмов семантический анализ крайне
00:08:04
ограничен то есть компилятор делает
00:08:06
примитивный prediction и того что ваша
00:08:08
программа должна делать но общей картины
00:08:11
или 95 процентов всей этой картины
00:08:13
компилятор не понимает просто
00:08:15
задумайтесь об этом все что вы передаете
00:08:17
компилятор для него не значит абсолютно
00:08:19
ничего даже если это примитив виде
00:08:22
холлоуэлл в консоль то есть если вы
00:08:23
будете выводить эту фразу холод в
00:08:26
консоль тысячи раз the compiler даже не
00:08:28
задумывается о том что блин это тот же
00:08:30
самый синтез уже триста восемнадцать
00:08:31
тысяч 48 раз если я вижу его еще раз то
00:08:34
не буду анализировать и парсить а просто
00:08:36
но виду старый результат такого не будет
00:08:38
в отличие от мозг компилятор так делать
00:08:40
не умеют это просто не способны и
00:08:42
учиться бездушные последовательность
00:08:44
нулей и единиц
00:08:46
одно из немногих что умеет делать
00:08:48
компилятор с точки зрения семантики это
00:08:50
указать на то что например вы косите
00:08:52
дабл к in the jury можете потерять часть
00:08:54
данных будьте осторожны если провести
00:08:57
скажем аналогию с естественными языками
00:08:59
да вы все слышали подобные приложения
00:09:01
ваня сказал во не оставил его телефон
00:09:04
дома чей телефон сколько человек вообще
00:09:06
вовлечены в это предложение и так далее
00:09:08
мы не знаем может только предполагать и
00:09:10
как-то отталкивается от того что мы уже
00:09:12
знаем от какого-то знания которое лежит
00:09:14
на подсознание в программировании тоже
00:09:17
есть подобная проблема именно переменные
00:09:19
с одинаковыми названиями или проблемы
00:09:21
двусмысленности этот термин в общем
00:09:23
программирование называется в его и был
00:09:25
подавлен и решается областями видимости
00:09:27
например следующий кусок кода выведет
00:09:29
фолз 4 же частью компилятора является
00:09:34
оптимизация тут есть также низко ветвей
00:09:36
как именно оптимизировать код один из
00:09:38
самых очевидных это работа с памятью
00:09:40
писать так чтобы памяти использовалась
00:09:43
меньше чтобы она утилизировать как можно
00:09:45
лучше звучит примитивно но так и есть
00:09:47
пример таких механизмов это memory
00:09:49
alignment или например из вы пишите под
00:09:51
смартфон это там нужно делать ставку на
00:09:53
то сколько энергии потребляет вызов
00:09:55
конкретных инструкций соответственно
00:09:57
писать так чтобы она расходовалась
00:09:58
грамотно есть техника которая называется
00:10:00
констант фолдинг
00:10:02
ее суть заключается в следующем что все
00:10:04
операции над константами и переменными
00:10:05
заменяются
00:10:06
их результатам во время компиляции они
00:10:08
на рандами или если мы говорим о базах
00:10:10
данных то уменьшать количество обращений
00:10:12
к ним если же мы говорим о функциях то
00:10:15
там где можно и нужно делать онлайн то
00:10:18
есть вместо вызова функции вставлять то
00:10:20
что находится в теле функции тем самым
00:10:23
экономя на инструкции вызова функций и
00:10:25
рейсы значение аргумента функции
00:10:26
помещается в регистр это они используют
00:10:28
лишнее место на стыке
00:10:30
вообще больших проектах над оптимизацией
00:10:32
работает чаще всего отдельные люди и
00:10:35
оптимизаторы это вообще как отдельная
00:10:37
должность у которой есть сад должности
00:10:39
простейший пример с кодом где есть
00:10:41
какая-то оптимизация это умножение числа
00:10:43
на ноль и далее присваивание результаты
00:10:45
какой-то переменной мы можем опустить
00:10:47
скажем инструкции умножение сразу
00:10:49
присваивать 0 переменной это будет
00:10:51
пример оптимизации здесь есть ряд
00:10:53
исключений например если посмотреть на
00:10:54
стандартной работы с числами с плавающей
00:10:56
точки то там есть такое понятие как
00:10:58
наннали на ты нам барр то есть не число
00:11:01
и если нан умножить на ноль то результат
00:11:03
будет нам соответственно правило
00:11:05
умножения на ноль справедливо только для
00:11:07
интерьеров в обще подобных
00:11:09
микро-моментов более чем достаточно есть
00:11:11
вы когда-то решите заняться оптимизацией
00:11:12
то вам явно будет над чем подумать и
00:11:16
наконец последняя стадия компилятора это
00:11:19
генерация кода и здесь как я говорил
00:11:21
происходит трансляция в assembly с кучей
00:11:23
других данных либо же в байт-код либо
00:11:25
вообще в другой
00:11:26
высокоуровневый язык все это зависит от
00:11:28
того на каком языке вы пишите какой
00:11:30
компилятор используйте но суть в общем и
00:11:33
целом остается одна у вас получается
00:11:35
какой-то промежуточный
00:11:36
который может ленка ваться с
00:11:38
операционной системой запускаться
00:11:39
процессора
00:11:40
все все нынешние компиляторы наследуют
00:11:43
эту структуру и варьируется только время
00:11:46
проведенное над каждой из этих стадий
00:11:48
раньше например выглядело все так
00:11:51
лексический анализ и парсинг занимали
00:11:53
много времени семантики почти ничего не
00:11:55
уделялось и оптимизации с генерации
00:11:57
занимались только же время сока и первые
00:11:59
две части
00:12:00
сейчас все кардинально изменилось за
00:12:03
счет мощи идеи на первые две части мы
00:12:04
тратим минимальное время так как у нас
00:12:06
имеется отличный тулы для написания
00:12:08
физические правильного кода и мы уже на
00:12:10
так и в написании кода видим все ошибки
00:12:13
значительно увеличилась тематическая
00:12:15
часть то есть разрабы активно пытаются
00:12:17
involved различного рода prediction и в
00:12:20
компилятор
00:12:21
большая часть времени тратится на
00:12:23
оптимизацию то есть вообще основную
00:12:24
часть занимает оптимизационной блок и
00:12:26
последняя генерация кода занимает также
00:12:29
мало времени потому что у нас уже есть
00:12:31
достаточный опыт того как все работает
00:12:33
на низком уровне
00:12:36
напоследок я бы хотел сказать следующее
00:12:38
по компилятором также выйдет более
00:12:41
подробные видео со временем то есть я
00:12:43
расскажу подробно обо всех этих пяти
00:12:44
стадий ах мы разберем какой-то язык
00:12:47
программирование на примере этих стадий
00:12:48
и также напишем свой компилятор возможно
00:12:51
даже на питоне и ришар чтобы лучше
00:12:53
закрепить весь материал если вам
00:12:55
понравилось то ставьте лайк как только
00:12:57
мы будем подходить скажем к тысяче то я
00:13:00
выложу подробный разбор компиляторов и
00:13:02
видео потому как его создать если есть
00:13:05
желание поддержать проект и получите мне
00:13:07
какой-то эксклюзив то подписывайтесь на
00:13:09
патрон там классно так есть группу в vk
00:13:12
куда и переписки скидывай различные
00:13:14
анонсы и не только
00:13:15
и также у меня и у проекта появился
00:13:17
инстаграм где вы можете найти различные
00:13:19
вырезки из моей жизни и жизни проекта
00:13:21
всех . зову
00:13:22
ну а с вами был winder тонн увидимся в
00:13:24
новых видео пока
00:13:25
[музыка]

Описание:

Telega и чатик - https://t.me/wndtn boosty(менторинг) - https://boosty.to/wndtn instagram - https://www.facebook.com/unsupportedbrowser github проекта(код с канала) - https://github.com/winderton

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Как работает язык программирования(Компилятор)? Основы программирования."?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Как работает язык программирования(Компилятор)? Основы программирования." выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Как работает язык программирования(Компилятор)? Основы программирования."?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Как работает язык программирования(Компилятор)? Основы программирования." на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Как работает язык программирования(Компилятор)? Основы программирования."?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Как работает язык программирования(Компилятор)? Основы программирования."?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.