OberonCore
https://forum.oberoncore.ru/

Программирование "под доказательство"
https://forum.oberoncore.ru/viewtopic.php?f=82&t=1896
Страница 1 из 1

Автор:  Валерий Лаптев [ Понедельник, 06 Апрель, 2009 12:10 ]
Заголовок сообщения:  Re: Подскажите какой язык программирования выбрать?

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

Федор Васильевич, а можете показать, как это писать "под доказательство"?
Хотелось бы видеть в "натуре" и в процессе.
Дисциплину программирования читал, даже Науку программирования Гриса - тоже читал.
Но никогда не писал программ "под доказательство".
Однако постоянно пользовался пошаговым уточнением.

Автор:  Info21 [ Понедельник, 06 Апрель, 2009 13:01 ]
Заголовок сообщения:  Re: Подскажите какой язык программирования выбрать?

Валерий Лаптев писал(а):
как это писать "под доказательство"?
Хотелось бы видеть в "натуре" и в процессе.
Дисциплину программирования читал, даже Науку программирования Гриса - тоже читал.
Но никогда не писал программ "под доказательство".
Однако постоянно пользовался пошаговым уточнением.
Ой. Хороший вопрос, но полный ответ требует подготовки материала.
На самом грубом уровне разница видна здесь:

http://www.inr.ac.ru/~info21/texts/2005 ... ide13.html
http://www.inr.ac.ru/~info21/texts/2005 ... ide14.html

Две программы эквивалентны. Но правильность первой была установлена предварительным преобразованием ко второй.
Вторая -- как раз "под доказательство".

Автор:  Валерий Лаптев [ Вторник, 07 Апрель, 2009 08:06 ]
Заголовок сообщения:  Re: Подскажите какой язык программирования выбрать?

Info21 писал(а):
Валерий Лаптев писал(а):
как это писать "под доказательство"?
Ой. Хороший вопрос, но полный ответ требует подготовки материала.
На самом грубом уровне разница видна здесь:

http://www.inr.ac.ru/~info21/texts/2005 ... ide13.html
http://www.inr.ac.ru/~info21/texts/2005 ... ide14.html

Две программы эквивалентны. Но правильность первой была установлена предварительным преобразованием ко второй.
Вторая -- как раз "под доказательство".

Да, хорошо видать разницу.
Однако меня и при первом прочтении книги Дейкстры, и сейчас не покидает мысль, что написание "под доказательство" касается только самого начального программирования.
То есть максимум до уровня написания процедур и функций.
В любой промышленной системе есть развитое окружение, которое частенько позволяет заменить показанные вами проги одной строкой.
Таким образом, получается, что Дейкстрины методы хороши при обучении программированию, при создании стандартных библиотек.
Ну, и если промышленному программеру действительно приходится писать нетривиальные процедуры. Однако если следовать советам экстремальных программистов, то размер методов следует ограничивать 1-5 строками. Тут и без всякого доказательства все сразу видать.

В промышленном программировании гораздо более важным является хорошая декомпозиция. Причем на всех уровнях (см. опять же Дейкстра - архитектура THE).
А в этом деле формальные методы фактически отсутствуют. И что с этим делать - пока неясно. Полно книжек с советами, как надо делать, или как делать не надо.
Однако все это - только опыт экспертов.

Автор:  Alexey_Donskoy [ Вторник, 07 Апрель, 2009 08:48 ]
Заголовок сообщения:  Re: Подскажите какой язык программирования выбрать?

Вот именно!

Автор:  Иван Кузьмицкий [ Вторник, 07 Апрель, 2009 09:27 ]
Заголовок сообщения:  Re: Подскажите какой язык программирования выбрать?

Тогда получается, что идеал промышленного программиста - это программист, не умеющий программировать. В общем-то, про это Дейкстра и писал...

Автор:  Alexey_Donskoy [ Вторник, 07 Апрель, 2009 09:29 ]
Заголовок сообщения:  Re: Подскажите какой язык программирования выбрать?

