Возможно, вам в какой-то момент захотелось заняться сочинением музыки. Или, например, программированием. Или, я не знаю, стихосложением. Как начать? Вы же ничего не знаете?
Ответ, на самом деле, довольно интуитивен: надо посмотреть, как делают другие, разобраться, как там ходят и как сдают, и начать пробовать. В какой-то момент вам что-то станет понятно, а в какой-то другой момент, если вы не бросите раньше — ваши программы будут правда делать то, что вы от них хотели, а ваши мелодии и стихи начнут кому-то нравиться.
Однако, я вам-таки гарантирую, что и в этом промежутке, и после него вам обязательно встретятся умудрённые опытом и очень серьёзные люди, которые серьёзным голосом дадут вам серьёзный совет: так нельзя — сначала надо выучить теорию.
И не дай бог вам последовать этому совету.
Дело в том, что следование ему примерно аналогично «этим не должен заниматься никто до наступления неизвестного момента времени в будущем».
Поскольку теорию вышеперечисленного невозможно выучить.
Поскольку её нет.
«Но как же так?! — удивитесь, наверное, вы. — А что же тогда изучают в вузах? И что же нам тогда советуют сначала выучить?»
О, с последним вопросом всё просто: в качестве совета вам дают некую выглядящую очень солидной фразу, в надежде показаться очень серьёзным и глубоко понимающим.
Но вот для других двух вопросов сначала надо понять, что вообще значит слово «теория».
Если мы посмотрим в словарь, то обнаружим, что это — некое «обобщение практического опыта». И таки да, это правда так, однако сама по себе эта фраза нам ничего не говорит. Поскольку, например, обобщением опыта вполне может оказаться «ой, раз за разом ничего не получается», однако вряд ли это можно рассматривать как теорию.
Дело в том, что ключевое свойство теории — она должна обладать прогностической силой. То есть в том или ином виде предсказывать будущее заметно более хорошо, чем его предсказывает бросок игрального кубика или монетки. Эти предсказания должно быть возможно проверить экспериментами или другими упорядоченными наблюдениями. И они должны быть таким образом довольно много раз хорошо проверены на предмет сбываемости.
Если проверить некие предположения гипотетически можно, но это ещё не сделано, а стихийные наблюдения вроде бы не противоречат этим предположениям, и, наоборот, часто с ними совпадают, то эти предположения — «гипотеза». То есть то, что могло бы оказаться правильным объяснением или описанием закономерностей, но ещё неизвестно наверняка, оказалось ли.
Любая теория в какой-то момент была гипотезой, а потому уже на раннем этапе можно проверить предположения на тему «могут ли они вообще стать теорией хоть когда-то».
Например, если по ним невозможно сделать прогноз — не могут. И если прогнозы никак нельзя проверить — тоже не могут. Это — ненаучная философия, хороший сюжет для фантастической книги, способ создать секту, но не будущая теория.
Например, если вы объясняете тот факт, что некоторые люди играют на скрипке хорошо, а некоторые — плохо, тем, что в хорошо играющих вселяется специальный «скрипичный дух», направляющий их руку, то теорией и даже гипотезой это всё не станет до тех пор, пока вы не придумаете способ, как этот дух можно обнаружить. Причём, что немаловажно, обнаруживаться он должен так, чтобы его нельзя было перепутать с чем-то другим — например, с количеством и методикой тренировок. Поскольку, например, если по вашему предположению тренировки — это подношения данному духу, то одни и те же наблюдения будут давать одни и те же результаты, что с концепцией «скрипичного духа», что без концепции.
Два наиболее магистральных проявления прогностической силы теории можно условно назвать «описательным» и «технологическим».
«Описательная» составляющая как бы говорит нам: «Если наблюдается вот это и вот это, то потом обязательно будет наблюдаться вон то».
Ну там, например, если на небе вдруг появились чёрные тучи, что-то там вдали постоянно сверкает и при этом до вас доносится характерный грохот, то через какое-то время пойдёт дождь.
Заметьте, вполне нормально, что это — не стопроцентная гарантия. Быть может, ветер унесёт тучи в другую сторону и дождя не будет, однако прогноз, сделанный таким способом, будет сбываться гораздо чаще, чем если бы вы прогнозировали наступление дождя ежечасным подбрасыванием монетки.
Тем временем, в «технологической» составляющей это всё как бы развёрнуто в обратную сторону. Она как бы говорит: «если у вас вот такая цель, то вам для её достижения надо сделать вот это и вот это».
Если вы хотите попасть из пушки в мишень, координаты которой вам известны, то возьмите вот этот набор уравнений, подставьте на место соответствующих переменных координаты пушки и мишени, начальную скорость ядра и ускорение свободного падения, а также, возможно, ещё что-то; после чего решите эту систему уравнений и организуйте стволу пушки тот угол наклона, который у вас получился в результате. Теперь стреляйте — в мишень вы вроде бы должны попасть.
Оба два — действительно проверяемые прогнозы. Вы вполне можете посчитать, сколько раз вы угадали с дождём и сколько раз правда попали в мишень за большое количество попыток, а потом сравнить это с частотой успехов у генератора случайных чисел, дабы убедиться, что при прочих равных деньги имеет смысл ставить на вас, вооружённого теорией, а не на этот генератор.
И вот ради них-то как раз и существуют теории, для сбывающихся прогнозов.
Однако в процессе описания закономерностей некоторые фразы становятся очень громоздкими, из-за чего возникает соблазн изобрести какие-то новые слова для сокращения таких фраз. Эти слова иногда тоже считают как бы «теорией», однако, нет, они — «терминология». Которая может сопутствовать теории, но ею не является.
Например, даже если вы выучите наизусть определения понятий «масса», «угол», «начальная скорость» и т.п. и будете употреблять их исключительно к месту, то это всё равно не даст вам способа попадать в мишень из пушки.
Да, чуть-чуть закономерностей вы, конечно, из определений извлечёте. Ну там, например, узнав, что «скорость» — это изменение какой-то величины за единицу времени, вы, возможно, догадаетесь, как можно узнать, чему стала равна эта величина, если «скорость» на отрезке времени была постоянной, а начальное значение величины и продолжительность отрезка времени вам известно — умножить «скорость» на продолжительность временно́го отрезка и прибавить к этому начальное значение величины.
Возможно, подумав ещё, вы даже догадаетесь, что и при переменной скорости всё равно можно узнать конечное значение: надо разбить весь отрезок на очень-очень-очень маленькие отрезки и просуммировать все изменения на них.
Однако даже если вы придумаете для этого процесса какое-то специальное слово, типа «интегрирование», как именно что-то там проинтегрировать, вы всё равно знать пока что не будете. Ну да, сама идея уже понятна, однако определения для её использования слишком мало: нужно ещё что-то.
Равно как про Второй закон Ньютона и закон Всемирного тяготения вы из определений физических терминов тоже ничего не узнаете.
Поскольку способы взятия интегралов и формулы, отображающие законы природы, в основном существуют вне определений терминов математики и физики.
Так вот, терминология, конечно, может немножко помочь — в деле сокращения фраз. Однако без неё было бы чуть длиннее, но всё равно прогностическую силу имело бы, тогда как с ней, но без реальной теории, прогностической силы просто не будет.
Терминология — это одна из иллюзий теории.
И многие пленяются этой иллюзией, начиная думать, будто бы выучивание всех этих красивых и серьёзно звучащих слов действительно позволяет им хорошо понимать некоторую тему. Вон, например, Василий Пупкин знает очень много терминов: сразу понятно — прошарен в физике. И я выучу — тоже буду.
Так вот, вы-таки удивитесь, однако в целом ряде как бы «теорий» нет ничего, кроме терминологии. И хорошо ещё, если этим словам там хотя бы приписан какой-то однозначный смысл — часто бывает и так, что они вообще неясно, что означают, а потому из них можно складывать какие угодно комбинации и ни одна из них не будет иметь никакого смысла.
Пусть, например, термин «катный» означает, что тамес верзивулы спучен в репалии. А «тамес» — это промежуток между сияей и лумой, в тот момент, когда тазка не спучена.
Из этих слов, возможно, будут получаться очень научно звучащие предложения, хотя вполне понятно, что никаких реально наблюдаемых закономерностей они на данный момент не отображают и никаких практически полезных прогнозов не дают.
Конечно, данный пример — идеализация. Полная неопределённость в терминологии встречается редко — обычно термины всё-таки означают нечто, каким-то образом похожее на что-то реально, а иллюзорны при этом сами заявленные закономерности: либо они не имеют внятного, непротиворечивого и последовательного описания, либо никак не проверялись никакими экспериментами и скорее всего даже не могут быть ими проверены, либо оба два сразу.
К чему я это всё? Я это к тому, что в перечисленных в начале статьи областях — программировании, музыке и стихосложении — на данный момент есть очень много довольно хорошо определённых терминов, но почти нет описания закономерностей и способа построения технологии.
Но постойте, как же так? Неужто все эти вещи, типа «цикла», «тональности» и «ямба» с его «хореем» — вещи типа «спученного тамеса верзивулы».
Что вы, конечно, нет. Всё это можно наглядно и однозначно обнаружить в целой куче программ, песен и стихотворений, и не просто предъявить их кому-то со словами «верь мне», а даже обучить кого угодно обнаруживать их самостоятельно.
Однако вот в чём штука: все они описывают некие реально встречающиеся микро-закономерности и приёмы, но способы «технологически» объединять их в более крупное практически неизвестны.
Взгляните, например, на лингвистику. В текущем своём состоянии она отлично описывает устройство языков. Вы можете взять учебник, например, по английскому и разобраться с тем, как строить любую фразу на английском. Вы можете взять словарь и посмотреть в нём значения всех слов. Мало какая область знаний может похвастаться подобным.
Если у вас есть предложение, например, на русском, то трудами лингвистов вам дана отличная технология перевода её на английский.
Однако никакой лингвист не сможет вам сказать, какое содержание вам следует вложить в это предложение. И никто из них не сумеет предсказать, какими предложениями и в каком порядке лично вы будете доносить вашу текущую мысль. И никто не знает алгоритма, по которому вы, аки компьютер, могли бы получить из мысли раскрывающий её текст.
По этой причине, несмотря на отличное описание языков, автоматизированный перевод всё ещё так себе: ведь обычно надо передать не просто какие-то отдельные слова, а смысл повествования. А для этого надо бы понимать, как одно связано с другим.
С этим справляется нейросеть — даже в мозге ребёнка — и до какой-то степени уже справляются искусственные нейросети, но всё ещё нет теории, которая это всё уверенно моделирует. Ни в плане прогноза того, что будет наблюдаться, ни в плане технологии построения текстов, соответствующих цели.
Хороший лингвист, знающий язык, без проблем укажет на ваши ошибки в предложениях на этом языке, сумеет исправить эти ошибки и, возможно, вычислит по ним, что именно вы не понимаете в грамматике. Чего там, он даже может дать совет, как сделать ваш совершенно правильный текст ещё лучше. Однако он не сможет вам заранее сказать, каким именно должен быть этот ваш текст без ошибок, пока его ещё нет.
То есть в наличии имеется теория устройства целой кучи языков, теория перевода предложений, теория проверки текстов на грамотность, чуть-чуть теории улучшения текстов, но нет теории их создания — в плане превращения мыслей в тексты и обратно.
Благо, лингвистика на это и не претендует.
Однако вот программирование, музыка и стихосложение, как и некоторые другие направления человеческой деятельности, они как раз вот про это: про создание «текстов» из мыслей.
И для них тоже до некоторой степени есть та теория, которая как бы про «лингвистику», но почти что совсем нет той теории, которая про «семантику» — про создание и выражение смыслов.
Если программист понял, что должна делать ваша программа, он может отыскать в ней ошибки. Он может поправить их. Он сам может написать вам такую программу. Он может примерно оценить глубину ваших познаний. Но он не может дать вам алгоритм, по которому следует писать какую угодно программу. Он лишь может показывать вам пример за примером и объяснять смысл конструкций языка, пока нейронная сеть в вашей голове каким-то чудесным нейросетевым образом не научится делать аналогичное тому, что делают он и другие программисты.
Уж где-где, а в программировании — люди программируют. И будь известен способ, как по некому формальному описанию цели получать соответствующий ей код, он был бы уже запрограммирован. Однако кодогенераторы для отдельных случаев есть, а для общего случая их нет. Даже в виде намёток.
Пусть музыканты и поэты далеко не всегда умеют программировать, но некоторые-то умеют. Они бы запрограммировали многое, если бы хоть кто-то знал, как это сделать.
Было бы очень удобно иметь какой-то такой софт, который при каждом клике на кнопку выдавал бы хорошую мелодию — особенно, если с заданными параметрами.
Было бы очень удобно и обратное: ты показываешь софту мелодию, а он говорит, хорошая она или нет: тогда можно было бы генерировать случайные мелодии и выбирать из них хорошие.
Было бы очень удобно иметь софт, который говорил бы, что поменять в стихотворении, чтобы оно стало цеплять сильнее.
Однако цельной теории нет, а потому нет и такого софта. В лучшем случае, есть только софт, который иногда генерирует хорошую мелодию, или, скажем, рекомендует вам рифму, которая иногда оказывается хорошей. Это, конечно, лучше полной случайности, но всё ещё даже близко не финал.
Ни та, ни другая составляющая прогностической силы не работает так, как, например, они работают в физике. Мы не можем предсказать, ни как что-то будет, зная, как есть сейчас, ни как дойти до известной нам цели от известного нам положения вещей. Мы даже не знаем, как, имея цель и стартовую точку, надёжно сказать, правильно ли мы идём от второго к первому.
Это лучше генератора случайных чисел, но лишь чуть-чуть. Не теория, а «намётки прототеории». Всё ещё на 99% состоящие из гипотез.
Нейронную сеть в мозге человека и даже искусственную нейросеть можно натренировать на куче уже готовых примеров до какой-то такой степени, что они начнут весьма хорошо справляться с такими задачами. Однако никто не знает, как такого же достичь аналитически. То есть на базе некой «теории», а не на базе тренировки «интуиции».
Вот в математике, например, как брать производную — известно. И софт для этого уже давно есть.
Известно даже, как искать доказательство некой теоремы в рамках формальной системы аксиом. Не прямо вообще универсально для всех случаев, но для очень обширного их множества. И такой софт тоже уже есть — вопрос только в дальнейшей оптимизации перебора, как это когда-то было в шахматах.
А в музыке, стихосложении и программировании — увы.
Там способы действия что софта, что человека на данный момент базируются на некотором наборе локальных приёмов и сведений вида «если сделать вот так, то вообще не будет работать» или «вот для этого случая уже известна пара вариантов», однако основным инструментом всё равно оказывается та самая интуиция и перебор вариантов с помощью интуиции же, поскольку слишком уж их в общем случае много.
Причём даже эти «эвристики для некоторых уже известных случаев» — весьма шаткие.
Вы, таки да, можете посчитать ударные слоги в строке стихотворения, и вроде бы для хорошего следования ритму нужна их регулярность, однако иногда с пропущенным слогом строка звучит лучше, чем с полной регулярностью. А иногда с полной регулярностью она всё равно звучит плохо.
Таки да, если вы заранее выберете тональность и будете использовать только соответствующие ей ноты, то вам проще будет найти хорошее их сочетание. Однако далеко не каждое сочетание будет хорошим — такие только лишь будут чаще встречаться. При этом добавление ноты не из тональности по каким-то причинам может сделать композицию лучше.
Таки да, есть программистские библиотеки с очень удобными при написании программ абстракциями. Однако никто не знает, как закономерно получать такие абстракции — хоть каким-то образом, кроме озарения.
И так далее.
Есть что-то, большее нуля и лучшее генератора абсолютно случайных чисел, но оно всё равно оказывается гораздо хуже натренированной «интуиции».
При этом вам расскажут кучу мифов о каких-то специальных источниках, в которых «настоящие учёные» уже со всем разобрались и всё изложили. Надо только прочесть. «Сначала». И «выучить».
Но эти источники, видимо, засекречены масонами, поскольку, если вы вдруг полезете их искать, то обнаружите, что вся «теория алгоритмов» состоит из пережёвывания идеи о том, что можно в некоторых случаях посчитать, сколько операций будет сделано каким-то алгоритмом и сравнить это с количеством операций, которые сделает другой алгоритм для получения того же результата.
В теории стихосложения вам в сотый раз объяснят, как посчитать слоги, а даже про рифму всё уже будет куда как более расплывчато. Какую рифму, например, считать хорошей. Ту, в которой все буквы совпали? А почему тогда не слово с самим собой — там же все буквы совпадают? Или надо не все буквы? А сколько? А почему два глагола в качестве рифмы звучат убого, но вон то вон отдалённое созвучие, с одной лишь общей буквой, наоборот, кажется крутым?
Всё же остальное окажется чистой воды субъективизмом и толчением в ступе мутной воды про «духовность» и «тонкие чувства».
В музыке, аналогично, вам со скрежетом неоправданно переусложнённой терминологии и системы записи расскажут, что такое «ритм» и что такое «тональность», но всё остальное точно так же сведётся к демонстрации примеров частных случаев.
Ну да, там (в отличие, кстати, от программирования) эти случаи чуть-чуть лучше упорядочены и даже для эвристик чуть больше хороших «метафор», однако это всё равно лишь самую малость выше уровня догадок и, в дополнение, содержит кучу каких-то преданий старины глубокой вперемешку с «духовностью» и «тонкими чувствами».
Фактически, вся «теория» этих областей состоит из способов проверки корректности — не особо надёжных, перечня отдельных и очень локальных приёмов, и терминологии.
И, конечно, рекомендаций. Которые иногда могут помочь, но далеко не всегда.
Например, доминант-септаккорд хорошо разрешается в тонику. Красивая фраза, да? И она ведь даже имеет реальный смысл, а не просто имитирует наукообразность!
Однако, вот вопрос, а почему, как оказывается, не только он? И почему, если все песни целиком строить на этом манёвре, то это надоест уже к середине первой?
Ну да, потому что реальный интерес вызывается балансом между новизной и повторениями, соответствием ожиданиям и противоречием им. И в стихах оно тоже так же. И одно такое соответствие ожиданиям в музыке мы знаем. И в стихах знаем: «кровь — любовь». Или даже два: «век — человек». Но что толку, если мы всё ещё ничего не знаем про то, как алгоритмически организовать тот самый искомый баланс? И как генерировать вторую — «неожиданную» — часть? И даже, в общем-то, первую — кроме отдельных частных случаев?
О да, в программировании программу будет гораздо проще читать, если там нет глубокой вложенности: цикла в цикле в цикле с условием в условии в условии. И даже известны некоторые способы, как глубокую вложенность превратить в линейность. Это — полезная штука. Однако как бы ещё узнать способ получения перечня действий, соответствующих некоторой цели? Ну, чтобы записать оные линейно или, пусть даже, в виде цикла в цикле в цикле?
Не-не, всё понятно, мне моя нейронная сеть в голове это подсказывает. Иногда. Но она мне, вон, и строчки для стихов тоже иногда подсказывает. Однако, где тут некая «теория»? Это ж — чистой воды интуиция. Результаты которой я чуть-чуть проверяю «теорией» постфактум, хотя в основном ориентируюсь на личные ощущения и юнит-тесты.
Я был бы очень рад — дайте мне теорию, которая позволит мне всё то же самое получать априорно и без интуиции.
Многие другие, кто ещё не натренировался, будут даже ещё больше такому рады.
Давайте.
Но только теорию, а не рекомендации «сначала её выучить».
Теорию, пусть не абсолютную, но хотя бы той степени развитости, которая есть в математике и физике: чтобы целый ряд задач можно было выполнять софтом или так, будто ты — биологический эмулятор этого софта, то есть не задумываясь.
Я бы даже с радостью взял теорию, которая хотя бы представляет собой хорошо оптимизированный перебор чего-то там. Но только чтобы он правда мог перебором найти почти всё: и тебе Шекспира, и тебе Баркова; и тебе Моцарта, и тебе Секс Пистолз; и тебе Фотошоп, и тебе Вольфрам Математику.
Но нет и такой.
Да, я двумя руками за то, чтобы её найти. И даже дополнительно ещё двумя ногами проголосую, если это поможет.
Однако не надо делать вид, что она уже есть, когда даже первых намёток оной очень мало.
Пока нет теории, регулярная тренировка с уже имеющимися локальными подсказками закономерно даёт результат, а разучивание заклинаний — нет.
Оно даёт только лишь иллюзию. С тем же успехом можно было бы молиться богам и ждать, что со дня на день они тебе сниспошлют понимание, а потому ты не тратишь время зря.