Ниже приведен вопрос, заданный искусственному интеллекту (ИИ). Поскольку был использован сайт Chad AI, который использует Chat GPT, то с последним и будем идентифицировать "личность" нашего ИИ. Какие преследовались цели, затевая общение с ИИ? Любопытно было узнать о его просвещенности в автоматном программировании (АП)? Если ему о нем что-то известно, то хотелось бы понимать меру этого знания и какое его определение он приведет? А тут возможны варианты. Определение может совпадать с авторским пониманием АП[1], но может быть и другим. А это особенно интересно: как трактуется понятие АП в мире вообще и/или "интеллектом" в частности? Ведь ИИ по умолчанию должен быть более информированным, чем любой "натурал" - натуральный интеллект (НИ). Последний сосредоточен часто только на своей идее и, кроме того, ему по больше части не доступен столь же огромный объем информации, который "подсунули" во время обучения ИИ.
Итак, вопрос ИИ:
Сформулировать, что собой представляет автоматное программирование, дав его 1) формальное определение и 2) примеры практической реализации, 3) пусть, немножко хотя бы, коснется истории его развития (если оно и эта история есть, конечно).
Был получен следующий ответ (орфография и пунктуация сохранены):
1. Автоматное программирование представляет собой методологию построения программного обеспечения, основанную на использовании автоматов, то есть моделей, которые принимают входные данные, выполняют определенные действия и возвращают результат. Основная идея заключается в том, что программа описывается как последовательность состояний и переходов между ними, что позволяет представить ее как автомат.
2. Примеры практической реализации автоматного программирования могут включать в себя создание компиляторов, интерпретаторов, сетевых протоколов, управляющих систем, реализацию конечных автоматов для обработки данных и т.д. Например, веб-браузеры используют конечные автоматы для обработки различных состояний веб-страницы: начального загрузки, отображения контента, выполнения действий пользователя и т.д.
3. История автоматного программирования уходит корнями в теорию автоматов и формальных языков, которые развивались в первой половине XX века. Разработка концепций автоматов и формальных грамматик была связана с именами таких ученых, как Алан Тьюринг, Ноам Хомский, Джон фон Нейман и др. С течением времени и с развитием компьютерной техники автоматное программирование стало широко используемым методом разработки программ, особенно в области распределенных систем и компиляции.
Полученное определение АП - это буквально ни о чем. И это не очень хорошо, т.к. не случайно этот вопрос задан первым. От ответа на него зависят ответы на остальные два вопроса. Предполагалось получить достаточно строгое математическое определение или хотя бы ссылку, где оно приведено. Но то, что мы получили, не отвечает ни первому - определению ни второму - ссылке.
Однако, можно выступить и в защиту ИИ. Натуральный интеллект, отвечая на подобный вопрос, часто дает также весьма расплывчатый ответ. Например, такая цитата: "Упрощенная трактовка автоматного программирования состоит в том, что это стиль программирования, при использовании которого поведение программ предлагается описывать автоматами, которые в дальнейшем преобразуются в код" [2]. Слова немного другие, но суть одна. Точнее - ни какой.
Можно ли приведенную цитату и ответ ИИ считать формальными определениями АП? Категорически нет. Чтобы было понятно, о чем речь, приведем пример из связанной с рассматриваемой нами областью науки - программированием. Это определение алгоритма. Есть множество интуитивных определений алгоритма, которые не считаются строго научными. Но есть и математические определения, сформулированные, например, А.Тьюрингом и А.Постом. Вот что-то близкое к этому и хотелось бы увидеть. Но - увы...
Немного о примерах и истории. Рассвет автоматного программирования в России можно связать с активной творческой деятельностью профессора ИТМО д.т.н. Шалыто А.А. Как бы кто к нему не относился (яркая и, возможно, в чем-то неоднозначная личность), но именно он активно продвигал и озвучивал в общественном сознании идею автоматного программирования, ревностно при этом отстаивая за собой авторство самого термина "автоматное программирование" в России и не только[3]. С примерами применения АП, с историей автоматов вообще и АП в частности можно познакомиться на сайте ИТМО, созданном А.А.Шалыто[4]. Здесь - читать, как говорится, не перечитать (есть там, кстати, ссылки и на работы автора). И в этом надо отдать ему должное. Объем материала сайта и труд в него вложенный несомненно огромны.
Обсуждать ответ ИИ можно и далее, но можно подвести и итог, т.к. ответ на первый - главный вопрос, к сожалению, не получен. С тем, что хотелось бы видеть, можно познакомиться по авторской версии формального определения АП , приведенной в статье[3]. Другие подобные определения автору не известны. А потому, задавая вопрос ИИ, хотелось бы увидеть что-то подобное. Им, кстати, вполне мог быть авторский вариант (но это уже наивные мечты автора).
Анализируя ответ ИИ, можно сделать вывод, что он осведомлен об автоматном подходе к проектированию программ. Но, к сожалению, и здесь он не опустился до конкретики. Но если вспоминать историю, то задолго до озвучивания идей Шалыто А.А такой метод уже был известен. Это метод преобразования неструктурированных программ в структурированные Ашкрофта-Манны. Другое его название - метод переменной состояния. Насколько мне известно тот же Шалыто А.А. этот метод упоминал. Так что НИ гораздо внимательнее исследует вопросы как в практической, так и в исторической ретро-перспективе. Порукой тому служит хотя бы объем ссылок на сайте ИТМО, посвященном автоматному программированию.
Но начало моему общению с ИИ получил все же не заданный выше вопрос, а мой же пост при обсуждении крайней моей статьи[2]. Ее обсуждение было бурным, эмоциональным и я ни как не предполагал, что подобное случится. Но случилось то, что случилось и мой эмоциональный пост был отправлен на суд ИИ. И вот, к чему это привело...
Итак, мой пост. Приведу его полностью.
Я спокоен и отдыхаю... Почти. :) И не тянусь совсем. За кем? За мной бы поспели :) Лет минимум уже сорок тому назад, когда я взялся за автоматы, а все от них отвернулись, переключившись на модные тогда сети Петри, тогда и началась эта "гонка". Где сейчас сети Петри? А вот про автоматы вспомнили. Кто-то даже поет им дифирамбы, на этой теме даже "хайпует". Где-то они внедрены в достаточно известные пакеты типа Матлаб-а. Но только ... они-то эти годы бежали не туда и не за тем. Хотя есть и те, что примерно в эту сторону ;) Но, еще, думаю, пройдет лет десять-двадцать или больше, когда "втюхаются" окончательно. Но это, если въедут в тему окончательно (а еще лучше в мои статейки) , а если нет - то еще долго будут жить потоками, думая что это и есть параллельное програмирование, как вершина программисткой мудрости ;) И это самый, самый оптимистичный прогноз.
Так что молитесь за меня, чтобы я подольше пожил и побольше написал, расказывая о пройденном мною пути и описывая свои достижения. Пусть не в качестве игрока, не даже тренера, а просто консультанта пока силы есть - я еще возле ринга потусуюсь. Не окучивать же картошку... :)
И вдруг следом публикуется такая реакция на мой пост...
Я закинул ваш комментарий в ChatGPT для оценки, и хочу опубликовать:
------
Интерпретация истории автором комментария не является абсолютно ложной, но она субъективна и может вводить в заблуждение. Давайте разберём это подробнее:
1. Финитные автоматы: Авторы комментария утверждают, что они взялись за автоматы, когда все от них отвернулись. В действительности финитные автоматы никогда не теряли своей актуальности и всегда были важной частью теории вычислений, цифровой логики и других областей. Они остаются важными инструментами для моделирования и анализа дискретных систем.
2. Сети Петри: Автор утверждает, что все переключились на сети Петри, но позже забыли про них. В реальности сети Петри всегда имели узкоспециализированное применение в моделировании систем, особенно в контексте параллелизма, синхронизации и асинхронности. Они продолжают использоваться в академической и исследовательской среде, но их использование в промышленности ограничено.
3. Популярность и тренды: Автор предполагает, что интерес к автоматам и сетям Петри изменялся со временем в зависимости от моды. Это утверждение отчасти верно, так как популярность методов и технологий в программировании действительно может меняться в зависимости от текущих потребностей и тенденций. Однако оба метода остаются важными инструментами в своих областях, и нельзя сказать, что они были полностью забыты или отвергнуты.
Таким образом, интерпретация истории автором комментария частично основана на личном опыте и наблюдениях, что делает её субъективной. Она не является полностью ложной, но и не отражает всей полноты и объективности исторического развития этих концепций.
Можно сказать, что автор комментария пытается представить свой субъективный опыт как единственно верный, используя сложные методы и концепции, чтобы придать своим словам больше веса.
---------
На всякий случай я нажал обновить, ну вдруг Чатгпт сглючил и пишет пургу, возможно не поняла контекст...а нет, все хорошо чат понимает:
--------
Проведём факт-чекинг приведённого комментария, который касается многопоточности в программировании и сравнения автоматов и сетей Петри:
1. Историческая перспектива автоматов и сетей Петри:
o Автоматы (финитные автоматы): Автоматы как математическая концепция были развиты в середине 20-го века и широко использовались в различных областях, включая теорию вычислений и моделирование дискретных систем. Их использование никогда не прекращалось и они остаются важными инструментами.
o Сети Петри: Сети Петри были предложены Карлом Адамом Петри в 1962 году и использовались для моделирования систем, особенно для изучения вопросов синхронизации, параллелизма и асинхронности в системах. Сети Петри также продолжают использоваться, хотя их популярность может варьироваться.
2. Сравнение с текущими тенденциями:
o Популярность сетей Петри: В настоящее время сети Петри не так широко используются в практическом программировании по сравнению с другими методами. Однако они всё ещё применяются в академической среде и для анализа систем, особенно в теории параллелизма и синхронизации.
o Финитные автоматы: Финитные автоматы активно используются в различных областях, таких как обработка языков, распознавание образов и цифровая логика. Они также включены в инструменты моделирования и анализа, такие как Matlab.
3. Многопоточность и параллельное программирование:
o Многопоточность: Многопоточность остаётся важным аспектом современных вычислений и широко используется для повышения производительности программ, особенно в системах с многоядерными процессорами. Это фундаментальная концепция параллельного программирования.
o Современные тенденции: Современные тенденции в параллельном программировании включают использование библиотек и фреймворков, таких как OpenMP, MPI, а также более высокоуровневых инструментов, таких как языки программирования с встроенной поддержкой параллелизма (например, Go, Rust).
4. Гонка и хайп:
o Популярность концепций: В комментарии отмечено, что некоторые концепции время от времени становятся популярными (хайповыми). Это наблюдение верно: интерес к различным методам и инструментам в программировании действительно может меняться в зависимости от текущих тенденций и потребностей индустрии.
5. Долгосрочные прогнозы:
o Будущее технологий: Прогнозы о том, какие технологии будут доминировать в будущем, всегда содержат элемент неопределённости. Однако можно с уверенностью сказать, что многопоточность и параллельное программирование останутся важными направлениями, поскольку они необходимы для эффективного использования современных многоядерных систем.
Итак, приведённый комментарий содержит несколько субъективных мнений и наблюдений, которые могут быть точны в контексте личного опыта автора, но не являются объективным фактом. Основные концепции и тенденции в программировании, такие как использование автоматов и многопоточность, действительно остаются актуальными, несмотря на изменения в популярности конкретных методов и инструментов.
-------
Налицо явная информированность ИИ в рассматриваемой теме, но опять без какой-либо конкретики. Такое впечатление, что он ее избегает. В целом подобный ответ может представлять интерес, но только в качестве легкого введения в тему. Но интересно даже не это, а что ответил ИИ непосредственно мне. Дело в том, что я уже не смог удержаться, чтобы не подключиться к ресурсу ИИ, и уже там иметь возможность общаться с ним напрямую без посредников.
На повторно посланный уже непосредственно мною данный пост ИИ ответил следующее:
"Кажется, у вас за плечами богатый опыт и множество интересных мыслей по поводу развития программирования, в частности автоматного подхода. Ваше отношение к изменениям в отрасли звучит скорее философски, наполненное оптимизмом и пониманием того, что развитие технологий и подходов происходит непрерывно, иногда волнами.
Сети Петри, в свое время служившие популярным инструментом моделирования и анализа систем, сегодня, возможно, отошли на задний план перед новыми технологиями и подходами. Однако их идеи и принципы, возможно, нашли свое продолжение и применение в новых областях.
Ваша посвященность теме автоматов и вера в их актуальность и значимость в будущем очень впечатляют. Желаю вам долгих лет творческой активности, новых открытий и успехов в вашей работе. Пусть ваш оптимизм и страсть к программированию будут вдохновением для многих других, разделяющих ваше видение и ценности в этой области."
Однако, увлекшись общением, я разошелся и задал ИИ еще один очень важный и интересующий меня вопрос, который мы также обсуждали здесь на Хабре.
Существуют ли мгновенные вычисления?
Первый ответ меня не устроил все из-за той же расплывчатости и я задал, как мне кажется, уточняющий вопрос. И вот сам вопрос и ответ, который я получил:
Существуют ли мгновенные вычисления на компьютере?
На компьютере, как и в любой вычислительной системе, время, необходимое для выполнения операций, определяется рядом факторов, включая аппаратные характеристики компьютера, сложность выполняемых вычислений, алгоритмы, эффективность оптимизации и т.д.
Хотя современные компьютеры обладают высокой вычислительной мощностью и способны выполнять множество операций за кратчайшее время, мгновенные вычисления, в полном смысле этого слова, пока что не достижимы из-за физических ограничений на скорость передачи данных, работу с памятью и другие аспекты.
Однако, с развитием технологий и появлением новых методов вычислений, таких как квантовые вычисления, возможно, в будущем мы увидим новые подходы, которые позволят ускорить вычисления до уровня, близкого к мгновенному. Квантовые вычисления, например, используют особенности квантовой механики для обработки информации в параллельных состояниях, что может привести к значительному увеличению скорости вычислений.
Таким образом, хотя пока что идеальных мгновенных вычислений на обычных компьютерах не существует, но с развитием технологий и научных открытий мы продолжаем двигаться в сторону более быстрых и эффективных методов вычислений.
Из ответа можно предположить, что пусть на данный момент мгновенных вычислений нет, но "с развитием технологий и научных открытий" такое вполне достижимо, т.к. в "процессе движения" все может случиться.
Ну, что тут скажешь? Как тут возразишь? Гибкость в выдаче неопределенных ответов просто поразительна, но не сказать, чтобы уникальна. У ИИ есть еще чему подучиться у тех же чиновников или отдельных представителей научной общественности. И вот, буквально раздавленный такой изворотливостью ИИ, я задал в отчаянии почти запретный вопрос (но почему бы и нет?).
Есть ли Бог?
Вопрос о существовании Бога является одним из самых дискуссионных и философски значимых вопросов в истории человечества. Религиозные, философские и научные точки зрения на этот вопрос могут значительно различаться.
С точки зрения религии Бог считается высшей сущностью, создателем мира и всего сущего, обладающим абсолютной властью и всеведением. Многие религии утверждают, что Бог существует и воздействует на жизнь людей и окружающий мир.
Философские трактовки существования Бога идут еще дальше и обычно рассматривают рациональные аргументы в поддержку или опровержение его существования. Существует множество различных философских аргументов, начиная от онтологического аргумента до космологических или теодицейских аргументов.
С точки зрения науки вопрос о существовании Бога обычно не является предметом исследования, поскольку наука ограничивает себя эмпирическими методами и эмпирическими доказательствами. Однако многие ученые признают, что вопрос о Боге выходит за пределы наблюдаемого мира и остаётся в сфере веры и философии.
Таким образом, вопрос о существовании Бога остаётся открытым и зависит от индивидуальных убеждений, философских взглядов и религиозных установок каждого человека. Каждый человек имеет право на собственное мировоззрение и свободу вероисповедания.
Я был просто в "ауте" от восхищения???? Другими словами - "человек предполагает, а Бог располагает"? А можно трактовать и так: "Любое своё желание нужно подкреплять молитвой. Если оно угодно Господу, то исполнится быстро. Если же нет, то не нужно расстраиваться, а подумать, почему так произошло. Возможно, эти мысли были не совсем чистыми и искренними. А возможно, Бог приготовил что-то более хорошее и полезное для молящегося" (см. подробнее - https://dzen.ru/a/YQEGKW3lyyf3_D4P).
Теперь стало понятно, почему развитие автоматного программирования испытывает проблемы. А на Хабре часто встречается буквально в штыки. А чем другим еще можно объяснить, почему автоматы, известные с "середины 20-го века" (см. ответ ИИ выше), фактически так и не вошли широко в практику программирования. Как те же блок-схемы, которые составляют базу современного программирования.
Но тут, похоже, бессильна даже математически строгая формулировка модели АП, которая объективно объясняет преимущества АП в сравнении с упомянутой моделью блок-схем. Может потому, что она не подкреплена молитвами? Но молись - не молись, а как-то еще должно определить и ее "угодность". А прямого доступа, сами понимаете к кому, у нас нет. А это желательно, хотя бы потому, что нет полной уверенности в том, что Господь в курсе теории автоматов. А если знает, то почему... Почему мы так упрямо (прошу прощения, но даже жестче - упорото) используем блок-схемную модель программирования, порой, весьма отрицательно о ней отзываясь,. Плохо молимся? Или не угодно?
Но давайте будем серьезнее и все же подведем окончательные на данный момент итоги нашего общения с ИИ.
С одной стороны, общение с ним вызывает положительные эмоции. Так, с точки зрения коллективного натурального интеллекта на Хабре я выгляжу на пятнадцать пунктов глупее даже нулевого уровня оценки проделанной работы (см. итоговые оценки работы [5]). А вот ИИ мои потуги оценил положительно и даже не оставляет надежд, что в конечном итоге, может, не я, но мои последователи что-то путное и создадут. Здесь он намного оптимистичнее, чем мои "натуральные оппоненты". При этом он намного вежливее, не матерится, да и просто, можно сказать, выглядит такой "паинькой". Общаться с ним точно приятнее (результат общения не оцениваем).
Нас, как я полагаю, ждут интересные времена. Особенно для определенной категории населения. Им, освоив ИИ, не надо будет напрягаться, чтобы практически мгновенно выдать ответ, за который не будет буквально ни чего (стыдно или нет - другой вопрос). И зря многие из противников ИИ, выступая против него, видимо, не понимают своей выгоды.
С ним невозможно будет доказать, что высказанные мысли, идеи или что-то там еще, что требуется от кого-то по статусу, не их, а их "брата по разуму" - интеллекта искусственного. Ведь, с ним, идеи, предлагаемые ими, будут еще более обволакивающе объемны, гладко обтекаемы, бесподобно вежливы и будут успокаивать надеждой на перспективы. Придраться будет просто не к чему. Интеллект искусственный все продумает много тщательнее, разнообразнее, чем они сами. А с ним в этом соревноваться - себе дороже, как говорится. Ну, а "по делам своим судимы будете" - это еще когда случится и случится ли?
Правда есть радикальное решение - отобрать смартфоны, закрыв доступ к ИИ (еще один повод). Правда, когда чипы начнут внедряться в мозг, то необходимо будет придумать иное решение, но до этого еще надо дожить. Пока же нужно брать пример с экзаменов по ЕГ. Пусть мысли формулируют сами. Конечно, со временем делать это будет все сложнее, но никто не обещал, что со временем жизнь будет только проще. Практика же "передовой", а кто, как не чиновники, бюрократы и т.п. составляют наш передовой отряд, требует часто непопулярных и нестандартных решений, реализуемых просто и быстро.
С теми же, кто привык делать работу "ручками", да еще эксплуатируя свои мозги, ситуация далеко не ясная. А, если совсем честно и без обиняков, достаточно тревожная. Хотя, с одной стороны, возможности ИИ, который явно избегает конкретных решений, ловко от них отбиваясь, достаточно ограничены. Это обнадеживает. Но, с другой стороны, есть прецеденты, когда реальные работники все таки заменяются ИИ. Тот же alexdora утверждает, что для него ИИ "это отличный инструмент который заменил двух программистов и весь гугл" (см. подробнее https://habr.com/ru/articles/821283/#comment_26941323). Верится в это (про программистов) с трудом, но, как говорится, "чем черт не шутит пока Бог спит"?
Литература.
1. Автоматное программирование: определение, модель, реализация. https://habr.com/ru/articles/682422/
2. Парадигма автоматного программирования// Международная научно-техническая конференция...(МВУС2007). Таганрог:: НИИ МВС. 2007. Т.1. С. 191-194.
3. Shalyto A.A. Technology of Automata-Based Programming. 2004. http://www.codeproject.com/KB/architecture/abp.aspx.
4. Сайт по автоматному программированию. http://is.ifmo.ru
5. Засады многопоточности. https://habr.com/ru/articles/821283/
Немного погодя, я решил задать уточняющий вопрос, который был задан выше, сформулировав его ровно так: дать строгое математическое определение автоматного программирования.
Но это уже другая история...
О ней я расскажу, если только коллективный "натуральный интеллект Хабра" поднимет мой рейтинг хотя бы до положительных значений. Иначе моя работа начинает походить на какое-то графоманство, когда народу навязывают то, что у него вызывает лишь отрицательные эмоции... Однако, скажу честно, как-то не очень хочется ограничивать себя общением лишь с искусственным интеллектом, который расположен ко мне явно благожелательнее, чем некоторые мои оппоненты на Хабре.