OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 19 Июнь, 2025 22:21

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




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Воскресенье, 12 Октябрь, 2008 12:28 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Привет всем! Давно с интересом слежу за обсуждениями в данном сообществе. Приверженцем швейцарской школы программирования я стал задолго до того, как познакомился с ней :) . Это мой первый пост на данном форуме.
Код:
CONST
  s1 = 'q';         (* LEN(s1) приводит к ошибке! *)
  s2 = 'q' + 0X; (* LEN(s2) не приводит к ошибке *)

С точки зрения языка обявления констант s1 и s2 равнозначны. Но компилятор в BB, к сожалению, считает иначе :( . В обоих случаях цепочка длины 1 размещается в статической памяти (для глобальных констант). Но в первом случае выделяется один байт для хранения цепочки, а во втором случае - два байта, так как операция конкатенации неявно добавляет нуль-литеру.
В случае объявления литерной цепочки длины 0, 2 или более, указанная "особенность" не проявляется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Воскресенье, 12 Октябрь, 2008 12:53 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
В BlackBox 1.6 это уже исправлено.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Воскресенье, 12 Октябрь, 2008 16:03 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Игорь Лоскутов писал(а):
Это мой первый пост на данном форуме.
Добро пожаловать! :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Воскресенье, 12 Октябрь, 2008 16:18 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
AVC писал(а):
Игорь Лоскутов писал(а):
Это мой первый пост на данном форуме.
Добро пожаловать! :D

Спасибо! Всегда приятно поговорить с умными людьми :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 05:31 

Зарегистрирован: Пятница, 02 Декабрь, 2005 14:35
Сообщения: 210
Откуда: Россия, Томск
Здравствуйте, Игорь!

Предлагаю познакомиться при личной встрече. Например, на ф-те информатики ТГУ в четверг или в субботу (у меня 3-я пара "Практикум на ЭВМ" 12:25-14:00, ауд.103-б). Я думаю, общие интересы в области прог-я на КП/ББ у нас есть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 06:28 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2461
Откуда: Россия, Томск
Игорь Лоскутов писал(а):
Привет всем! Давно с интересом слежу за обсуждениями в данном сообществе. Приверженцем швейцарской школы программирования я стал задолго до того, как познакомился с ней :) . Это мой первый пост на данном форуме.
Привет! Рад видеть ещё одного томича : ) Поддерживаю предложение А.П. о встрече, чаю попить никогда не помешает.
Игорь Лоскутов писал(а):
Код:
CONST
  s1 = 'q';         (* LEN(s1) приводит к ошибке! *)
  s2 = 'q' + 0X; (* LEN(s2) не приводит к ошибке *)

С точки зрения языка обявления констант s1 и s2 равнозначны. Но компилятор в BB, к сожалению, считает иначе :(
Я так понимаю, что в первом случае константа имеет тип CHAR, а во втором случае ARRAY OF CHAR. Значение LEN(CHAR) не определено в описании языка, так что по-хорошему компилятор должен выдавать ошибку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 10:11 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
А.П. писал(а):
Предлагаю познакомиться при личной встрече

Александр Ильин писал(а):
Поддерживаю предложение А.П. о встрече

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

Александр Ильин писал(а):
Я так понимаю, что в первом случае константа имеет тип CHAR, а во втором случае ARRAY OF CHAR. Значение LEN(CHAR) не определено в описании языка, так что по-хорошему компилятор должен выдавать ошибку.

Вы правы, Александр, в первом случае константа имеет тип CHAR. Но от себя добавлю, что должна была бы иметь тип ARRAY OF CHAR, точнее тип цепочек литер. Строки в КП - хороший пример того, как тип переменной может не совпадть с типом значения, хранящегося в этой переменной. И насчёт переменных, здесь я не оговорился, потому что строковые константы в КП всегда реализованы как "переменные только для чтения" и никогда не размещаются компилятором непосредственно в коде (immediate data), в отличие от констант других типов.
В пользу того, что это всё-таки ошибка говорит тот факт, что в v1.6 она исправлена, как справедливо заметил PGR.
Я кажется понял механизм того, как возникла эта ошибка. Разработчики, помятуя о том, что
Цитата:
Цепочка длины 1 может использоваться всюду, где разрешена литерная константа, и наоборот.

привели цепочки длины один в соответствие с литерной константой. А нужно было наоборот: привести литерные константы в соответствие с литерными цепочками длины 1. А это, как мы видим, не одно и то же.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Вторник, 29 Сентябрь, 2009 18:28 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Продолжаем искать баги в компиляторе :)

Аттрибуты ABSTRACT, LIMITED, EMPTY и EXTENSIBLE помечены в сообщении как ключевые слова, но реализованы в Блэкбокс как предопределённые идентификаторы (см. DevCPT, секция инициализации).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Вторник, 29 Сентябрь, 2009 19:41 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4722
Откуда: Россия, Орёл
Это фича. :)
Так просто быстрее компилятор расширить видимо было.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Вторник, 29 Сентябрь, 2009 19:53 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
igor писал(а):
Аттрибуты ABSTRACT, LIMITED, EMPTY и EXTENSIBLE помечены в сообщении как ключевые слова, но реализованы в Блэкбокс как предопределённые идентификаторы (см. DevCPT, секция инициализации).
Кстати, где это проявляется? в сообщениях компилятора? и как Вы обнаружили -- простым рассматриванием?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Вторник, 29 Сентябрь, 2009 19:56 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Но знать об этой фичи никому не помешает :). Собственно, поэтому и написал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Вторник, 29 Сентябрь, 2009 20:02 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Info21 писал(а):
Кстати, где это проявляется? в сообщениях компилятора? и как Вы обнаружили -- простым рассматриванием?
Обнаружил случайно, просматривая исходники компилятора.
Проявляется, например, так. Следующий код компилятор проглатывает не поморщившись:
Код:
 TYPE EMPTY = INTEGER;
А должен выдавать ошибку!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Вторник, 29 Сентябрь, 2009 20:16 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
igor писал(а):
Info21 писал(а):
... простым рассматриванием?
Обнаружил случайно, просматривая исходники компилятора.
Ага!

Я спросил для статистики: все настоящие открытия деляются случайно в процессе пристального рассматривания.

igor писал(а):
А должен выдавать ошибку!
Помнится, студент зачем-то использовал какие-то из all-cap слов в качестве идентификаторов, и там лезли странные ошибки. Но пристально рассмотреть никто не догадался.

Эффект Вавилова-Черенкова тоже видели две (кажется) группы в мире до Черенкова, но отмахнулись типа мало ли, мусор.
И только Черенков оказался занудой и стал проверять.
И получил Нобеля :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Вторник, 29 Сентябрь, 2009 20:25 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Ну, на Нобеля я не претендую :D
Кстати, помнится я читал статью Никлауса Вирта, в которой он сетовал, что поздно понял, что FALSE и TRUE следовало бы сделать ключевыми словами. Даже пример приводил, приводящий к абсурду. Вот ссылочку сейчас дать затрудняюсь, но думаю, что все её читали.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несерьёзный bag в компиляторе BB
СообщениеДобавлено: Вторник, 29 Сентябрь, 2009 21:41 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
igor писал(а):
Ну, на Нобеля я не претендую :D
Тут дело не в претензии, а в хороших привычках. А дальше уж как повезет :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

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


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

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


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

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