Придумал, как может выглядеть программирование будущего: показываем компьютеру что от него хотим и он пытается найти в этом закономерность. Если не находит сразу, то показываем повторно.
Конкретнее: простой графический редактор типа Paint, в нём можно создавать объекты (пиксельные, векторные, буквы-цифры) и удалять. Также перемещать, поворачивать, масштабировать с нужной скоростью. Увидев повтор в этих действиях, редактор предложит автоматизировать их повторение. Например, увидев создание объекта, потом его удаление и потом снова создание, редактор предложит повторять этот процесс, т.е. объект будет мерцать. В более сложных случаях, когда выявленную закономерность можно объяснить несколькими способами, редактор спросит напрямую или же исследует неоднозначности сам в фоновом режиме, не отвлекая человека.
Это нейросети? Нет, пока нет. Я не смог понять как они работают, поэтому делая Visual Maker попытаюсь к ним подступиться, приоткрыть чёрный ящик.
Вот как выглядит создание простой игры типа Space Invaders:
В этой демонстрации прототипа идеи очень многое не реализовано - планирую добавить цвет, загрузку своих изображений и звука, поддержку устройств ввода (сейчас только стрелки клавиатуры), хекс-редактор, текст, а в будущем дойти и до 3D.
Если хотите попробовать прототип, то знайте, что багов в нём больше, чем в играх Bethesda. Самый мешающий - при перемещении объекта мышкой и одновременно с нажатой клавишей-стрелкой - не задерживайте движение в начале и не отпускайте клавишу сразу. Также на видеокартах от Intel курсор может быть смещён по оси Y.
Мои параметры: NVIDIA, экран 1366 х 768 (диагональ 15.5), вертикальная синхронизация под частоту экрана (60 кадров в секунду), поэтому элементы могут выглядеть мелкими (есть масштабирование колёсиком), а анимации ускорены (нажмите на корпусе вашей ПК кнопку Turbo). Если что-то пошло не так, то пока лучшее решение - перезапустить программу и повторить свои действия.
Задуманный интерфейс на данный момент:
-F1 - управляет временем: остановка, перемотка, редактор застывшего момента...
В редакторе момента задействуются кнопки мыши:
-левая - создание и удаление объекта (точка, линия, круг, квадрат...), его свойства.
-правая - перемещение, размер, поворот...
-средняя с колёсиком - управляют видом самого редактора: масштаб, положение, 2D/3D...
Функции каждой кнопки зависят от одиночного нажатия, двойного нажатия, нажатия и задержании, нажатия и перемещения курсора.
Даже если такой способ не станет полноценным программированием, то может оказаться полезным для создания презентаций, прототипирования и при начальном обучении программированию.
Полезно разве что в качестве интересного упражнения для разработчика
для создания презентаций, прототипированияЕсть более удобные инструменты
при начальном обучении программированиюОно не может научить программированию, т.к. идея была сделать инструмент, не требующий программирования
В каких из них можно за одно движение объектом назначить ему его направление, скорость, условия начала его движения и конца? В планах сделать ещё и определение ускорения, чтобы человек мог либо изначально плавно менял скорость, либо в начале и конце.
идея была сделать инструмент, не требующий программированияМожет, автор лучше знает какую идею он хотел? :D
Идея была сделать безтекстовое программирование. Алгоритм - это просто определённая последовательность действий. В демонстрации это:
-Переместить пульку туда, где находится пулялка, когда пулька заканчивает движение.
-Перемещать пульку туда же когда перемещается пулялка.
-Не перемещать пульку, если уже пущена (на данный момент не реализована перемотка времени назад, поэтому это первый логичный баг - она перемещается к пулялке даже пущенной, а также анимация не останавливается, т.к. не сделал ещё остановку)
А программированние -- это не алгоритмы :)
Есть декомпозиция задачи.
Ну идея конечно интересная, но я вижу это разве что как вспомогательный инструмент для не очень широкого спектра задач, т.к. элементарные операции для этого способа "программирования" не определены
Без Тьюринг-полноты сделать инструмент широкого назначения представляется мне крайне маловероятным
Элементарные операции - создание/уничтожение, перемещение, поворот и масштаб. Вам этого мало? :D