Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Недавно на Habr вышел перевод статьи под названием: "Классическое программирование на грани вымирания" с постапокалиптической картинкой, где автор буквально пишет, что "Приближается конец эпохи классических компьютерных наук, и большинство из нас словно динозавры в ожидании падения метеорита". Если коротко, данная статья о том, что классические компьютерные науки становятся менее актуальными на фоне развития искусственного интеллекта и современных технологий. Автор рассказывает о своем опыте в области компьютерных наук, полученном в 80-х и 90-х годах, и подчеркивает, что, несмотря на то что классические подходы к программированию и алгоритмам всё еще актуальны, но в будущем (горизонт автор не указывает), скорее всего, ИИ с самообучаемыми системами заменит программистов. В будущем студентам факультетов компьютерных наук не нужно будет изучать традиционные навыки, такие как работа с двоичными деревьями или программирование на С++, обучение таким вещам станет неактуальным, потому что от инженеров будущего будет требоваться обучение и запуск генеративных моделей.
Я читаю Хабр довольно давно и очень люблю этот ресурс. При этом здесь регулярно возникают статьи, типа "Если хочешь программировать, начни с языка Си" или наоборот, "Python - это простой язык, с которым любой идиот может разобраться" (статьи такой направленности иногда нещадно минусуют). Есть также и третья категория статей о том, что программисты скоро станут попросту не нужны (как статья, которая недавно опубликована).
Было неожиданно читать эту статью, зная, что ее автор имеет техническое образование. Я сам не программист и вообще не имею технического образования. Я работаю врачом-психиатром. Однако для меня содержание статьи аналогично тому, как если бы хирург, обучившийся на аппарате da Vinci, заявил, что будущим хирургам не нужно изучать топографическую анатомию, да и вообще медицину. Просто надо будет знать, где сделать операционный доступ, а дальше прибор будет работать за него.
Лично я рассматриваю для себя программирование как инструмент, который облегчает мою работу. Самый очевидный пример - это статистические расчеты. Конечно, их можно делать в пакетах STATISTICA или SPSS. Но лично мне проще запустить Colab, загрузить .csv файл, отредактировать ошибки данных (например, категориальные переменные: “ж.”, “ж”, “ ж ”, “ж,”, “ж .”) при помощи регулярных выражений и метода replace, а потом проводить расчеты между столбцами при помощи SciPy:
df['пол'].replace(regex={r'\w*[жЖ]\w*': 0, r'\w*[мМ]\w*': 1}, inplace=True)
Определить необходимый метод (в данном случае .replace) я могу при помощи запроса к той же генеративной модели (https://www.perplexity.ai/):
Pandas how to fix all the misspellings of a categorical variable in a column. provide python code
Модель выдает мне решение:
To fix misspellings of a categorical variable in a column using pandas, you can use the replace() method. Here is an example code:
import pandas as pd
# create a sample dataframe
df = pd.DataFrame({'platform': ['Computer', 'Tablet', 'Mobile', 'Unspecified', 'Unknown', 'Big screen', 'comp']})
# replace misspelled values with the correct value
df['platform'].replace({'Unspecified': 'Computer', 'Unknown': 'Computer', 'Big screen': 'Computer', 'comp': 'Computer'}, inplace=True)
# check the updated values
print(df['platform'].value_counts())
This code replaces the misspelled values 'Unspecified', 'Unknown', 'Big screen', and 'comp' with the correct value 'Computer' in the 'platform' column of the dataframe. The replace() method takes a dictionary of old values as keys and new values as values, and the inplace=True parameter updates the dataframe in place. The value_counts() method is used to check the updated values.
Можно, конечно, пробовать дальше формализовать задачу и надеяться, что модель выдаст мне готовое решение, но это может занять много времени, поэтому я обращаюсь к документации:
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.replace.html
и нахожу там, как работать с этим методом и искать регулярные выражения.
Немалую сложность представляет из себя процесс поиска необходимого выражения для нахождения паттерна. Для этого я использую сайт: https://regex101.com/ . Там ввожу текст, в котором ищу нужные паттерны (в данном случае, “ж.”, “ж”, “ ж ”, “ж,”, “ж .”) и подбираю к нему выражение.
То есть, модель ИИ тут выступает как хороший инструмент для поиска нужного функционала, но чаще всего она не сможет мне написать нужный код. Плюс, описание самой задачи тоже процесс непростой.
Преимущество Python тут в том, что весь процесс обработки данных и статистических расчетов я автоматизирую с помощью функций. Результатом выполнения кода будет сформированный Excel файл, где все расчеты красиво разложены по листам. В случае, если нужно добавить несколько пациентов или в другом исследовании мне не нужно повторно заниматься всей этой работой. Это экономит для меня тонну времени. Хотя я уверен, что при виде моего кода, у программиста будет идти кровь из глаз (у меня у самого иногда при виде этого монстра так происходит).
Второй пример - автоматизация каких-то действий. К примеру, при работе с рутинными задачами мне нужно вводить одни и те же данные по шаблону. Например, в случае профосмотров, когда у сотрудников нет жалоб, время которое требуется мне на ввод данных о человеке в медицинскую карту, я лучше потрачу на осмотр и беседу. Поэтому для ввода данных я использую библиотеку управления мышью или клавиатурой PyAutoGUI. Если же медицинская карта человека работает в браузере, могу воспользоваться стандартными средствами chromeDevTools для поиска элементов и совершения над ними действий через copy JS path с тестированием в консоли. И это тоже экономит моё время, уменьшает очередь у моего кабинета и улучшает сам прием, потому что процесс ввода в карту идет, а я во время этого смотрю не в монитор, а на человека. Разумеется, иногда бывают проблемы, связанные с плохим пониманием async await функций (потому что некоторые элементы страницы загружаются не сразу) и в этом мне опять же помогает perplexity.ai, который довольно хорошо пишет JS функции. Но опять же, без нормального запроса того, что нужно получить, модель не дает необходимого решения. Результат работы модели (в данном случае функцию) также нужно дорабатывать под собственные нужды.
Являются ли описанные мною решения оптимальными с точки зрения опытного программиста? Скорее всего нет. Программист с базовыми знаниями алгоритмов, работы операционных систем, глубокими знаниями того же Python или JavaScript, сможет написать код короче, удобнее для чтения и качественнее, чем я. Тем не менее, для меня наиболее важно решить задачу как можно скорее. Привлекать для этого программиста (коих знакомых у меня нет) с подготовкой технического задания, для меня является задачей более сложной, чем решать проблему самому.
Я понимаю желание людей искать решение их проблем более быстрым, простым и менее затратным способом. Для обыденных случаев, которые я описал, не нужно знание C, понимание основ программирования и принципов работы операционных систем. Но если у кого-то возникает идея создать коммерческое приложение, требующее надежности, стабильности, простоты администрирования, поиска и устранения ошибок, ему никак не обойтись без помощи квалифицированных программистов. Это как в случае неосложненной простуды - человек может просто отлежаться дома, и болезнь пройдет сама. Однако избегать обращения к врачу при развитии артериальной гипертензии, постоянной гиперхолестеринемии, депрессии, тревожных расстройств будет скорее вредить ему, чем приносить пользу.
Я бы сравнил каждый язык программирования с инструментом для работы по дереву. Разумеется, опытный мастер, знающий, как обращаться с разными видами древесины, при каких условиях влажности и так далее, сможет создать из куска дерева произведение искусства. Новичок же, скорее всего, с помощью этого инструмента будет выполнять только базовые задачи. Но совсем не обязательно искать опытного мастера по дереву, если нужно починить стул.
P.S. Картинка к публикации, понятное дело, сгенерирована