Открытые лекции для школьников и студентов про типизацию в языках программирования
Приглашаем школьников и студентов, интересующихся программированием, на цикл лекций, посвященных различным системам типизации. Лекции проводятся в рамках открытого лектория летней школы «Слон». Первые две лекции пройдут уже в эти выходные: 21 и 22 мая, в 18:00 в здании НБИК факультета МФТИ по адресу г. Москва, ул. Максимова, д. 4.
Типы данных — тема, которой в учебном курсе уделяется непростительно мало времени (иногда и вовсе минут 10 на первом занятии), и рассматривается она обычно применительно к конкретному языку программирования. Цель нашего цикла лекций — показать, какое значение система типов имеет для программирования вообще, а не для конкретного языка. Какие непростые решения приходится принимать разработчикам языков программирования в погоне за удобством и надежностью языка. Какие нестандартные типы данных бывают и как использовать их в своих программах с наибольшей пользой. И наконец, какая математика скрывается за системами типов.
- На первой лекции (21 мая) мы расскажем чем отличаются статическая типизация от динамической, а сильная от слабой. Обсудим языки, в которых типизации нет вообще. Покажем, почему сложно корректно определить даже простейшие арифметические и логические операции.
- Вторая лекция начнет тему типизации в объектно-ориентированных языках. Разберемся, зачем вообще создавать свои собственные типы данных aka классы. Научимся правильно переопределять операторы (посмотрим на подходы разных языков к этой проблеме). Поговорим, что такое класс классов и причем тут статические переменные функции. Поговорим про то, как тип данных поддерживает т.н. «инварианты» объектов вашей программы и какую роль в этом играют конструкторы. И, если успеем, начнем долгий разговор про наследование типов и интерфейсы объектов.
- В третей лекции (дата уточняется, но предварительно 5 июня) мы продолжим разговор про ООП и поговорим про то, зачем нам может потребоваться множественное наследование. Обсудим альтернативы: интерфейсы и миксины. Поговорим про обобщенное программирование и шаблоны;, а чтобы не было скучно разберемся с тем, кто от кого наследует из List
и List и узнаем, почему Function и Function наследуются не так. - На четвертой лекции (предварительно, 11 мая) мы поговорим про самые основы математики типов данных. В лекции будет две части: про лямбда-исчисление и числа Черча (как ввести в язык числа, если в языке программирования нет даже их). И про алгебраические типы данных: что такое сумма типов и произведение типов, для чего нужны рекурсивные типы и что за зверь такой — монада (на примере простеньких монад MayBe и List).
- Также, возможно, будет проведена дополнительная лекция про указатели и типы данных, управляющие памятью.
P.S. Если вы не поняли часть слов в этом анонсе, то это повод не пугаться, а напротив, прийти на лекцию и узнать про них. Мы намерены начинать с самых азов и усложнять материал постепенно. От слушателей не требуется знания какого-то конкретного языка программирования (но всё же совсем без опыта программирования будет скучно).