Просто получается, что есть ещё над чем поработать! :D

Автор:  Валерий Лаптев [ Вторник, 07 Апрель, 2009 09:50 ]
Заголовок сообщения:  Re: Подскажите какой язык программирования выбрать?

Иван Кузьмицкий писал(а):
Тогда получается, что идеал промышленного программиста - это программист, не умеющий программировать. В общем-то, про это Дейкстра и писал...

Да об этом кто только не пишет!
Для правильного обучения программеров нужно сначала научить преподавателей правильной постановке курса. А они уже - научат программеров. Например, у нас программирование на 1 курсе преподает человек, который не является программистом по образованию. Это не критично, поскольку чел - математик. Но вот о правильной постановке курса - просто не знает. И узнать неоткуда - только если по собственной инициативе в сети копаться будет.
И кстати, это накладывает ограничение на освоение ББ, поскольку литературы просто нет. Для программиста по образованию , да еще с опытом работы освоить ББ много проще, нем непрофессионалу.

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

Автор:  Пётр Кушнир [ Вторник, 07 Апрель, 2009 09:55 ]
Заголовок сообщения:  Re: Подскажите какой язык программирования выбрать?

Валерий Лаптев писал(а):
Для программиста по образованию , да еще с опытом работы освоить ББ много проще, нем непрофессионалу.
Это на личном опыте? А у меня вот наоборот. Легко пошёл, я и не образован специально, и без опыта работы был. Так что не факт, не факт.

Автор:  Евгений Темиргалеев [ Вторник, 07 Апрель, 2009 10:01 ]
Заголовок сообщения:  Re: Подскажите какой язык программирования выбрать?

Валерий Лаптев писал(а):
И кстати, это накладывает ограничение на освоение ББ, поскольку литературы просто нет. Для программиста по образованию , да еще с опытом работы освоить ББ много проще, нем непрофессионалу.
Да. Проблема литературы стоит... Но я бы добавил сюда, что какой-нить Делфи/Билдер/Вижуал студию непрофессионалу нормально не освоить и при наличии литературы. Да и литература - большой процент базируется на переводе документации (типа какие свойства у этого компонента и какие у вон того).

А документация ББ, между прочим, содержит и методич. составленные учебные пособия и подсистему Obx и т. д. И перевод есть... С более подробным описанием безусловно проще, но...было бы желание.

Автор:  Валерий Лаптев [ Вторник, 07 Апрель, 2009 11:44 ]
Заголовок сообщения:  Программирование "под доказательство"

Пётр Кушнир писал(а):
Валерий Лаптев писал(а):
Для программиста по образованию , да еще с опытом работы освоить ББ много проще, нем непрофессионалу.
Это на личном опыте? А у меня вот наоборот. Легко пошёл, я и не образован специально, и без опыта работы был. Так что не факт, не факт.

Вообще, наверное, да. Без всякого опыта как первую среду - освоить начинающему проще.
Или уже опытнейшему программеру, поработавшему во многих средах и языках.
А среднему, со сложившимися стереотипами - сложно.
К сожалению, таких большинство.

Автор:  Valery Solovey [ Среда, 08 Апрель, 2009 13:58 ]
Заголовок сообщения:  Re: Подскажите какой язык программирования выбрать?

Валерий Лаптев писал(а):
Однако меня и при первом прочтении книги Дейкстры, и сейчас не покидает мысль, что написание "под доказательство" касается только самого начального программирования.
То есть максимум до уровня написания процедур и функций.
Книгу я до конца пока не дочитал (отложил из-за более приоритетной на данный момент задачи), но думаю, что предисловию автора можно доверять : ). А там он говорит, что оставляет за рамками книги процедуры, потому что эта тема не менее сложная, чем описываемый материал, но является менее важной по сравнению с содержанием книги. Как-то так.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/