Мамкин программист про ИИ, «программисты скоро будут не нужны» и прочие страшилки

в 16:05, , рубрики: python, машинное обучение, нейронные сети, Питон, прикладное программирование, Программирование, творчество

Недавно на 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/ . Там ввожу текст, в котором ищу нужные паттерны (в данном случае, “ж.”, “ж”, “ ж ”, “ж,”, “ж .”) и подбираю к нему выражение.

И это я описал только процесс поиска и исправления ошибок. Огромная куча библиотек позволяет мне делать с данными что угодно. Чего стоит scikit-learn, при помощи которой я могу кластеризовать переменные при помощи метода k-средних и красиво отобразить всё на диаграмме с помощью Matplotlib или Seaborn.

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

Преимущество Python тут в том, что весь процесс обработки данных и статистических расчетов я автоматизирую с помощью функций. Результатом выполнения кода будет сформированный Excel файл, где все расчеты красиво разложены по листам. В случае, если нужно добавить несколько пациентов или при обработке данных другого исследования, мне не нужно повторно заниматься всей этой работой. Это экономит для меня тонну времени. Хотя я уверен, что при виде моего кода, у программиста будет идти кровь из глаз (у меня у самого иногда так происходит при виде этого чудища).

Второй пример - автоматизация каких-то действий. К примеру, при работе с рутинными задачами мне нужно вводить одни и те же данные по шаблону. Например, в случае профосмотров, когда у сотрудников нет жалоб, время которое требуется мне на ввод данных о человеке в медицинскую карту, я лучше потрачу на осмотр и беседу. Поэтому для ввода формальной информации о пациенте, я использую библиотеку управления мышью или клавиатурой PyAutoGUI, а интерфейс делаю на встроенном tkinter. Если же медицинская карта человека работает в браузере, могу воспользоваться стандартными средствами chromeDevTools для поиска элементов и совершения над ними действий через copy JS path с тестированием в консоли. Инъекцию кода можно делать при помощи Snippets (кто знает способ лучше, напишите пожалуйста). И это тоже экономит время, уменьшает очередь у кабинета и улучшает сам прием, потому что процесс ввода в карту идет, а я в это время смотрю не в монитор, а на человека. Разумеется, иногда бывают проблемы, связанные с плохим пониманием async await функций (потому что некоторые элементы страницы загружаются не сразу) и в этом мне опять же помогает perplexity.ai, который довольно хорошо пишет JS функции. Но опять же, без нормального запроса того, что нужно получить, модель не дает необходимого решения. Результат работы модели (в данном случае функцию) также нужно дорабатывать под собственные нужды. 

Являются ли описанные мною решения оптимальными с точки зрения опытного программиста? Скорее всего нет. Программист с базовыми знаниями алгоритмов, работы операционных систем, глубокими знаниями того же Python или JavaScript, сможет написать код короче, удобнее для чтения и качественнее, чем я. Тем не менее, для меня наиболее важно решить задачу как можно скорее. Привлекать для этого программиста (коих знакомых у меня нет) с подготовкой технического задания, для меня является задачей более сложной, чем решать проблему самому.

Я понимаю желание людей искать решение их проблем более быстрым, простым и менее затратным способом. Для обыденных случаев, которые я описал, не нужно знание C, понимание основ программирования и принципов работы операционных систем. Но если у кого‑то возникает идея создать коммерческое приложение, требующее надежности, стабильности, простоты администрирования, поиска и устранения ошибок, ему никак не обойтись без помощи квалифицированных программистов. Это как в случае неосложненной простуды — человек может просто отлежаться дома, и болезнь пройдет сама. Однако избегать обращения к врачу при развитии артериальной гипертензии, постоянной гиперхолестеринемии, депрессии, тревожных расстройств будет скорее вредить ему, чем приносить пользу.

Я бы сравнил каждый язык программирования с инструментом для работы по дереву. Разумеется, опытный мастер, знающий, как обращаться с разными видами древесины, при каких условиях влажности и так далее, сможет создать из куска дерева произведение искусства. Новичок же, скорее всего, с помощью этого инструмента будет выполнять только базовые задачи. Но совсем не обязательно искать опытного мастера по дереву, если нужно починить стул.

P.S. Понятное дело, картинка к публикации, сгенерирована

Автор: Максим Титков

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js