Re: Программирование наоборот
От: blp  
Дата: 03.06.19 19:50
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Когда уже такое будет?

кое-где давно уже есть (вы настолько привыкли что не замечаете), зависит от предметной области.

см. SQL например. или Excel.
Re[3]: Программирование наоборот
От: Буравчик Россия  
Дата: 04.06.19 05:53
Оценка:
Здравствуйте, Erop, Вы писали:

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


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

Поэтому:
будут обычные люди, которые "запрограммируют простые вещи" (то, что сейчас современная команда программистов делает за год)
будут программисты, которые "запрограммируют сложные вещи" (то, о чем сейчас команды программистов могут только мечтать), которые позволят сделать еще больше простых вещей
Best regards, Буравчик
Re[6]: Программирование наоборот
От: Буравчик Россия  
Дата: 04.06.19 06:07
Оценка:
Здравствуйте, MamutArGud, Вы писали:

MAG>>>Ну то есть нет никакой "абсолютно правильной программы", а внезапно она становится «относительно правильной программой» потому что одинаковые инструкции двух разных людей приведут к созданию двух разных программ. Потому что для одного программа угадала, что надо начинать с круга, а для другого — с теста Роршаха.


Значит один мыслил "кругами", а другой "тестами Роршаха". Оба в конечном итоге придут к одному и тому же результату. Потому что у них цель такая. Но внутри "программа" будет сильно отличаться для этих двух людей. Как сейчас внутри отличается программа для разных программистов.

MAG>Какой слон? Африканский или индийский? Какой оттенок розового (у Pantone их 30 штук)? Возраст слона? Пол слона?


Ты когда в IDE создаешь проект, она у тебя много спрашивает?
Пару вопросов, но в остальном действует по-умолчанию. И тебя это вполне устраивает.

Когда ты работаешь с проектом, ты даешь команду "переименовать класс" и весь проект подстраивается под твою хотелку, все переименовывается, автоматически, без ошибок.
Просто компьютер лучше станет определять какие классы нужно переименовать, а какие нет. Просто уровень сложности команд вырастет.

Чтобы дать устраивающий результат просто надо учитывать кто сидит перед компьютером. Ребенок, взрослый, экономист, программист и т.п.
Best regards, Буравчик
Отредактировано 04.06.2019 6:07 Буравчик . Предыдущая версия .
Re[3]: Программирование наоборот
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.06.19 07:07
Оценка:
Здравствуйте, Erop, Вы писали:
E>Очевидно, что исходную пустую программу можно доразвить до машину Тьюринга, а дальше выразимы все алгоритмы.
E>Так что в "область связности" входит всё вычислимое...
Отличный заход. Но нет, неочевидно. И "дальше" — тоже неочевидно. Или вы предполагаете, что вы сначала уговорите компьютер создать МТ, а программу для этой МТ будете ему просто диктовать?
Тогда можно миновать этап создания МТ, и просто диктовать код C#.
А если нет — то даже после получения МТ нам придётся точно так же получать программу для неё последовательными трансформациями из "ничего".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: Программирование наоборот
От: MamutArGud  
Дата: 04.06.19 08:54
Оценка:
MAG>>Какой слон? Африканский или индийский? Какой оттенок розового (у Pantone их 30 штук)? Возраст слона? Пол слона?

Б>Ты когда в IDE создаешь проект, она у тебя много спрашивает?


IDE не претендует на создание «абсолютно правильной программы». И так же не претендует на «я рисую круг патамушта математика».

Б>Пару вопросов, но в остальном действует по-умолчанию. И тебя это вполне устраивает.


Б>Когда ты работаешь с проектом, ты даешь команду "переименовать класс" и весь проект подстраивается под твою хотелку, все переименовывается, автоматически, без ошибок.


Потому что когда я переименовываю «Круг» в «Слона» IDE не пытается угадать, что еще надо изменить, а просто переименовывает «Круг» в «Слона».

