Python vs Bash
Решил тут я посмотреть что из себя представляет python. И как раз нужен был скиптик для создания дампа из разных баз данных. Сам язык порадовал своими обширными библиотеками, неплохой документацией на официальном сайте. Но информации в сети оказалось очень мало, а также добили проблемы с кривыми кодировками. Хотя где их сейчас нет.
Хоть и Python не идеален, но после того как я на нем написал пару скриптов и посмотрел свой bash script бэкапа mysql. Я понял что больше не буду писать на shell программ длиннее чем 3 строк.
И вот почему. Любая программа имеет потенциал развития. Хочешь или не хочешь, а редко получается продумать все сразу и написать. Ну не получается обойтись малой кровью. В ходе написания что-то приходится усовершенствовать, что равносильно расширению, а порой просто хочется добавить функционала. И тут как раз bash сильно проигрывает, так как серьезную архитектуру в него не встроишь. У меня уже часто случалось, что по ходу реализации ты понимаешь, что дальше все сложнее и сложнее "допилить" скрипт до нужного результата. А питон с этим справляется на ура. Так же большое количество библиотек дает широкую свободу действий.
Например встроенный парсер конфигурационного файла, позволяет получить все переменные в пару строк. Причем структура разбита на группы, что позволяет динамическое добавление данных. То же самое про считывание флагов, передаваемых скрипту. И многое другое. Язык не ограничивает вас, вас ограничивает только ваша фантазия :-P
Потом отладка Bash занимает намного больше времени. А о таких вещах как интерфейс, проверки и исключения вообще молчу. В конце концов в Питоне легко реализуются модули и плагины. Кто то скажет, что все равно не возможно реализовать всё на питоне. Да бесспорно, и для этого как раз и нужны те 10 строк на шел :-) Их можно заключить в файл и вызвать в программе, получить вывод и оценить.
Конечно немножко не правильно сравнивать полноценный язык с башем, но факт на лицо. На python писать приятнее и быстрее.
В следующих заметках я предоставлю пару скриптов. Думаю они не будут лишними, так как в сети мало примеров.