OberonCore https://forum.oberoncore.ru/ |
|
Аналоги трудов Бертрана Мейера для Си++ https://forum.oberoncore.ru/viewtopic.php?f=26&t=6204 |
Страница 1 из 2 |
Автор: | Wlad [ Четверг, 28 Декабрь, 2017 02:48 ] |
Заголовок сообщения: | Аналоги трудов Бертрана Мейера для Си++ |
Попрошу срача и религиозных войн не начинать. Итак: есть ли что-то подобное книгам Б.Мейера по монументальности, охватности и основательности, для Си++? Встречалось ли? Что кто может рекоменднуть? |
Автор: | Илья Ермаков [ Четверг, 28 Декабрь, 2017 04:47 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
С Мейером не сравнить, но разумная очень книга по культуре программирования, паттерны алгоритмов и др. Романов Е. Л. Практикум по программированию на C++ |
Автор: | Rifat [ Четверг, 28 Декабрь, 2017 08:15 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Основная идея в книгах Мейера - это контрактное программирование, которое в свою очередь раскрывается через предусловия, постусловия, инварианты циклов. Также в книгах Мейера большое внимание уделяется правильному использованию объекто-ориентированного программирования. Соответственно, если в книге по C++ также рассматриваются предусловия, постусловия, инварианты и правильное объектно-ориентированное программирование, то можно считать, что эта книга похожа на книгу Мейера. P.S. Кстати, я виделся с Бертраном Мейером. |
Автор: | Info21 [ Пятница, 29 Декабрь, 2017 02:33 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Не вполне понятен вопрос: разве понятия предусловий и т.д. зависят от языка? |
Автор: | Rifat [ Пятница, 29 Декабрь, 2017 09:56 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Эти понятия не зависят от языка. Но то, включены ли эти понятия в книгу по какому-нибудь языку, зависит от языка. Лично мои приблизительные оценки. Думаю, что большинство книг по Eiffel содержат понятия о предусловии, постусловии и инварианте, так как эти конструкции входят в синтаксис языка, поэтому необходимо их описывать. Процентов 10% книг по языку Pascal содержат эти понятия. 0,1% книг по языкам C/C++ содержат эти понятия. Единственная книга, которая мне встретилась, где бы описывался C++ и эти понятия, - это книга "Жемчужины программирования". Думаю, что трудно описывать понятие инварианта цикла, когда в цикле могут быть множественные break, continue, goto и return, поэтому, чтобы не вдаваться в подробности, эти понятия обычно скромно умалчиваются. И не знаю, встречаются ли эти понятия в книгах по ассемблеру. Лично я не встречал. |
Автор: | Valery Solovey [ Пятница, 29 Декабрь, 2017 19:10 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
То, включены ли эти понятия в книгу по какому-нибудь языку, зависит от автора. |
Автор: | Rifat [ Пятница, 29 Декабрь, 2017 19:48 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Valery Solovey писал(а): То, включены ли эти понятия в книгу по какому-нибудь языку, зависит от автора. Пришла на ум следующая аналогия. Можно ручку при письме держать пальцами рук, а можно пальцами ног. Писать пальцами рук проще, поэтому так и пишут. Также и здесь, есть языки, где эти понятия гармонично ложатся на язык и там их чаще всего используют, а есть языки программирования, где их можно с трудом описать, поэтому их там чаще всего не описывают. А так да, дело за автором рукой писать или ногой |
Автор: | Trurl [ Пятница, 29 Декабрь, 2017 22:00 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Если книга про язык, то незачем включать всякие лишние понятия. А если про методы программирования, автор обычно выбирает язык, на котором удобнее иллюстрировать. Бывают еще редкие случаи, когда автор хочет показать, что эти методы можно применять даже на ф̶о̶р̶т̶р̶а̶н̶е си. |
Автор: | Valery Solovey [ Среда, 03 Январь, 2018 20:26 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Trurl писал(а): Если книга про язык, то незачем включать всякие лишние понятия. А если про методы программирования, автор обычно выбирает язык, на котором удобнее иллюстрировать. Так изначальный вопрос про инварианты, а не про справочник по синтаксису.В аспекте инвариантов Оберон и плюсы почти не отличимы. Подходы к проектированию будут практически одинаковы. |
Автор: | Valery Solovey [ Среда, 03 Январь, 2018 20:37 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Rifat писал(а): есть языки, где эти понятия гармонично ложатся на язык и там их чаще всего используют, а есть языки программирования, где их можно с трудом описать, поэтому их там чаще всего не описывают. Ни в каких языках эти понятия не описывают. Их используют. И тоже не в языках. А в программах. Которые не из слов языка остоят, а много из чего. А текст программы - это лишь жалкое отражение того, что имеется в виду на самом деле.Плюсы не сказать, что хуже Оберона в этом месте. Эйфиль я бросил изучать не дойдя до середины, поэтому моё мнение на его счёт слишком грубое, но на мой взгляд и в этом языке понятия постусловий, инвариантов и предусловий лишь косметические. Ни от каких ошибок в этом аспекте язык не защищает. Да и вообще непонятно, как от таких ошибок может защитить хоть како-нибудь язык программирования. |
Автор: | Wlad [ Среда, 03 Январь, 2018 23:50 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Valery Solovey писал(а): Да и вообще непонятно, как от таких ошибок может защитить хоть како-нибудь язык программирования. Расширьте и углубьте. |
Автор: | Info21 [ Четверг, 04 Январь, 2018 11:47 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Wlad писал(а): Valery Solovey писал(а): Да и вообще непонятно, как от таких ошибок может защитить хоть како-нибудь язык программирования. Расширьте и углубьте.На уровне языка -- это на уровне статики. Что эквивалентно статической верификации семантической правильности программы (что, скажем, вызов процедуры изнутри какого-нибудь цикла состыкован по её пред- и постусловиям с одной стороны, и гарантирует инвариант цикла с другой) на уровне компилятора. Действительно, звучит нереально. |
Автор: | Valery Solovey [ Суббота, 06 Январь, 2018 16:35 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Да. Или если посмотреть немного с другого угла и воспользоваться другими словами, то то же постусловие - это синоним слова "цель". Постусловие - это цель, которой должен достичь участок кода, к написанию которого мы сейчас готовимся. Цель нашего участка кода в конечном счёте диктуется характеристиками той программы, разработку которой нам поручили. В свою очередь, цель любой мало-мальски полезной программы - автоматизация. То есть, мы пишем участок кода программы, которая автоматизирует ряд действий в какой-то области. Назовём эту область предметной. И инвариант - это крупица предметной области. Языки общего назначения - ада, лисп, оберон, си и т.д. - имеют различия по ряду признаков. Но и кое-что общее у них есть. А именно - в их синтаксисе нет элеметнов предметных областей. Всех предметных областей. Но зато есть кирпичики, из которых эти элементы можно построить. Таким образом, в коде программы на языке общего назначения сущности предметной области представлены идиоматически. И то же ООП такое популярное именно потому, что даёт очень удобно представлять идиомы. Но даже ООП не решает всех проблем. Например, нет гарантий, что метод вызывается в нужное время. Или что ему переданы правильные параметры. Программист лишь в своей голове может прокрутить все ситуации и все условия. Язык за него это не сделает. Максимум, что может быть в языке - синтаксически отведённое место для того же постусловия. Теряется гибкость, но зато голове не приходится тратить калории на поиск подходящего места, и она может заняться более важным делом - собственно постусловием. И когда до собственно постусловий и инвариантов доходит, то ни эйфиль, ни плюсы друг от друга сильно не отличаются. Есть пару замечаний: 1. Всё выше сказанное касалось только языков общего назначение. Предметно ориентированные языки - это отдельная тема. По-хорошему, там тоже не должно быть синтаксической поддержки постусловий, предусловий и инвариантов - всё уже запаковано внутрь. Но я всех предметных языков не видел, поэтому допускаю, что где-то такие конструкции будут к месту. 2. Алгебраические типы данных и т.п. отчасти решают проблему инвариантов. Но только если они реализованы под конкретную задачу. А если их нужно реализовать, то мы снова сталкиваемся с изначальной проблемой. 3. Поскольку одну и ту же задачу иногда можно решить разными способами (исходя, например, из того, чем мы готовы платить: временем или местом), то постусловие, предусловие и инвариант тоже будут отличаться. Но сумма всех постусловий для программы всё равно приведёт к программе, которая будет решать поставленную задачу. То есть, немного различающиеся наборы "крупиц" способны покрывать одну и ту же предметную область. |
Автор: | Wlad [ Воскресенье, 07 Январь, 2018 02:59 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Valery Solovey писал(а): Да. ... Несколько раз перечитал, так и не уразумел, про что и зачем это всё было написано...
... ... способны покрывать одну и ту же предметную область. |
Автор: | Valery Solovey [ Воскресенье, 07 Январь, 2018 23:48 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Ну, я не знаю как объяснить лучше. |
Автор: | Wlad [ Понедельник, 08 Январь, 2018 13:46 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Valery Solovey писал(а): Ну, я не знаю как объяснить лучше. Ну, объясните, например вот эту вашу сентенцию: Постусловие - цель. Насколько я понимаю, как и предусловие, постусловие - проверка нахождения в некоей области, только для постусловия это проверка после проведения работы функцией. Оно не описывает, что мы должны получить. Оно лишь проверяет, что процессе вычислений и операций мы не вылетели за пределы доменов в результатах. |
Автор: | Wlad [ Понедельник, 08 Январь, 2018 13:57 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Valery Solovey писал(а): Ну, я не знаю как объяснить лучше. А, вообще-то, лучше и - не надо. Подобные разговоры были актуальны где-то до 2005 года. Потом История (для 99% программистов) закончилась. |
Автор: | Rifat [ Понедельник, 08 Январь, 2018 15:13 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
А что случилось в 2005 году? |
Автор: | Info21 [ Понедельник, 08 Январь, 2018 15:38 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Wlad писал(а): Valery Solovey писал(а): Ну, я не знаю как объяснить лучше. Ну, объясните, например вот эту вашу сентенцию: Постусловие - цель. Насколько я понимаю, как и предусловие, постусловие - проверка нахождения в некоей области, только для постусловия это проверка после проведения работы функцией. Оно не описывает, что мы должны получить. Оно лишь проверяет, что процессе вычислений и операций мы не вылетели за пределы доменов в результатах. Постусловие проверяет всё, что можно проверить в имеющихся ограничениях по эффективности. Никто не запрещает, например, проверить, что массив действительно упорядочен после сортировки. |
Автор: | Comdiv [ Понедельник, 08 Январь, 2018 17:45 ] |
Заголовок сообщения: | Re: Аналоги трудов Бертрана Мейера для Си++ |
Wlad писал(а): Подобные разговоры были актуальны где-то до 2005 года. Потом История (для 99% программистов) закончилась. Rifat писал(а): А что случилось в 2005 году? Почему-то сразу приходит на ум посещение Виртом России http://oberon2005.oberoncore.ru/.Вирт как вестник конца истории |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |