OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 16 Декабрь, 2018 01:34

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Четверг, 28 Декабрь, 2017 02:48 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1338
Попрошу срача и религиозных войн не начинать.

Итак: есть ли что-то подобное книгам Б.Мейера по монументальности, охватности и основательности, для Си++?
Встречалось ли?
Что кто может рекоменднуть?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Декабрь, 2017 04:47 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9062
Откуда: Россия, Орёл
С Мейером не сравнить,

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

Романов Е. Л. Практикум по программированию на C++


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Декабрь, 2017 08:15 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Основная идея в книгах Мейера - это контрактное программирование, которое в свою очередь раскрывается через предусловия, постусловия, инварианты циклов. Также в книгах Мейера большое внимание уделяется правильному использованию объекто-ориентированного программирования. Соответственно, если в книге по C++ также рассматриваются предусловия, постусловия, инварианты и правильное объектно-ориентированное программирование, то можно считать, что эта книга похожа на книгу Мейера.

P.S. Кстати, я виделся с Бертраном Мейером.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 29 Декабрь, 2017 02:33 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7932
Откуда: Троицк, Москва
Не вполне понятен вопрос:

разве понятия предусловий и т.д. зависят от языка?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 29 Декабрь, 2017 09:56 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Эти понятия не зависят от языка.
Но то, включены ли эти понятия в книгу по какому-нибудь языку, зависит от языка.

Лично мои приблизительные оценки.
Думаю, что большинство книг по Eiffel содержат понятия о предусловии, постусловии и инварианте, так как эти конструкции входят в синтаксис языка, поэтому необходимо их описывать.
Процентов 10% книг по языку Pascal содержат эти понятия.
0,1% книг по языкам C/C++ содержат эти понятия. Единственная книга, которая мне встретилась, где бы описывался C++ и эти понятия, - это книга "Жемчужины программирования". Думаю, что трудно описывать понятие инварианта цикла, когда в цикле могут быть множественные break, continue, goto и return, поэтому, чтобы не вдаваться в подробности, эти понятия обычно скромно умалчиваются.
И не знаю, встречаются ли эти понятия в книгах по ассемблеру. Лично я не встречал.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 29 Декабрь, 2017 19:10 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1537
Откуда: Беларусь, Минск
То, включены ли эти понятия в книгу по какому-нибудь языку, зависит от автора.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 29 Декабрь, 2017 19:48 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Valery Solovey писал(а):
То, включены ли эти понятия в книгу по какому-нибудь языку, зависит от автора.

Пришла на ум следующая аналогия. Можно ручку при письме держать пальцами рук, а можно пальцами ног. Писать пальцами рук проще, поэтому так и пишут. Также и здесь, есть языки, где эти понятия гармонично ложатся на язык и там их чаще всего используют, а есть языки программирования, где их можно с трудом описать, поэтому их там чаще всего не описывают. А так да, дело за автором рукой писать или ногой :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 29 Декабрь, 2017 22:00 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1098
Если книга про язык, то незачем включать всякие лишние понятия. А если про методы программирования, автор обычно выбирает язык, на котором удобнее иллюстрировать. Бывают еще редкие случаи, когда автор хочет показать, что эти методы можно применять даже на ф̶о̶р̶т̶р̶а̶н̶е си.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 03 Январь, 2018 20:26 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1537
Откуда: Беларусь, Минск
Trurl писал(а):
Если книга про язык, то незачем включать всякие лишние понятия. А если про методы программирования, автор обычно выбирает язык, на котором удобнее иллюстрировать.
Так изначальный вопрос про инварианты, а не про справочник по синтаксису.

В аспекте инвариантов Оберон и плюсы почти не отличимы. Подходы к проектированию будут практически одинаковы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 03 Январь, 2018 20:37 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1537
Откуда: Беларусь, Минск
Rifat писал(а):
есть языки, где эти понятия гармонично ложатся на язык и там их чаще всего используют, а есть языки программирования, где их можно с трудом описать, поэтому их там чаще всего не описывают.
Ни в каких языках эти понятия не описывают. Их используют. И тоже не в языках. А в программах. Которые не из слов языка остоят, а много из чего. А текст программы - это лишь жалкое отражение того, что имеется в виду на самом деле.

