Что учить (на будущее) для back-end веб приложений?
После Logo, Basic, Pascal, C, С++, Assembler, Bash, PHP, Perl и вот последние несколько лет Python, хочу что-то новое попробовать. С Java знаком, но как-то душа не лежит. То же самое с JavaScript.
От Питона впечатления самые лучшие, писать на нем - сплошное удовольствие, но немного смутил GIL.
Писать планирую в основном серверную часть, может быть консольные скрипты для себя. Желательно, чтобы производительность была высокой (выше питона) и легко масштабировалось. Интерпретируемый/компилируемый - не принципиально. Типичное предназначение - либо веб-приложение которое работает с MariaDB / Redis / RabbitMQ, либо какой-нибудь свой TCP сервер. И при этом, чтобы прототипы писать было просто и быстро (сравнимо с питоном), так что C + CGI не подходит :-).
Что-то более-менее мейнстримное, не совсем экзотику. Чтобы было крупное коммьюнити, либы, фреймворки. С прицелом на то, что в будущем язык скорее сильно наберет популярность, а не наоборот.
Товарищ, с похожим на Ваш послужным списком и большим стажем программирования недавно перешел на Go и, насколько вижу, в полном восторге от него.
Думаю, стоит присмотреться.
Скорее всего туда и буду смотреть, но пока что после питона он кажется более сложным. (в том смысле, что простые вещи как-то сложнее надо делать). А от чего восторг от Go у вашего товарища, какие вещи ему сильно нравятся?
EYPPNM, Монтекки и Капулетти. С детства был в лагере линукса и опенсорса, а винда - только чтобы "танчики запускать". Уж очень сложно настолько сильно менять свою судьбу.
Ярослав Поляков, JS сегодня язык номер 1 в мире, у него самое большое комьюнити, естественно что без английского языка вы не сможете черпать велосипеды, и будете рожать всё сам пытаться, учите английский язык если хотите делать веб приложения на JS, или делайте на .NET, других мейнстримовых вариантов у вас нет.
После Logo, Basic, Pascal, C, С++, Assembler, Bash, PHP, Perl и вот последние несколько лет Python, хочу что-то новое попробовать. С Java знаком, но как-то душа не лежит. То же самое с JavaScript.
От Питона впечатления самые лучшие, писать на нем - сплошное удовольствие, но немного смутил GIL.
Странно, а вот разработчиков высоконагруженных систем GIL почему то не пугает.
Пройдите еще раз по списку "якобы изученных вами языков программирования" и таки все же действительно изучите.
Важны не языки.
Важны парадигмы, принципы, концепции, паттерны, шаблоны и т.п и т.д.
Если вы этого еще не поняли с таким списком "изученных" языков и вас пугает какой-то там смешной GIL, то в программировании вам делать нечего.
Да, зря я сбросил со счетов идею в самом деле вернуться к богоугодному С для веб-приложений.
Задержки сети дико велики на фоне задержек обработки на сервере.
Если у вас не сверх-нагруженный хайлоад, то никакой необходимости в С нет (да и для хайлоада он целесообразен только для очень маленьких самых узких кусков проекта).
Сравнительно большие задержки для веб-сервера формируют:
Работа с БД, но это никак не связано с тем, из какого языка вы к БД обращаетесь.
Передача больших файлов - но и это не связано с языком (большие файлы вообще можно вне вашего бэкенда пускать, через чистый nginx, к примеру)
Сеть между клиентом и сервером
Ничего из этого не зависит от языка программирования, который вы используете.
Сравнительно медленные, но более удобные, не позволяющие отстрелить ногу - более чем достаточны для упомянутой вами цели.
Впрочем, не стоит упускать, что "лучше писать на том, что лично ты лучше знаешь".
nrgian, у меня более частая проблема (хоть она и дешевая, но все таки) в том, что питоновское приложение при хорошей нагрузке хорошо так нагружает сервер и, соответственно, нужен сервер в два раза мощнее-дороже, чем если б язык был шустрее и жрал меньше памяти-циклов для той же работы.
Конечно, с экономической точки зрения, я понимаю, что проще платить на несколько евро в месяц за VPSку, как кружку пива купить, но как технарю, меня манит путь "выучить новый язык, потратить год и все переписать на нем!" :-)
в том, что питоновское приложение при хорошей нагрузке хорошо так нагружает сервер
Что там за бизнес-логика такая?
Если вы не TensorFlow практикуете, то в типичном веб-сервере непосредственно в коде сервера тормозить особо нечему.
Основная нагрузка на веб-сервере идет на СУБД, а она, как правило на быстро C.
nrgian, пока что в основном фокусе у меня Go/Rust и тоже склоняюсь к Go.
Мониторинг. (Поэтому, нагрузка ровная и достаточно активная круглосуточно). Больше нагрузка на память (несколько питоновских скриптов + база хорошо нагружают 2Gb VPSку). Часть нагрузки из веба идет, часть из скриптов внутри сервера (которые проверяют, например, протухшие индикаторы). Сейчас как раз думаю о том, чтобы переписать некоторые вещи (и может быть перейти от mariadb к redis), а если все равно старый код выбрасывать - так вот, удачный момент еще и язык поменять.
пока что в основном фокусе у меня Go/Rust и тоже склоняюсь к Go.
Rust позволяет получить большую производительность.
Но уж очень напрягает мозги программиста (замедляет разработку значительно)
Как пример, Dropbox
Был написан на Python.
После выхода на highload-нагрузки переделан на Go.
И только очень небольшой кусок (фактически один мелкий, но крайне нагруженный сервис) - переписали на Rust.
Всё остальное продолжают делать на Go.
Rust оказался нерационально трудоёмким даже для них.
Go или поковыряться с C# - вроде MS большой шаг в сторону кроссплатформенности сделала и теперь Windows не нужна. Но не уверен, что для веба это реально, вернее не уверен, что это удобно. Если второй пункт выберете, то с вас статья о результатах :)