Автор Тема: ASSERT  (Прочитано 29326 раз)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
ASSERT
« : Февраль 19, 2011, 04:59:22 am »
Навеяно недавним просмотром ББ'ых исходников... А в чем глубокий смысл второго параметра ББ'ого ASSERT'а? Нигде таких ассертов нет :) В смысле все полезное в стэке и в номере строки, нет? :) Зачем эта лишняя сущность в языке, славящимся отсутствием всего лишнего?

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re:ASSERT
« Ответ #1 : Февраль 19, 2011, 06:24:52 am »
Там по идее должна стоять строка с сообщением. Но отцы-основатели предпочитают расшифровывать числовой код.
Такое мЫшление, минимализьм, типа.
« Последнее редактирование: Февраль 19, 2011, 06:27:46 am от Peter Almazov »

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:ASSERT
« Ответ #2 : Февраль 19, 2011, 09:48:28 am »
А зачем нам это сообщение, пусть и в виде строки, если благодаря наличию метаинформации нам среда и так выдаст подробнейший отчет что где и как произошло?
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

белый шум

  • Newbie
  • *
  • Сообщений: 33
    • Просмотр профиля
    • альма-матер oberoncore.ru
Re:ASSERT
« Ответ #3 : Февраль 19, 2011, 09:48:46 am »
это для людей. прописываешь в строковых ресурсах строчку типа:
Dom.Assert.1   index or size is negative, or greater than the allowed value
и люди видят, какая ошибка произошла, потому как наличие сырцов не является обязательным.
Величайшей ошибкой было бы думать.

белый шум

  • Newbie
  • *
  • Сообщений: 33
    • Просмотр профиля
    • альма-матер oberoncore.ru
Re:ASSERT
« Ответ #4 : Февраль 19, 2011, 09:52:59 am »
Там по идее должна стоять строка с сообщением. Но отцы-основатели предпочитают расшифровывать числовой код.
Такое мЫшление, минимализьм, типа.

а на каком языке, например? такое мышление, да...
Величайшей ошибкой было бы думать.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:ASSERT
« Ответ #5 : Февраль 19, 2011, 09:54:59 am »
Дык ведь для человека, у которого нет исходников, это всё равно тарабарщина полная. А среда, благодаря метаинформации, всё равно подробный отчет предоставит. По идее оный человек после этого должен будет сохранить составной документ с отчетом и отослать его разработчику, где разраб уже проведет детальный анализ ситуации.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

белый шум

  • Newbie
  • *
  • Сообщений: 33
    • Просмотр профиля
    • альма-матер oberoncore.ru
Re:ASSERT
« Ответ #6 : Февраль 19, 2011, 10:05:51 am »
ну, ассерт это ж предусловие. если нет сырцов, то как понять, что хотел сказать автор?
и да, речь про программистов, юзеры ваще тряпы видеть не должны, такое моё мнение.
« Последнее редактирование: Февраль 19, 2011, 10:08:49 am от белый шум »
Величайшей ошибкой было бы думать.

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:ASSERT
« Ответ #7 : Февраль 19, 2011, 10:22:41 am »
А в чем глубокий смысл второго параметра ББ'ого ASSERT'а?
В программе может же быть много ассертов. Лично я использую второй параметр для того чтобы однозначно идентифицировать какой из ассертов сработал. Не знаю насколько это соответствует авторскому замыслу.

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re:ASSERT
« Ответ #8 : Февраль 19, 2011, 10:28:19 am »
а на каком языке, например? такое мышление, да...
Спасибо за разъяснение про строковые ресурсы.
Вообще, трогательная забота о пользователе. Одно дело, когда дается набор переводов для диалогов, меню и пр. А вот переводить все места, которые пользователь по идее не должен видеть - это "что-то особенного"   :).

белый шум

  • Newbie
  • *
  • Сообщений: 33
    • Просмотр профиля
    • альма-матер oberoncore.ru
