Важная информация

User Tag List

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 11 по 20 из 44

Тема: Нашел новый баг в бейсике

  1. #11
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Black_Cat Посмотреть сообщение
    Патч будет?
    а это-то еще нафига?

  2. #12
    Banned Аватар для Black_Cat
    Регистрация
    15.06.2006
    Адрес
    S.Pb
    Сообщений
    5,791
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а нафига ошибки искать, если их не править?

  3. #13
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Black_Cat Посмотреть сообщение
    а нафига ошибки искать, если их не править?
    во-первых, я ее специально не искал, а наткнулся случайно, когда экспериментировал с бейсиком. Хотел получить сообщение "I FOR without NEXT", закомментировал оператор NEXT, а желаемого сообщения об ошибке не получил. Потом уже стал исследовать, нашел причину ошибки и то, что она относится не только к NEXT, а еще и к DATA и DEF FN.

    Во-вторых, зачем теперь исправлять ошибку, если она сильно не мешает, а людей сейчас пользуются бейсиком мало? Я вон сделал Bogobasic, в нем много расширений и ошибок исправлено - а толку? Стал кто-то применять улучшенную работу с каналами и потоками? Улучшенный CIRCLE? Помогли кому-то исправленные баги? Скорее наоборот. Некоторые защиты вызывают подпрограммы из ПЗУ. Например, в одной защите, помнится, вызывалась подпрограмма "LINE". В Bogobasic изменена процедура рисования точки, поэтому процедура LINE выполняется за другое число тактов - это влияет на содержимое регистра R, и защита не работает.

    В Bogobasic были другие, очень полезные функции, типа @LOAD"file" и расш. драйвер клавиатуры - поэтому я все-таки предпочел иметь его в ПЗУ. Однако я не по наслышке знаю, Black_Cat, чем чреваты изменения бейсика.

    Практически не существует "безопасных" мест в ПЗУ, которые можно безнаказанно менять. Всегда найдется программа, которая перестанет из-за этого работать.

  4. #14
    Banned Аватар для Black_Cat
    Регистрация
    15.06.2006
    Адрес
    S.Pb
    Сообщений
    5,791
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Практически не существует "безопасных" мест в ПЗУ, которые можно безнаказанно менять. Всегда найдется программа, которая перестанет из-за этого работать.
    это понятно, для этого обычно делают теневой исправленный ROM, в котором исправлены все ошибки найденные когда-либов ПЗУ. Т.к. такое ПЗУ уже существует, то почему бы не исправить ещё один баг. А что касательно Bogobasic, то тут вопрос больше в рекламе продукта и его соответствии современным требованиям

  5. #15
    Guru Аватар для Addison
    Регистрация
    07.01.2006
    Адрес
    г. Москва
    Сообщений
    3,442
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вообще это нельзя считать в полной мере багом, так как после REM подразумевается использовать литеры, зачем туда лепить операторы или, допустим, вперед ставить ":"? Зачем провоцировать интерпретатор на ошибку? Ну не может программист учесть все глупости, которые захотят сделать извращенцы...
    Можно возразить только тем, что за ремом иногда код вставляют, и он теоретически может быть таким, как привел примеры Бармалей. Но и здесь я вам скажу: "Нафиг это делать?" Код в бейсик программу можно вставить и более корректными способами. Такими извратами можно любой интерпретатор за яйца схватить. Вот только надо ли это делать?
    Последний раз редактировалось GriV; 24.01.2009 в 08:41. Причина: Добавлено сообщение

  6. #16
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Клон, я не совсем пойму твою мотивацию к этому спору, конечно... Вопрос выеденного яйца не стоит, а такую дискуссию развели.

    Я считаю, что это баг, потому что:

    1. Во всех документациях к бейсикам, которые я в жизни встречал, всегда остаток строки после REM игнорируется независимо от наличия в нем двоеточий.
    2. Синклер-бейсик ведет себя непоследовательно. В одном случае (при обычных обстоятельствах) он игнорирует все, что после рем, а в другом (NEXT, DATA, DEF FN) - нет.
    3. В случае, когда бейсик не игнорирует операторы после REM (NEXT), то неправильно отрабатываются числовые константы.
    4. Операторы после REM - это вполне нормальная ситуация, когда программист хочет "закомментировать" часть программы. Именно так я наткнулся на этот баг в первую очередь. Я не баги в бейсике искал, а рассчитывал, что бейсик проигнорирует закомментированный NEXT. Между прочим, это заняло некоторое время - чтобы разобраться, что происходит.
    5. В бейсике-128 токены после REM могут быть, если загрузить программу, набранную в бейсике-48. И при выполнении такой программы эффекты будут те же.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Клон Посмотреть сообщение
    Если ты ремаришь то и пиши буквами, зачем тебе токены? Тогда и двоеточия у тебя не будет,
    Я уже объяснял (пост №21, п.4), как именно у меня возникла ситуация, что после REM оказались токены, двоеточия и NEXT. Это вполне нормальный сценарий использования бейсика: закомментировать строку с помощью REM. Двоеточие перед NEXT там возникло из-за того, что NEXT не был первым в последовательности закомментированных операторов. Перед первым я двоеточия не ставил.

    Цитата Сообщение от Клон Посмотреть сообщение
    Мотивация такая же, как и у тебя, когда ты создавал эту тему.
    Очень странная и нелогичная мысль. Я создавал эту тему для того, чтобы сообщить людям о новом баге в бейсике. Ты, ведя дискуссию в этой ветке, о новых багах бейсика не сообщал, следовательно у тебя совершенно иная мотивация, чем у меня.
    Последний раз редактировалось GriV; 24.01.2009 в 08:42.

  9. #18
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Клон Посмотреть сообщение
    Оператор REM предназначен для введения пояснений к программе, ты его используешь неправильно
    Почему неправильно? Я могу комментировать программу как угодно, не так ли? Любым текстом, который можно ввести с клавиатуры, не применяя оператор POKE. В том числе я могу использовать токены. Или это где-то запрещено?

    И если заявлено, что бейсик, для того, чтобы реализовать назначение оператора REM, игнорирует любой текст после него - а на самом деле этого не делает - то что это, как не баг?

  10. #19
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для проявления бага достаточно наличия последовательности ":NEXT" после REM. Если программист специально не стремится получить осмысленную демонстрацию бага, а наткнется на него случайно, то скорее всего получит сообщение "C Nonsense in BASIC", но даже это является ненормальным, особенно если после такого комментария стоит "законный" оператор NEXT.

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

  11. #20
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,754
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    141
    Спасибо Благодарностей получено 
    1,172
    Поблагодарили
    769 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    наверняка этот текст поможет разобраться. ftp://ftp.worldofspectrum.org/pub/si...ssemblyThe.txt
    обработка REM с #1BB2

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Небольшие программки на Бейсике.
    от new в разделе Для начинающих
    Ответов: 11
    Последнее: 17.07.2010, 15:45
  2. Ответов: 5
    Последнее: 03.09.2007, 02:34
  3. Border-эффект на Бейсике
    от jim в разделе Разный софт
    Ответов: 7
    Последнее: 18.04.2007, 21:50
  4. Багу нашёл!
    от fk0 в разделе Форум
    Ответов: 7
    Последнее: 15.04.2007, 07:45
  5. Ответов: 3
    Последнее: 06.09.2005, 14:08

Ваши права

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