Автоматизация - это слово, которое большинство из нас просто слышит в мире на семинарах, конференциях разработчиков и подобных местах. Еще одно место, где вы часто видите это слово, находится в ваших учебниках по инженерии - да, я предположил, что вы на мгновение инженер.
Автоматизация должна быть сильной стороной любого разработчика или программиста. Конечно, любой, кто умеет автоматизировать, должен автоматизировать, но я сосредоточу здесь остальную часть контента, имея в виду состояние таких людей, как я.
Обычно я не веду блог. Но это было то, что мне просто нужно было изложить на бумаге, эээ… на Medium.

Первый вопрос, который мы задаем себе или другим, как новичкам в программировании, - какие языки нам нужно изучать. Мне задавали этот вопрос довольно много раз, и мой стандартный ответ был: «Не учите язык только потому, что вам это нужно. Изучите его для конкретного требования. Это поможет тебе лучше преуспеть ». Конечно, я всегда предлагаю им хорошо владеть хотя бы C или C ++. Но теперь, если бы мне снова задали этот вопрос, я бы добавил к этому ответу и подчеркнул необходимость знать хотя бы один язык сценариев, например Python или Shell. Почему? Что ж, продолжайте читать.

Прежде чем я расскажу вам, почему у меня возникла такая внезапная мысль о добавлении языка сценариев к моему ответу, я хочу рассказать вам о том, что вдохновило меня на это понятие. Это стало результатом моего опыта работы в Роберте Бош в качестве стажера по машинному обучению. Хотя я постараюсь не утомлять вас деталями проделанной мной работы, я хочу, чтобы вы сосредоточились на тонкостях работы, которую я там проделал. Как и все стажеры, мы (да, со мной был друг) ничего не понимали. И, как всякий бестолковый стажер, какое-то время мы выполняли всю работу вручную. Будь то такие сложные, как маркировка и редактирование изображений в программе, или такие простые, как копирование и вставка, мы сделали это вручную, думая, что это будет единственный раз, когда нам это нужно. Это была первая ошибка, которую мы усвоили на собственном горьком опыте. И как практическое правило всегда помните, что задачи, которые вы выполняете на работе, ни одна из них не будет первой.

В первую очередь мы работали над Глубокие нейронные сети. Следовательно, нам пришлось иметь дело с большим количеством данных. Это привело к необходимости перемещать их из каталога в другой, переименовывать их, изменять расширения и многое другое. Вы говорите, что это легко сделать, и вы сделаете это вручную. Но что, если бы вам приходилось делать это каждый божий день стажировки? Так все не кажется приятным. Именно здесь языки сценариев становятся вашим Суперменом! Напишите простой сценарий один раз, используйте его в любой день недели, выполнив одну команду. Я уверен, что вы не оцените необходимость скрипта для копирования материалов из одного места в другое. Но поверьте мне на слово, оно того стоит. Интуиция в отношении такой автоматизации становится более понятной, если вы понимаете еще одну непростую задачу, которую нам пришлось выполнить. Что ж, задача предельно простая, но трудоемкая и ну - скучная. Он должен был открыть каждый каталог с изображениями в нем и переименовать некоторые из них в зависимости от условий. Это идеальная площадка для автоматизации. Если вы спросите меня, какие еще примеры я мог бы предложить, это может быть поиск повторяющихся файлов / данных в каталогах, удаление файлов в зависимости от условий, их изменение размера и многое другое.

Именно для таких сценариев знание языка сценариев становится обязательным. На мой взгляд, идеальным было бы знание языка программирования Python. Изучение языка сценариев оболочки является дополнительным преимуществом. Мы все работаем на Linux, не так ли?

Когда я говорю об автоматизации, это может быть очень простой сценарий. Так же просто, как переименование файлов в определенном каталоге:

import os
import sys
# get the directory where you want to perform this renaming
directory = sys.argv[1] 
# parse through file list in the directory
for filename in os.listdir(directory):
      # if found
      if filename.find(“_superman”) > 0:
          # convert _superman to _batman
          newfilename = filename.replace(“_batman”, “”) 
          print directory + ‘/’ + newfilename
          # rename the file
          os.rename(directory + ‘/’ + filename, directory + ‘/’ + newfilename)

Или что-то довольно обширное, как автоматизация графического интерфейса, которую мой друг Knhash реализовал для автоматизации процедуры инструмента редактирования изображений.

Это видео демонстрирует автоматизацию процесса графического интерфейса пользователя для сохранения ROI (области интереса) из изображения, а также сохранения черно-белой маски фигур. Выполнять эту задачу для сотен изображений утомительно. Но мы могли настроить сценарий так, чтобы он делал за нас тяжелую работу, пока у нас были перерывы на кофе.

Итак, следуя принципу DRY (не повторяйтесь), убедитесь, что вы владеете хотя бы одним языком сценариев, чтобы не повторяться.