Hello there!
Изначально computer science & программирование я не любил. В школе мой преподаватель обучил меня языку C++. Чуть позже я открыл для себя библиотеку D++ для написания Discord-ботов. Эта тема меня очень сильно увлекла и я аж написал бота на +- 1000 строк. Как итог, я пересмотрел свои взгляды на программирование. Посему решил развиваться в этой сфере.
Я немножко осознал, что C++ не очень удачный выбор для разработки Discord-бота. Поэтому у меня встала задача: Выбрать подходящий ЯП. Языков программирования больше 2000 и уж тяжело мне определиться. Товарищи, помогите подобрать ЯП под мои цели ( их я опишу ниже ). ЯП - это инструмент. Каждый инструмент должен иметь какую-то лучшую сферу ( если я не прав, поправьте меня ).
Собственно список того, что я хотел бы разработать:
1. Discord-бот
2. Веб-сайт для этого бота
У меня есть знакомый, который сможет сделать мне макет сайта. С HTML & CSS я знаком. Думаю, если подтянуть знания, то я легко сверстаю сайт. Получается, остается определиться с ЯП'ом для backend'a & Discord-бота.
Есть ли универсальные ЯП'ы, на котором и бота можно написать и сайт неплохой сделать? Или обязательно придется учить два различных ЯП'а? Если есть, то такие?
P. S.: К критериям ЯП'а я хотел бы отнести статическую типизацию. Динамическую вообще не переношу.
P. S2.: Я недавно прочитал про ЯП Rust. Подойдет ли он для моих целей? Или на нем это больно делать?
P.S3.: Прошу простить за такой текст. В голове огромный поток из мыслей, который я хоть как-то пытаюсь сложить в одну картину.
Rust - это язык, на котором очень трудно что-либо написать, если не проникнешься его Особым Духом. Поэтому выбирать его в качестве первого языка вряд ли хороший выбор.
Ботов для Discord пишут практически исключительно или на js (discord.js), или на python (discord.py и его клон disnake), причём именно python лидирует в массовом сегменте. Да, на некоторых других языках писать тоже можно, но это уже означает присоединиться к касте меньшинств с соответствующими проблемами и сложностями такого выбора.
Можно также отметить, что у js есть более типизированное расширение языка TypeScript. В python есть type hinting, который не вызывает реальной (заградительной) проверки типов.
В пользу js так же говорит то, что можно на одном и том же языке писать код и на фронте, и на бэке (node.js). С другой стороны, node.js имеет свои проблемы, в частности, довольно печальная практика безумного количества зависимостей в npm у многих библиотек.
В пользу python - это язык более общего назначения, для него есть очень много библиотек, решающих самые разные задачи. В частности, язык популярен в Data Science, ML, AI, у аналитиков, учёных, админов.
С точки зрения уже имеющегося знакомства с C++ можно обратить внимание на C# и .Net Core. Наверное, он типизированный, как C++, но я в этом не разбираюсь. Там есть библиотека Discord.Net.
Мне непонятна боязнь динамической типизации. Это на самом деле не страшно. От себя я бы рекомендовал python.
Я недавно прочитал про ЯП Rust. Подойдет ли он для моих целей? Или на нем это больно делать?
Недавно пробовал делать бота на rust, при этом я реализовывал коммуникацию с API самостоятельно, тк не нашёл нормальных готовых.
На вебхуках вполне прикольно и удобно. На вебсокетах сложнее будет.
Кмк, на других языках сильно легче.
Ну, насчет frontend'a это понятно, что там три короля - HTML & CSS & JavaScript.
Но подходит ли Rust для backend'a? Не будет ли он ошибочным выбором? Ну, с точки зрения времени & сил & перспектив развития ( как фреймворка, так и языка ). Ведь при желании backend сайта можно и на C++ делать, но какой резон?
Ну, а если рассматривать динамические языки? Какие там варианты есть? Я, честно говоря, насчет них ничего против не имею, просто читать менее приятно мне их, чем статические ( но это уж дело привычки. можно ко всему привыкнуть )
Я просто хочу выбрать ЯП как для личных целей ( aka разработка & развитие своего Discord-бота + веб-сайта для него ), так и для возможного трудоустройства ( ну или хотя бы фриланс ).
P. S.: Я еще в душе немного еврей. Поэтому еще вопрос: какие ЯП используют меньшее кол-во ресурсов сервера ( планирую использовать VPS ).
Kaya92,
tldr;
Если не боишься сложностей и хочешь уложиться в бесплатный тариф какого-нибудь облака - бери Rust.
Если нет хейта к Windows + Visual Studio - бери C#
Хочешь попробовать jvm - бери котлин или жаву
Если хочешь попробовать что-то более динамичное - typescript + nodes
Хочешь мейнстримное - питон
раст приколен тем что:
1. У него мощная система типов, что добавляет безопасности даже по сравнению с языками с GC
2. Он потребляет мало ресурсов (всех), тк нет виртуальной машины и GC
3. Он быстрый и предсказуемый по задержкам.
Но:
1. Писать на нём сложнее и медленнее, чем на языках с GC и языках со статической типизацией.
2. Какихто фреймворков может не хватить (например мне не понравился набор функций в имеющихся библиотеках для дискорда => я стал писать свою)
3. Он объективно сложнее многих языков. Сложнее из мейнстрима наверное только плюсы.
Из динамически типизированных я бы посмотрел на JS (TS) + node. (Можно ещё и питон посмотреть, но лично мне он не нравится)
php я бы вообще не стал рассматривать.
Ещё можно посмотреть на Go, если очень импонирует его идеология (лично мне не заходит).
C# великолепен, если нет хейта к продуктам MS и не против, что придётся работать на винде скорее всего (деплоить можно куда угодно)
Kotlin прикольный, но достаточно сложный и нужно вкатываться в Java, и для работы лучше бы иметь intellij ultimate.
Василий Банников,
Ну, мне религия позволяет пользоваться продуктами Microsoft, поэтому насчет C# ничего не имею.
И, кстати, сколько программа на C# ресурсов потребляет?
JVM уж нет желания использовать. Там и ресурсов жрет много, да и язык консервативный ( Java ). Ну и еще ряд недостатков есть.
PHP, думаю, уже никому рассматривать не нужно. Есть лучшие аналоги.
Если не ошибаюсь, то у Go идеалогия а-ля "Писать сможет каждый новичок"? Поправь, если я путаю.
Насчет TypeScript нужно посмотреть. Его батюшка уж очень мне не нравится.
А можно ли в будущем ( с опытом т. е. ) разрабатывать на Rust быстро? Ну, или хотя бы приблизиться к скоростям того же C# / Java / etc? Или все равно, даже с опытом, разработка на нем будет медленее?
И есть ли перспективы с этим ЯП'ом ( т. е., например, устроиться программистом. )?
Думаю, пока я выберу 4 языка: Rust / C# / TypeScript / Python.
Нужно будет сравнить их всех, а после один выбрать.
P. S.: Я так и не понял. Подходил ли Rust для веб? Как по качеству веб-приложения, так и по время затратности? Или Rust для веб такой же полезный, как Python для разработки ААА-игр?
Василий Банников, ну, если про программу на C#, то допустим веб-сайт на ASP.NET + React ( например ). А из условий, допустим. пик посещений 1000 человек / день. Много ли потреблять такое чудо будет?
А, кстати, что скажешь насчет Go? Почитал, говорят господа, что довольно развивающийся ЯП. Легко писать, как на Python, по скорости не уступает C# & Java, а также поддержка от Google. Да и сейчас работы на нем достаточно.
Реализовать эту задачу можно почти на каждом популярном яп, можешь использовать python - имеет несколько либ для написание ботов на дс(discord.py, discum), так же имеет backend либы(django, flask)