Б>Просто компьютер лучше станет определять какие классы нужно переименовать, а какие нет. Просто уровень сложности команд вырастет.


Пока что твое «Просто» упирается в неразрешимые противоречия.

Б>Чтобы дать устраивающий результат просто надо учитывать кто сидит перед компьютером. Ребенок, взрослый, экономист, программист и т.п.


То есть:

— нет никакой «абсолютно правильной программы». Потому что даже самое начало, «нарисуй фигуру» будет или абсолютно неправильным (я не хотел круг) или правильным только для какого-то конкретного человека (напримре, угадала, что ребенку нужен не круг, а глокая куздра).

— для создания конечного результата каждому отдельному человеку придется прилагать усилия от нулевых (цвет, рост, вес, пол слона был угадан сразу) до бесконечных (программа будет угадывать какие угодно фигуры только не те, которые нужны).
Re[8]: Программирование наоборот
От: Буравчик Россия  
Дата: 04.06.19 09:31
Оценка:
Здравствуйте, MamutArGud, Вы писали:

MAG>IDE не претендует на создание «абсолютно правильной программы». И так же не претендует на «я рисую круг патамушта математика».


Претендует. На абсолютно правильное переименование всех классов в проекте.
Т.е. был запускаемый проект до переименования (в данном контексте — это "программа без ошибок")
И после переименования имеем запускаемый проект (опять же "программу без ошибок")

Т.е. переход из одного состояние в другое не вносит дополнительных ошибок.
А так как ошибок не было с самого начала, то ошибок нет вообще.
Вот, что я называю «абсолютно правильной программой» в контексте данного топика.

MAG>Потому что когда я переименовываю «Круг» в «Слона» IDE не пытается угадать, что еще надо изменить, а просто переименовывает «Круг» в «Слона».


Моя умная IDE мне помогает и пытается угадать не только очевидные вещи.
Например, переименовывает названия классов в комментариях.
Также изменяет составные названия классов: Круг, ВиртуальныйКруг, СпециальныйКруг превратятся в Слон, ВиртуальныйСлон, СпециальныйСлон.

Я ей об этом не говорил. Видишь, она сама "догадалась" какого цвета должен быть круг и какого вида слон.

MAG>Пока что твое «Просто» упирается в неразрешимые противоречия.


Не вижу противоречий
Best regards, Буравчик
Re[9]: Программирование наоборот
От: MamutArGud  
Дата: 04.06.19 09:41
Оценка:
MAG>>IDE не претендует на создание «абсолютно правильной программы». И так же не претендует на «я рисую круг патамушта математика».

Б>Претендует. На абсолютно правильное переименование всех классов в проекте.


Нет. Не претендует. Нет никакого «нарисуй фигуру» — «программа догадалась, что надо нарисовать круг в зависимости от фазы луны».

Б>Т.е. был запускаемый проект до переименования (в данном контексте — это "программа без ошибок")

Б>И после переименования имеем запускаемый проект (опять же "программу без ошибок")

То, что программа запускается, не значит, что она без ошибок.

Б>Т.е. переход из одного состояние в другое не вносит дополнительных ошибок.


Не факт.

Б>А так как ошибок не было с самого начала, то ошибок нет вообще.


Кто сказал, что ошибок не было с самого начала?

Б>Вот, что я называю «абсолютно правильной программой» в контексте данного топика.


Для тебя абсолютно правильная программа — та, что запускается и делает что-то наугад, даже если это не то, что от нее требуется?

MAG>>Потому что когда я переименовываю «Круг» в «Слона» IDE не пытается угадать, что еще надо изменить, а просто переименовывает «Круг» в «Слона».

Б>Моя умная IDE мне помогает и пытается угадать не только очевидные вещи.
Б>Например, переименовывает названия классов в комментариях.
Б>Также изменяет составные названия классов: Круг, ВиртуальныйКруг, СпециальныйКруг превратятся в Слон, ВиртуальныйСлон, СпециальныйСлон.

