По мере того, как Python замедляет свой впечатляющий темп, растёт новый сильный конкурент.
Не поймите меня превратно. Популярность Python по-прежнему обеспечивается сообществом ученых, дата-сайентистов и специалистов по искусственному интеллекту.
Но если вы когда-либо обедали с этими людьми, то также знаете, как любят они обсудить слабости Python. Начиная с медлительности и заканчивая необходимостью чрезмерного тестирования, вплоть до появления ошибок времени выполнения, несмотря на предшествующее скрупулёзное тестирование — это кого хочешь разозлит.
Поэтому всё больше программистов-питонщиков осваивают и другие языки — лучшими игроками на этом поле являются Julia, Go и Rust. Julia отлично подходит для математических и технических задач, Go — для модульных программ, а Rust — лучший выбор для системного программирования.
Поскольку эксперты по данным и ИИ занимаются множеством математических задач, чаще всего они выбирают Julia. И даже после самой суровой проверки у Julia обнаруживаются свои плюсы, которые Python не может победить.
Когда создаётся новый язык программирования, это делается для того, чтобы сохраняя достоинства старых языков, избавиться от их недостатков.
Из этих соображений Гвидо ван Россум создал Python в конце 1980-х для улучшения ABC. ABC был слишком идеален для практического программирования. Хотя жёсткость и требовательность языка облегчала обучение, его было сложно использовать в реальной жизни.
Python, напротив, очень прагматичен. В этом можно убедиться, перечитав Дзен Python, который отражает намерение создателей:
Python по-прежнему сохранял преимущества ABC: такие как, к примеру, удобочитаемость, простота и удобство для начинающих. Но Python гораздо надёжнее и адаптирован к реальной жизни, чем когда-либо был ABC.
Этим же руководствуются создатели Julia: они хотят сохранить хорошее из других языков и отбросить плохое. Но в случае с Julia стои́т гораздо более амбициозная задача: вместо того, чтобы заменить какой-то один язык, она хочет превзойти их всех.
Вот что сами говорят создатели языка:
Julia можно использовать для всего: от простых приложений машинного обучения до огромных симуляторов суперкомпьютеров. В принципе, Python может делать то же самое — но он был лишь адаптирован для этого.
Что касается Julia, то она изначально была создана в том числе и для этих задач. По списку снизу вверх.
Разработчики Julia хотели получить такой же быстрый язык, как C — но то, что они создали, стало ещё быстрее. Несмотря на то, что в последние годы и Python очень заметно ускорился, его производительность пока далека от Julia.
В 2017 году Julia даже вступила в Petaflop Club — небольшой клуб языков, которые могут достигать скорости в один петафлоп в секунду при максимальной производительности. Помимо Julia, в клубе сейчас только C, C++ и Fortran.
У Python, с его 30+летним стажем, огромное профессиональное сообщество. Вряд ли существует вопрос, связанный с Python, на который вы не найдёте ответ в рамках беглого Google-поиска.
Сообщество Julia, напротив, довольно мало. Вам, возможно, придётся покопаться немного дольше, чтобы найти ответ, снова и снова связываясь с одними и теми же людьми. Налаживание контактов с сообществом само по себе окажется весьма ценным.
Можно даже и не знать ни одной команды Julia, чтобы программировать на этом языке. И не только использовать код на Python и Cи. А даже использовать саму Julia в Python!
Излишне говорить, что это позволяет чрезвычайно легко исправить слабые места вашего кода Python. И оставаться продуктивным, пока вы только знакомитесь с Julia.
Одна из самых мощных сторон Python — миллионы строк в хорошо поддерживаемых библиотеках. У Julia не так много библиотек, и нередки жалобы, что они не поддерживаются на должном уровне (пока).
Но если учесть, что Julia — очень молодой язык с ограниченным количеством ресурсов, количество библиотек, которые уже есть, впечатляет. Помимо того, что количество библиотек растёт, язык также может взаимодействовать с библиотеками C и Fortran, например, для обработки графиков.
Python на 100% динамически типизирован. Это означает, что программа решает во время выполнения, является ли переменная, к примеру, вещественным или целым числом.
Хотя это очень удобно для новичков, в этом же и кроются причины целого ряда возможных ошибок. Код Python необходимо тестировать для всех возможных сценариев — неблагодарная задача, отнимающая огромное количество времени.
Поскольку создатели Julia также стремятся к тому, чтобы язык был легко осваиваемым, тут тоже полностью поддерживается динамическая типизация. Однако в отличие от Python, вы можете вводить статические типы, если хотите — так, как они представлены, например, в C или в Fortran.
Это может сэкономить кучу времени: вместо придумываний оправданий тому, чтобы не тестировать код, можно указать тип — там, где это имеет смысл.
Всё это, конечно, замечательно, однако важно помнить, что Julia пока крошечная по сравнению с Python.
Показательно, к примеру, количество запросов в StackOverflow с тегом «python» в двадцать раз чаще, чем с «julia»! Это необязательно означает, что Julia непопулярна — скорее, программистам нужно некоторое время, чтобы её принять.
Вы ж ведь не горите желанием здесь и сейчас писать весь свой код на новом языке? Нет, конечно, новый язык скорее предпочтителен для будущих проектов. Это создаёт временну́ю задержку, с которой каждый язык программирования сталкивается между его релизом и его принятием.
Но начать сейчас — что легко, потому что Julia допускает огромное количество языковых преобразований — вы инвестируете в будущее. Поскольку в будущем многие освоят этот язык, у вас уже будут готовы ответы на вопросы, которые перед ними возникнут. Кроме того, ваш код будет более долговечным, так как всё больше кода Python заменяется на Julia.
Сорок лет назад искусственный интеллект был не более, чем нишевым явлением. Индустрия и инвесторы не верили в ИИ, вследствие чего многие технологии были неуклюжими и сложными в использовании. Но те, кто осознал перспективы тогда, сегодня являются гигантами — теми, кто пользуется таким высоким спросом, что их доход сравним с зарплатами игроков НФЛ.
Точно также и Julia пока ещё нишевая. Но когда она вырастет, раннее принявшие её на вооружение окажутся впереди остальных.
Я не утверждаю, что гарантировано заработаете кучу денег через десять лет, если сейчас возьмётесь за Julia. Но это увеличит ваши шансы.
Подумайте вот о чём: у большинства программистов присутствует Python в их резюме. И в ближайшие несколько лет на рынке труда мы увидим ещё больше программистов на Python. Спрос компаний на специалистов по Python ещё растёт, но этот рост замедляется. Перспективы для программистов на Python ещё долго будут достаточно высоки, но они со временем будут ухудшаться. Сначала этот процесс будет идти очень медленно и незаметно, и в какой-то момент эта неизбежность станет очевидной.
С навыками Julia вы не только покажете, что у вас есть интересы помимо требований к вакансии. Вы также продемонстрируете, что стремитесь к самосовершенствованию и что у вас весьма широкое представление о том, что значит быть программистом. Другими словами, вы подходите для серьёзной работы.
Вы — как и другие программисты на Julia — будущие рок-звезды, и вы это понимаете (хотя бы подозреваете что-либо подобное в глубине души). Или, как заявили создатели Julia в 2012 году:
Не поймите меня превратно. Популярность Python по-прежнему обеспечивается сообществом ученых, дата-сайентистов и специалистов по искусственному интеллекту.
Но если вы когда-либо обедали с этими людьми, то также знаете, как любят они обсудить слабости Python. Начиная с медлительности и заканчивая необходимостью чрезмерного тестирования, вплоть до появления ошибок времени выполнения, несмотря на предшествующее скрупулёзное тестирование — это кого хочешь разозлит.
Поэтому всё больше программистов-питонщиков осваивают и другие языки — лучшими игроками на этом поле являются Julia, Go и Rust. Julia отлично подходит для математических и технических задач, Go — для модульных программ, а Rust — лучший выбор для системного программирования.
Поскольку эксперты по данным и ИИ занимаются множеством математических задач, чаще всего они выбирают Julia. И даже после самой суровой проверки у Julia обнаруживаются свои плюсы, которые Python не может победить.
Так как Python — один из лучших языков программирования, мы в EDISON часто используем его в сложных интересных проектах.
Мы разработали приложения и сайты Московского ювелирного завода.
Полное тестирование новой версии сайта было осуществлено на Python и Django.
Дзен Python VS жадности Julia
Когда создаётся новый язык программирования, это делается для того, чтобы сохраняя достоинства старых языков, избавиться от их недостатков.
Из этих соображений Гвидо ван Россум создал Python в конце 1980-х для улучшения ABC. ABC был слишком идеален для практического программирования. Хотя жёсткость и требовательность языка облегчала обучение, его было сложно использовать в реальной жизни.
Python, напротив, очень прагматичен. В этом можно убедиться, перечитав Дзен Python, который отражает намерение создателей:
Красивое лучше, чем уродливое. Явное лучше, чем неявное. Простое лучше, чем сложное. Сложное лучше, чем запутанное. Плоское лучше, чем вложенное. Разреженное лучше, чем плотное. Читаемость имеет значение. Особые случаи не настолько особые, чтобы нарушать правила. При этом практичность важнее безупречности. Ошибки никогда не должны замалчиваться. Если они не замалчиваются явно. Встретив двусмысленность, отбрось искушение угадать. Должен существовать один и, желательно, только один очевидный способ сделать это. Хотя он поначалу может быть и не очевиден, если вы не голландец. Сейчас лучше, чем никогда. Хотя никогда зачастую лучше, чем прямо сейчас. Если реализацию сложно объяснить — идея плоха. Если реализацию легко объяснить — идея, возможно, хороша. Пространства имён — отличная штука! Будем делать их больше! |
Этим же руководствуются создатели Julia: они хотят сохранить хорошее из других языков и отбросить плохое. Но в случае с Julia стои́т гораздо более амбициозная задача: вместо того, чтобы заменить какой-то один язык, она хочет превзойти их всех.
Вот что сами говорят создатели языка:
Мы ненасытны: мы хотим большего.Julia намерена избавиться от всех своих недостатков, которые у неё пока есть, не обменивая их на недостатки других языков. И хотя Julia является молодым языком, она уже достигла многих целей, поставленных создателями.
Нам нужен язык с открытым исходным кодом, со свободной лицензией. Мы хотим скорость Си с динамикой Ruby. Мы хотим, чтобы язык был гомоиконическим, с настоящими макросами, такой как Lisp, но с очевидными, знакомыми математическими сущностями, такой как Matlab. Мы хотим настолько же удобное для общего программирования, как Python, такое же простое для статистики, как R, такое же естественное для обработки строк, как Perl, такое же мощное для линейной алгебры, как Matlab, и способное объединять все эти возможности под одной оболочкой. Нечто простое в освоении, но при этом радующее самых серьёзных хакеров. Мы хотим, чтобы язык был интерактивным, и мы хотим, чтобы он был компилируемым.
За что разработчики любят Julia
Многосторонность
Julia можно использовать для всего: от простых приложений машинного обучения до огромных симуляторов суперкомпьютеров. В принципе, Python может делать то же самое — но он был лишь адаптирован для этого.
Что касается Julia, то она изначально была создана в том числе и для этих задач. По списку снизу вверх.
Скорость
Разработчики Julia хотели получить такой же быстрый язык, как C — но то, что они создали, стало ещё быстрее. Несмотря на то, что в последние годы и Python очень заметно ускорился, его производительность пока далека от Julia.
В 2017 году Julia даже вступила в Petaflop Club — небольшой клуб языков, которые могут достигать скорости в один петафлоп в секунду при максимальной производительности. Помимо Julia, в клубе сейчас только C, C++ и Fortran.
Сообщество
У Python, с его 30+летним стажем, огромное профессиональное сообщество. Вряд ли существует вопрос, связанный с Python, на который вы не найдёте ответ в рамках беглого Google-поиска.
Сообщество Julia, напротив, довольно мало. Вам, возможно, придётся покопаться немного дольше, чтобы найти ответ, снова и снова связываясь с одними и теми же людьми. Налаживание контактов с сообществом само по себе окажется весьма ценным.
Преобразование кода
Можно даже и не знать ни одной команды Julia, чтобы программировать на этом языке. И не только использовать код на Python и Cи. А даже использовать саму Julia в Python!
Излишне говорить, что это позволяет чрезвычайно легко исправить слабые места вашего кода Python. И оставаться продуктивным, пока вы только знакомитесь с Julia.
Библиотеки
Одна из самых мощных сторон Python — миллионы строк в хорошо поддерживаемых библиотеках. У Julia не так много библиотек, и нередки жалобы, что они не поддерживаются на должном уровне (пока).
Но если учесть, что Julia — очень молодой язык с ограниченным количеством ресурсов, количество библиотек, которые уже есть, впечатляет. Помимо того, что количество библиотек растёт, язык также может взаимодействовать с библиотеками C и Fortran, например, для обработки графиков.
Динамическая и статическая типизация
Python на 100% динамически типизирован. Это означает, что программа решает во время выполнения, является ли переменная, к примеру, вещественным или целым числом.
Хотя это очень удобно для новичков, в этом же и кроются причины целого ряда возможных ошибок. Код Python необходимо тестировать для всех возможных сценариев — неблагодарная задача, отнимающая огромное количество времени.
Поскольку создатели Julia также стремятся к тому, чтобы язык был легко осваиваемым, тут тоже полностью поддерживается динамическая типизация. Однако в отличие от Python, вы можете вводить статические типы, если хотите — так, как они представлены, например, в C или в Fortran.
Это может сэкономить кучу времени: вместо придумываний оправданий тому, чтобы не тестировать код, можно указать тип — там, где это имеет смысл.
Данные: инвестируйте в небольшие вещи, имеющие большой потенциал
Всё это, конечно, замечательно, однако важно помнить, что Julia пока крошечная по сравнению с Python.
Показательно, к примеру, количество запросов в StackOverflow с тегом «python» в двадцать раз чаще, чем с «julia»! Это необязательно означает, что Julia непопулярна — скорее, программистам нужно некоторое время, чтобы её принять.
Вы ж ведь не горите желанием здесь и сейчас писать весь свой код на новом языке? Нет, конечно, новый язык скорее предпочтителен для будущих проектов. Это создаёт временну́ю задержку, с которой каждый язык программирования сталкивается между его релизом и его принятием.
Но начать сейчас — что легко, потому что Julia допускает огромное количество языковых преобразований — вы инвестируете в будущее. Поскольку в будущем многие освоят этот язык, у вас уже будут готовы ответы на вопросы, которые перед ними возникнут. Кроме того, ваш код будет более долговечным, так как всё больше кода Python заменяется на Julia.
Подытожим: знание Julia может стать конкурентным преимуществом
Сорок лет назад искусственный интеллект был не более, чем нишевым явлением. Индустрия и инвесторы не верили в ИИ, вследствие чего многие технологии были неуклюжими и сложными в использовании. Но те, кто осознал перспективы тогда, сегодня являются гигантами — теми, кто пользуется таким высоким спросом, что их доход сравним с зарплатами игроков НФЛ.
Точно также и Julia пока ещё нишевая. Но когда она вырастет, раннее принявшие её на вооружение окажутся впереди остальных.
Я не утверждаю, что гарантировано заработаете кучу денег через десять лет, если сейчас возьмётесь за Julia. Но это увеличит ваши шансы.
Подумайте вот о чём: у большинства программистов присутствует Python в их резюме. И в ближайшие несколько лет на рынке труда мы увидим ещё больше программистов на Python. Спрос компаний на специалистов по Python ещё растёт, но этот рост замедляется. Перспективы для программистов на Python ещё долго будут достаточно высоки, но они со временем будут ухудшаться. Сначала этот процесс будет идти очень медленно и незаметно, и в какой-то момент эта неизбежность станет очевидной.
С навыками Julia вы не только покажете, что у вас есть интересы помимо требований к вакансии. Вы также продемонстрируете, что стремитесь к самосовершенствованию и что у вас весьма широкое представление о том, что значит быть программистом. Другими словами, вы подходите для серьёзной работы.
Вы — как и другие программисты на Julia — будущие рок-звезды, и вы это понимаете (хотя бы подозреваете что-либо подобное в глубине души). Или, как заявили создатели Julia в 2012 году:
Признавая свою непомерную алчность, — мы всё также жаждем заполучить всё. Около двух с половиной лет назад мы решили создать язык нашей жадности. Он не завершён, но пришло время для версии 1.0 — созданный нами язык называется Julia. Он уже удовлетворяет 90% наших неблагодарных требований, и теперь нужны неблагодарные требования остальных, чтобы развиваться дальше. Итак, если вы также непомерно жадный и излишне требовательный программист, мы хотим, чтобы вы попробовали Julia.Python до сих пор безумно популярен. Но если вы начнёте осваивать Julia сейчас, позже это может оказаться золотым билетом. И именно в этом контексте звучит заголовок данной статьи: пока, Python, привет Julia!