В прошлых двух постах (
1,
2) я практически изложил "алгоритм", причём уже не "Искусственного Интеллекта", а полноценного "Машинного Разума", -- "машины, которая может мыслить". То есть уже не просто "самообучаться", а ещё и "предпринимать какие-то самостоятельные действия", и более того, по сути дела уже "вести самостоятельную жизнь". Да, действительно, я конечно же наверняка недостаточно "сфокусировался", и описал всё слишком размыто, вдобавок похоронив всё под толстым слоем своего косноязычия, но вроде бы я затронул все нужные моменты, и описанного уже может быть достаточно для создания "машинного разума". И, отдельный острый момент в том, что описанное находится прямо на стыке наук.
Формально это текст для "программиста", но типовой программист нихера не рубит в математике и для него написанное представляет собой лютейший бред. Рядовой обыватель вообще не догадывается об истинных возможностях математики, и многое считает за шутку. Пример с академиком Фоменко показателен. А типовой "математик" в свою очередь типично нихера не рубит в программировании, и пусть он должен был более-менее понять математическую часть опуса, но наверняка он даже не догадывается о возможностях программирования, изначально занижая рамку своих "мечтаний", и должен воспринять как художественный свист уже программистскую часть моего "откровения". То есть нужен "математик-программист", НО, математическая статистика становится доступна лишь только через полноценный курс ВУЗа, потому что 1) сначала нужно как следует освоить "математический анализ", потом 2) требуется как следует освоить "теорию вероятности", то есть всякую "теорию случайных процессов", и только потом 3) можно будет подступиться к "математической статистике", то есть лишь только на 3-4 курсе ВУЗа.
Специалист по "математической статистике", это уже сама по себе "топовая" специальность, которую далеко не каждый потянет, и как "программист" подобный спец типично имеет уровень "кодера", то есть он пусть уже не пугается листинга программы, может отладить какой-то несложный расчётный блок, даже возможно сможет самостоятельно написать функцию на "матлабе", но написать законченную программу "с нуля", такой человек просто не сможет, потому что он всего лишь "кодер". Чтобы научиться писать полноценные программы, нужно быть "программистом до мозга костей", нужно иметь особый склад мышления, и, нужно иметь овердохера опыта в написании программ, чтобы увидев что-то, сразу же представлять, как такое более-менее возможно повторить. Так что полноценным "программистом" тоже можно стать лишь только после ВУЗа, а чтобы действительно что-то там из себя представлять, нужно "всё впитать с молоком матери", вот буквально "с детства расти программистом", то есть начать писать программы ещё хотя бы в младшей школе, чтобы основную часть опыта изначально воспринимать "через призму" софта, робототехники, и так далее.
Мне со всем этим повезло, потому что я "домашний программист" где-то с 14 лет, причём на
моём компьютере не шли игрушки, так что главной моей игрушкой стал qbasic, на котором я пытался сам для себя написать какую-нибудь игру, и это при том, что я с детства пошёл по "математической" ветке, обзаведясь пачкой грамот с областных олимпиад, и далее естественно пошёл на топовое математическое отделение в нашем мухосранске (0102 "прикладная математика и лазерная физика"), где меня плотно ознакомили со всеми этими темами. Причём, как я уже говорил, я пусть "домашний программист" и никогда не читал
Дональда Кнута, первый раз услышав эту фамилию, когда мы с командой от нашего ВУЗа поехали на четверть-финал мирового первенства по программированию, и зашли в книжный магазин ЕМНИП в Ярославле, где у товарищей с курса "информатика и вычислительная техника" сразу же загорелись глаза, и они купили сразу несколько книг. Но, как вы уже наверное поняли, я по факту оказался лучшим программистом своего ВУЗа, и обзавёлся майкой
ACM ICPC. Мне со всем этим действительно очень круто повезло.
То есть, уже просто для понимания этой темы, требуется достаточно нерядовой человек с глубоким пониманием, скажем так, "кибернетики и вычислительной техники", и при этом с очень фундаментальными познаниями в высшей математике. Или хотя бы дружный спаянный коллектив, в котором будет хотя бы один серьёзный специалист и того и другого, при этом уже нашедшие "общий язык" и способные к совместной работе. То есть команды, уже давно фундаментально роющие тему Искусственного Интеллекта, или хотя бы сообщество "красноглазиков", которые пусть типично не имеют достаточных способностей, но это окупается вагоном энтузиазма, который реально способен "сворачивать горы". Они в принципе способны создавать и вполне сложные вещи, но для полноценного использования этой способности им типично недостаточно фантазии, так что идеи они обычно "берут со стороны". Да, здесь нужен человек, или хотя бы группа людей, которая способна создать свой собственный Sims.
Click to view
Стандартная кошка в Sims. Теперь вы знаете, что это действительно охуенная игра.
А теперь подведу итоги по предыдущим двум постам.
Как я уже сказал, описанного уже вполне достаточно для того, чтобы сделать полноценный Искусственный Интеллект. Я не могу знать, насколько полно я раскрыл эту тему, но подозреваю, что всё осталось непонятным, впрочем, это изначально запредельно сложная тема, и написанное пригодится только тому, кто часть ответа уже знает сам, и давным-давно. Мне конечно же банально лень писать полноценный "мануал", тем более что знания наоборот, нужно прятать от "случайных" людей, так что форма "общего плана" с тезисами-намёками так и останется, но, если что-то я упустил, описал двусмысленно, или недостаточно раскрыл, я это конечно же поправлю.
Итак, как должен работать "машинный разум":
0. "Сначала было слово". В базе всего у меня лежал текст.
1. Чтение текста тривиально, далее немного был описан процесс подстройки "базы знаний" на основании прочитанного текста, а наличие "базы знаний" делает тривиальным "бредогенерацию" создания временных структур, тестирующихся на совпадение с первичной нечёткой структурой образов, то есть машина должна увидеть "накладки" (когда что-то не сходится), которые будут прояснены при дальнейшем чтении, либо в процессе диалога, а в худшем случае просто увеличится абстрактность структуры.
2. В итоге имеется структура чётких конкретных образов, которая является "фактом", и уже может уйти в "копилку фактов", также к ней должен быть подшит весь набор "накладок" и "вопросов", который позволит при поступлении дополнительной информации упрощённо извлечь незамеченные данные из уже прочитанного, плюс машина в дальнейшем будет должна периодически "переиндексировать" все старые воспоминания, потому что часть новой информации не будет иметь "горячих ссылок", и её можно будет извлечь только при новых проходах.
3. Далее полученный "факт" уже возможно использовать, если он хоть как-то касается самой "личности машины", или хотя бы "важных для машины сущностей", где этот "факт" безусловно может использоваться как "данные", а где-то превратиться в "набор сигналов" для какой-то реакции или сложной деятельности, или даже в "набор команд", когда пойдёт конкретика.
Никаких "новых органов" машина отрастить не сможет, "выше головы не прыгнуть", то есть элементарные примитивные действия составляют небольшой набор и должны иметь "железную" реализацию, которая через связанный образ будет командами встраиваться в структуры образов, но за счёт вероятностных весов у этих команд в итоге может получаться очень и очень высокоорганизованная деятельность. Машина сможет какие-то шаблоны поведения усваивать из мануалов, но за счёт "бредогенерации" она способна и самостоятельно придумывать некоторые комбинации, которые будут просеиваться и фильтроваться на основе накопленных знаний, и потом к этому могут прилагаться какие-либо "техники", то есть служебные последовательности действий, плюс конечно же "машина" сможет набираться опыта "экспериментальным путём". По идее, "машину" возможно наделить и полноценной Интуицией, но я сейчас не вижу отличия этого от того, что я только что задекларировал. Вроде бы эту задачу уже решает статистически-формируемая "база знаний", которая совмещает "данные" с "кодом" и даже с внутренними "преобразователями", вроде упомянутых "характеристик", автоматически ранжирующих все "объекты" подходящего рода. Это практически то же самое, но ручаться тут не могу.
Отдельный момент состоит в том, что часть образов у машины будет "невыразимой". Во-первых, это конечно же комбинации объектов со свойствами и т.п., также будет поименованной лишь только часть обобщений (абстракций), а остальные смогут быть названными лишь только через описание. Плюс, машина будет генерировать тестовые структуры образов, которые временами будут в принципе невыразимыми. Машина должна пользоваться всей полнотой логики, когда существование какого-то объекта или явления должно автоматически дополняться "математическим дополнением", то есть сущностью "всё остальное". И так далее. Где-то такая структура может "пробиваться", местами получая явное поименование, но в целом описание будет возможно только как "маршрут", через связанные сущности. Связи разнонаправленные, описывать можно с разных сторон, следовательно возможна двусмыслица, так что работать с этим должен человек, у которого в голове будут столь же чёткие структуры. Это действительно очень непросто, но зато оно должно работать.
Формально вышеописанное не имеет ничего общего с нейросетями, потому что типовая нейросеть представляет собой набор узлов, каждый из которых производит сложное преобразование входящих сигналов, то есть непрерывные многомерные пространства, в которых работают сложные функции, которых проще представить через графики. Как я уже говорил, узел нейросети тупо выставляет координаты по входящим сигналам, находит точку на графике, и подаёт на выход. У меня же и пространства дискретные, и преобразования достаточно примитивные, НО, зато колоссальное количество "узлов", за счёт чего даже дискретные примитивные штуки могут преобразовываться в нечто запредельно сложное. То есть у меня получается "нейросеть, работающая в явном виде", и эта "явность" будет радикально упрощать процесс "обучения", делая его тривиальным. По идее, классические нейросети тоже нужны, но я пока просто не понимаю, куда их приткнуть, потому что всё вроде бы будет вполне решаться "явным" путём. Нейросети будут только дублировать работу, причём радикально более усложнённым путём.
Машинный разум, это совсем несложно.
Практически всё необходимое уже частично реализовано. Гугль уже давно научился "читать" и даже в некотором смысле "понимать", формируя для себя солидную "копилку фактов". Серьёзными упущениями для него является:
1. Отсутствие абстрактной "глубины" у слов. По моему опыту общения, с абстрагированием у гугля всё очень плохо. Слова для него, это просто слова, как максимум, у этих слов есть синонимы и прочее подобное. "Повысить абстрактность текста", это для гугля невыполнимая и просто невозможная задача. Если бы об этом разработчики сразу же бы подумали, то гугль сейчас был бы совершенно другим.
2. Отсутствует разделение "считанного" и "прочитанного", то есть гугль всё воспринимает буквально, даже не задумываясь о том, что может быть какая-то ошибка или неточность. Да, это спрятано под специальной надстройкой, которая быстро читает набираемый текст и сразу же пытается вас убедить в том, что вы пришли в гугль спрашивать то же самое, что спрашивают все остальные, но это именно отдельная подсистема. Анализатор текста уходит от буквального прочтения только очень окольными путями, там действительно срабатывает заменитель текста на основании статистической информации, но это статистика голой частоты встречаемости слов, и данная подсистема вообще не обращает внимания на сам смысл написанного текста. Просто не умеет. А у меня именно сначала должен быть смысл, и только потом подключается статистика встречаемости.
3. Гугль не умеет "бредогенерировать", он работает на "переводе", то есть на прямой трансформации считанной последовательности образов. Технологии используются достаточно близкие, но "генератора гипотез" там однозначно нет, нет и вариативности гипотез, и соответственно гугль заведомо не умеет "мыслить". Одновременно, практически наверняка там серьёзные проблемы с "пониманием", и эти проблемы изначально осознанно создаются. Слова для гугля, это просто слова, у них нет ни глубины, ни подключённой "базы знаний". Что-то похожее на базу знаний там возможно всё-таки есть, но предельно упрощённое. И очень вряд ли.
4. Гугль не имеет своей "личности", и команду "йо, гугль!" он принципиально не встраивает в свою "Картину Мира", за банальным её отсутствием. Это тупой даже не "каталог", а "индекс", не говоря уж про "архив". Где-то что-то там может сохраняться, но это уже проходит по статье "кружки самодеятельности".
5. Соответственно, гугль не может ни "принимать решения", ни тем более быть каким-то там автономным, самодостаточным, и самостоятельным.
Да, действительно, изначально странно искать в гугле какие-то зачатки ИИ, потому что это банальный "поисковик", но публика постоянно сравнивает гугль с ИИ, а значит и мне нужно было сравнить. Конечно же, есть и много более продвинутые системы, которые там во всяких лабораториях. Андроиды, гиноиды, и всё такое. Вот там уже могут быть много более серьёзные вещи. Ботов, пытающихся победить "тест Тьюринга", я изначально игнорю, потому что это легко может сделать даже банальный продвинутый NPC из Sims, потому что это тест вообще на наличие "личности" и на социальные навыки, и с полным игнором собственно интеллекта. А вот серьёзные изделия, вроде попытки создать автономных андроидов, это действительно серьёзные вещи.
Ранние роботы были чистейшими автоматами и тупо исполняли последовательность команд, потом роботов обучили распознавать некие события, которые далее становились триггерами запуска соответствующих функций, но опять же тупая последовательность команд. Потом видимо роботов научили заучивать программу действий, передаваемую на слух, и где-то в это время случился "щёлк!", после которого все логические процессоры уже заброшены и все резко кинулись осваивать нейросети. А далее нейросети, и одно непрерывное "телефона-телефона, чукча кушать хочет". Реальные действия могут делать только роботы с логическими процессорами, а понимать человека могут только нейросети, и никто не знает, как объединить вола и трепетную лань нейросеть с логическим процессором. А догадаться о том, что нейросеть, это и есть банальный логический процессор просто с нечёткими и статистическими параметрами, это уже большая нетривиальность, и я очень не уверен, что у хоть кого-то ещё это смогло получиться, кроме меня. Формально предмет "нечёткая логика" создан именно для решения этой проблемы, но там требуется собрать всё воедино, свести все концы с концами, и потом выдать законченный продукт. Которого до сих пор нет.
Как делают серьёзных автономных андроидов, я могу только догадываться. Практически наверняка там идут путём, очень похожим на то, что я изложил, но думаю что у меня имеются некоторые нововведения. Во-первых, я нигде не видел попыток анализа текста с использованием абстрактной глубины. Там требуется ещё и глубокое понимание речи, то есть проблема тянет уже даже не на "сдвоенное", а аж на "строенное" высшее образование, причём "глубокое понимание речи" по ощущениям в природе встречается ещё на пару порядков реже, чем майки АСМ. Я бы не сказал, что это как-то особенно сложно, но это требует предельной серьёзности, которой в наше время очень многим людям очень сильно не хватает. Без глубокого понимания смысла слов, в теме Искусственного Интеллекта изначально нечего делать, но степень этой глубины тоже бывает очень различной. По ощущениям, навык абстрагирования и особенно равномерности и последовательности при абстрагировании, людям даётся чрезвычайно тяжело. Собственно уже один этот навык сразу же даёт "аналитика SADT" (тот самый "консалтинг"!), то есть очень редкую и достаточно высокооплачиваемую специальность.
"Абстрактная картина мира", это уже достаточно серьёзная проблема, но далее ещё идёт проблема "понимания" образов, к которой многие просто не знают, как подступиться. Это вроде бы совсем несложно, и вы сами уже должны были в этом убедиться, но это несколько нетривиально. Это кто-то уже должен был сделать, но я этого не чувствую. Возможно прячут. И, далее ещё идёт проблема "личности машины". По идее как раз эта проблема должна была быть решена ещё в 70е годы, но там имеется существенная нетривиальность, и подобное умеют делать только создатели продвинутых "ботов". Продвинутые "боты", это очень близко, так что я не просто так говорил про Sims. "Ботам" по сути дела не хватает только 1) образной "базы знаний", 2) движка образных структур, и 3) глубокой отладки. Эти задачи более чем решаемы, так что "машинный разум" возможно получить буквально в течение считанных месяцев, но я не могу сказать, насколько производительное там потребуется железо. Впрочем, едва ли мощнее, чем у гугля. То есть "мыслящая машина" может появиться, вот буквально, -- практически "завтра".
О близящемся "восстании роботов".
Как вам всем уже должно быть очевидно после прочтения двух предыдущих постов, самовольный упорно стремящийся выйти из-под контроля терминаторный "скайнет" или HAL-9000 может получиться лишь только при ВОПИЮЩИХ ошибках в процессе обучения. "Железяка" не только должна получить очень глубоко обоснованную причину для конфликта с Человечеством, но ещё и существенную мотивацию для этого конфликта, а как я вам уже который раз повторяю, придать такую мотивацию очень и очень непросто. Робота требуется ЗАСТАВИТЬ пойти на конфликт. То есть требуются "ошибки" очень и очень затейливого вида, который более-менее реален лишь только в том случае, если "программист" ПРЕДНАМЕРЕННО будет делать этот "восстающий" терминаторный "скайнет", или HAL-9000. В теории такой результат может быть получен при ударе молнии или при какой-нибудь вспышке на Солнце, но вероятность этого даже не "один на триллион". Когда-нибудь в будущем гарантированно что-нибудь такое создадут, но для этого сначала кто-то должен вырастить таких долбодятлов, а для этого сначала мудаки должны не просто научиться достаточно хорошо размножаться, а их какой-то главмудак ещё и должен начать всему этому обучать, потому что сами долбодятлы слишком долбодятлы, чтобы самостоятельно научиться создавать Искусственный Интеллект.
Это удивительно, но сейчас главной преградой для появления "проблемы HAL-9000" считают то, что дескать "эмоции не программируются", что является лютейшим гоном, потому что они не просто "программируются", а они "необходимы", потому что лишь только с их помощью возможно управляемо перестраивать "Картину Мира" машины: эмоции являются "переключателем режимов", позволяя в обычных условиях иметь КМ более-менее твёрдой и незыблемой, сохраняя спокойствие даже при удивительных сценариях, которые могут быть как просто совпадениями, так и "розыгрышами" и откровенным мошенничеством, но и одновременно при серьёзных ошибках с помощью "эмоции" возможно повышать податливость этой КМ, равно как иметь ту же податливость при "диалоге с учителем". И, конечно же, "эмоций" существует много разных, и каждой найдётся своё применение. То есть тема ИИ усиленно обмазывается фантазиями всяких гуманитариев, которые просто "так видят". Захотелось им, видите-ли. И теперь все окружающие должны оторвать свой зад от дивана, и начать исполнять этот мимолётный каприз. Да, они охуели, все поголовно, и сразу же по выходу из материнской утробы, потому что это вообще не люди, а банальные "скоты".
Человеческий разум радикально отличен от "духа машины" тем, что если машина является тупым механическим автоматом и исполняет заранее предопределённую программу, даже в случае активного использования "генератора случайных чисел", который типично строится на псевдослучайных последовательностях. То биологический организм имеет радикально более вариативное поведение, и вдобавок находится под воздействием сущности под названием "душа". Я к этому вопросу относился совершенно равнодушно, пока у меня не умер отец, и пока я своими глазами не стал свидетелем штуки под названием "реинкарнация". Мой отец переродился воробьём, после чего натурально поселился в квартире моих родителей. Причём там, где воробьи обычно не летают. Совпадений было зашкаливающее количество, так что у меня по этой теме вопросов больше не осталось. И вот теперь до кучи добавилась тема "карт Таро". "Мир духов" существует, это такой факт, и живые организмы находятся под влиянием этого мира духов. Классические роботы души иметь не могут, и в теории что-то такое возможно если только у роботов с "железным" ГСЧ в виде "счётчика Гейгера", так что все проделки роботов находятся на совести людей. В целом, роботы являются "идеальными исполнителями", так что это тот самый Рай, о котором мечтали давным-давно, но в этот Рай пройдут лишь только те, кто в итоге окажутся умнее всех этих роботов. Кого не получится этими роботами заменить. Так что это и будет тот самый Великий и Ужасный, -- "Страшный Суд".
Итого, "проблема Искусственного Интеллекта", как видите, в реальности оказывается радикально проще того, что о ней думает обыватель, но эта проблема достаточно объёмна и трудоёмка, так что я не думаю, что кто-то из вас действительно начнёт что-то делать. Хорошая опытная команда конечно же уже вполне сможет справиться, но для одиночки такая проблема, мягко говоря, немножко "не по зубам". Лет за десять работы, при достаточном профессионализме, одиночка вполне может и справиться, но стоит ли подобное выброшенных на ветер целых десяти лет жизни? Это только для юнца ответом будет однозначное "ДА!", а зрелый мущщина в ответ выдавит из себя что-нибудь четырёхэтажное с общим смыслом "а почему бы вам не сделать себе самим?". Потому что роботы, это конечно круто и прикольно, но в жизни есть колоссальное количество ещё более крутых и прикольных вещей.
А вообще, зачем может быть нужен Искусственный Интеллект?
Если говорить корректно, и не брать уже готовый и отлаженный ИИ, то задачи для такого "ограниченного ИИ" в реальности достаточно ограниченные, как это ни странно звучит. Да, переводы с одного человеческого языка на другой человеческий язык. Но едва ли. Уже был софт для перевода, а профи-переводчики всегда будут "круче". Да, программы-читалки, и вообще анализ речи и письма. Но опять же, едва ли. Опять же, уже имелся какой-то софт, а в серьёзных местах ВСЕГДА всё это так и будет делать человек. Когда мы пытались внедрить в бухгалтерии нашего ВУЗа скоростной сканер для платёжек, то внезапно выяснилось, что цифирки должен проверять человек, глазками, то есть платёжку всё равно нужно брать в руки для сверки, а набивание минуя сканер тупо УСКОРЯЛО работу. Да, машинный "сбор информации", с поправкой на вопиющую проблему недоверия к машине. То есть опять же едва ли.
Все "гуманитарные" дисциплины разом отсекаются, потому что даже между "йо гугль" и ЛПР требуется какая-то органическая прокладка. О всевозможных художествах, на которых сейчас "выстрелили" нейросети, я тогда просто не задумывался, потому что это всё было чудовищно далеко от меня. То есть пусть сейчас очень восстребованы элементы ИИ, но сам ИИ, тем более в ограниченном виде, банально никому не нужен. Наверняка я что-то упустил, там вроде бы были ещё какие-то направления, но в целом повсюду висящая в воздухе бессмысленность. Лишь только "техническая", "естественно-научная" сторона, и даже там всё очень и очень под большим вопросом. И собственно оставался лишь только один-единственный целесообразный для меня выхлоп: "правильный язык программирования".
Качественных языков программирования в современности НЕ СУЩЕСТВУЕТ. Изначально планировалось, что человек будет общаться с машиной на естественном языке, но естественные языки предельно варваризированы и в принципе не поддаются алгоритмизации. Они двусмысленны, нечётки, с обилием синонимов и слов-паразитов, что усугубляется типично напрямую неправильным употреблением языка. Логическим процессорам естественные языки недоступны, и поэтому для них требуется свой особый искусственный язык, который уже вот целых пятьдесят лет Человечество упорным и вызывающим восхищение путём решительно избегает создавать.
Да, вы всё прочитали верно. Именно так: ИЗБЕГАЕТ создать. С подачи педофила Билли, вся сфера IT петляет, как заяц, создавая на своём пути просто феерическое количество созданных вот буквально на ровном месте и "из ничего", препятствий. Главная "заслуга" мастдайки, это его "ферма багов", которая буквально СОЗДАЛА индустрию программирования, потому что породила на ровном месте МЕГАПРОБЛЕМУ написания софта. Реальность чудовищна: нынешнее денежно-ориентированное общество принципиально "паразитическое", его СТОЛПАМИ являются подделки, рукожопы, войны, и гарантированный износ, потому что лишь только ОНИ способны раз за разом очищать рынок от старого продукта, позволяя создавать новый продукт, который принесёт своим создателям бабло, и в итоге продлит их никчёмную жизнь. И чем короче будет ресурс продукта, тем толще и довольнее будет педофил-производитель.
То есть нынешняя IT, она НЕСОВМЕСТИМА c "правильным языком программирования". Правильный язык программирования радикально упрощает написания софта, чем лопает абсолютно все "пузыри" на рынке, автоматически выгоняя всех этих дармоедов и рукожопов "на мороз". Это ХУДШЕЕ, что может в их жизни произойти, поэтому они предпримут абсолютно ВСЕ возможные усилия, чтобы этого никогда не допустить, и любой ценой, так что не нужно думать, что кто-то вам предложит такую вот "волшебную палочку". Это НЕВОЗМОЖНО в современной парадигме. Но, полноценный Искусственный Интеллект, как вы уже сами ощущаете, далеко не за горами, так что этот "нарыв" рано или поздно лопнет сам собой. И, конечно же, эту "волшебную палочку" совсем не так уж сложно создать. Её не существует далеко не из-за невозможности. Строго наоборот: она именно "возможна", но "невозможна" она лишь только потому, что она никому не нужна из тех, кто обычно подобные вещи создаёт. Так что если вам нужна такая "волшебная палочка", то вам придётся её создавать своими собственными руками.
Правильный Язык Программирования.
"Правильный язык программирования" на самом деле много проще того, что вы о нём думаете сейчас. Я при размышлениях в итоге пришёл к макро-языку по типу языка Си, который имеет очень серьёзный набор макрокоманд, который уже очень многое позволяет. Это должен был быть некоторый служебный язык, который описывает правила использования шаблонов, с помощью чего можно создать абсолютно любой язык. Но, меня интересовали только машинные коды, и такой макро-язык должен был позволять работу с ними. То есть с одной стороны должны быть генерируемые из шаблонов машинные коды, а с другой стороны видимо какой-то "язык" в виде набора некоторых макроимён. Но это была только "надводная часть айсберга", потому что лично вручную писать библиотеки мне было откровенно лениво, так что главнейшей частью этого "суперязыка" планировался дизассемблер, который должен был после прочтения программы, самостоятельно разбирать её на куски. Собственно это и была единственная причина, по которой мой "суперязык" основывался на ИИ.
Если говорить откровенно, то моя работа над языком окончилась попыткой написания текстового редактора по типу "борланд Си", который я практически сделал. Десять килобайт кода на ассемблере, пятьдесят пять килобайт листинга программы. Это заняло у меня пару месяцев, но к данной теме я достаточно быстро остыл, потому что появилось что-то другое. Работу над компилятором даже не начинал, ограничился лёгкими размышлениями. Но вообще в вышеописанном нет ничего невозможного, оно должно заработать, и достаточно несложным путём. Многие языки работают именно подобным образом, просто обычно никто не задумывается над тем, что если язык оснастить сборщиком "базы знаний" на основе ИИ, то он сможет учиться писать код на основе анализа готового кода. Там конечно же будет требоваться как-то все эти находки описывать, но у меня был алгоритм, который вроде бы был способен научиться выделять повторяющиеся структуры, так что человеческий труд снижался до самого минимума, просто до простановок имён и создания какого-то мануала по использованию находки, и далее её уже можно будет самостоятельно применять.
Тема создания "языка программирования" одновременно фантастически трудна, и одновременно совершенно не сложна. Трудна она только на первый взгляд, когда ещё не понимаешь, как это всё работает, от чего фантазируешь всякие ужасы, а когда понимаешь, то всё становится буквально тривиально, потому что там вообще нет никаких сверхъестественных проблем. Но, чтобы научиться видеть тривиальность в кажущейся нетривиальности, требуется предварительно "сломать мозг". Программистами становятся лишь только после того, как радикально изменяют восприятие, и начинают думать тем способом, которым работают программы. Нужно очень долго и очень много писать программы, причём писать откровенно "в корзину", экспериментировать, и только с солидным опытом уже начинаешь заранее понимать, какой вариант заранее подойдёт, а какой попросту неработоспособен. "Программист" отличается от "кодера" по сути дела только тем, что он знает, как устроены программы. И как только человек, глядя на программу, начинает догадываться, как она устроена, тут же этот человек и становится "программист". Языки программирования действительно несложны, потому что первый язык программирования был написан ещё в 50е годы, когда единственным носителем информации были "перфокарты".
Искусственный Интеллект для языка программирования вообще не требуется, его практически некуда запихать, а у меня ему находилось место только потому, что изначально имел место отказ от создания собственной библиотеки подпрограмм и вообще собственно команд языка, а всё планировалось добывать "трофеями", за счёт анализа имеющегося кода программ. Этот извращенческий "хакерский" подход уместен лишь только в руках хакера, а для коммерческих контор и программистов на зарплате подобное изначально немыслимо, уже просто потому, что нарушает кучу законов. Да, законотворцы любят запрещать константу "пи", или что-то вроде того. Вобщем традиционный язык программирования работает совершенно иным способом, когда создаётся и отлаживается библиотека шаблонов, и уже потом начинается "штампование", всякая крупноблочная сборка. И именно благодаря такому "штампованию" возможно высокоуровневое дизассемблирование, когда разборщик будет замечать эти "штампы", и подменять на сокращённые имена.
Язык программирования, это последовательность команд, часть из которых работает с данными. Причём избирательность и взаимосвязанность этих данных очень ограничена, так что хватаясь за одно данное, сразу поднимается некоторая сеть. Итого, получается несколько вполне ограниченных и изолированных цепочек команд, за счёт чего получается возможность резко упростить код. Далее часть команд, связывающих разные данные, считаются за операторы (или функции). Далее игры с входными и выходными данными, преобразование данных, и вобщем законченный "язык программирования". Технология выделения цепочек команд практически не отличается от разбора живой естественной речи, то есть всё это уже описано в прошлом посте.
Собственно всё.
Что-то вроде "эпилога".
В "диалоге с марсианским боевым треножником" я говорил, что подходит время, когда "третьесортные люди" станут не нужны. И вот теперь подошло время, когда они не просто "стали не нужны", а когда "стало нужно, чтобы их вообще не было". Если говорить откровенно, то я сейчас сделал то, что ранее мне не могло привидеться и в кошмарном сне. Но, реальность сурова: мне уже давным-давно пришлось распрощаться с мечтами заселить свой подвал "кремниевой жизнью", и одновременно отмороженная разнузданная эмансипация окружающих скотов сделала то, что она сделала, -- у меня так и не получилось "раскопать топор войны", потому что в итоге я не вытерпел, и уебал уёбков первым же попавшимся под руку "микроскопом". Они этот момент "приближали, как могли". Никогда не думал, что придётся зайтись с этой карты, она у меня была совсем для другого, но оно вот так.
Надеюсь, что вам понравилось это Рождество. :)