Изменятся только при определенных и весьма ограниченных условиях.

Б>Я ей об этом не говорил. Видишь, она сама "догадалась" какого цвета должен быть круг и какого вида слон.


MAG>>Пока что твое «Просто» упирается в неразрешимые противоречия.

Б>Не вижу противоречий

Потому что ты упорно даже не пытаешься читать, что тебе пишут. Можем начать сначала.

Б>- Программист: Рисуй фигуру. Компьютер: Рисует круг

Почему круг? Почему не овал? Не Шар? Не Додекаэдр? Не линию?

Re[10]: Программирование наоборот
От: Буравчик Россия  
Дата: 04.06.19 10:21
Оценка:
Здравствуйте, MamutArGud, Вы писали:

MAG>То, что программа запускается, не значит, что она без ошибок.


В данном контексте, это значит, что IDE выполнила свою работу верно.

Б>>Т.е. переход из одного состояние в другое не вносит дополнительных ошибок.

MAG>Не факт.

В этом одна из целей и особенность такой системы. Система не должна вносить ошибок, связанных с переходом.

MAG>Кто сказал, что ошибок не было с самого начала?


В начальном (нулевом) состоянии ошибок нет.

MAG>Для тебя абсолютно правильная программа — та, что запускается и делает что-то наугад, даже если это не то, что от нее требуется?


Запускается и с вероятностью 80% делает то, что от нее требуется.
Если ты попал в 20%, ну что ж, тебе придется еще пообщаться с компьютером, объяснить ему.

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

Основной посыл:
Система итеративная. Делает максимально возможное и максимально хорошо, на текущий момент.
Человек направляет систему, чтобы она "подумала" в определенном направлении.

Как человек общается с человеком. Когда ты говоришь человеку: "дай карандаш",
он не задает тебе вопросов какого цвета, какой длины, новый-старый и т.п.
А дает тот, которым можно писать.

Если тебе он нужен был для другого, ты просто выскажешь новые требования. И тебе дадут другой карандаш.

MAG>Потому что ты упорно даже не пытаешься читать, что тебе пишут. Можем начать сначала.


Не надо. Похоже, мы оба не можем донести до собеседника свои мысли.
Best regards, Буравчик
Re[2]: Программирование наоборот
От: bnk СССР http://unmanagedvisio.com/
Дата: 04.06.19 11:47
Оценка: 72 (1) +1
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Буравчик, Вы писали:


Б>>Когда уже такое будет?


S>В чём будет подвох?

S>Принципиальный — в том, что каждый шаг трансформации обязан сохранять валидность программы.

С чего бы это? Насколько я понял, последовательность не обязательна.
Ты просто можешь сразу перечислить все ограничения, итеративный подход может быть просто удобнее для человека:

"Рисовать фигуру, с четырмя равными углами, белого цвета"

Типа как в прологе, но без безумия пролога.
Или, у тебя есть нейронная сеть, и ты ее тиипа обучаешь — говоришь что хочешь получить.
Отредактировано 04.06.2019 11:48 bnk . Предыдущая версия .
Re[11]: Программирование наоборот
От: MamutArGud  
Дата: 04.06.19 12:11
Оценка:
MAG>>То, что программа запускается, не значит, что она без ошибок.
Б>В данном контексте, это значит, что IDE выполнила свою работу верно.

Рамки твоего контекста очень гибкие.

Б>>>Т.е. переход из одного состояние в другое не вносит дополнительных ошибок.

MAG>>Не факт.

Б>В этом одна из целей и особенность такой системы. Система не должна вносить ошибок, связанных с переходом.


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

MAG>>Кто сказал, что ошибок не было с самого начала?

Б>В начальном (нулевом) состоянии ошибок нет.

Что такое «нулевое состояние»?

MAG>>Для тебя абсолютно правильная программа — та, что запускается и делает что-то наугад, даже если это не то, что от нее требуется?


Б>Запускается и с вероятностью 80% делает то, что от нее требуется.


