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