{"id":3824,"url":"\/distributions\/3824\/click?bit=1&hash=a0d33ab5520cacbcd921c07a49fc8ac5b78623b57936b992ce15c804b99210d4","title":"\u041a\u0430\u043a\u0443\u044e \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043d\u0430 DTF \u0438 \u043a\u0442\u043e \u0435\u0451 \u0443\u0432\u0438\u0434\u0438\u0442","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"75ec9ef4-cad0-549d-bbed-1482dc44e8ee","isPaidAndBannersEnabled":false}
Gamedev
perfect_genius

Идея интуитивного способа программирования — Visual Maker

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

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

Это нейросети? Нет, пока нет. Я не смог понять как они работают, поэтому делая Visual Maker попытаюсь к ним подступиться, приоткрыть чёрный ящик.

Вот как выглядит создание простой игры типа Space Invaders:

Рекомендую в первый раз смотреть отключив субтитры (они быстрые, чтобы читать на паузах)

В этой демонстрации прототипа идеи очень многое не реализовано - планирую добавить цвет, загрузку своих изображений и звука, поддержку устройств ввода (сейчас только стрелки клавиатуры), хекс-редактор, текст, а в будущем дойти и до 3D.

Если хотите попробовать прототип, то знайте, что багов в нём больше, чем в играх Bethesda. Самый мешающий - при перемещении объекта мышкой и одновременно с нажатой клавишей-стрелкой - не задерживайте движение в начале и не отпускайте клавишу сразу. Также на видеокартах от Intel курсор может быть смещён по оси Y.

Мои параметры: NVIDIA, экран 1366 х 768 (диагональ 15.5), вертикальная синхронизация под частоту экрана (60 кадров в секунду), поэтому элементы могут выглядеть мелкими (есть масштабирование колёсиком), а анимации ускорены (нажмите на корпусе вашей ПК кнопку Turbo). Если что-то пошло не так, то пока лучшее решение - перезапустить программу и повторить свои действия.

Задуманный интерфейс на данный момент:

-F1 - управляет временем: остановка, перемотка, редактор застывшего момента...

В редакторе момента задействуются кнопки мыши:

-левая - создание и удаление объекта (точка, линия, круг, квадрат...), его свойства.

-правая - перемещение, размер, поворот...

-средняя с колёсиком - управляют видом самого редактора: масштаб, положение, 2D/3D...

Функции каждой кнопки зависят от одиночного нажатия, двойного нажатия, нажатия и задержании, нажатия и перемещения курсора.

Даже если такой способ не станет полноценным программированием, то может оказаться полезным для создания презентаций, прототипирования и при начальном обучении программированию.

Какую 2D-игру хотели бы попробовать создать в ВизМейкере?
Pong
Arcanoid
Жизнь
Тетрис
Змейка
Lode Runner
Сапёр
Asteroids
Танчики
Это какая-то хрень, иди лучше убейся.
Марио
Показать результаты
Переголосовать
Проголосовать
0
98 комментариев
Написать комментарий...
Абыр Валг

Не хватает варианта "Похоже на хрень, но респект за старания".

В более сложных случаях, когда выявленную закономерность можно объяснить несколькими способами, редактор спросит напрямую или же исследует неоднозначности сам в фоновом режиме, не отвлекая человека.

Вот вы ж понимаете что такая штука крайне подвержена проблемам. Это почти как программирование чёрного ящика. Вы вроде как задаёте ввод и вывод, и кто-то (софт в данном случае) генерирует логику на основе этих данных. Но только тут ещё и тяжело передать эти параметры ввода/вывода однозначным образом.

В обучении программированию как оно есть сейчас оно тоже бесполезно, ведь программирование это в первую очередь создание алгоритма в голове. Да и так в принципе есть уже визуальные языки программирования для самых маленьких.

Ответить
Развернуть ветку
Евгений Серегин

Ну, задача благородная в том плане, что многие задачи имеют повторение и большое кол-во строк кода постепенно из "дворика" перерастают в "лес". Лично я вижу главный лейтмотив в том, чтобы визуализировать основные части, дабы минимизировать то, что в общем то даёт основу, но занимает не мало времени.

В моей голове всё выглядит так, что правой кнопкой нажимая на объект, мы как создаём основные алгоритмы (движимый ли, имеет ли ии, вес) и каждый из них является папкой-основой для дальнейшего прописывания деталей и возможностью создать шаблон. Эдакий "ярлык" на нужные строки кода, если можно так выразится, с возможностью открыть место где это всё именно прописано и дописать нужное, так же указав это как один из шаблонов.

Полёт мысли офк, но все мы понимаем, что с прописыванием кода надо реально что-то делать для сокращения времени работы с ним и увеличения ориентирования в собственно-посаженном лесом.

ВООООТ

Ответить
Развернуть ветку
Wizaryx

Чтобы не делать "лес", нужно учить паттерны и best practices того языка, на котором пишешь. Ничего сложного же, и к тому же сокращение размера кода при сохранении его функциональности - это целое увлекательное приключение

Ответить
Развернуть ветку
Евгений Серегин

Вот я к тому, что приключение в целом надо сокращать и оптимизировать, дабы минимизировать сам факт возникновения проблем, багов, конфликтов и прочего. Но це мечты

Ответить
Развернуть ветку
Олег Котов

Мне нравится рефакторить свой код на досуге.

Ответить
Развернуть ветку
Олег Котов

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

Ответить
Развернуть ветку
perfect_genius
Автор

Верите ли вы, что нейросети наступают, и что они рано или поздно доберутся до кода?

Ответить
Развернуть ветку
Олег Котов

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

Ответить
Развернуть ветку
perfect_genius
Автор

Может тогда возможно будет хотя бы приделать к ним интерфейс или конструктор интерфейса, чтобы ими могли пользоваться простые смертные?

Ответить
Развернуть ветку
Олег Котов

Если бы это было так просто, DS не был бы самой востребованной профессией в IT.

Ответить
Развернуть ветку
Читать все 98 комментариев
null