Non-Conforming Programming Languages Lab

Что за название?

  • Non-Conforming Programming Languages Lab
  • Лаборатория Нон-Конформистских (Немейнстримных) Языков Программирования

Что за лаборатория?

  • Кто-то должен заниматься непрактичными вещами
  • "Нет ничего практичнее хорошей теории"
  • Иногда нужны заведомо корректные программы или алгоритмы
  • Некоторым не нравится писать boilerplate и legacy code

Right tool for the job

  • Имитационное моделирование
  • Распределённые системы
  • Формальная верификация систем
  • Высокопроизводительные вычисления
  • Встраиваемые системы
  • Недетерминированные вычисления
  • Искусственный интеллект

C++??!

Really?

Universal Erlang Server


universal_server() ->
  receive
    {become, F} ->
      F()
  end.

GPGPU Programming


dotp :: Vector Float -> Vector Float -> Acc (Scalar Float)
dotp xs ys =
  let xs' = use xs
      ys' = use ys
  in fold (+) 0 (zipWith (*) xs' ys')

Image Processing


FindSceneChanges[baseImage_Image, newImage_Image]:=
  Closing[Binarize[
    ImageDifference[Blur[newImage, 4], Blur[baseImage, 4]],
    Max[#] > 0.15 &], 10];

Зачем ещё одна лаборатория?

  • Just for fun
  • чтобы продвигать ФП и формальные методы
  • чтобы обучать моделям и алгоритмам параллельного и многозадачного программирования
  • чтобы обучать разработке и использованию распределённых алгоритмов и систем
  • чтобы обучать языкам программирования, которым больше нигде не учат

Кому и зачем нужно в неё идти?

Кому не нужно идти

  • не программистам (менеджеры, аналитики, дизайнеры и т.д.)
  • не увлечённым программистам (если у вас другое хобби, то вам не понравится)
  • client-side/desktop/ui-программистам (это не к нам)

Кому следует идти

  • функциональным программистам
  • программистам высокопроизводительных систем
  • программистам распределённых систем
  • системным программистам

Учебная программа

Второй курс

Третий семестр

  • Язык программирования Haskell
  • Лямбда-исчисление


Четвёртый семестр

  1. Основы архитектуры PC и ЯА
  2. Основы языка C и операционных систем

Третий курс

Пятый семестр

  • Параллельное программирование
  • Homotopy Type Theory 1

  • Шестой семестр

  • Распределённое программирование
  • Homotopy Type Theory 2
  • Четвёртый курс

    Седьмой семестр

    • Гетерогенные web-системы


    Восьмой семестр

    • Самостоятельная работа


    Что делать второкурсникам?


    Выучить архитектуру процессоров, язык Си и архитектуру операционных систем


    Куда писать?


    ncplug@fosslabs.ru


    Спасибо за внимание!


    Вопросы?

    NCPLL

    By Alexander Letov

    NCPLL

    Presentation of Non-Conforming Programming Languages Lab of HS ITIS Kazan State University.

    • 107