Придумал, как может выглядеть программирование будущего: показываем компьютеру что от него хотим и он пытается найти в этом закономерность. Если не находит сразу, то показываем повторно.
Конкретнее: простой графический редактор типа Paint, в нём можно создавать объекты (пиксельные, векторные, буквы-цифры) и удалять. Также перемещать, поворачивать, масштабировать с нужной скоростью. Увидев повтор в этих действиях, редактор предложит автоматизировать их повторение. Например, увидев создание объекта, потом его удаление и потом снова создание, редактор предложит повторять этот процесс, т.е. объект будет мерцать. В более сложных случаях, когда выявленную закономерность можно объяснить несколькими способами, редактор спросит напрямую или же исследует неоднозначности сам в фоновом режиме, не отвлекая человека.
Это нейросети? Нет, пока нет. Я не смог понять как они работают, поэтому делая Visual Maker попытаюсь к ним подступиться, приоткрыть чёрный ящик.
Вот как выглядит создание простой игры типа Space Invaders:
В этой демонстрации прототипа идеи очень многое не реализовано - планирую добавить цвет, загрузку своих изображений и звука, поддержку устройств ввода (сейчас только стрелки клавиатуры), хекс-редактор, текст, а в будущем дойти и до 3D.
Если хотите попробовать прототип, то знайте, что багов в нём больше, чем в играх Bethesda. Самый мешающий - при перемещении объекта мышкой и одновременно с нажатой клавишей-стрелкой - не задерживайте движение в начале и не отпускайте клавишу сразу. Также на видеокартах от Intel курсор может быть смещён по оси Y.
Мои параметры: NVIDIA, экран 1366 х 768 (диагональ 15.5), вертикальная синхронизация под частоту экрана (60 кадров в секунду), поэтому элементы могут выглядеть мелкими (есть масштабирование колёсиком), а анимации ускорены (нажмите на корпусе вашей ПК кнопку Turbo). Если что-то пошло не так, то пока лучшее решение - перезапустить программу и повторить свои действия.
Задуманный интерфейс на данный момент:
-F1 - управляет временем: остановка, перемотка, редактор застывшего момента...
В редакторе момента задействуются кнопки мыши:
-левая - создание и удаление объекта (точка, линия, круг, квадрат...), его свойства.
-правая - перемещение, размер, поворот...
-средняя с колёсиком - управляют видом самого редактора: масштаб, положение, 2D/3D...
Функции каждой кнопки зависят от одиночного нажатия, двойного нажатия, нажатия и задержании, нажатия и перемещения курсора.
Даже если такой способ не станет полноценным программированием, то может оказаться полезным для создания презентаций, прототипирования и при начальном обучении программированию.
Комментарий недоступен
Показываешь пиксельными шарадами интерпретатору форму в 3-х проекциях. Очень быстро опускаешь и очень быстро поднимаешь - это говорит, что он тяжёлый. Показываешь летящий в обхект пиксель, показываешь как он проминает объект - это говорит, что объект мягкий, а пиксель - нет.
Охуенно, короче. Вот это я понимаю, упрощение разработки. Сидеть и рисовать пиксели в надежде, что интерпретатор поймёт тебя - куда лучше, чем написать условные 10 строк.
Это один первых вопросов, который задал себе и быстрый ответ не нашёл. Конечно, зная физику и формулы сделать физику в ВизМейкере должно быть чуть легче, чем на традиционных языках, потому что можно будет напрямую оперировать объектами, векторами и т.д. Но это всё равно слишком сложно и низкоуровнево для обычного человека, поэтому скорее всего придётся реально использовать нейросеть, чтобы обучать. Посмотрим, самого интересует.
Починил:
Это ж только визуализация, при чём только пиксельная. Никакой логики из этого сделать нельзя. Это станет понятно, например, после первой попытки реализовать сохранение / загрузку.
Сразу видно вы мега-гига-дупер-супер-пупер-жупер-мастер логики и системного мышления.
А вот если бы вы были обычным гуманитарием, тогда бы вы интуитивно догадались, что "только пиксели" можно заменить спрайтами. А здесь предоставлен прототип на примитивах.
Да, визуализация, но на котором человек без знания программирования уже может сделать несколько простых игр уровня самых первых игр индустрии. И каждая следующая добавленная фича будет увеличивать доступные возможности в геометрической прогрессии.
Пиксели - чтобы начинать с простого к сложному, да и банально стоит 20-кратное масштабирование при запуске, можете покрутить колёсиком и вернуть 1:1
А что там с сохранением/загрузкой? С текстовым/хекс-редактором можно будет проводить любые манипуляции с данными и файлами.
Это как законы ньютона переизобретать :)
Эйнштейн-же смог.
В ответ скажете "Но ты же не Эйнштейн"? : )
Комментарий недоступен
More like monitor learning in off mode.
Вспомнил, снова пригорело
Не хватает варианта "Похоже на хрень, но респект за старания".
В более сложных случаях, когда выявленную закономерность можно объяснить несколькими способами, редактор спросит напрямую или же исследует неоднозначности сам в фоновом режиме, не отвлекая человека.Вот вы ж понимаете что такая штука крайне подвержена проблемам. Это почти как программирование чёрного ящика. Вы вроде как задаёте ввод и вывод, и кто-то (софт в данном случае) генерирует логику на основе этих данных. Но только тут ещё и тяжело передать эти параметры ввода/вывода однозначным образом.
В обучении программированию как оно есть сейчас оно тоже бесполезно, ведь программирование это в первую очередь создание алгоритма в голове. Да и так в принципе есть уже визуальные языки программирования для самых маленьких.
Ну, задача благородная в том плане, что многие задачи имеют повторение и большое кол-во строк кода постепенно из "дворика" перерастают в "лес". Лично я вижу главный лейтмотив в том, чтобы визуализировать основные части, дабы минимизировать то, что в общем то даёт основу, но занимает не мало времени.
В моей голове всё выглядит так, что правой кнопкой нажимая на объект, мы как создаём основные алгоритмы (движимый ли, имеет ли ии, вес) и каждый из них является папкой-основой для дальнейшего прописывания деталей и возможностью создать шаблон. Эдакий "ярлык" на нужные строки кода, если можно так выразится, с возможностью открыть место где это всё именно прописано и дописать нужное, так же указав это как один из шаблонов.
Полёт мысли офк, но все мы понимаем, что с прописыванием кода надо реально что-то делать для сокращения времени работы с ним и увеличения ориентирования в собственно-посаженном лесом.
ВООООТ
В видео в каком моменте тяжело? Хочу, чтобы элемент что-то делал после чего-то. Делаю это чего-то и после делаю с элементом то, что хотел бы, чтобы делала программа. Повторяю это пару раз, проверяю, что оно делает что хотел.
программирование это в первую очередь создание алгоритма в головеДалее сделаю ввод букв-цифр, и вот с ними можно будет делать сортировки, например пузырьком. Да и вообще любой алгоритм, по идее.
уже визуальные языки программирования для самых маленьких.Они же всё ещё текстовые.
Полезно разве что в качестве интересного упражнения для разработчика
для создания презентаций, прототипированияЕсть более удобные инструменты
при начальном обучении программированиюОно не может научить программированию, т.к. идея была сделать инструмент, не требующий программирования
В каких из них можно за одно движение объектом назначить ему его направление, скорость, условия начала его движения и конца? В планах сделать ещё и определение ускорения, чтобы человек мог либо изначально плавно менял скорость, либо в начале и конце.
идея была сделать инструмент, не требующий программированияМожет, автор лучше знает какую идею он хотел? :D
Идея была сделать безтекстовое программирование. Алгоритм - это просто определённая последовательность действий. В демонстрации это:
-Переместить пульку туда, где находится пулялка, когда пулька заканчивает движение.
-Перемещать пульку туда же когда перемещается пулялка.
-Не перемещать пульку, если уже пущена (на данный момент не реализована перемотка времени назад, поэтому это первый логичный баг - она перемещается к пулялке даже пущенной, а также анимация не останавливается, т.к. не сделал ещё остановку)
Представил производительность сколько-нибудь сложных штук написанных таким способом. Удачи в поисках суперкомпьютера.
Это больше для создания-прототипирования, чем производительность. Т.е. если в этом будет удобнее быстро проверить идею, убедиться в её годности и потом уже писать на серьёзном производительном языке, то это уже будет успех.
А так в планах - перевод в LLVM.
Комментарий недоступен
С нейросетями вот так и мучаются? Вот бедненькие программисты, тогда точно надо что-то с этим делать.
Неявная задача алгоритма.
Люди давно уже учат нейросети без всяких алгоритмов грузя в них : исходные данные и результат.
Не зная, что происходит внутри чёрного ящика.
Валидацию всё равно пилить надо.
Исходя из вводных, и желаемого результата, компьютер, конечно, может построить, некую, на первый взгляд, рабочую цепочку...
Но по факту эта цепочка алгоритма может оказаться или не эффективной, или "случайно" рабочей, или рабочей только в специфичных условиях (то есть, в других условиях, с человеческой точки зрения, логически прохожих, эта же цепочка алгоритма будет работать совершенно некорректно, или откажется работать вовсе).
К тому же, при необходимости правки или отладки, сделать это будет весьма проблематично, т.к. код писал не username.
В общем, волшебства не бывает.
Вернее бывает, но создаём мы его как правило сами, последовательным трудом.
Да, работы много ожидается. Мне нравится решать интересные задачки, поэтому не терпится встретиться с ними.
В крайнем случае будет режим низкоуровневого вида, чтобы точнее разобраться что же там происходит.
это не обучение программированию однозначно, я загружаю в черный ящик то, что я хочу, а дальше он выдает мне какой-то результат, при этом ученик понятия не имеет как работает алгоритм внутри и все, что делает это ученик, тыкает в кнопку повтора, пока не получится нужный результат. В чем здесь обучение, мышкой кликать?
п.с. с учетом планов автора по развитию я уже представляю как он рисует взаимодействие предметов разной формы, из разного материала с другими предметами в разных средах, и ждет n-ое кол-во времени , пока его не-нейронка заново изобретет законы физики.
Не какой-то, а какой требовался. Если всё же не такой, то извините, значит это мой косяк и надо бы исправить баг : )
при этом ученик понятия не имеет как работает алгоритм внутриВы знаете как физически внутри процессора перемножаются числа, как работают логические операции, как операционные системы/компиляторы обращаются с памятью и оперируют нашим кодом? Даже если знаете, то много кто не знает.
Насчёт законов физики - много ли игр с достоверной физикой? Или может в программах каждый день вам приходится иметь с ними дело?
Это ж обычный макрос. Или я чего-то не понял?
Действительно, оно. Только не обычный, а визуальный.
По ходу, автор просто не застал пик славы Flash (по сути он создал пару спрайтов и ключевых точек анимации).
Иначе он бы не стал такой фигней страдать.
Застал и даже пробовал делать анимацию. Уже тогда поражался, почему нельзя интуитивно за одно перемещение объекта назначить ему его направление, скорость и условия начала его движения и конца.
Не особо понимаю как оно в принципе может работать, но по тому, что я вижу, скорее не взлетит. Выше уже правильно расписали что по поводу проблем, что про обучение. Добавлю то, что сложные взаимодействия таким образом пилить будет если и реализуемо, то больше похоже на ад. Посмотри на те же UE4 Blueprints From Hell.
Пользовались ArtMoney или подобными поисковыми программами?
Если нет и не знаете, то опишу: память программы - целое полотно разнообразных безликих цифр, и какая-то одна из них является нужным нам значением, например количеством сердечек жизни. Допустим их 5, запускаем поиск-отсеивание всех пятёрок в этом полотне. Из тысячи цифр остаётся сотня. Теперь надо бы изменить количество сердечек, чтобы увидеть это изменение среди тех отсеянных цифр. Получаем урон в игре и сердечек становится 4. Снова ищем-отсеиваем среди тех пятёрок те, которые стали четвёрками. Из сотен их останется уже несколько. Снова получаем урон... Таким образом останется одна цифра (или больше). Меняем его уже в поисковике и смотрим изменение уже в игре - в игре окажется столько сердечек, сколько ввели. Нашли, можно увеличить и/или заморозить - поисковик будет всегда записывать в память игры эту цифру, пока запущена с игрой.
Похожее хочу сделать в ВизМейкере - чтобы при каждом повторе действия отсеивались несовпавшие значения-результаты разных подсистем-алгоритмов (а их можно напихать все известные человечеству).
Моя цель - чтобы не надо было повторять-отсеивать много и долго, желательно только 2-3 раза.
Ад блюпринтов решил своей блок схемой, похожей на ДРАКОН, но лучше.
Идея хорошая, но не избавляет от прописания цепочек событий if-then, посему довести бы до ума идею. К примеру возможность выделения объекта/ов с возможностью правой кнопкой выбрать If-1 или Then-1. Тем самым указывая что If-1 делает, чтобы вызвать Then-1. Там же, правой кнопкой, иметь возможность нажать "триггер" и в итоге указывать область где он сработает для If-1.
Что касается веса, то ввести в правой кнопке нужный пункт интерактивности модели, где один из пунктов будет вес.
Конечно у идеи много подводных камней в 3D проектах, но в 2D затея нормальная, как по мне. Хотя с разрушаемостью, реакцией на удар/попадание и всей "пластичностью" я хз как сделать
Тогда получится обычная среда визуального программирования, только убогая.
Вы описываете конструкторы игр типа Construct. Я хочу заменить интерфейсы повторением действия и подтверждением/опровержением догадки компьютера.
Лучше опишите задачку, решение которой хотели бы увидеть.
Область-триггер можно сделать и сейчас нарисовав эту область, переместив в него объект и делать с ним то, что хотели бы, чтобы делала программа при попадании в эту область. Когда появится цвет - область можно будет закрашивать в прозрачный.
Мне кажется, я 1-2 года назад что-то такое уже читал на хабре вроде бы. Вы и раньше про него уже писали?
Да, на Хабре несколько раз описывал в комментариях, например вот целое полотно: https://habr.com/ru/company/1cloud/blog/315230/#comment_9910818
Предложил этот материал в Песочницу - не приняли с формулировкой "реклама". Поэтому получился эксклюзив для DTF : )
Выглядит весьма забавно :)) Интуитивное программирование.
Очень интересный подход, имеет право на существование и интересно будет раскрыть его потенциал.
Конечно некоторые вещи так не запрограммируешь, по типу таблицы чисел, но определённые задачи можно сымитировать.
Автору ни в коем случае не стоит бросать идею.
С появлением чисел можно будет делать с ними всё.
На данном этапе к такой концепции много вопросов. Но вообще программирование должно стать более верхнеуровневым. Я сейчас изучаю юнити, и несмотря на то, что даже в голове у меня есть четкий алгоритм, как его реализовать я не понимаю. Как только вижу какой-нибудь roomNavigation = GetComponent<RoomNavigation> (); мне становится плохо. Синтаксис большинства языков пока не готов к пришествию людей (таких как я), которые не могут уложить в голове все эти абстракции, инкапсуляции и рекурсии.
А здесь не будет такого сложного выбора - лишь кнопки мыши : )
Синтаксис языка учится за 2 месяца максимум. Даже сложный типа С++
Для тех, кто не может уложить в голове абстракции и инкапсуляции, существует язык C и процедурное программирование.
Более того, приведённая строчка из C# станет понятна даже девятикласснику после одного 40-минутного занятия. Русский язык гораздо сложнее, чем любой язык программирования, но почему-то его синтаксис никого не смущает.
А теперь самое интересное: чем программирование более высокоуровневое — тем больше в нем абстракций.
Кстати, вот как можно закрасить экран (пока отключено, теперь закрашивать можно будет двойным нажатием левой кнопки):
https://im3.ezgif.com/tmp/ezgif-3-92a3e5ca7193.gif