Re:ASSERT
« Ответ #9 : Февраль 19, 2011, 10:35:08 am »
а на каком языке, например? такое мышление, да...
Спасибо за разъяснение про строковые ресурсы.
Вообще, трогательная забота о пользователе. Одно дело, когда дается набор переводов для диалогов, меню и пр. А вот переводить все места, которые пользователь по идее не должен видеть - это "что-то особенного"   :).

пользователь(видимо, таки пользователь ББ) может быть разным.
когда вы предоставите критерии и методы ч0ткого отделения пользователя-хомячка(бухгалтера например), от пользователя-программиста в соседнем кубикле(или в соседней стране), тогда поговорим. Если я предоставил описание ассерта, я сделал это для программиста, и он оценит, особенно когда сырцов нет(по соображениям лицензии например).
Величайшей ошибкой было бы думать.

Валерий Лаптев

  • Jr. Member
  • **
  • Сообщений: 58
    • Просмотр профиля
Re:ASSERT
« Ответ #10 : Февраль 19, 2011, 10:50:08 am »
А в чем глубокий смысл второго параметра ББ'ого ASSERT'а?
В программе может же быть много ассертов. Лично я использую второй параметр для того чтобы однозначно идентифицировать какой из ассертов сработал. Не знаю насколько это соответствует авторскому замыслу.
Вообще-то в С++ assert автоматом выдает имя файла и номер строки в source. И никаких дополнительных параметров.

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:ASSERT
« Ответ #11 : Февраль 19, 2011, 12:19:41 pm »
Вообще-то в С++ assert автоматом выдает имя файла и номер строки в source. И никаких дополнительных параметров.
А вот сообщение консольного компилятора XDS:
#RTS: unhandled exception #199: ASSERT(FALSE, 199) И всё! Только номер и спасает ("199" в примере).

Да, и ещё. Ассерт - это всё-таки языковое средство, а не фенечка IDE. Раз язык вводит ассерты, то должен и предоставить средство для их идентификации. Второй параметр в стандартной процедуре ASSERT, на мой взгляд, оправдан.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:ASSERT
« Ответ #12 : Февраль 19, 2011, 03:41:38 pm »
А вот сообщение консольного компилятора XDS:
#RTS: unhandled exception #199: ASSERT(FALSE, 199) И всё! Только номер и спасает ("199" в примере).

Это такой тонкий стеб или реально каждый оберонщик знает что такое "199"? %)

Цитировать
Да, и ещё. Ассерт - это всё-таки языковое средство, а не фенечка IDE. Раз язык вводит ассерты, то должен и предоставить средство для их идентификации. Второй параметр в стандартной процедуре ASSERT, на мой взгляд, оправдан.

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

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:ASSERT
« Ответ #13 : Февраль 19, 2011, 04:07:00 pm »
Это такой тонкий стеб или реально каждый оберонщик знает что такое "199"? %)
Этот код я назначил сам, и он имеет смысл только для меня, как для автора программы. От пользователя, у которого сбойнула моя программа, мне нужен только этот код и больше ничего.
По памяти, в документации на КП/BB вроде определены стандартные коды, и определён также дииапазон кодов для использования по своему усмотрению. Этими спецификациями я не пользуюсь.
Цитировать
Дык, я ж говорю - стэк и номер строки идентифицируют намного лучше какого-то "199".
Представьте, что у Вас много клиентов, которые пользуются различными версиями Вашей программы, и они присылают Вам отчёты, что в такой-то строчке сработал ассерт. В данной ситуации код ошибки надёжнее, потому что в различных версиях программы нумерация строк может поплыть.
Цитировать
Но мне кажется, что в этом случае еще лучше сработал бы банальный возврат кода ошибки.
В моём примере "199" и есть код ошибки.

Валерий Лаптев

  • Jr. Member
  • **
  • Сообщений: 58
    • Просмотр профиля
Re:ASSERT
« Ответ #14 : Февраль 19, 2011, 05:11:44 pm »
Такой подход мне нравится!