В «абсолютно правильной проограмме» внезапно «вероятность 80%»

Б>Основной посыл:

Б>Система итеративная. Делает максимально возможное и максимально хорошо, на текущий момент.
Б>Человек направляет систему, чтобы она "подумала" в определенном направлении.

Define: максимально возможное. Define: максимально хорошо

Б>Как человек общается с человеком. Когда ты говоришь человеку: "дай карандаш",

Б>он не задает тебе вопросов какого цвета, какой длины, новый-старый и т.п.
Б>А дает тот, которым можно писать.

Если несколько карандашей, может задать, а может и не задать.

MAG>>Потому что ты упорно даже не пытаешься читать, что тебе пишут. Можем начать сначала.

Б>Не надо. Похоже, мы оба не можем донести до собеседника свои мысли.

Твои мысли ты прекрасно доносишь. Есть какая-то магическая система. Которая на слово «фигура» обязательно рисует идеальный круг, потому что математика. А может и не рисует, потому что она «догадывается» исходя из того, кто сидит за компьютером. Если ей дать уточнение, то она или сдеалет гарантированное действие, например, нарисует квадрат, потому что математика. Или не сделает, потому что «догадывается», «максимально возможное и максимально хорошо, на текущий момент» и прочее «вероятность 80%». И так далее и тому подобное.

Но эти противоречия ты почему-то не видишь.
Re[4]: Программирование наоборот
От: Erop Россия  
Дата: 05.06.19 21:53
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Нет. Для такого программирования надо владеть предметной областью, чтобы объяснить компьютеру, что ты хочешь создать.

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

Б>Поэтому:

Б>будут обычные люди, которые "запрограммируют простые вещи" (то, что сейчас современная команда программистов делает за год)
Примерно это уже есть во всяких скрамах с аджайлами, просто там процесс внесения правок не автоматизирован. Но с методологической т. з, это просто повышает цену ошибочных попыток.


Б>будут программисты, которые "запрограммируют сложные вещи" (то, о чем сейчас команды программистов могут только мечтать), которые позволят сделать еще больше простых вещей


Эти, всегда были и есть и будут, и они вряд ли сабжевым "программированием наоброт" будут пользоваться


Но я ещё раз говорю. Реальность нынче иная. Такого рода задачи нынче модно и получается решать в рамках подходов, базирующихся на ML
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Программирование наоборот
От: Erop Россия  
Дата: 05.06.19 21:57
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Отличный заход. Но нет, неочевидно. И "дальше" — тоже неочевидно. Или вы предполагаете, что вы сначала уговорите компьютер создать МТ, а программу для этой МТ будете ему просто диктовать?

Ну программа МТ -- это просто таблица же. Её можно легко диктовать инкрементально. Типа "так же, но в таком-то случае, делай то"...
Понятно, что это не самый эффективный способ писать программы, но это позволяет показать, что всё вычислимое достижимо, во-первых.
И наводит на мысль, что в рамках этого подхода можно тоже пользоваться чем-то вроде библиотек или "зародышей" программ, во-вторых. Ну там, берём уже кем-то как-то развитые обобщённый редактор чего-то или текстовый редактор или и развиваем до того, что нам надо.

S>Тогда можно миновать этап создания МТ, и просто диктовать код C#.

На мой взгляд показать, что можно из пустой программы развить интерпретатор C# довольно нетривиально. Через МТ проще.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Отредактировано 05.06.2019 22:03 Erop . Предыдущая версия .
Re[12]: Программирование наоборот
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.06.19 07:57
Оценка: 16 (2) +1
Здравствуйте, MamutArGud, Вы писали:

MAG>Но эти противоречия ты почему-то не видишь.

