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

User Tag List

Страница 4 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 31 по 40 из 44

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

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

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Кто сейчас пишет на синклер-бейсике?
    Пишут некоторые, простые программки.
    Но заплатка вряд ли нужна.
    Ты как оцениваешь сильно придется менять процедуру? Ведь любое изменение кода ПЗУ черева-то потерей совместимости с софтом, ведь он обращается туда по определенным адресам. И еще есть стандартная таблица векторов прерываний. Например, в ZX+3 в прошивке 48к безобидно пустые байты в ПЗУ (FF) прошили нулями. Из-за этого некоторые игры не идут, так как там расположен вектор прерываний, и он неправильно формируется. Казалось бы безобидная правка... Возможно, это вызвано просто строением ПЗУ, у которой по умолчанию вместо FF - нули и там где ее не шили, они остались, я честно больше ничего не смог придумать в объяснение этого нововведения в прошивке 48к для zx+3.
    Последний раз редактировалось Addison; 19.01.2009 в 22:16.

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

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

    По умолчанию

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

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

    Добавлено через 12 минут
    Цитата Сообщение от Клон Посмотреть сообщение
    Но заплатка вряд ли нужна.
    Ты как оцениваешь сильно придется менять процедуру? Ведь любое изменение кода ПЗУ черева-то потерей совместимости с софтом, ведь он обращается туда по определенным адресам. И еще есть стандартная таблица векторов прерываний
    Совершенно с тобой согласен. По моим оценкам, изменений нужно совсем немного: добавить проверку на токен "REM" и условный возврат. Это три байта, в лучшем случае. "на месте" их нет, поэтому придется добывать где-то в свободных областях, лепить переходы (3 байта на штуку)...

    Кроме тех причин потери совместимости, что ты описал, есть еще одна: выполнение этих подпрограмм бейсика будет иметь в результате другое значение регистра R, что может привести к потере работоспособности ксорок.

    Поэтому тоже я считаю, что фиксить ничего не надо. Выигрыш в результате фикса - мнимый: несколько облегчится написание новых программ на бейсике. Старые программы лучше работать не станут. А даже наоборот - могут перестать работать. Новых программ никто уже не пишет почти. Следовательно, как говорил мой друг: "Скажем дружно - нахрен нужно".
    Последний раз редактировалось Barmaley_m; 19.01.2009 в 22:28. Причина: Добавлено сообщение

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

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Я тоже делал все "надежно и по правилам" (пост №21, п.4), но наткнулся на баг.
    Вот залез в фирменное описание бейсика для модели 48к.
    Там приводят классический пример:

    10 REM temperature conversion
    20 PRINT "deg F", "deg C"
    30 PRINT
    40 INPUT "Enter deg F", F
    50 PRINT F,(F-32)*5/9
    60 GO TO 40


    You will need to type the words in line 10. Also, although GO TO has a space in it, it is really all one keyword (on G).

    Now run it. You will see the headings printed on the screen by line 20, but what happened to line 10? Apparently the computer has completely ignored it. Well, it has. REM in line 10 stands for remark, or reminder, and is there solely to remind you of what the program does. A REM command consists of REM followed by anything you like, and the computer will ignore it right up to the end of the line.

    Для тех кому лень переводить скажу, что про REM там написано, что этот оператор нужен только для того, чтобы напомнить о чем программа. Этим примером все сказано. Использование этого оператора для отладки - это выдумки пытливого ума программиста, клоторые возможно потом стали нормной, но не в 1982 году...

    Больше оператору REM там внимания не уделяют.

  5. #34
    Master
    Регистрация
    11.04.2006
    Адрес
    Novosibirsk
    Сообщений
    966
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Клон Посмотреть сообщение
    Вот залез в фирменное описание бейсика для модели 48к.
    Там приводят классический пример:

    [вырезано]

    A REM command consists of REM followed by anything you like, and the computer will ignore it right up to the end of the line.

    Для тех кому лень переводить скажу, что про REM там написано, что этот оператор нужен только для того, чтобы напомнить о чем программа. Этим примером все сказано. Использование этого оператора для отладки - это выдумки пытливого ума программиста, клоторые возможно потом стали нормной, но не в 1982 году...

    Больше оператору REM там внимания не уделяют.
    Там уделено достаточно внимания. Или вам таки перевести anything you like ? Вот в документации написано, что оператор REM нужен для того чтобы я написал там "все что я хочу". И что все что я захотел написать после REM будет проигнорировано. Безо всяких фантазий что в операторе REM надо писать "о чем программа". Вы в документации видите то что хочется, а не то что там там написано.

    Как программист пользуется оператором REM - сугубо его личное дело.

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

    По умолчанию

    Цитата Сообщение от ram_scan Посмотреть сообщение
    что оператор REM нужен для того чтобы я написал там "все что я хочу".
    Речь идет о пояснительном тексте, а не об вводе операторов.
    Там написано, что это памятка или пометка, читай внимательно.

    Цитата Сообщение от Клон Посмотреть сообщение
    REM in line 10 stands for remark, or reminder, and is there solely to remind you of what the program does

    Никакого отношения к отладке этот оператор не имеет.
    И доказательством этого является найденный баг. Ты думаешь программист, который писал интерпретатор никак его не тестил? Элементарно бы это всплыло, если бы заремарили пару строк программы. Next довольно часто используется. Да и почему никто этот баг не пофиксил, ведь это не первое издание прошивки?
    Я думаю дело тут в том, что на бейсике давно никто не пишет, а Бармалей фактически вернулся к нему с навыками, которые он приобрел при написании в других языках СИ, Паскале, на современном Бейсике, где использование ремарок для отладки давно вошло в моду.
    Последний раз редактировалось Addison; 20.01.2009 в 18:56.

  7. #36
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,546
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    167 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    Talking

    Цитата Сообщение от Клон Посмотреть сообщение
    Никакого отношения к отладке этот оператор не имеет.
    Ага. Этот оператор. В 10 строке этой конкретной программы.
    О чем там собс-но английским языком и написано
    Прихожу без разрешения, сею смерть и разрушение...

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

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    Ага. Этот оператор. В 10 строке этой конкретной программы.
    О чем там собс-но английским языком и написано
    Да понятно это, что же ты всех за дураков держишь?
    Ты почитай фирменное руководство по бейсику оно все на примерах написано. Для группы операторов, в которую входит REM приводится этот пример. Более этого примера этому оператору внимания в описании не уделяют. Если бы авторы планировали использовать этот оператор для отладки, то они бы об этом написали там, где дают рекомендации по отладке написанных программ.

    Если ты такой вумный, найди русскую или английскую книжку, где более подробно написано как пользоваться Спеколвским REMмом. Покажи мне, где написано (рекомендовано) его использовать для отладки программы. Если ты его используешь на свое усмотрение, то и не плачь, что лезут всякие недокументированные нелепости. Ежу ясно, если авторами бейсика это не предполагалось, то и не факт, что это будет коррекно работать. То что в русских переводах пишут, что можно писать что угодно, так это имеется ввиду, что можно написать «попка дурак», а можно «программа перевода температуры» бейсику на это будет наплевать.
    Ремарки в любых языках предназначены для организации пометок и пояснения кусков программы для улучшения читаемости листинга. Этому учат в школе на информатике. А то, что кто-то придумал так отлаживать программы – это его проблемы и его выдумки. Таких хитростей может быть миллион. Можно использовать GOTO, можно переименовывать строки, чтобы они прыгали вверх и запускать начиная с 100-й, можно делать простые подпрограммки, потом использовать Merge для объединения. Короче на сколько у тебя фантазии хватит. ГудБой вон вообще токен умудряется ввести там, где это никак не было задумано и получает от этого какой-то полезный для него эффект.
    Короче все это проблемы юзверов, но они никак не могут предъявлять претензии, что при этом возникают какие-то баги. Если рем использовать по назначению никакого бага не будет. После введения REM курсор переключается в литерный «L» - это говорит тупым ёжикам, что от них ждет интерпретатор. Не забывайте что это не просто бейсик – это обучающий бейсик для чайников и там за вас уже тысячу раз подумали.

  9. #38
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,546
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    167 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    Talking До чего же Trunin забавно ерзает :) скока букаф :D

    Частный случай:
    REM in line 10 stands for remark, or reminder, and is there solely to remind you of what the program does.
    Общее описание:
    A REM command consists of REM followed by anything you like, and the computer will ignore it right up to the end of the line.
    Все, вопрос закрыт
    Прихожу без разрешения, сею смерть и разрушение...

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

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    followed by anything you like
    и что это есть рекомендации использовать этот оператор для отключения действующих строк?
    Здесь есть проблема, но она совсем другого характера.
    Например, я хочу написать следующий коментарий:

    10 REM Color: Red, Blue, Green

    После ввода двоеточия у меня возникнут проблемы, так как курсор переключится в командный и вместо R я получу RUN. Это есть непродумка, этот бейсик настолько убогий с этой системой курсоров и токенов, что элементарные вещи в лоб не получаются. При вводе текста в кавычках, например, в операторе PRINT такой проблемы нет. Почему после REMа не аннулировать функцию разделителя операторов для двоеточия? В этом случае и бага бы не было и не повадно было бы лепить операторы в REMе.

    В 128 бейсике я показывал, что там оператор REM реализован корректно.
    Если ты введешь REM, то все остальное воспринимается текстом, можешь там упечататься двоеточиями, операторами, функциями - все это будет текст!!!
    Последний раз редактировалось GriV; 26.01.2009 в 20:41.

  11. #40
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,546
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    167 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    Talking

    Цитата Сообщение от Клон Посмотреть сообщение
    и что это есть рекомендации использовать этот оператор для отключения действующих строк?
    Ты ведь не понимаешь, чем "рекомендация" отличается от "инструкции" итп
    Описание там четкое и недвусмысленное, и если оператор так не работает - это баг и есть!

    К твоему сведению - официально Синклер не стал чинить в 48K прошивке никаких багов вообще (хотя многие из них стали известны довольно скоро). Якобы чтобы не ухудшать совместимость. Возможно, просто лениво было

    Цитата Сообщение от Клон Посмотреть сообщение
    Почему после REMа не аннулировать функцию разделителя операторов для двоеточия?
    А вот как раз "это косвенно подтверждает предположение" (c) что REM предполагалось использовать при отладке для временного отключения кусков программы - каковой прием стал стандартным для любого бейсик-интерпретатора задолго до 1982 года.
    Последний раз редактировалось GriV; 26.01.2009 в 20:37.
    Прихожу без разрешения, сею смерть и разрушение...

Страница 4 из 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

Ваши права

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