Я изучал программирование 10 лет, чтобы сделать это видео — Transcript

Видео объясняет основы программирования, теорию Тьюринга, языки Python и C, а также важность понимания алгоритмов и оптимизаций.

Key Takeaways

  • Понимание принципов работы компьютера и языков программирования важно для эффективного кода.
  • Язык C — фундаментальный инструмент для изучения низкоуровневого программирования.
  • Python удобен для старта и широко используется в индустрии, но важно знать и основы.
  • Знание алгоритмов и структур данных критично для решения задач и прохождения собеседований.
  • Оптимизации и анализ производительности помогают создавать более быстрые и эффективные программы.

Summary

  • Объяснение базовых понятий программирования через простые примеры и индикатор сложности.
  • Рассказ о машине Тьюринга и условиях полноты языка программирования по Тьюрингу.
  • Сравнение языков программирования, акцент на C как минималистичный и близкий к железу язык.
  • Обзор работы интерпретатора Python и его уровней абстракции.
  • Роль переменных, циклов, структур данных, обработки исключений и ООП в программировании.
  • Рекомендация изучать Python через онлайн-школу SkillFactory с полным стеком разработки.
  • Значение понимания низкоуровневых языков и умения реализовывать структуры данных самостоятельно.
  • Объяснение важности алгоритмов и анализа производительности с помощью Big O notation.
  • Примеры оптимизаций кода, выполняемых компиляторами и другими инструментами.
  • Краткий обзор современных технологий и примеров из реальной разработки.

Full Transcript — Download SRT & Markdown

