Придумал, как может выглядеть программирование будущего: показываем компьютеру что от него хотим и он пытается найти в этом закономерность. Если не находит сразу, то показываем повторно.
Конкретнее: простой графический редактор типа Paint, в нём можно создавать объекты (пиксельные, векторные, буквы-цифры) и удалять. Также перемещать, поворачивать, масштабировать с нужной скоростью. Увидев повтор в этих действиях, редактор предложит автоматизировать их повторение. Например, увидев создание объекта, потом его удаление и потом снова создание, редактор предложит повторять этот процесс, т.е. объект будет мерцать. В более сложных случаях, когда выявленную закономерность можно объяснить несколькими способами, редактор спросит напрямую или же исследует неоднозначности сам в фоновом режиме, не отвлекая человека.
Это нейросети? Нет, пока нет. Я не смог понять как они работают, поэтому делая Visual Maker попытаюсь к ним подступиться, приоткрыть чёрный ящик.
Вот как выглядит создание простой игры типа Space Invaders:
В этой демонстрации прототипа идеи очень многое не реализовано - планирую добавить цвет, загрузку своих изображений и звука, поддержку устройств ввода (сейчас только стрелки клавиатуры), хекс-редактор, текст, а в будущем дойти и до 3D.
Если хотите попробовать прототип, то знайте, что багов в нём больше, чем в играх Bethesda. Самый мешающий - при перемещении объекта мышкой и одновременно с нажатой клавишей-стрелкой - не задерживайте движение в начале и не отпускайте клавишу сразу. Также на видеокартах от Intel курсор может быть смещён по оси Y.
Мои параметры: NVIDIA, экран 1366 х 768 (диагональ 15.5), вертикальная синхронизация под частоту экрана (60 кадров в секунду), поэтому элементы могут выглядеть мелкими (есть масштабирование колёсиком), а анимации ускорены (нажмите на корпусе вашей ПК кнопку Turbo). Если что-то пошло не так, то пока лучшее решение - перезапустить программу и повторить свои действия.
Задуманный интерфейс на данный момент:
-F1 - управляет временем: остановка, перемотка, редактор застывшего момента...
В редакторе момента задействуются кнопки мыши:
-левая - создание и удаление объекта (точка, линия, круг, квадрат...), его свойства.
-правая - перемещение, размер, поворот...
-средняя с колёсиком - управляют видом самого редактора: масштаб, положение, 2D/3D...
Функции каждой кнопки зависят от одиночного нажатия, двойного нажатия, нажатия и задержании, нажатия и перемещения курсора.
Даже если такой способ не станет полноценным программированием, то может оказаться полезным для создания презентаций, прототипирования и при начальном обучении программированию.
Комментарий недоступен
Показываешь пиксельными шарадами интерпретатору форму в 3-х проекциях. Очень быстро опускаешь и очень быстро поднимаешь - это говорит, что он тяжёлый. Показываешь летящий в обхект пиксель, показываешь как он проминает объект - это говорит, что объект мягкий, а пиксель - нет.
Охуенно, короче. Вот это я понимаю, упрощение разработки. Сидеть и рисовать пиксели в надежде, что интерпретатор поймёт тебя - куда лучше, чем написать условные 10 строк.
https://www.luna-lang.org/
Охренеть О_о
Я реально в потрясении, это выглядит невероятно. Хоть и не с первого раза понятно что происходит, но интересно.
Спасибо, буду изучать.
И к чему это?
Рад, что уловили суть идеи : )
Мне интересно что тебя привело к этой идее.
И ещё интереснее твой опыт в разработке.
Однажды придумал игру и понадобилось двигать кружок с помощью стика геймпада. Я не мог! Айфон совершил революцию с телефонами, Маск запустил свою ракету, учёные изобрели ручку для левшей, а я не мог двигать нарисованным кружком на экране без изучения программирования или игровых движков с их чудовищными интерфейсами (в те времена движки, названия которых начинаются на "Un", не были такими популярными и удобными, как сейчас).
А ещё рисовал сетку - выделял квадратик и заполнял его копиями весь экран, компьютер молча наблюдал за этим процессом. Что за чёрт, компьютер?! Ты помощник человека или нет? У тебя много ядер и гигабайты памяти, оперируешь огромными потоками информации, подсказываешь как можно завершить слово, но не можешь углядеть повторы в моих действиях?! Для этого же не нужен искусственный интеллект!
В моей игре всё должно было быть из блоков как в Террарии, но каждая со своей физикой, т.е. движки и конструкторы тех времён не подходили по производительности. А ещё юношеский максимализм + перфекционизм заставили изучать ассемблер, чтобы мои программы были идеально оптимальными : )
Этого было мало и я опустился ещё на уровень ниже - как работает процессор на физическом уровне. Писал свою виртуальную машину и дебаггер, чтобы понять, как можно программирование сделать наглядным-понятным и избавиться от багов и других проблем этой индустрии. Оказалось, что удобнее оптимизировать уже готовое работающее, чем собирать программу с нуля из "атомов-кирпичиков", и надо бы научить компьютер создавать программы. С детства интересовался работой мозга, и вдруг дошло, что главная его цель - находить повторы во всём.
Опыта в программировании мало, т.к. изучал только то, что требовалось для решения очередной задачи. Нравится решать интересные задачи, а не проблемы текстового программирования, типа пропущенной скобки. Похоже, нашёл целую нетронутую нишу - интерактивное творчество для каждого.
Видимо, этот самый максимализм так и не выветрился.
Вместо ассемблера надо было учить плюсы, тогда бы ты представлял себе что такое ООП и почему это самая популярная парадигма. Проблемы в виде пропущенных скобок не особо актуальны уже через пару недель/месяцев в зависимости от обучаемости, а самым упёртым в деле забывания синтаксиса помогают IDE.
Так что с точки зрения разработчика идея выглядит бессмысленной. И не потому что я ебанутый ретроград, а потому что это действительно куда менее удобно, чем чёткие команды копуктеру. Ещё раз повторюсь. В разработке важно, чтобы твой код был читаем (причина популярности python). А тут сторонний человек в итоге ни черта не поймёт. Это просто сто баллов минусом сразу.
Для людей, для которых кодеры - это волшебники, которые какими-то неебическими заклинаниями заставляют машину слушаться это, может и выглядит клево, но на деле гораздо проще выучить несколько языков, чем заставить машину понимать человека по невнятным конвульсиям.
И да, когда Маск запустил ракету, движки на Un уже давно существовали. И на Cry тоже. И на Hav и так далее.
Зачем видеть код? Человек запускает программу, что-то хочет изменить - меняет.
А как он узнает что конкретно надо изменить, ало? Проследив действия? А если они непрозрачны типа HTTP-запросов и парсинга контента? Как он будет узнавать на каком конкретно этапе ошибка?
Они будут прозрачными и не только они, всё.
Просто я не рассказал о других режимах просмотра.
Это питон то читаем?
Да, лол.
Прочитал интерпретатору как "Императору". Я представил туториалы по этой схеме. Прыжок можно и в 1-2 строки написать. Идея провальная, как это дебагить потом? Или там был сарказм? -_-)
Нет. Не было. Чувак реально почему-то думает, что это удобнее обычного погроммирования.
Видишь баг - перематываешь назад и не даёшь багу случиться.
В игре на демонстрации как-раз возникает баг - пульку заставляем возвращаться обратно, а также следовать за пулялкой. В итоге можно обнаружить, что пустив пульку и двинув пулялку - пулька переместится к пулялке и продолжит полёт. Человек этого не хочет, значит баг, значит надо исправлять, значит отмотать время назад на момент движения пулялки и заблокировать перемещение пульки к пулялке. Баг исправлен.
А вот баги, которые человек проглядел - буду делать список ограничений человека, по которому программа проходится и ищет возможные нежелательные ситуации, например типа "пункт 5: человек не может видеть объект белого цвета на белом фоне".