Плюсы не сказать, что хуже Оберона в этом месте. Эйфиль я бросил изучать не дойдя до середины, поэтому моё мнение на его счёт слишком грубое, но на мой взгляд и в этом языке понятия постусловий, инвариантов и предусловий лишь косметические. Ни от каких ошибок в этом аспекте язык не защищает. Да и вообще непонятно, как от таких ошибок может защитить хоть како-нибудь язык программирования.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 03 Январь, 2018 23:50 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1338
Valery Solovey писал(а):
Да и вообще непонятно, как от таких ошибок может защитить хоть како-нибудь язык программирования.

Расширьте и углубьте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 04 Январь, 2018 11:47 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7932
Откуда: Троицк, Москва
Wlad писал(а):
Valery Solovey писал(а):
Да и вообще непонятно, как от таких ошибок может защитить хоть како-нибудь язык программирования.
Расширьте и углубьте.
Хочу попробовать:

На уровне языка -- это на уровне статики. Что эквивалентно статической верификации семантической правильности программы (что, скажем, вызов процедуры изнутри какого-нибудь цикла состыкован по её пред- и постусловиям с одной стороны, и гарантирует инвариант цикла с другой) на уровне компилятора.
Действительно, звучит нереально.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 06 Январь, 2018 16:35 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1537
Откуда: Беларусь, Минск
Да. Или если посмотреть немного с другого угла и воспользоваться другими словами, то то же постусловие - это синоним слова "цель".

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

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

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

Есть пару замечаний:
1. Всё выше сказанное касалось только языков общего назначение. Предметно ориентированные языки - это отдельная тема. По-хорошему, там тоже не должно быть синтаксической поддержки постусловий, предусловий и инвариантов - всё уже запаковано внутрь. Но я всех предметных языков не видел, поэтому допускаю, что где-то такие конструкции будут к месту.
2. Алгебраические типы данных и т.п. отчасти решают проблему инвариантов. Но только если они реализованы под конкретную задачу. А если их нужно реализовать, то мы снова сталкиваемся с изначальной проблемой.
3. Поскольку одну и ту же задачу иногда можно решить разными способами (исходя, например, из того, чем мы готовы платить: временем или местом), то постусловие, предусловие и инвариант тоже будут отличаться. Но сумма всех постусловий для программы всё равно приведёт к программе, которая будет решать поставленную задачу. То есть, немного различающиеся наборы "крупиц" способны покрывать одну и ту же предметную область.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Январь, 2018 02:59 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1338
Valery Solovey писал(а):
Да. ...
...
... способны покрывать одну и ту же предметную область.
Несколько раз перечитал, так и не уразумел, про что и зачем это всё было написано...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 07 Январь, 2018 23:48 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1537
Откуда: Беларусь, Минск
Ну, я не знаю как объяснить лучше.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Январь, 2018 13:46 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1338
Valery Solovey писал(а):
Ну, я не знаю как объяснить лучше.

Ну, объясните, например вот эту вашу сентенцию: Постусловие - цель.
Насколько я понимаю, как и предусловие, постусловие - проверка нахождения в некоей области, только для постусловия это проверка после проведения работы функцией.
Оно не описывает, что мы должны получить.
Оно лишь проверяет, что процессе вычислений и операций мы не вылетели за пределы доменов в результатах.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Январь, 2018 13:57 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1338
Valery Solovey писал(а):
Ну, я не знаю как объяснить лучше.

А, вообще-то, лучше и - не надо.

Подобные разговоры были актуальны где-то до 2005 года.
Потом История (для 99% программистов) закончилась.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Январь, 2018 15:13 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
А что случилось в 2005 году?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Январь, 2018 15:38 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7932
Откуда: Троицк, Москва
Wlad писал(а):
Valery Solovey писал(а):
Ну, я не знаю как объяснить лучше.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Январь, 2018 17:45 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 742
Откуда: Киев
Wlad писал(а):
Подобные разговоры были актуальны где-то до 2005 года.
Потом История (для 99% программистов) закончилась.
Rifat писал(а):
А что случилось в 2005 году?
Почему-то сразу приходит на ум посещение Виртом России http://oberon2005.oberoncore.ru/.
Вирт как вестник конца истории :D


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB