Контуровцы разных ролей либо соглашаются с холиварными тезисами, либо нет, а после этого высказывают свои мысли, доводы и всё, что у них есть по этому поводу. Сегодня говорим про разницу языков с разработчиками на питоне и на C#. Встретились и обсуждали тезисы два сеньора: C#-разработчик Илья Банников и python-разработчик Даня Мясников.
Смотреть выпуск на ютуб здесь.
Тезисы, которые обсудили:
Какой язык программирования больше подходит для высокопроизводительных задач
Статическая типизация лучше?
Какой язык более читаемый?
С каким языком легче найти работу?
У кого комфортнее работа с библиотеками и фреймворками?
Корпорации делают огромный вклад в развитие языков
Расшифровка встречи по каждому пункту для тех, кому удобнее прочитать:
«Мой язык больше подходит для высокопроизводительных задач»
Python-разработчик: Нет, но...
Python не является каким-то единым решением. Python не самый производительный, естественно, интерпретатор, но при этом есть интерпретаторы, которые позволяют высоко нагруженные вполне себе приложения на нем делать.
Есть такая история, что, в принципе, я могу высоконагруженное приложение на Питоне сделать, оно будет не уступать сильности Шарпу даже по своей производительности, Но для этого мне надо будет определенные ритуалы и действия совершить, и я не смогу. Ну то есть вот это явно не та история, когда приходит новичок там и такой с базовыми знаниями питона может высоконагруженное приложение какое-то создать.
То есть довольно сильная степень понимания должна быть инструментов, что вообще с ним можно делать, как его готовить. Поэтому это не конечно нет, мы можем делать высоконагруженное приложение, но, пожалуй, основной массы программистов нет, не сможем. На одной из моих работ, не в Контуре, мы пересобирали интерпретатор, чтобы он быстрее работал.
C#-разработчик: Да, но...
Прикольный опыт. Соглашусь с тобой, в принципе, на Шарпе можно написать достаточно шустрые приложения, но, например, если бы я хотел делать какой-то стартап, я бы, наверное, быстро наколбасил все на Питоне, потому что там можно побыстрее все сделать.
Статическая типизация лучше?
C#-разработчик: Да, но...
В статической типизации ты можешь сразу понять, какая переменная прилетает, для чего она нужна, сколько она занимает места, понять примерно по объему памяти, по сложности алгоритма, который будет это использовать. И тебе компилятор сразу скажет, что ты где-то неправ, если ты дату к строчке приравнял и у тебя дальше что-то может, по идее, из-за этого развалиться.
Python-разработчик: Да, но...
Ну да, в целом статическая типизация избавляет нас от ряда ошибок, вот, с этим я вполне себе согласен, но при этом динамическая типизация нам позволяет какие-то вещи делать быстрее, не заморачиваясь за типы. То есть если мы говорим не о разработке какого-нибудь, опять же, большого отказоустойчивого приложения, о каком-нибудь простом скрипте автоматизации, то отсутствие необходимости прописывать типы нам позволяет достаточно быстро автоматизировать какую-нибудь маленькую вещь и наслаждаться результатом. А типизировать потом уже, когда понадобится в питоне. В шарпе такого нельзя, там сразу надо все типизировать.
Далее Илья и Даня рассуждали, на тему того, так ли типизация замедляет или прям усложняет процесс :)
«Мой язык более читаемый»
Python-разработчик: Конечно, да!
В целом это заложено в какой-то идеологии, философии Питона. Все категорически будут против, наверное, делать так, как, например, API Fluent, который есть в C#, когда ты там пишешь такой большой паровоз из большого количества вагонов через точку, и тебе надо понять, что тут вообще происходит в этом паровозе. В Пайтоне, да, есть такое выражение, что "явное лучше не явного". Все стараются делать максимально явно. Это скорее не к языку относится, а к философии, которая вокруг него существует.
C#-разработчик: Да, но...
Погоди, а как же? Вот один пробельчик поставил лишний, и все, весь код развалился. Там условие пошло не в ту сторону.
Там дальше спор на пару минут :)
«Если знаешь мой язык, легче найти работу»
C#-разработчик: Да, но...
Спорное утверждение. Мне кажется, любой разработчик имеет возможность переучиться на другой язык. Главное, что у тебя уже голова умеет работать. Ты понимаешь, как построить алгоритм, а какой инструмент для этого использовать, это уже вопрос именно инструмента, который у тебя есть под рукой. Сам я когда-то три года назад писал на питоне, на гошеньке. Теперь пишу на шарпах.
Python-разработчик: Да, но...
Я считаю, что непосредственно на питончике найти проще себя. Потому что тут у тебя выбор не только из того, чтобы быть разработчиком какого-то веба, бэкэнда и еще чего-то такого, тут есть еще всякие истории с дата-аналитикой, с дата-сайенсом и прочее, которые вокруг питона строятся. То есть у тебя просто спектр возможностей, он чуть пошире именно популярного применения языка.
Дальше шло обсуждение айтишных курсов для начинающих и того, что питон часто выбирают как стартовый язык.
«В моем языке более комфортная работа с библиотеками и фреймворками»
Python-разработчик: Нет, но...
Когда у тебя есть выбор, у тебя сразу отсутствует какой-то комфорт, потому что тебе надо больше изучать, больше понимать, какие библиотеки, фреймворки использовать. То есть если там говорить про целую пачку всяких решений на Пайтоне, которые существуют, для для чего какие веб-фреймворки можно использовать, для каких задач и прочего, это все пойди и изучи.
Если мы говорим про тот же .NET, то там есть из коробки готовые решения. Берешь, пользуешься и не думаешь о том, чтобы что-то себе ставить со стороны. То же самое по всем библиотекам. Язык популярный, язык старый, но намного старше того же шарп. Поэтому, когда каждый уже что-то написал, переписал, одних только способов отправить куда-то запрос и получить ответ в веб-библиотек очень много. Попробуй, пойми, какая для тебя лучше подойдет.
C#-разработчик: Да, но...
Мне кажется, и на шарпах та же самая проблема есть, что достаточно много разных библиотек, которые делают разные, и выбрать соответствующую, которая тебе нужна, это бывает достаточно непросто.
А у Питона, я часто сталкивался с тем, что я хочу использовать какой-нибудь пакетик, он такой: "А, у тебя там транзитивная зависимость немного не той версии? Я работать не буду". Это грустно.
Смотреть выпуск на ютуб здесь.
А как по-вашему, какой язык более читаемый?