
udemy
Udemy - одна из самых больших площадок в мире по доставке обучающего контента от разных авторов всего мира. Присутсвуют курсы практически на любую тему.
Утечки памяти и висячие указатели являются основными проблемами ручного управления памятью. Вы удаляете родительский узел в связанном списке, забывая сначала удалить все его дочерние узлы - и ваша память просачивается. Вы удаляете цепочку объектов в правильном порядке - но вдруг ваша программа падает, так как вы забыли о втором владельце этого ресурса, который теперь пытается разыменовать нулевой указатель.
Чтобы избежать этих проблем, большинство современных языков программирования высокого уровня реализуют автоматическое управление памятью. Вы размещаете объекты вручную, однако не беспокоитесь об их освобождении: специальная программа, сборщик мусора, знает, как правильно автоматически их освобождать, и требует повторного использования в будущем.
В курсе "Основы сборщиков мусора" мы изучаем все различные методы и алгоритмы, связанные с автоматическим управлением памятью, которые используются сегодня на практике.
Для кого этот курс?
Прежде всего, для инженеров компилятора.
При реализации вашего языка программирования очень велика вероятность того, что вам потребуется реализовать сборщик мусора. В большинстве современных языков программирования высокого уровня модуль сборщика мусора (или несколько модулей GC, как в Java) сегодня является в значительной степени требованием.
Что если я не использую языки программирования каждый день?
Если вы не являетесь инженером компилятора, тогда этот курс может быть для вас интересным. Реализация сборщика мусора или менеджера памяти в целом - довольно сложная инженерная задача. Это простой трюк: вы берете какой-то сложный проект (например, сборщик мусора, компилятор, интерпретатор и т. д.), И при его создании вы изучаете все различные структуры данных и алгоритмы.
Нужен ли мне C или C ++ для этого курса?
На самом деле, нет! Конечно, C и C ++, вероятно, являются лучшими языками для необработанных манипуляций с памятью и хорошо подходят здесь, однако в ходе курса мы изучаем общие алгоритмы проектирования и сосредотачиваемся в основном на теоретических аспектах сборщиков мусора и распределителей памяти. Это означает, что вы можете реализовать их на любом языке. Например, вы можете выделить ArrayBuffer в JavaScript для виртуальной кучи или аналогично bytearray в Python, Rust и т. д.
Большинство алгоритмов в курсе описаны в общем псевдокоде, поэтому вы можете перенести их на любой язык.
Udemy - одна из самых больших площадок в мире по доставке обучающего контента от разных авторов всего мира. Присутсвуют курсы практически на любую тему.
Дмитрий Сошников - инженер-программист, читает лекции по различным темам информатики. Он увлечен образованием и уделяет особое внимание высококачественному образовательному контенту: кратким и понятным анимированным лекциям с заметками в реальном времени.
Семантика языков программирования. Как языки программирования работают под капотом? В чем разница между компилятором и интерпретатором? Что такое виртуальная машина и JIT-компилятор? А как насчет разницы между функциональным и императивным программированием?
Парсинг или синтаксический анализ - один из первых этапов проектирования и реализации компилятора. Хорошо продуманный синтаксис вашего языка программирования - большая мотивация, по которой пользователи предпочтут и выберут именно ваш язык.
Разбор или синтаксический анализ - один из первых этапов проектирования и реализации компилятора. Хорошо продуманный синтаксис вашего языка программирования - это большая мотивация, по которой пользователи предпочтут и выберут именно ваш язык. Примечание: это практическое занятие по созданию парсера с рекурсивным спуском вручную.
Как языки программирования работают под капотом? В чем разница между компилятором и интерпретатором? Что такое виртуальная машина и JIT-компилятор? А как насчет разницы между функциональным и императивным программированием? Когда дело доходит до реализации языка программирования, возникает так много вопросов! Проблема с «классами компиляторов» в школе заключается в том, что такие классы обычно представляются как некая «ракетостр
Нетипизированные программы часто подвержены ошибкам, исключениям времени выполнения и могут затруднить процесс отладки. Именно поэтому многие языки программирования в производственной среде реализуют статический типизатор - дополнительный модуль, цель которого - повысить безопасность программ и упростить разработку.Проверка типов или вывод типов? Что такое теория типов и типовые суждения? Слабо или сильно типизированный мой язык? И как мне на сам