00:00
Speaker A
[Музыка] Давайте на примере пары простых программ попробуем разобрать да вообще весь компьютер Science интерактива. Я сделал вам вот такой индикатор сложности: зеленый — все очень просто, даже если этого вы еще не знаете, выучить очень легко; желтый — все сложнее, нужно будет подумать.
00:21
Speaker A
Ну и красный — тут я буду очень осторожным словами, потому что сам могу чего-то не знать. Итак, примерно 100 лет назад родился человек по имени Алан Тьюринг, один из самых влиятельных математиков мира, который придумал так называемую машину, которая в теории могла выполнить
00:35
Speaker A
любой вычислительный алгоритм или, простыми словами, любую программу в нынешнем мире. Так вот, чтобы вы понимали, чтобы язык программирования, будь то Python, плюс JS и так далее, был что называется полным по Тьюрингу, в нем не нужно попсовые фичи вроде функций,
00:48
Speaker A
исключений, стандартной библиотеки, кучу типов данных, плюс остальные особенности современных языков программирования, то есть сотни фич, которые добавлялись языки с момента их релиза. Все проще: чтобы язык был полный по Тьюрингу, в нем должно быть только это — форвард, понятие переменной,
01:02
Speaker A
чтение и запись в неё, и фэлсветления условия и понятие памяти бесконечный. Избегая немного вперёд, в наше время в операционных системах за это отвечает механизм виртуальной памяти, который позволяет любому процессу или, грубо говоря, вашей программе думать, что вся память, которая есть в системе,
01:17
Speaker A
принадлежит только ему. И самый близкий язык программирования, по моему humble мнению, тут — это C-язык. В сравнении с C++, Java, C#, F#, и другими имеет отношение в размерах 1:10, а то и меньше. В нем нет никаких фич, кроме тех, которые
01:30
Speaker A
должны быть под Тьюрингу, плюс еще несколько вроде функций, типа, данных, массивов с указателями и миниатюрной стандартной библиотеки. И так как все нет ничего, вы по идеологии должны быть способным писать всё это сами. Но это простейшие программы на Python по выводу
01:45
Speaker A
Hello world. Понять, что функция print выводит в стандартный вывод, то есть терминал, фразу Hello world, достаточно просто. Но вот понять, что есть какой-то там стандартный интерпретатор, который, кстати, написан на C, который проходит по вашему исходному коду, если нет ошибок, транслирует его в
01:59
Speaker A
промежуточный байт-код, который запускается на виртуальной машине, которая по факту есть рантайм, и уже внутри неё транслируется в машинный код, который может запускаться на процессоре, который у вас есть — да, это уже чуть сложнее, и это от нас как бы
02:13
Speaker A
абстрагировано, то есть мы просто нажимаем run и всё как-то работает. В случае с Python это можно пропускать, вам не нужно знать в Python, скажем, почему не подключаем вообще ничего. То есть пустой файлик вы можете дергать некоторые стандартные, что называется,
02:24
Speaker A
built-in функции, как например функция print. Но если спуститься на уровень абстракции ниже, например на ОС, то пропустить даже такое уже вряд ли получится. Итак, у нас есть высокоуровневый язык Python, выше только скрадж, который, между прочим, тоже полный по Тьюрингу, то есть на скрадже теории
02:39
Speaker A
можно написать операционную систему для Боинга. Ну да ладно. Поэтому, как и в многих языках, есть всё, что нужно, чтобы писать любые программы. Поэтому изначально мы изучаем всякие переменные для хранения любых значений, так называемый контроль, то есть буквально управление вашей
02:52
Speaker A
программой: циклы, витрины и тому подобное, структура данных для хранения какого-то сета данных в одном месте, обработка исключений, то есть каких-то моментов, после которых программа не должна прерываться, продолжает работать, например, кто-то там поделил на 0 — бросаем исключение. Идем дальше. Конечно же, ООП, то есть мы можем
03:07
Speaker A
создавать объекты, которые между собой взаимодействуют, и ряд других особенностей языков программирования, которые и есть наши инструменты для решения задач. Можно еще долго говорить про сотни таких вот моментов, которые каждый из нас изучает, когда мы пользуемся любым языком программирования.
03:20
Speaker A
Но если вам нужен именно поэтому, то пару слов об этом. Поэтому сейчас один из самых популярных языков, который лежит в продакшене крупнейших контор вроде Нетфликса, Гугла. Да и что уж там, половина Давида написано. При этом аналогичный, просто усвоение, идеальный язык для
03:33
Speaker A
старта. Поэтому если вы решили его изучать, то рекомендую присмотреться к онлайн-школе SkillFactory, а конкретное направление — Full stack-разработчик на Python. Тут могут заниматься как полные новички, так и те, кто уже что-то пытается делать и не первый день в IT. После 16
03:45
Speaker A
месяцев онлайн-обучения помимо всей базы по языку программирования вас там будут качать со стороны разработки именно бэкенда со всеми вытекающими плюшками вроде фреймворка Django, REST API, база данных, хором системы и всё вот это, что вы видите на экране, что активно
03:58
Speaker A
используется, когда вы пишете сервис, сайт. Но так как это Full Stack, ребята программируют и фронтенд часть приложения, где будет HTML, CSS, JavaScript, создание SPA, React Framework + Angular для контраста, работа с инструментами разработчика и всё остальное. Также основа хайпового девопс, где узнаете про
04:13
Speaker A
развертывание, контейнеры вроде докеров, плюс поддержка менторов, опытных разработчиков, 9 практических проектов и один финальный — соцсети, ориентированная на видеоконтент. Короче, станьте программистами наконец-то, переходите по ссылке в описании, вводите промокод Winter, и ваше обучение станет на 45 процентов дешевле. Рекомендую.
04:31
Speaker A
Выбирая язык программирования, мы выбираем уровень абстракции, на который мы будем работать. Но если вы начали с какого-то высокоуровневого языка и более-менее разобрались, как там всё устроено, то есть смысл пойти и познакомиться с тем же C, где всё, что за
04:42
Speaker A
вас делает на автомате другие языки вроде Java или Python, вы должны делать и уметь сами. Самый простой пример тут — динамический массив, одна из самых популярных структур данных, которая решает 80% ваших проблем, и есть в стандартной библиотеке любого современного языка. И вот как одна из её
04:57
Speaker A
реализаций выглядит на Python — элегантно и просто. Ну а вот как она выглядит, например, на C. Когда вы программируете, вы постоянно пользуетесь какими-то структурами данных, алгоритмами в зависимости от ваших задач. Ну и разумеется, если вы пользуетесь какой-то попсовой структурой,
05:13
Speaker A
темическим массивом, например, и понимаете, как он работает, вы по идее можете написать его с нуля. Такие задачи люди обычно решают, когда готовятся к собеседованию, например. И есть распространённое мнение, что мне не нужно уметь писать какой-нибудь бинарный поиск, чтобы быть хорошим программистом. Что вы
05:28
Speaker A
думаете по этому поводу? Лично моё мнение: вы просто должны уметь решать задачи. Написание бинарного поиска — это всего лишь одна из них. В жизни мы всегда хотим, чтобы всё везде как-то улучшалось. Я верю: это быстрее компьютер, телефон, машины, быстрее
05:42
Speaker A
добираться до университета или работы, быстрее выполнять какую-то задачу. В программировании тоже есть определённые метрики, чтобы программа работала лучше и быстрее. При написании структур данных, алгоритмов, да и вообще любых программ вам помогает техника анализа производительности, которая называется Big O notation, суть которой очень проста.
05:57
Speaker A
У вас есть, скажем, структура данных — динамический массив, которая может работать с данными: например, сохранять, удалять, искать данные и так далее. И всё, что вам нужно знать, — пробегов, это ваша программа медленная или быстрая с точки зрения использования либо памяти, либо
06:10
Speaker A
времени. Примерно так. И хочется тут ещё подметить тот факт, что чем больше вы понимаете, то как всё работает снизу, тем, по идее, более продолжительный код вы пишете. Самые простые оптимизационные примеры, которые за вас делают тот же компилятор, это
06:25
Speaker A
лупан роллинг, то есть избавление циклов; dead-code elimination, когда код, который вы написали, игнорируется компилятором; constant-folding и constant-propagation — это постановка какого-нибудь результата выражения во время компиляции, а не рантайма; популярная inline-функции, чтобы не было вызова функций и так далее. Всё это
06:41
Speaker A
относится так или иначе именно к стадии компиляции программы. Но есть и другие оптимизации, например линковочные или из профайлеров: компилятор, линковщик, профайлер, где багер и так далее. Это как бы стандартный набор ваших инструментов, когда вы пишете программу. Скаж...
06:55
Speaker A
это называется тулчейном цепочка из инструментов дословно и понимание Как пользоваться этими инструментами просто помогает писать код как минимум Да да я понимаю что сейчас звучу как гик Но ради чего мы вообще тут собрались тогда давайте так если хотите видос где мы
07:11
Speaker A
будем писать свои минимальные просто язык программирования то Ставьте лайк 10 лайков Я вам дроп на видос часов на 5 где мы все это напишем с нуля Ну ладно диалоги все в этом и заключается вы обрекаете себя на то что вам придется
07:24
Speaker A
понимать все что происходит на уровне вашего толчейна далее уровня операционной системы Ну и конечно же на уровне вашего железа плюс железо под которое вы еще пишите и смотрите ребят как вы вообще относитесь к сайт квестам в игрушках типа играете основную линию в
07:38
Speaker A
любую игру но можно там где-то что-то на стороне еще выполнить так вот небольшой сайт квест или Subway этого видоса мне нравится история создания загрузчика opencore для хакинтошников и чтобы вы понимали там главному разработчику всего 25 лет он на работе пишет операционная
07:51
Speaker A
система для самолетов и как сайт Project делает вот этот самый загрузчик opencore с открытыми исходниками само собой из-за которого мы можем запускать и пользоваться маком чуть ли не на любом железе уже сейчас до этого был Кловер который был написан шестидесятилетним
08:04
Speaker A
программистом но этот чел его перебил Я к тому что чтобы приобрести подобные навыки создания такого софта Вы должны уметь именно все которые почти сразу начинает провоцировать вас понимать все вот это я сам ставил каким тошно разные железные несколько раз просто для теста
08:19
Speaker A
и в качестве изучения операционных систем и железяк рекомендую попробовать это веселее чем Марч Linux можете не поверить Итак мы постепенно спускаемся по абстракционному каньону вниз и через пару минут мы опустимся почти в мрака задума но перед этим немного оси все
08:35
Speaker A
придумали вот эти два мужика 50 лет назад и все подразумевался как язык до низкоуровневого системного программирования внутри юникса unix это семейство операционных систем из которых в конечном итоге появились macos Linux и тот же Android синтаксис и возможность самого языка сделаны таким
08:49
Speaker A
образом что он как бы подразумевает что вы понимаете как на фундаментальном уровне работает Ваш компьютер когда мы говорим компьютер мы говорим как правило процессоре А памяти плюс вот вывод это основа каждого компа сейчас и называется архитектура Неймана Ну и конечно же в
09:05
Speaker A
отличие от пайтона который интерпретируемые Что называется компилируемый язык Когда вы запускаете код то он транслируется в whitecode а потом прям на ходу каждый раз асишный кот компилируется в машиной один раз под конкретное железо и при каждом запуске программы не происходит перекомпиляции
09:21
Speaker A
наверное самая хайповая вещь которая есть все И отличает его других языков это ручная работа с памятью указатели самой доступной технической аналогии между сией скажем пайтоном Это разница opengl и walkan это графические API из-за которых мы видим картинки на
09:36
Speaker A
мониторах параллель заключается в том что Open GL мы не управляем памятью он управляет ею автоматически выделение и удаление сложность волком в том как вы уже догадались что там все должны делать руками как и все поэтому проще для старта изучения работы с графикой Когда
09:52
Speaker A
Вы начинаете писать на сито вы знакомитесь с памятью со всех ее сторон Но то что вы слышите чаще всего это стек хип и так далее Это сектор памяти они есть у каждой вашей программы и когда вы запускаете операционная система сама
10:04
Speaker A
создает вам процесс которым находится все эти сегменты для хранения разных данных Hip или куча для хранения динамической памяти в стек для локальных переменных функции и так далее Также сегмент для хранения константатических данных инициализированных и неинициализированных данных сегменты хранения кода вашей программы и так
10:20
Speaker A
далее То есть получается такой определенный layout памяти более подробно я говорил об этом в этом ролике и Давайте какой-нибудь пример работы с памятью си функции мало когда словно мемориала Кейт возвращает указатель на количество байт где-то в памяти которое
10:34
Speaker A
мы просим потом за собой очищаем эту память через Free но уже не говорим сколько ударить Free как бы это знает Потому что при выделении навыка мы в первый байт записываем размер афри потом его оттуда просто достает затем несколько лет назад У меня был Стрим
10:46
Speaker A
созданием мелок и там как раз таки в первый байт Мы тоже записывали размер техника украдина отсюда кстати ребят все полезные ссылки О чем я тут говорю на более конкретный разбор всего чем мы тут говорим будут в описании То есть
10:58
Speaker A
наверное уже видите сам шаблон Да что мы должны думать не о том как просто написать код который что-то делает а думать о том как написать код понимая что происходит снизу Ну как глубоко мы можем опуститься вниз ниже сил нас идет
11:11
Speaker A
ассембли и мне постоянно хочется писать видик про то зачем вообще нужен на 7 лет 2080 году И если в самом сеть хотя бы функции то в ассембле и этого нет я уже не говорю про всякие фишки вроде арифметики указателей
11:23
Speaker A
или просто выражений Итак это кот на питоне массив которому Обращаемся к ним элементу все просто это тот же код Носи в котором появляется указатель на массив памяти Ну и арифметика указатели само собой где к массиву мы прибавляем это
11:37
Speaker A
число и указатель начинает как бы указывать на этот элемент массива и конечно же сам мрак задумался нет ничего из этого но мы по чуть-чуть избавляемся от всех этих фич си пока не дойдем до самого минимального синтаксиса который будет иметь отношения Один в
11:52
Speaker A
один с мониками ассембли которые в свою очередь имеют Один в один опенинге с машинными инструкциями то есть Ниже уже только Преисподняя во-первых убираем арифметику указателей далее избавляемся от понятия выражений и уже это выглядит примерно так в ассембль сдвиг на это
12:09
Speaker A
число из сложения указателя с этой переменной Итак мы пришли спалиться на к самому ассембля Конкретно этот пример x864 ассемблинг грубо говоря десктопа и консоли X4 телефон это ARM эти характеристики тур гораздо больше но это просто самое попсовый который скорее
12:26
Speaker A
всего будете работать резюме вы пишете на каком-нибудь пайтоне изучаете всю высокороневую основу как вообще писать программы затем любой высокоуровневый язык основан на си внутри управляете память руками управление памятью это по сути перемещение по ней путем сложения адресов этой памяти арифметика
12:43
Speaker A
указателей код на оси компилируется в ассембле проходя несколько стадий включая оптимизации ассемблер ассемблирует код в если мы скажем на Windows exe-шник со всеми секторами памяти вроде стека и хипа которые уже могут запускаться самая операционной системой как Конкретно этот код будет
12:59
Speaker A
работать уже ниже то есть на уровне железа Какие процессоры инструкции будут вызываться например зависит от микроархитектуры вашего процессора или На каком уровне абстракции находитесь Вы сейчас и на какой бы вы хотели Всем добра
Topics:программированиемашина ТьюрингаPythonC языкструктуры данныхалгоритмыBig O notationоптимизация кодаонлайн обучениеSkillFactory

Frequently Asked Questions

Что такое полнота языка программирования по Тьюрингу?

Полнота по Тьюрингу означает, что язык способен выразить любой вычислимый алгоритм, имея базовые конструкции: переменные, условные операторы, циклы и бесконечную память.

Почему важно изучать язык C после Python?

C позволяет понять низкоуровневые процессы, которые автоматизированы в Python, и учит писать базовые структуры данных и алгоритмы самостоятельно, что углубляет понимание программирования.

Что такое Big O notation и зачем она нужна?

Big O notation — это способ оценки эффективности алгоритмов по времени и памяти, позволяющий понять, насколько быстро или медленно работает программа при росте объема данных.

Get More with the Söz AI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries, speaker detection, and unlimited transcriptions.

Or transcribe another YouTube video here →