Кубическое программирование. Пост 1, постановка задачи

Некоторые идеи лучше не держать в себе. Тем более, в данном случае я совершенно не уверен, что додумался до подобной мысли первым. Однако, ничего похожего до сих пор не было реализовано. Значит, либо я упускаю из вида какие-то нюансы задачи, либо просто надо подождать ещё немного. Ещё можно было бы запилить по этому поводу стартап, но на данном этапе жизни у меня достаточно глобальных начинаний. Пожалуй, пусть этим займется кто-нибудь другой.

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

Нету вот именно такой штуки, которая нужна вот именно этому пользователю. Потому что именно такая штука, нужна исключительно и только ему. А больше она никому даже в голову не приходила. И уж понятно, что никто именно этого не запрограммировал.

А ведь большинство подобных проблем можно решить при помощи нескольких строк кода. Но вот беда — порог входа в это ваше программирование слишком высок. Кучу теории надо прочесть, осознать множество абстрактных понятий, синтаксис ещё этот. Вообще, сложность изучения программирования сильно недооценена обывателем. Ему зачастую кажется, что пройди он несложный онлайн-курс, ему бы покорилось написание хотя бы таких несложных программ, в которых он сам ежедневно нуждается. И которых не существует.

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

Реальный размер порога входа таков, что нашему условному пользователю было бы лучше продолжать жить с нерешенными задачами такого типа, чем тратить вот столько времени на их решение. Метод не окупается для большинства случаев. Смежный метод — нанять программиста, потратив деньги вместо времени — также зачастую не срабатывает. Это довольно дорого, хотя бы потому, что вам придется потратить рабочее время разработчика, объясняя ему, что вы хотите. Ещё, зачастую, вы не можете определить реальную трудоемкость решения той или иной задачи. А потому вынуждены верить на слово человеку, которому было бы очень выгодно вас обмануть. А если программист попался ещё и не из Честного Круга, что тогда?

А ещё велика вероятность получить на выходе не то, что было нужно. Люди зачастую переоценивают свои коммуникативные способности и пребывают в уверенности, что всё досконально объяснили. А потом выясняется, что вот эту фразу можно было понять тремя такими-то способами, а вот эти два нюанса вы вообще не проговаривали. И, вроде бы, код соответствует фактически поставленной (транслированной разработчику) задаче, но вот задачу настоящую выполнить не способен. Его вообще немного для другого придумывали. Опять всё сначала, короче.

А ведь большинство проблем по-прежнему решается с помощью нескольких строк кода. Более того, набор необходимых строк, хоть и велик, но весьма ограничен. Люди редко нуждаются в чем-то действительно принципиально новаторском. Обычно речь идет о несложном алгоритме, включающем в себя несколько давно написанных на множестве языков стандартных функций.
А наш пользователь, если его хорошо мотивировать реальностью результата, мог бы немного посидеть и составить блок-схему нужного ему алгоритма. Серьезно, они это могут, они о своей проблеме обычно годами думают, им расписать задачу в виде схемы ничего не стоит. Трудности обычно начинаются на следующем этапе, когда красивую и логичную блок-схему требуется превратить в послание на загадочном нечеловеческом языке.

Стоп, а так ли надо нашу блок-схему во что-то превращать? Она же сама, структурно, — алгоритм. Ах да, там внутри непонятные машине надписи на русском языке, да в свободной форме. Это придется учесть и как-то решить. Но всё же, может мы не будем заставлять нашего пользователя вот прямо так брать и писать код? Потому что мы пробовали его заставлять, и он не хочет. А потом мы прикинули и выяснили, что он правильно не хочет. А надо, чтобы хотел и мог, тогда удельная полезность всей вычислительной индустрии в среднем для человека сильно повысится. Машина будет делать именно то, что нужно пользователю, наступит изобилие и благорастворение воздухов.

Но что нужно сделать, чтобы стало так?

 

Оригинал >>