User Tag List

Страница 6 из 9 ПерваяПервая ... 23456789 ПоследняяПоследняя
Показано с 51 по 60 из 85

Тема: Рапира и её создатели

  1. #51

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Это есть, avivanov76 это запускал - и при чем тут z80?
    при том, что это точно не для карты z80, чтобы не было потом таких разговоров

    Цитата Сообщение от litwr Посмотреть сообщение
    Но мюлисп там есть действительно только для Z80 - ваш очередной промах.
    эй, алё, при чём тут вообще мулисп? когда в той моей цитате упомянут муСИМП

    Цитата Сообщение от litwr Посмотреть сообщение
    Так бывает. Вроде почти выпустили, но что-то сорвалось.
    словоблудие

    Цитата Сообщение от litwr Посмотреть сообщение
    Посмотрите на снимок экрана ниже, который выложил avivanov76
    я на первом сразу вижу файл MUSIMP.COM

    Цитата Сообщение от litwr Посмотреть сообщение
    - это никакой не лисп, а специализированный язык для математиков.
    а, ну тогда рапира - специализированный язык для школьников, и что из этого?

    Цитата Сообщение от litwr Посмотреть сообщение
    Какое конкретное утверждение,
    процитированное мною

    Цитата Сообщение от litwr Посмотреть сообщение
    когда нас интересовали только длинные числа?
    кого "вас"?

    Цитата Сообщение от litwr Посмотреть сообщение
    Вы знакомы с тем, что называют контекст?
    я, в отличие от некоторых, прекрасно понимаю, что такое контекст и прекрасно вижу, что заявление "Кстати, на 6502 лисп сделали только в 2013" говорит о ЛЮБОМ лиспе в ЛЮБОМ контексте

    Цитата Сообщение от litwr Посмотреть сообщение
    Сомнительно, что ошибку исправили недавно - кто бы стал это делать?!
    сомнительно, что ошибку исправили давно - кто бы стал это делать?! полагаю, исправление внесено не ранее 2013

    Цитата Сообщение от litwr Посмотреть сообщение
    Была практическая тема, что форматы вещeственных BCD для 8-биток жестко фиксированы.
    хде? и чтоб именно "для 8-биток", а не "для бейсиков" (это не одно и то же, вдруг кто не в курсе))

    Цитата Сообщение от litwr Посмотреть сообщение
    Вы с этим спорите. Но это факт.
    не вижу факта, вижу голословное утверждение

    Цитата Сообщение от litwr Посмотреть сообщение
    Конечно, можно переписать MSX-бейсик, например, но как это было внедрять при наличие стандартного варианта в ПЗУ? Или представьте, что вам на Спеке нужно под бейсиком использовать вещественные числа формата 8087 - это практически невозможно. Максимум, что можно сделать это при вводе данных сразу конвертировать числа в стандартный формат, а при выводе делать наоборот, но это приведет к потере точности и сделает всё это бессмысленным.
    да насрать на бейсики, изначально разговор шёл о восьмибитках как таковых и ЛЮБЫХ применениях BCD-формата на восьмибитках
    Прихожу без разрешения, сею смерть и разрушение...

  2. #52

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    при том, что это точно не для карты z80, чтобы не было потом таких разговоров
    Так писал Вам, что запускал, avivanov76 это похоже пропустил и позапускал ещё.

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

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    да насрать на бейсики, изначально разговор шёл о восьмибитках как таковых и ЛЮБЫХ применениях BCD-формата на восьмибитках
    Была у нас подтема о том, где вообще использовали BCD. Привел пример некоторых бейсиков, а Вы наверное поняли это как некое обобщение.

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    сомнительно, что ошибку исправили давно - кто бы стал это делать?!
    Тут нужно хорошим знатокам Агата подключаться. Но у меня возникло впечатление, что возможно кто-то намеренно внес бага в рапиру, так что изредка длинная арифметика похоже сбивается. Рапира осиротела рано, интересы и люди вокруг были разные, всяко могло быть.

    - - - Добавлено - - -

    Цитата Сообщение от GARNIZON Посмотреть сообщение
    А еще ни слова про совместимость с IBM PC.
    Интересно, что только Апл активно боролась против IBM PC, может ещё Атари, но уже очень пассивно. А вот Коммодор просто себя дал раздавить, легши под IBM PC, - хотя ему IBM за это дала бонус, мейнфремовый язык REXX, который внедрили на Амигах с 1990.

    - - - Добавлено - - -

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    эй, алё, при чём тут вообще мулисп? когда в той моей цитате упомянут муСИМП
    Вы давали ссылку, что за muSIMP стоит muLisp...

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    а, ну тогда рапира - специализированный язык для школьников, и что из этого?
    muSimp никак не может рассматриваться как универсальный язык программирования. Это встроенный язык макросов для данного пакета. MuSimp никто (кроме Вас) и никогда не позиционировал как универсальный. Он не может быть универсальным и по внешним признакам - нет поддержки работы с файлами и текстовыми строками. В рапире это всё есть. Её "школьность" не объективный фактор, а влияние обстоятельств, тяжелой обстановки заката СССР.

  3. #53

    Регистрация
    12.02.2008
    Адрес
    S-Posad
    Сообщений
    472
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Выше уже написал запрос. Не смог у Вас найти рапиру, а желательно получить разные версии. Вот уважаемый Lethargeek вообще сомневается, что арифметика на рапире работала...
    Я уже говорил, для Эпл (как и для мистического агата, который эпл-клон) у меня нет версии, тем более что она на английском.

    А для Агата, тот который из НИИВК - пожалуйста, качайте на сайте. Тут трудностей не вижу.
    Последний раз редактировалось GARNIZON; 08.07.2021 в 23:42.

  4. #54

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Была у нас подтема о том, где вообще использовали BCD. Привел пример некоторых бейсиков, а Вы наверное поняли это как некое обобщение.
    мало ли что там где-то было, отвечал я на конкретное сообщение о "коммерческих задачах", а не о бейсиках

    Цитата Сообщение от litwr Посмотреть сообщение
    Вы давали ссылку, что за muSIMP стоит muLisp...
    да, стоит, и что? а в том посте говорю, что на сайте есть мусимп - "промах" в чём?

    Цитата Сообщение от litwr Посмотреть сообщение
    muSimp никак не может рассматриваться как универсальный язык программирования. Это встроенный язык макросов для данного пакета.
    нет, это часть пакета, на которой написана другая часть пакета и запускать её отдельно тоже возможно
    если на рапире что-то напишут и положат с этим чем-то в один пакет - она сразу потеряет универсальность?

    Цитата Сообщение от litwr Посмотреть сообщение
    MuSimp никто (кроме Вас) и никогда не позиционировал как универсальный. Он не может быть универсальным и по внешним признакам - нет поддержки работы с файлами и текстовыми строками.
    во-1, конечно же, ЕСТЬ (а если даже чего-то не хватает, то есть возможность запуска машиннокодовых процедур)
    во-2, с каких пор наличие каких-то типов данных стало вдруг критерием универсальности?
    в жабе, например, нет беззнаковых целых - но где сегодня жаба и где рапира
    Прихожу без разрешения, сею смерть и разрушение...

  5. #55

    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,480
    Спасибо Благодарностей отдано 
    310
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    217 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Этот пользователь поблагодарил CodeMaster за это полезное сообщение:

    sintech(09.07.2021)

  6. #56

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    CodeMaster, паровозы надо давить, пока они чайники
    Прихожу без разрешения, сею смерть и разрушение...

  7. #57

    Регистрация
    25.03.2010
    Адрес
    Витебск
    Сообщений
    98
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    На рапире пишем ?s[1:6]; - конечно рапира не так отшлифована в мелочах. Она появилась заметно раньше и использовалась, по сравнению с питоном, на совсем маломощной технике. Но сам синтаксис с квадратными скобками и двоеточием был очень передовым. Странно, что вы с этим спорите. И длина строки у рапиры более компактно записывается.
    Всё таки рапира достаточно широко применялась в образовании, а SETL - это был скорее какой-то теоретический язык. В википедии почему-то упоминают только его реализацию на БЭСМ-6.
    Все ноги растут из математики и главным образом из SETL
    Тут в книжечке можно прочитать как SETL работает с множествами

    обратите внимание на год (думаю, что Радзянскія теоретики были знакомы с этими статьями, так же и на БЭСМ-6 не они ли адаптировали SETL?)
    строка - это просто множество символов, потому и в питоне и в рапире, как языках вдохновленных SETL, сходные конструкции.
    Как я писал ранее сету был определенно скомунизжен и доступен в СССР. Этот способ работы со строками и массивами мог казаться самоочевидным в то время.
    Последний раз редактировалось klingon; 09.07.2021 в 10:50.

  8. #58

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    за muSIMP стоит muLisp..
    А не хотите ли взглянуть на программу, которая работает после запуска muSIMP (в z80 варианте)?
    Я вот заморочился и выковырял:

    Скрытый текст

    SETQ они переименовали в двоеточие, а CONS в ADJOIN
    Код:
    (: RDS FALSE)
    (: SCAN ';)
    (: READCHAR TRUE)
    (: ECHO FALSE)
    (: WRS FALSE)
    (: NEWLINE 0)
    (: LPRINTER FALSE)
    (: RPAR '")")
    (: LPAR '"(")
    (: COMMA '",")
    (: BELL TRUE)
    (: EX1 '(SAVE PARSE))
    (: EX2 ';)
    (: DELIMITER '(EXIT ENDLOOP ENDBLOCK ENDFUN ENDSUB ")" ","))
    (PUT 'INFIX ': '(COND ((NAME EX1) (LIST : EX1 (PARSE SCAN 20))) ((SYNTAX BAD ASSIGNMENT))))
    (PUT 'INFIX '"(" '(COND ((NAME EX1) (ADJOIN EX1 (MATCH RPAR))) ((SYNTAX OPERATOR "NOT FOUND"))))
    (PUT 'LBP '^ 140)
    (PUT 'LBP '/ 120)
    (PUT 'LBP '* 120)
    (PUT 'LBP '- 100)
    (PUT 'LBP '+ 100)
    (PUT 'LBP '> 80)
    (PUT 'LBP '< 80)
    (PUT 'LBP 'OR 50)
    (PUT 'LBP 'AND 60)
    (PUT 'LBP 'EQ 80)
    (PUT 'LBP '= 80)
    (PUT 'LBP ': 180)
    (PUT 'LBP '"(" 200)
    (PUT 'PREFIX '- '(COND ((: EX2 (PARSE EX2 130)) ((INTEGER EX2) (MINUS EX2)) (LIST '- EX2))))
    (PUT 'PREFIX '+ '(PARSE EX2 130))
    (PUT 'PREFIX 'LOOP '(ADJOIN 'LOOP (MATCH 'ENDLOOP)))
    (PUT 'PREFIX 'BLOCK '(COND ((EQ SCAN 'WHEN) (ADJOIN (WHENPARSE (PARSE (SCAN) 0)) (MATCH 'ENDBLOCK))) ((SYNTAX 'BLOCK WITHOUT 'WHEN))))
    (PUT 'PREFIX 'WHEN '(WHENPARSE (PARSE SCAN 0)))
    (PUT 'PREFIX 'SUBROUTINE '(DEFFUN (READLIST SCAN) 'SUBROUTINE 'ENDSUB))
    (PUT 'PREFIX 'FUNCTION '(DEFFUN (READLIST SCAN) 'FUNCTION 'ENDFUN))
    (PUT 'PREFIX 'PROPERTY '(PUTPARSE (READLIST SCAN) (READLIST SCAN)))
    (PUT 'PREFIX '"'" '(LIST '"'" (READLIST SCAN)))
    (PUT 'PREFIX '"(" '(MATCHNOP (PARSE EX2 0) RPAR))
    (PUT 'RBP '^ 139)
    (PUT 'RBP '/ 120)
    (PUT 'RBP '* 120)
    (PUT 'RBP '- 100)
    (PUT 'RBP '+ 100)
    (PUT 'RBP '> 80)
    (PUT 'RBP '< 80)
    (PUT 'RBP 'OR 50)
    (PUT 'RBP 'AND 60)
    (PUT 'RBP 'NOT 70)
    (PUT 'RBP 'EQ 80)
    (PUT 'RBP '= 80)
    (: ERR FALSE)
    (: @ FALSE)
    (: CR '"
    ")
    (: POINT FALSE)
    (PUTD 'ECHO '(FUNCTION FALSE 
      (OR (NOT RDS) ECHO)))
    (PUTD 'MAKDEF '(FUNCTION (EX1 EX2 LEX1) 
      (
        (= 
          (REST (GETD EX1)) LEX1) EX1) 
      (
        (
          (AND (GETD EX1) (ECHO)) (PRINT " *** REDEFINED: ") (PRINTLINE EX1))) 
      (PUTD EX1 (ADJOIN EX2 LEX1)) EX1))
    (PUTD 'SUBROUTINE '(SUBROUTINE LEX1 
      (MAKDEF (FIRST LEX1) 'SUBROUTINE (REST LEX1))))
    (PUTD 'FUNCTION '(SUBROUTINE LEX1 
      (MAKDEF (FIRST LEX1) 'FUNCTION (REST LEX1))))
    (PUTD 'PUTPROP '(SUBROUTINE (EX1 EX2 EX3) 
      (
        (OR 
          (= (GET EX1 EX2) EX3) 
          (= 
            (GETD (GET EX1 EX2)) EX3)) EX1) 
      (
        (
          (AND (GET EX1 EX2) (ECHO)) (PRINT " *** REDEFINED: ") (PRINT EX1) (SPACES 2) (PRINTLINE EX2))) 
      (
        (EQ (FIRST EX3) 'FUNCTION) 
        (PUTD 
          (PUT EX1 EX2 
            (COMPRESS (LIST EX1 EX2))) EX3) EX1) (PUT EX1 EX2 EX3) EX1))
    (PUTD 'TERMINATOR '(FUNCTION FALSE 
      (OR (EQ SCAN ;) (EQ SCAN $) (EQ SCAN &))))
    (PUTD 'DELIMITER '(FUNCTION FALSE 
      (OR (TERMINATOR) (MEMBER SCAN DELIMITER))))
    (PUTD 'MATCH '(FUNCTION (DELIM LEX1) 
      (
        ((EQ SCAN COMMA) (SCAN))) 
      (LOOP 
        ((EQ SCAN DELIM) (SCAN) (REVERSE LEX1)) 
        ((DELIMITER) (SYNTAX DELIM "NOT FOUND")) 
        (PUSH (PARSE SCAN 0) LEX1) 
        ((EQ SCAN DELIM) (SCAN) (REVERSE LEX1)) 
        (
          (NOT (EQ SCAN COMMA)) (SYNTAX DELIM OR COMMA "NOT FOUND")) (SCAN))))
    (PUTD 'MATCHNOP '(FUNCTION (EX1 DELIM) 
      ((EQ SCAN DELIM) (SCAN) EX1) (SYNTAX DELIM OR OPERATOR "NOT FOUND")))
    (PUTD 'PARSE '(FUNCTION (EX1 RBP EX2) 
      ((DELIMITER) (SYNTAX EX1 "USED AS" NAME)) 
      (: EX2 (SCAN)) 
      (
        (
          (GET 'PREFIX EX1) 
          (: EX1 
            (EVAL 
              (GET 'PREFIX EX1)))) 
        (
          (GET 'LBP EX1) (SYNTAX EX1 "USED AS" PREFIX OPERATOR)) 
        (
          (GET 'RBP EX1) 
          (: EX1 
            (LIST EX1 
              (PARSE EX2 
                (GET 'RBP EX1)))))) 
      (LOOP (: EX2 SCAN) 
        (
          (NOT 
            (LESSER RBP 
              (GET 'LBP EX2))) EX1) (SCAN) 
        (
          (
            (GET 'INFIX EX2) 
            (: EX1 
              (EVAL 
                (GET 'INFIX EX2)))) 
          (
            (GET 'RBP EX2) 
            (: EX1 
              (LIST EX2 EX1 
                (PARSE SCAN 
                  (GET 'RBP EX2))))) 
          (: EX1 (LIST EX2 EX1))))))
    (PUTD 'READLIST '(FUNCTION (EX1) 
      (LOOP 
        (
          (NOT (EQ EX1 COMMA))) 
        (: EX1 (SCAN))) 
      ((EQ EX1 RPAR) (SYNTAX)) 
      (
        (NOT (EQ EX1 LPAR)) (SCAN) EX1) 
      (LOOP 
        (
          (NOT 
            (EQ (SCAN) COMMA)))) 
      ((EQ SCAN RPAR) (SCAN) FALSE) (: EX1) 
      (LOOP 
        (: EX1 
          (CONCATEN EX1 
            (LIST (READLIST SCAN)))) 
        ((EQ SCAN RPAR) (SCAN) EX1) 
        ((EQ SCAN .) 
          (: EX1 
            (CONCATEN EX1 
              (READLIST (SCAN)))) 
          ((EQ SCAN RPAR) (SCAN) EX1) (SYNTAX)))))
    (PUTD 'PUTPARSE '(FUNCTION (EX1 EX2) 
      (
        (AND (NAME EX1) (NAME EX2)) 
        (LOOP 
          (
            (NOT (EQ SCAN COMMA))) (SCAN)) 
        (LIST 'PUTPROP EX1 EX2 (PARSE SCAN 0))) (SYNTAX)))
    (PUTD 'DEFFUN '(FUNCTION (EX1 EX2 EX3) 
      (
        (AND (NAME EX1) EX1) 
        (ADJOIN EX2 
          (ADJOIN EX1 
            (ADJOIN (READLIST SCAN) (MATCH EX3))))) 
      (ADJOIN EX2 
        (ADJOIN EX1 (MATCH EX3)))))
    (PUTD 'IDENTITY '(FUNCTION (EX1) EX1))
    (PUTD 'WHENPARSE '(FUNCTION (EX1) 
      ((ATOM EX1) 
        (ADJOIN 
          (LIST 'IDENTITY EX1) 
          (MATCH 'EXIT))) 
      (ADJOIN EX1 
        (MATCH 'EXIT))))
    (PUTD 'DRIVER '(FUNCTION (EX1 EX2) 
      (
        ((NOT EX1) (RDS))) (WRS) (: READCHAR TRUE) (NEWLINE 2) 
      (LOOP (: ERR) 
        (
          ((ECHO) 
            (PRINT '?) (SPACES 1) 
            (
              (AND (NOT RDS) BELL) 
              (PRINT ')))) (: EX1) 
        (: EX1 
          (PARSE (SCAN) 0)) (: EX2 SCAN) 
        (
          ((ECHO) (NEWLINE NEWLINE))) 
        (
          (
            (OR ERR 
              (NOT (TERMINATOR))) (SYNTAX OPERATOR "NOT FOUND") (NEWLINE)) 
          (
            (EQ EX2 '$) 
            (: @ (EVAL EX1)) 
            ((ECHO) (NEWLINE))) 
          (PRINT '@) 
          (PRINT ':) 
          (: @ (EVAL EX1)) (SPACES 1) 
          (
            (
              (EQ EX2 ';) (PRTMATH @ 0 0 TRUE)) (PRINT @)) (NEWLINE 2) (NEWLINE NEWLINE)))))
    (PUTD 'SYNTAX '(FUNCTION LEX1 
      ((EVAL ERR)) (: ERR TRUE) (NEWLINE) (PRINT "SYNTAX ERROR! ") 
      (LOOP 
        ((ATOM LEX1)) 
        (PRINT (POP LEX1)) (SPACES 1)) (NEWLINE) 
      (LOOP 
        (
          ((AND ECHO RDS)) (PRINT SCAN)) 
        (
          (OR (TERMINATOR) 
            (AND (EQ SCAN CR) (NOT RDS)))) (READCHAR)) (: RDS FALSE) (NEWLINE)))
    (PUTD '- '(FUNCTION (EX1 EX2) 
      ((EMPTY EX2) (MINUS EX1)) (DIFFERENCE EX1 EX2)))
    (PUTD '/ '(FUNCTION (EX1 EX2) (QUOTIENT EX1 EX2)))
    (PUTD 'PRTSPACE '(FUNCTION FALSE 
      ((NOT PRTSPACE)) (SPACES 1)))
    (PUTD 'PRTPAREN '(FUNCTION (EX1) 
      (
        (GET 'RBP LOP1) 
        (
          (> LBP 
            (GET 'RBP LOP1)) (PRINT EX1)) 
        (
          (GET 'LBP LOP1) 
          (
            (< RBP 
              (GET 'LBP LOP1))) (PRINT EX1))) 
      (
        (GET 'LBP LOP1) 
        (
          (< RBP 
            (GET 'LBP LOP1))) (PRINT EX1))))
    (PUTD 'PRTLIST '(FUNCTION (LOP1 EX1 LEX1) (PRINT LOP1) (PRTSPACE) (PRINT LPAR) 
      (LOOP (PRTMATH EX1 0 0) 
        ((ATOM LEX1)) (PRINT COMMA) (PRTSPACE) 
        (: EX1 (POP LEX1))) (PRINT RPAR)))
    (PUTD 'PRTMATH '(FUNCTION (EX1 RBP LBP PRTSPACE EX2 EX3 LOP1 LEX1) 
      ((ATOM EX1) 
        (
          (AND (NEGATIVE EX1) (> LBP 130)) (PRINT LPAR) (PRINT EX1) (PRINT RPAR)) (PRINT EX1)) 
      (
        (AND (NUMBER EX1) 
          (OR (POSITIVE POINT) (ZERO POINT))) 
        (: EX2 (DEN EX1)) 
        (: EX1 (NUM EX1)) (: PRTSPACE FALSE) 
        (
          ((NEGATIVE EX1) 
            (
              ((> LBP 130) (: PRTSPACE TRUE) (PRINT LPAR))) 
            (PRINT '-) 
            (: EX1 (- EX1)))) 
        (: EX1 (DIVIDE EX1 EX2)) 
        (PRINT (FIRST EX1)) 
        (PRINT '.) (: EX3 POINT) 
        (LOOP 
          ((ZERO EX3)) 
          (
            (ZERO (SECOND EX1))) 
          (: EX1 
            (DIVIDE 
              (TIMES (SECOND EX1) (RADIX)) EX2)) 
          (: EX3 (DIFFERENCE EX3 1)) 
          (PRTDIG (FIRST EX1))) 
        ((IDENTITY PRTSPACE) (PRINT RPAR))) 
      (: LOP1 (FIRST EX1)) 
      (: LEX1 (REST EX1)) 
      (
        (APPLY 
          (GET 'PRTMATH LOP1) (LIST LEX1))) 
      ((ATOM LEX1) (PRINT LOP1) (PRTSPACE) (PRINT LPAR) (PRINT RPAR)) 
      (: EX1 (POP LEX1)) 
      ((ATOM LEX1) (PRTPAREN LPAR) 
        (
          (GET 'RBP LOP1) (PRINT LOP1) (PRTSPACE) 
          (PRTMATH EX1 
            (GET 'RBP LOP1) 0) (PRTPAREN RPAR)) 
        (
          (GET 'LBP LOP1) 
          (PRTMATH EX1 0 
            (GET 'LBP LOP1)) (PRTSPACE) (PRINT LOP1) (PRTPAREN RPAR)) (PRTLIST LOP1 EX1 LEX1)) 
      (
        (AND 
          (GET 'RBP LOP1) 
          (GET 'LBP LOP1)) (PRTPAREN LPAR) 
        (PRTMATH EX1 0 
          (GET 'LBP LOP1)) 
        (LOOP 
          (: EX1 (POP LEX1)) (PRTSPACE) (PRINT LOP1) (PRTSPACE) 
          ((ATOM LEX1)) 
          (PRTMATH EX1 
            (GET 'RBP LOP1) 
            (GET 'LBP LOP1))) 
        (PRTMATH EX1 
          (GET 'RBP LOP1) 0) (PRTPAREN RPAR)) (PRTLIST LOP1 EX1 LEX1)))
    (PUTD 'PRTDIG '(FUNCTION (EX1) 
      (
        (EQ (LENGTH EX1) 1) (PRINT EX1)) 
      (PRINT 
        (SECOND (EXPLODE EX1)))))
    [свернуть]


    - - - Добавлено - - -

    Программа стартует функцией DRIVER

  9. #59

    Регистрация
    16.11.2015
    Адрес
    г. Москва
    Сообщений
    234
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Расскажу пока подробности про muMATH для Apple. Хотя нас тут убеждают, что это пакет только для ученых и без диплома кандидата наук к нему и подходить нельзя, на деле все проще.

    Во-первых, матрицы, решение систем уравнений, числовые ряды, дифуры - это все программа института. В гугле можно найти кучу ссылок на статьи, в которых описан опыт применения этого пакета в ВУЗах. Например, раз, два, три.
    То есть, Рапира - инструмент для обучения школьников, а muMATH - студентов.

    Во-вторых, не надо думать, будто этот пакет заточен только под ввод формул и ничего больше делать в нем нельзя.

    Что есть в пакете muMATH?
    1) Операционка ADIOS, которая представляет собой некий гибрид CP/M и штатной DOS 3.3 для Apple. Например, в ней есть команда TYPE, которой можно просматривать находящиеся на диске файлы. Также в ней есть понятие текущего диска. Команда "1:", выбирает первый диск, "2:" - второй. Запуск исполняемых файлов (*.COM) производится командой RUN.
    2) Два варианта интерпретатора MUSIMP.COM и MUSIMPX.COM. Первый расчитан на Apple с 48Кб памяти, второй - на Apple с 64Кб (48Кб + Language Card).
    3) Набор текстовых файлов с программами на muSIMP, которые, собственно, и реализуют все математические функции.

    Еще раз, коротко: голый muSIMP не может ничего делать с уравнениями или матрицами. Он даже в степень не возводит. Все математические возможности появляются после того, как нужная программа на muSIMP загружается в память функцией RDS(ИМЯ,РАСШИРЕНИЕ,ДИСК); и транслируется.

    Например, чтобы посчитать 2 в степени 1800 мне понадобилось загрузить файл ARITH.MUS. Поддержка длинной арифметики в muSIMP встроена, для нее ничего грузить не надо, но это именно 4 действия. Без загрузки ARITH.MUS интерпретатор не знает, что такое ^ и считает выражение 2^1800 просто строкой.

    Уже этого достаточно, чтобы опровергнуть заявления, будто у muSIMP нет поддержки работы с текстовыми строками. Ведь этот код как-то объяснил интерпретатору, что символ ^ - теперь оператор возведения в степень. Впрочем, есть и другое опровержение.

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

    Скрытый текст


    Код:
    FUNCTION EXPT (EX1, EX2,
      % Local: %  EX3),
      EX3: 1,
      WHEN INTEGER (EX1),
        LOOP
          BLOCK
            WHEN REST(EX2:DIVIDE(EX2,2)) EQ 1,
    	  EX3: TIMES(EX1,EX3) EXIT
          ENDBLOCK,
          WHEN ZERO (EX2:FIRST(EX2)), EX3 EXIT,
          EX1: TIMES(EX1,EX1)
        ENDLOOP EXIT,
      LOOP
        BLOCK
          WHEN REST(EX2:DIVIDE(EX2,2)) EQ 1,
    	EX3: EX1*EX3 EXIT
        ENDBLOCK,
        WHEN ZERO (EX2:FIRST(EX2)), EX3 EXIT,
        EX1: SQUARE(EX1)
      ENDLOOP
    ENDFUN$
    [свернуть]


    Поддержка работы с файлами тут тоже есть. Есть функция RDS (ReaD Select), перенаправляющая файл в текущий поток ввода, и функция WRS (WRite Select), перенаправляющая текущий вывод в файл. Когда мы в интерактивном режиме пишем RDS(ИМЯ,РАСШИРЕНИЕ,ДИСК); фактически на вход интерпретатора перенаправляется указанный файл. Этим пользуются интерактивные уроки, отображая текст задания из файла, а потом переключая ввод на клавиатуру, чтобы пользователь мог решить показанные примеры.

    Но есть пример и поинтереснее. Дело в том, что muMATH содержит среду разработки (IDE). На первом диске есть программа TRACE.MUS, которая позволяет отлаживать функции с помощью отладочного вывода.
    А на третьем диске находится... текстовый редактор EDIT! Написанный целиком на muSIMP. Как вам такое? Текстовый редактор на языке якобы без поддержки работы с текстовыми строками.
    Что интересно, в нем есть даже автоматические отступы.

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

    Вот пример ввода функции с помощью редактора и результат ее выполнения.
    Нажмите на изображение для увеличения. 

Название:	muMath3.png 
Просмотров:	73 
Размер:	7.4 Кб 
ID:	75807

    Кстати, этот редактор меня заставил призадуматься над Рапирой. В Рапире вызов редактора не самый очевидный. Нужно написать
    Код:
    ПРОЦ ИМЯ_ПРОЦЕДУРЫ
    после чего будет вызван редактор, в котором появится заготовка процедуры с указанным именем. Дальше мы правим текст процедуры, выходим из редактора и происходит проверка синтаксиса. Если есть ошибки, о них сразу будет выдано сообщение.

    В muMATH можно написать
    Код:
    EDIT(NEWFUNCTION);
    и тоже будет вызван редактор. И в нем будет заготовка функции. Дальше мы правим текст функции, выходим из редактора и происходит проверка синтаксиса. Если есть ошибки, о них сразу будет выдано сообщение.
    Нажмите на изображение для увеличения. 

Название:	muMath4.png 
Просмотров:	76 
Размер:	5.7 Кб 
ID:	75808 Нажмите на изображение для увеличения. 

Название:	muMath5.png 
Просмотров:	65 
Размер:	4.3 Кб 
ID:	75809 Нажмите на изображение для увеличения. 

Название:	muMath6.png 
Просмотров:	69 
Размер:	2.5 Кб 
ID:	75810

    По-моему, сделано все один в один. И вот возникает вопрос, а может, разработчики Рапиры подглядели этот интерфейсный ход в muMATH? Ведь известно, что проводились закупки как самих Apple, так и софта для них. Так что они вполне могли держать этот пример перед глазами.

    Этот пользователь поблагодарил avivanov76 за это полезное сообщение:

    Lethargeek(09.07.2021)

  10. #60

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GARNIZON Посмотреть сообщение
    Я уже говорил, для Эпл (как и для мистического агата, который эпл-клон) у меня нет версии, тем более что она на английском.
    А для Агата, тот который из НИИВК - пожалуйста, качайте на сайте. Тут трудностей не вижу.
    Возили же какую-то рапиру в Штаты и наверное локализованную для местных? И Вы сами писали, что была рапира 1.2 - неужели нигде не сохранилась? А ещё бы найти 1.1 или 1.0... А то что на сайте, это в любом эмуляторе штатные добавки. Хотелось бы более древнего "антиквариата". Писали, что изначально делали рапиру на БЭСМ-6. Недавно сделали эмулятор БЭСМ-6 - если рапиру делали там, то найти бы и её и запустить.

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    CodeMaster, паровозы надо давить, пока они чайники
    Аргументики странные.

    Цитата Сообщение от klingon Посмотреть сообщение
    строка - это просто множество символов, потому и в питоне и в рапире, как языках вдохновленных SETL, сходные конструкции.
    Как я писал ранее сету был определенно скомунизжен и доступен в СССР. Этот способ работы со строками и массивами мог казаться самоочевидным в то время.
    Извините, но строка - это никакое не множество. Может на белорусском это синонимы? Setl как любое явление в научном мире был доступен всем интересующимся передовыми ИТ, поэтому в факте его использования в СССР нет никакого негатива. Но Setl довольно древнее явление, тогда ещё не было квадратных скобок. В рапире использовали очень прогрессивную запись, подобная которой широко используется и поныне.

    Цитата Сообщение от b2m Посмотреть сообщение
    А не хотите ли взглянуть на программу, которая работает после запуска muSIMP (в z80 варианте)?
    Я вот заморочился и выковырял:
    Это очень интересно и это определенно лисп. Однако после ссылки, которую нам любезно предоставил уважаемый Lethargeek, нам уже было известно, что за muSimp иногда стоит muLisp. Вы доказали, что это верно для варианта для z80. Однако, есть основания полагать, что для 6502 это не так. Потому как muLisp для 6502 в природе не обнаружен и потому как в muSimp мануале есть указание, что muSimp написан на нём самом, раскруткой. В любом случае, это неважно, так как даже если в muMath для 6502 есть фрагменты muLisp, это именно фрагменты muMath, от него неотделимые. А мы ищем универсальный ЯП, который мог бы обрабатывать длинные числа.
    И ещё, как уже не раз здесь писалось, muLisp для z80 был известнен издавна...

    Цитата Сообщение от avivanov76 Посмотреть сообщение
    Расскажу пока подробности про muMATH для Apple. Хотя нас тут убеждают, что это пакет только для ученых и без диплома кандидата наук к нему и подходить нельзя, на деле все проще.

    То есть, Рапира - инструмент для обучения школьников, а muMATH - студентов.
    Почему только для ученых? Математический пакет - это ПО для тех, кому нужна компьютерная математика. Это может быть и школьник, и студент, и инженер, и ученый, и даже продвинутая домохозяйка. Высококвалифицированному рабочему тоже может понадобиться что-то подсчитать по не совсем тривиальной формуле. А рапира - это обычный, универсальный и очень прогрессивный для своего времени ЯП. В нем нет ничего специфически школьного.

    Цитата Сообщение от avivanov76 Посмотреть сообщение
    Во-вторых, не надо думать, будто этот пакет заточен только под ввод формул и ничего больше делать в нем нельзя.
    Никто этого не утверждал. Наоборот приводил для уважаемого Lethargeek примеры других математических систем. Это реально очень мощные инструменты, с мощными встроенными языками программирования. Могу только повторить для Вас, что это не делает эти системы универсальными средствами программирования. Они могут ими стать только если каким-то волшебством все ЯП общего назначения исчезнут. Ди и в этом случае, умельцы вырежут сам ЯП из системы, расширят его нужнуми мелочами и библиотеками и только потом предоставят публике как универсальный ЯП.

    Цитата Сообщение от avivanov76 Посмотреть сообщение
    Что есть в пакете muMATH?
    Уже этого достаточно, чтобы опровергнуть заявления, будто у muSIMP нет поддержки работы с текстовыми строками. Ведь этот код как-то объяснил интерпретатору, что символ ^ - теперь оператор возведения в степень. Впрочем, есть и другое опровержение.
    Вот, кстати, сама реализация возведения в степень. Видно, что тут полноценный алгоритм с циклами, условными операторами и вызовами других функций.
    Благодарю Вас за очень интересный обзор некоторых возможностей математического пакета muMath. Реально очень хорошо для 8-битных машин и начала 80-х.
    Насчет строк свою позицию обосновывал отсутствием информации по ним в официальной документации. Ваш пример только показывает, что есть какие-то недокументированные низкоуровневые механизмы, а не полноценная строковая алгебра. Никто не утверждал, что в muSimp не хватает операторов, утверждалось только, что не хватает некоторых типовых для универсального языка программирования средств. И повторю в современных системах компьютерной математики все эти средства есть...

    Цитата Сообщение от avivanov76 Посмотреть сообщение
    Поддержка работы с файлами тут тоже есть. Есть функция RDS (ReaD Select), перенаправляющая файл в текущий поток ввода, и функция WRS (WRite Select), перенаправляющая текущий вывод в файл. Когда мы в интерактивном режиме пишем RDS(ИМЯ,РАСШИРЕНИЕ,ДИСК); фактически на вход интерпретатора перенаправляется указанный файл. Этим пользуются интерактивные уроки, отображая текст задания из файла, а потом переключая ввод на клавиатуру, чтобы пользователь мог решить показанные примеры.
    Это очень примитивный уровень. А как мне одновременную обработки нескольких файлов наладить - это типично для прикладных программ экономического назначения?

    Цитата Сообщение от avivanov76 Посмотреть сообщение
    По-моему, сделано все один в один. И вот возникает вопрос, а может, разработчики Рапиры подглядели этот интерфейсный ход в muMATH? Ведь известно, что проводились закупки как самих Apple, так и софта для них. Так что они вполне могли держать этот пример перед глазами.
    Не знаю, наверное при разработке пользовательского интерфейса рапиры изучались разные примеры. Может и на muMath смотрели, ну и что? Ну и не совсем один в один.
    Последний раз редактировалось litwr; 10.07.2021 в 11:40.

Страница 6 из 9 ПерваяПервая ... 23456789 ПоследняяПоследняя

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

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

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

Ваши права

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