Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Периодически возникает желание по-быстрому накидать что-нибудь для разовой или эпизодической обработки текста, XML/HTML, баз данных и т.п. Сугубо для себя, без перспективы выпуска на широкую публику. Что-то делаю на привычном C++, что-то на JavaScript, несколько раз пытался делать на PowerShell, но не могу перебороть отвращения к его синтаксису.
ЕМ>Что сейчас есть из универсальных языков/сред для подобных целей — с богатым набором встроенных средств обработки разнородных данных (строки, списки, кортежи, множества, SqLite, HTTP и т.п.), и не слишком коряво выглядящим кодом?
ЕМ>Глядя на бешеную популярность Python, не могу понять, есть ли у него какие-либо явные преимущества перед тем же JavaScript. На нем действительно проще и быстрее писать наколенные поделки, или он так зашел чисто по причине низкого порога вхождения? Стоит ли браться за него всерьез, несмотря на очень непривычную идею с отступами?
Уже больше года юзаю питон.
Преимущества:
1) куча готовых решений и библиотек, абсолютно любое нужное действие гуглится и делается обычно в несколько строк с нужной библиотекой.
2) Есть блокнот для прототипирования jupyter.
3) Также использовал его для backend программирования, как скриптовый язык он удобен.
4) весь DS перебрался на него (если нужно преобразовывать массивы данных).
5) код читается, как художественный текст, даже написанный годы назад.
Недостатки (для меня):
1) Тормозной pycharm (а в других средах без достойного autocompletion туговато, т.к. мозг не желает запоминать даже элементарные языковые конструкции и параметры, ибо редко их использую). В итоге собрал себе набор "готовых решений", и делаю копи-пасту.
2) Интерпретируемый, то есть часто об ошибке не знаете, пока исполнение кода не дойдет до конкретного места, в каком-нибудь if-else можно элементарно попустить баг. Есть "линтеры", но они не всегда помогают.
3) немного различный синтаксис питон2-питон3, некоторые библиотеки сделаны под 2-ю версию, что вносит неудобства. Ну и примеры из гугла иногда бывают только на питон2, хотя питона2 все меньше и меньше.
4) крайне кривая многопоточность-асинхронность, считайте, что он однопоточный.
5) в свое время намучился пакетным менеджером pip в юниксе. Вероятно, потому что не разобрался как и что там работает, но сам факт говорит о том, что подводных камней там хватает. Если хочется какой-нибудь пакет глобально установить в систему, то бывает возникают ошибки, какой-нибудь пакет из dependency рассчитан исключительно на другую версию питона (так у меня было с приложением fail2ban, например: в системе основной питон3, а ему надо питон2), или пакет после скачивания начинает собираться, ноутбук гудит как самолет по 10-15 минут. Вылетает ошибка, начинаешь гуглить, и нередко находятся нетривиальные решения. То где-то нужен sudo для глобальной установки пакета, а где-то не нужен.
6) концепция virtualenv и постоянное ее activate раздражает. Если ее почти всегда используют, сделали бы этот venv как js npm, чтобы все пакеты устанавливались по умолчанию в текущую директорию. Но нет, надо вручную создавать эту песочницу, не забыть активировать.
7) gui приложения делать можно, но крайне неудобно. Например, какой-нибудь обновляющийся в realtime график.
Отступы совершенно не проблема, привыкаешь достаточно быстро, а IDE автоматически их подставляют.