Відкриті лекції для школярів та студентів про типізацію в мовах програмування

Запрошуємо школярів та студентів, які цікавляться програмуванням, на цикл лекцій, присвячених різним системам типізації. Лекції проводяться у рамках відкритого лекторію літньої школи «Слон». Перші дві лекції пройдуть вже в ці вихідні: 21 і 22 травня, о 18:00 в будівлі НБІК факультету МФТІ за адресою р. Москва, вул. Максимова, д. 4.

Типи даних — тема, якої в навчальному курсі приділяється непростимо мало часу (іноді й зовсім хвилин 10 на першому занятті), і вона зазвичай розглядається стосовно до конкретної мови програмування. Мета нашого циклу лекцій — показати, яке значення система типів має для програмування взагалі, а не для конкретної мови. Які непрості рішення доводиться приймати розробникам мов програмування в гонитві за зручністю та надійністю мови. Які нестандартні типи даних бувають і як їх використовувати в своїх програмах з найбільшою користю. І нарешті, яка математика ховається за системами типів.

  • На першій лекції (21 травня) ми розповімо чим відрізняються статична типізація від динамічної, а сильна від слабкою. Обговоримо мови, в яких типізації немає взагалі. Покажемо, чому складно коректно визначити навіть найпростіші арифметичні і логічні операції.
  • Друга лекція почне тему типізації в об'єктно-орієнтованих мовах. Розберемося, навіщо взагалі створювати свої власні типи даних aka класи. Навчимося правильно долати оператори (подивимося на підходи різних мов до цієї проблеми). Поговоримо, що таке клас класів і причому тут статичні змінні функції. Поговоримо про те, як тип даних підтримує т. н. «інваріанти» єктів вашої програми і яку роль в цьому грають конструктори. І, якщо встигнемо, почнемо довга розмова про спадкування типів і інтерфейси об'єктів.
  • У третій лекції (дата уточнюється, але попередньо 5 червня) ми продовжимо розмову про ООП і поговоримо про те, навіщо нам може знадобитися множинне спадкування. Обговоримо альтернативи: інтерфейси і міксини. Поговоримо про узагальнене програмування та шаблони; а щоб не було нудно розберемося з тим, хто від кого наслідує з List<Animal> і List<Cat> і дізнаємося, чому Function<Cat> Function<Animal> успадковуються не так.
  • На четвертій лекції (попередньо, 11 травня) ми поговоримо про самі основи математики типів даних. У лекції буде дві частини: про лямбда-числення та кількості Черча (як ввести в мову числа, якщо в мові програмування немає навіть їх). І про алгебраїчні типи даних: що таке сума типів і твір типів, для чого потрібні рекурсивні типи і що за звір такий — монада (на прикладі простеньких монад MayBe і List).
  • Також, можливо, буде проведена додаткова лекція про покажчики та типи даних, керуючі пам'яттю.


P. S. Якщо ви не зрозуміли частина слів в цьому анонсі, то це привід не лякатися, а навпаки, прийти на лекцію і дізнатися про них. Ми маємо намір починати з самих азів і ускладнювати матеріал поступово. Від слухачів не вимагається знання якоїсь конкретної мови програмування (але все ж зовсім без досвіду програмування буде нудно).
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.