Почему мы выбрали Julia для обучения студентов Бауманки программированию?
Мы в Evrone поддерживаем не только open-source проекты, но и образовательные инициативы. Например МГТУ им. Н. Э. Баумана пригласил нас вести курс «Алгоритмизация и программирование» для студентов факультета биомедицинской техники. Сегодня объясним, почему для обучения мы выбрали язык Julia.
Что такое Julia?
Julia — это высокоуровневый мультипарадигмальный язык программирования, созданный в MIT для научных вычислений. Его авторы прямо сказали: мы жадные, мы хотим большего.
Мы хотим язык с открытым исходным кодом, под свободной лицензией. Мы хотим скорость C и динамику Ruby. Мы хотим язык с равнозначностью кода и данных, с настоящими макросами как в Lisp, но с очевидными, знакомыми математическими нотациями, как в Matlab. Мы хотим удобное средство для обобщённого программирования как Python, простое для статистики как R, естественную обработку строк как в Perl, мощную линейную алгебру как в Matlab, хорошую склейку программ как в shell. Что-то простое в изучении, но при этом делающее счастливыми большинство серьёзных хакеров.
Все инструменты, необходимые для научных задач, уже вшиты в язык. С помощью Julia можно реализовать быстрые алгоритмы машинного обучения, алгоритмы визуализации. Например, смоделировать поведение потока крови в кровеносном сосуде.
И самое главное — Julia хорош как первый, школьный язык.
Каким должен быть «школьный» язык?
Конечно, мы не о том, что дети изучают в 5 классе. Там действительно место Scratch и аналогам, которые могут привлечь к программированию, понятно и доступно объяснить, что это такое.
Речь о языке для первокурсников, который должен стать базой для тех, кто выбрал программирование (или связанную с программированием специальность) как направление обучения в университете.
Вот что мы хотели видеть от такого языка:
- Более-менее универсальный синтаксис. Студентам предстоят разные предметы на поздних курсах. Например, «Введение в ОС», где будет использоваться C.
- Высокая скорость в научных и математических задачах.
- Акутальность и современность.
- Доступность учебных материалов.
Почему мы отказались от Ruby, Python и Pascal?
Ruby
Несмотря на то, что Evrone известны как эксперты в Ruby (с него, кстати, и началось наше знакомство с МГТУ — подробнее об этом вот тут), мы отказались от этого языка.
Ruby хорош, он повлиял на Julia, но сегодня используется всё больше в веб-приложениях и для сложных вычислений не подходит. Они на Ruby реализуются сложнее. Хотя по всем остальным параметрам было попадание.
Python
Python звучит как стандартный выбор из-за относительной простоты освоения. Но это кажущаяся лёгкость. Да, студенты уже через 2 недели решали бы какие-то мелкие задачи с данными, но до академического представления о программировании пришлось бы копать ровно столько же, сколько и в другом языке. К тому же, как только мы перешли бы к сложным вычислительным задачам, то столкнулись бы с ограничениями в скорости и производительности.
Также кроме применимости в научных задачах нас не устроил синтаксис. На 2-3-4 курсах нас бы вспоминали недобрым словом.
Pascal
Он, конечно, входит во многие учебные программы, для него написано много материалов и методичек, но... Pascal просто морально устарел.
Если бы мы обучали системных программистов — одно дело, но учёным с ним просто нечего делать, а ведь одна из наших задач — дать инструмент, которые студенты смогут применять здесь и сейчас.
Julia сочетает в себе всё нужное для курса?
Получается, что да.
1) С Julia будет легко перейти на другие языки. Спасибо влиянию других популярных языков на синтаксис.
2) Он производительный, потому что специально создан для науки. Пойти куда-нибудь работать уже на втором куре с ним непросто, но тут мы возвращаемся к п.1. :)
3) Это современный язык с активной поддержкой сообществом. В том числе и научным. Если студенты заходят стать учёными, то у них уже будет классный, применимый инструмент в кармане. Бери и делай науку.
4) На его основе запускают курсы в разных университетах мира. А это значит, что учебных пособий становится всё больше и больше.
Ну а если теперь вам интересно узнать про Julia побольше — добро пожаловать на официальный сайт и GitHub.