Я короче понял. Вот сейчас фото-приложения в смартфонах быстро обучаются делать фото "лучше".
В чём-то эта задача схожа в плане неразрешимости с задачей "сваргань мне программу".
То есть я просто навожу смартфон в нужную сторону и нажимаю на кнопку. Нейронка внутри пытается угадать, чего я хотел. Профессиональные фотографы учатся крутить настроечки лайтрума так, чтобы получить норм баланс белого и динамический диапазон. Беспринципная нейронка теперь делает то же самое, не отходя от кассы.
И там много всяких других "угадательных" штук — типа что если я делаю селфи в тёмной комнате около окна, то я не хочу на фотке своё отражение в стекле — я хочу себя на переднем плане, и ночной город на заднем.
Вплоть до вклейки стоковой фотки луны в мои селфи, на которых обнаружена луна.

Возможно, это нам так кажется, что писать программы — это какой-то сложный творческий процесс.
Возможно, на практике 90% потребностей клиентов можно закрыть "нейронкой", которой нужно только "показать" предмет автоматизации, а она сама родит более-менее то, что нужно.
Плюс два-три крутибельных параметра, типа "нет, главный объект тут — деньги, а не лицевой счёт", плюс десятки платных "фильтров", которые добавляют бесплатно сгенерированному 1С (или, скажем, FarCry) офигительности.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Программирование наоборот
От: Socrat Россия  
Дата: 19.06.19 13:50
Оценка:
Здравствуйте, Буравчик, Вы писали:


Б>Итого, образовалась программа рисования квадрат белого цвета. Безошибочная.


Есть в C++ абстрактные классы...

Б>Когда уже такое будет?


Когда там C++ появился?
Re: Программирование наоборот
От: 0x7be СССР  
Дата: 19.06.19 14:24
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Пора уже переходить к "программированию наоборот".

...
Б>Когда уже такое будет?
Попробуй смоделировать диалог создания какой-нибудь реальной программы.
Ну, хотя бы квиксорт так запрограммировать или, например, notepad.
Re[2]: Программирование наоборот
От: anatolym  
Дата: 11.07.19 05:20
Оценка:
Здравствуйте, IID, Вы писали:

IID>Здравствуйте, Буравчик,


Б>>Когда уже такое будет?


IID>Никогда.

IID>Потому что получим ситуацию из анекдота про магазин с уточняющими вопросами, когда мужик и унитаз притащил, и жопу показывал, а ему туалетную бумагу так и не продали.

IID>Недавняя ситуация: Делал трекинг выделяемой и освобождаемой памяти в ядре. Чтобы знать, кто и когда блок трогал, и подробности операций иметь, раскрутив стек. Трекаю область размером 4гб. Сделал трехуровневую sparsed струтуру а-ля page tables у процессоров. Чтобы и данные плотно упаковались, и индексация за константное время несколькими битовыми операциями.

IID>Как ты это объяснять будешь и сколько это времени займёт ?

Он не будет. Ему не надо. А ты будешь страдать
Re: Программирование наоборот
От: 0xCAFEDEAD  
Дата: 11.07.19 05:26
Оценка: +1
Здравствуйте, Буравчик, Вы писали:

Б>Пора уже переходить к "программированию наоборот".


Б>Компьютер формирует всегда абсолютно правильную программу сам, а программист подсказывает что изменить.

Б>Не формирует программу по частичкам (как сейчас), не говорит компу сделай все сам (как видится в фантастических рассказах), а направляет комп по чуть-чуть в нужную сторону.

Б>- Программист: Рисуй фигуру. Компьютер: Рисует круг

Б>- П: с углами. К: рисует треугольник
Б>- П: углов четыре. К: рисует квадрат
Б>- П: белого цвета. К: закрашивает квадрат

Б>Итого, образовалась программа рисования квадрат белого цвета. Безошибочная.


Б>Задача может быть и сложнее:

Б>- П: Делаем новый API. К: Ок
Б>- П: На java. К: Ок
Б>- П: RPC-JSON, а не REST. К: Ок
Б>и т.п.

Б>Когда уже такое будет?


Уже есть. Комнда разработчиков. Но ошибки бывают Даже если тестеров добавить. Но воркфлоу ооочень похож.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.