desperado gmbh ([info]tolstopuz) wrote,
@ 2007-09-22 15:20:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
К вопросу о калькуляторах
В очередной раз на очередном форуме прочитал: "Не все так плохо было у нас. Если и отставали от TI, HP и Casio, то года на два-три (и то, имхо это не с разработкой связано, а с выпуском, привязаным к пятилеткам)." Несколько лет мне было лень, но сейчас молчать уже не могу. Расскажу про программируемые HP - мне это ближе.

1974.
Итак, в 1974 году выходит HP-65 - первый в мире программируемый калькулятор.
Конечно же, обратная польская запись. Сто (100) шагов программы, девять регистров. Правда, практически любое нажатие клавиши, даже каждого из трех шифтов, занимает отдельный шаг - шаги у него шестибитные, в один шаг много не всунешь. Причем таблицу кодов учить не нужно - коды совпадают с положением на клавиатуре. Внутри, конечно, они преобразуются в шестибитные шаги (а склеивающиеся коды типа чтения-записи в регистр - по два в один шаг), но пользователю это не видно и не особо интересно.

Зато совершенно нет номеров шагов - можно ставить метки и потом делать переходы на них. Даже так: пять буквенных меток определяют подпрограммы, которые можно вызывать вручную нажатием одной клавиши или вызывать из других подпрограмм (правда, вложенные вызовы не поддерживаются). А десять цифровых меток - только для переходов.

Благодаря наличию меток можно удалять команды из середины программы, не набивая весь остаток заново (а замены нет вообще, только вставка). Правда, эта функциональность очень странная и смешная: для удаления надо сначала нажать один из шифтов, он немедленно вставляется в код, и, если программа упирается в конец памяти, последняя команда теряется. Зато, так как по шагам можно ходить только вперед, а назад нельзя, иногда легче удалить несколько команд и потом вставить заново, чем идти с самого начала или от ближайшей буквенной метки :)

Проверка условий тоже сделана довольно забавно - если условие не выполняется, то управление перескакивает на два шага вперед. А если выполняется, то идет на эти самые два шага, где может быть, например, переход или короткое действие.

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

Есть даже команды арифметики прямо в регистрах (STO * 2), но они трехшаговые, и ими пользуются редко.

Зато есть целая и дробная часть, модуль, факториал, перевод минут и секунд в доли градуса, декартовых координат в полярные, десятичных чисел в восьмеричные и всего этого обратно. И даже сложение и вычитание градусов-минут-секунд без перевода в доли градуса.

А, да, чуть не забыл. МАГНИТНЫЕ КАРТЫ! Именно с них вроде как грузили программы расчета коррекции курса при стыковке "Союза-19" и "Аполлона" (у нас подобное безумие запланировали только как резерв в 1988 году на "Союзе ТМ-7" и МК-52, да и то, кажется, не пригодилось). Для простых людей, естественно, они тоже были полезны - сначала на них сохраняли свои программы, потом ими менялись, а потом покупали готовые пакеты, которые выглядели как немаленьких размеров книжка с маленькой коробочкой.

Стоила вся эта радость $795, хотя по сравнению с другими программируемыми устройствами того времени это было очень по-божески.

Калькулятор стал настолько популярным, что уже через несколько месяцев после выпуска энтузиасты начали выпускать и распостранять по почте ежемесячный самиздатовский журнал. Первый номер, правда, занимал всего две страницы, но со временем объем дошел до полусотни-сотни страниц.

1975.
Через год после HP-65 был объявлен HP-55. Хотя выглядел он довольно похоже, внутри его зачем-то изрядно поменяли. Всего 49 шагов программы, зато зачем-то 20 регистров. Правда, преобразование единиц и статистические функции, но разве в них счастье?

Никаких меток больше нет. Все как мы привыкли, с номерами шагов и без вставок-удалений. Наконец-то сделали листание программы назад. Шаги десятичные (00-99), это чуть лучше, чем шестибитные, поэтому команда перехода влезает в один шаг. Зато все остальные операции склеиваться перестали - сколько нажатий, столько и шагов. Условий вместо четырех осталось только два. Никаких магнитных карт нет, зато зачем-то есть таймер.

Но все же это $395 - в два раза дешевле. В самиздатовском журнале обсуждают HP-55 и пишут для него программы, хотя HP-65 намного популярнее. Отдельные личности мечтают о SUPER 65 с сохраняющейся памятью, тысячей шагов, сотней регистров, двумя шифтами с подвыподвертом (я серьезно), защитой от копирования, вводом-выводом звука и термопринтером.

А пока они мечтают, выходит HP-25, поменьше и попроще.

Шагов все так же 49, регистров осталось 8, зато любая функция с любыми шифтами и переход влезают в одну команду. Условия вернули как в HP-65 - с перескоком на шаг вперед. И условий теперь целых восемь - сравнение двух чисел и числа с нулем. Да, кстати, десятичная точка перестала занимать отдельный разряд.

Но так как он стоит $195 - спасибо новой платформе - и переносится одной рукой, спрос огромный.

А в самиздате тем временем забывают про HP-55, бодро программируют для двух остальных, фотографируют потроха HP-65 и собирают из рассыпухи принтер. И, понимая, что ждать SUPER 65 с энергонезависимой памятью пока бессмысленно, начинают мечтать о чем-нибудь типа HP-75, изменения в котором будут чисто косметическими - всего один лист A4 через один интервал. От безысходности даже появляется раздел по кстати вышедшему TI SR-52 аж с целыми 224 шагами и 20 регистрами.

1976.
Безысходность в самиздате нарастает. В майском номере любители HP-65 расправляются с любителями SR-52 и выгоняют их в их собственный самиздат. Ну какой толк, говорят, от удвоенной памяти, если решение квадратного уравнения занимает 110 шагов вместо 45? А разложение на множители - 162 вместо 90? И вообще у них корпус неудобный и кнопки мелкие.

И тут появляется лесник во всем белом. Во-вторых, в HP-25 добавляют, да-да, не шифты с подвыподвертом, а энергонезависимую память, называют эту штуку HP-25C и начинают продавать всего за $200. А во-первых...

224 шага! (естественно, одношаговые команды) 26 регистров! (правда, десять из них доступны с трудом) HP-67!
О командах в несколько шагов, загубивших те же 224 шага в SR-52, уже никто не вспоминает. При редактировании программы можно двигаться налево, направо и в другие стороны. Меток, повешенных на клавиши, уже не 5, а 10. Конечно же, никаких номеров шагов. Процедуры можно вызывать до трех уровней вложенности. А еще можно читать и писать на карты не только программы, но и куски программ или данные из регистров. И даже делать все это программно.

А еще косвенная адресация.

И еще настольный вариант с принтером HP-97.

Самиздат в восторге, фотографирует потроха, пишет "жизнь" (первая версия - 50 минут на поколение на доске 10x10), блэкджек и стартрек. А другие занимаются еггогологией, она даже смешнее, чем у нас: они засовывают в HP-67 карты от HP-65 или вообще выключают питание на середине записи или включают на уже полупрочитанной карте. После того как искомый байт пойман, его можно записать на отдельную карту и делиться с друзьями :)

Да, кстати, стоил HP-67 $450, а HP-97 - $750.

1977.
Выходит замена для HP-25 - HP-29C с 98 шагами программы и 30 регистрами (14 опять доступны с трудом). Из HP-67 переползли метки (правда, только цифровые) с переходами, три уровня подпрограмм и косвенная адресация, а из HP-25C энергонезависимая память (кроме этих злосчастных 14 регистров).

Стоит $195, и опять есть HP-19C с принтером за $345.

И вот тут-то и появляется наш Б3-21, первоначально по 350 рублей. На первый взгляд он находится где-то между HP-55 и HP-25. Но:
- краткого исследования картинок достаточно, чтобы осознать пропасть в наборе функций, нет даже арктангенса;
- регистров только два (вместо традиционных четырех) стековых, семь нормальных и шесть кривых;
- шагов программы вроде бы больше, но из-за маленького стека приходится постоянно пользоваться регистрами, что раздувает программу.

Например, неполная гамма-функция занимает больше шагов, чем даже на HP-55, у которого двухшаговая работа с регистрами. А на HP-25 не только одношаговое чтение-запись регистров, но есть еще и одношаговая арифметика в них, что позволяет делать в его 49 шагах гораздо более интересные вещи.

И, куда ни ткнись, всюду отвратительные неудобства, даже адрес перехода приходится вводить по табличке. О глюках я лучше промолчу.

Если кому-нибудь еще интересно, могу рассказать, что творилось в цивилизованном мире в 1978-1979 годах, пока у нас готовили Б3-34.



(Post a new comment)


[info]slobin
2007-09-22 11:46 am UTC (link)
У меня в левом ящике стола лежит HP-11C, и я им регулярно пользуюсь. Правда, программ уже лет десять как не пишу -- если нужна программа, то компьютер всё-таки удобнее. А посчитать цифирки на нём удобнее, чем в командной строке (не говоря уже об экранном уёжище). Хотя нет, одну программу всё-таки регулярно набиваю (потому что потом решаю, что не нужна, и стираю обратно, а потом опять передумываю): LBL A, RAN#, 6, ×, INT, 1, +.

... А мой кибер бросит писать стихи и начнёт слушать музыку ...

(Reply to this) (Thread)


[info]tolstopuz
2007-09-22 11:51 am UTC (link)
а 12C вообще до сих пор производят. эту серию начали, когда мы переходили от Б3-34 к МК-54, то есть вообще ничего не делали :)

(Reply to this) (Parent)(Thread)


[info]slobin
2007-09-22 12:05 pm UTC (link)
12 -- это который для бухгалтеров? Ну да, это единственная ниша, где на калькуляторы ещё есть спрос. Один мой знакомый хотел купить сыну приличный калькулятор, и обнаружил, что есть только 12-ые. Я в своё время мечтал о 15 или 16, но не свезло. ;-) Что забавно -- дисплей у них у всех один и тот же, поэтому в режиме тестирования можно высветить надписи, которые при нормальной работе 11-го получить нельзя.

... Своп на рамдрайве ...

(Reply to this) (Parent)(Thread)


[info]arbinada
2007-11-24 09:13 pm UTC (link)
Вы шутите? Линейка HP - более десятка моделей. Производитель даже заботится правильным выборм клиента, как на картинке.
http://arbinada.com/pmk/node/20

(Reply to this) (Parent)(Thread)


[info]tolstopuz
2007-11-24 09:45 pm UTC (link)
серия 10C-16C считается культовой.

(Reply to this) (Parent)(Thread)


[info]arbinada
2007-11-24 10:05 pm UTC (link)
Так я с этим и не спорю, тем более что не в теме "культовости" :)
Я не согласен с предыдущим утверждением как по поводу спроса, так и по поводу "приличный калькулятор, и обнаружил, что есть только 12-ые"

(Reply to this) (Parent)(Thread)


[info]tolstopuz
2007-11-24 10:17 pm UTC (link)
пересечение текущей линейки со списком культовых содержит один элемент :)

(Reply to this) (Parent)(Thread)


[info]arbinada
2007-11-24 10:39 pm UTC (link)
Тогда и надо было писать, что искал не "приличный калькулятор для сына", а "культовый, из своей молодости" :) Тем более, не утверждать на этом основании о "единственной нише".

(Reply to this) (Parent)


[info]slobin
2007-11-25 10:06 am UTC (link)
Я, видимо, неаккуратно выразился. Я хотел сказать, что из чрезвычайно удачной линейки 11C-12C-15C-16C до сих пор продаётся только двенадцатый, и это очень обидно. У меня в столе лежит одиннадцатый, и мне он весьма нравится. То есть, собственно, не лежит, я на нём регулярно считаю. ;-) Правда, программировать уже не программирую. А ещё мечта идиота -- добыть где-нибудь HP-200LX со всеми интерфейсными кабелями. Правда, говорят, на американском вторичном рынке они сейчас стоят примерно столько же, сколько в своё время по прейскуранту. ;-(

... Бесплатный сюр бывает только в мюшеловке ...

(Reply to this) (Parent)


[info]dzz
2007-11-15 09:11 am UTC (link)
http://dzz.livejournal.com/426537.html :)

(Reply to this) (Thread)


[info]tolstopuz
2007-11-15 10:52 am UTC (link)
ну да. а вот программируемые калькуляторы у нас не стали тупо сдирать, а проявили просто чудеса ума и сообразительности. к чему это привело, я и показываю.

(Reply to this) (Parent)


[info]arbinada
2007-11-24 09:20 pm UTC (link)
Хороший обзор.
Насчет 2-3 года - не слышал, а 5-6 лет - реальная цифра, собсно, вы к ней тоже приходите.
В условиях бурного развития рынка, кстати, задержка лет на 5 экономит массу усилий: не нужно воспроизводить то, что умерло за эти годы.
Сейчас, правда, говорить о задержке вообще не приходится в связи с отсутствием отрасли, как таковой.

(Reply to this) (Thread)


[info]tolstopuz
2007-11-24 10:15 pm UTC (link)
в 1979 у них был hp-41c (с алфавитным жк дисплеем), а у нас б3-34 (хуже, чем hp-29c).

в 1982 у них hp-75c (бейсик), а у нас мк-54 (то есть вообще ничего нового).

а дальше у них в 1986 случилась маленькая революция - переход на rpl и выпуск легендарных 28 и 48. у нас же после выпуска мк-52 (потрясающий уродец, опять же на уровне моделей hp 1977 года) и мк-85 (аналог hp-75c) произошло не отставание, а тупик.


то есть общий итог получается такой - до 1986 года сделали три аналога далеко не лучших моделей 1978-79 года и одну с бейсиком. ничего даже близко похожего на модели 70-х(!) годов hp-41 и даже hp-67 сделано не было. про rpl я даже не говорю - это для нас просто ракетная техника.

(Reply to this) (Parent)(Thread)


[info]arbinada
2007-11-24 10:37 pm UTC (link)
RPL...
А оно нужно для калькуляторов? Там уже вполне компутерные задачки вырисовываются.
Действительно похоже на реактивный ранец за плечами, только что с ним делать в городе-то? :)) Лучше на велике или на авто.

По мне так и бейсик нафиг сдался (хотя опять же разница между hp-75с и мк-85 - 4 года). Бейсик - он для Excel хорош.

Алфавтный индикатор на hp-41c, если не ошибаюсь, только для вывода. С символьной информацией калькулятор не работал. То есть, да, удобнее читать сообщение "Ошибка" вместо ЕГГ0Г, но это не качественная разница.

Магнитные карты - да, качественная. Она была изначально, и, как мне кажется, не воспроизводилась по причине контроля за копированием информации в СССР (вспомните учет копий документов на предприятиях, а тут массовое копирование программ)

(Reply to this) (Parent)(Thread)


[info]tolstopuz
2007-11-24 11:28 pm UTC (link)
любая методика программирования имеет некий запас расширяемости, за которым с ней становится работать очень неудобно. если вы заметили, абсолютную адресацию у hp имели только 49-шаговые калькуляторы. при большем размере программы правка, меняющая число шагов, становится мучительной, я сам отлично помню это на мк-54. система меток (буквенные для подпрограмм и цифровые для переходов) хорошо работает для нескольких сотен шагов, но с тысячами не хватает и ее. точно так же начинают мешать другие детские ограничения типа уровня вложенности подпрограмм.

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

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

идея оказалась настолько удачной, что бейсик действительно нафиг сдался.

(кстати, главный недостаток мк-152 именно в том, что количество шагов просто зашкаливает для модели программирования, оставшейся от мк-52. представьте себе, как будет выглядеть использование чужой подпрограммы из 1000 шагов, если один из регистров занят другой подпрограммой из 500 шагов, да и номера шагов перекрываются.)


hp-41c имел на клавишах полный английский алфавит, один специальный регистр на 24 символа и возможность хранить по 6 символов в числовых регистрах. но главное не это, а объем памяти - 200 шагов и 63 регистра (которые можно отдать и под шаги программы, что увеличит их до 441), а если докупить модуль расширения, то уже 319 регистров и 1000 шагов (2231, если отдать все регистры под программу). это принципиально новая вычислительная мощность для калькулятора. вон, например, покер:
http://www.hpmuseum.org/software/41/41poker.htm

(Reply to this) (Parent)(Thread)


[info]arbinada
2007-11-24 11:50 pm UTC (link)
Со всем этим трудно не согласиться.
Просто я стою на позиции, что "калькулятору - калькуляторово", поэтому заниматься интеграцией подпрограмм да еще от разных авторов - это какое-то неправильное занятие для рядового пользователя, пусть даже и продвинутого. Авторам прикладных пакетов - да, но они спокойно разберутся в коллизиях при сборке (этакая ручная линковка, которую, несомненно, можно заменить более интеллектуальной автоматической процедурой на полноценном компьютере).
А рядовой просто возьмет машинку в руки, введет/загрузит готовую программу и сделает с ее помощью свое дело.

Судя по фронтальном виду hp-41c с символьной информацией он все-таки не работал (в смысле функций обработки, из программы "Покер", где 5 регистров используются для отрисовки 5 вариантов скрытых карт, это тоже видно), а ввод там был гораздо более убогим, чем, нынешние манипуляции SMS на мобилах. То есть, все-таки, эта фишка использовалась для удобства вывод информации пользователю.

(Reply to this) (Parent)(Thread)


[info]tolstopuz
2007-11-25 12:21 am UTC (link)
ну да. загрузит готовую программу для решения системы дифуров, а потом загрузит готовую подпрограмму для специальной функции, используемой в его дифуре. и на rpl у него не будет никаких проблем.

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

разве не для этого существуют калькуляторы?

символьные операции в hp-41c, конечно, убогие, но почему убог ввод при наличии полного алфавита, никак не пойму.

(Reply to this) (Parent)


[info]arvi
2009-04-11 12:24 pm UTC (link)
> главный недостаток мк-152 именно в том, что количество шагов
> просто зашкаливает для модели программирования, оставшейся от
> мк-52.

Именно поэтому там предусмотрен другой режим программирования, удобный для написания больших программ. На персоналке, с метками.

> представьте себе, как будет выглядеть использование чужой
> подпрограммы из 1000 шагов, если один из регистров занят другой
> подпрограммой из 500 шагов, да и номера шагов перекрываются

А зачем представлять, словно шаман у костра? Вполне себе разрабатываю на МК-152 программы подобной длины.

Это просто, как copy&paste. Метки решают проблему с нумерацией шагов, а макрокоманды — с распределением регистров.

(Reply to this) (Parent)


[info]arbinada
2007-11-24 10:45 pm UTC (link)
P.S. Можно ли ваш обзор к себе на сайт утащить (со ссылкой)?

(Reply to this) (Parent)(Thread)


[info]tolstopuz
2007-11-24 10:50 pm UTC (link)
да. там бы еще расписать поподробнее про б3-21, но мне уже лень.

(Reply to this) (Parent)(Thread)


[info]arbinada
2007-11-24 11:09 pm UTC (link)
А у меня, типа, вики - любой кто захочет дописать/дополнить может поправить статью :)
Может, у кого-то найдется время.
Вообще, по зарубежным ПМК мало русскоязычной литературы, разве что Дьяконов выпускал книжки в советское время, у меня где-то завалялись.

(Reply to this) (Parent)


[info]arbinada
2007-11-25 12:00 am UTC (link)
Благодарствую, опубликовал здесь
http://arbinada.com/pmk/node/25

Побольше бы таких интересных обзоров... Но у меня совершенно некоммерческие проекты сайтов.
Всегда буду рад видеть вас числе авторов и участников!
Здесь немного по оргвопросам
http://arbinada.com/pmk/node/9

(Reply to this) (Parent)(Thread)


[info]tolstopuz
2007-11-25 12:23 am UTC (link)
ага, отлично. насчет продолжения обзора буду думать, но не обещаю.

(Reply to this) (Parent)

P.P.S. Benchmark: 8 ферзей - итоги
[info]arbinada
2007-11-26 11:08 pm UTC (link)
Результат впечатляющий: 1300-кратное превосходство над старыми советскими моделями ПМК и в разы быстрее многих современных зарубежных ПМК.

(Reply to this) (Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]tolstopuz
2007-11-26 11:59 pm UTC (link)
насколько я понял, 8 секунд - это поиск одного варианта. все варианты ищет 58-шаговая программа за 13 секунд, что тоже неплохо.

вы выбрали для сравнения строчки с разгоном, еще честнее получается без разгона:
- 90.3 HP-50G UserRPL
- 17.0 FX-9860GS Formula / Structured / Matrix
хотя, с другой стороны:
- 0.243 HP-50G Lua / HPLua 0.4 / Bytecode
(про ассемблеры и кросс-компиляторы я вообще не говорю, потому что это нечестно, но hplua закачивается в калькулятор один раз, а пользовательская программа вводится прямо на калькуляторе).

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

кстати, в программах для casio и hp можно легким движением руки сменить размер доски с 8 на любой другой. сколько усилий это займет на мк-152? а теперь представьте себе, что в программе используется не один вектор, а несколько матриц.

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]arbinada
2007-11-27 09:48 am UTC (link)
Ну, это мы вернулись к теме "калькулятору-калькуляторово" :)
Для чего нужны 10К шагов я не могу сказать. Возможно, у производителя есть драйвера к оборудованию размером в тысячи шагов (в такого рода софте, кстати, названные вами проблемы практически не заметны)
Метки - это не выход, потому что остаются коллизии по используемым регистрам и стеку.
В итоге приходим к ЯВУ (даже неважно, какой) на ПМК, что дискредитирует саму идею ПМК, как устройства для относительно простых расчетов непрофессионалами в ИТ.

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]tolstopuz
2007-11-27 10:31 am UTC (link)
Помните?

"Во входных языках ПМК с небольшой емкостью памяти шаги программы адресуются числами 00, 01, 02, ..., по которым и выполняется переход к нужному оператору. Они указываются только в операторах условных и безусловных переходов, а метки указываются в программах дважды - как в операторах переходов, так и перед "отмеченными" операторами. Переход по адресам позволяет сократить длину программы, несколько затрудняя ее чтение."

"Производительнось ЭВМ, зависящая от ее технических характеристик, определяет лишь потенциальную возможность решения сложных задач с малыми затратами времени, тогда как реальная производительность ЭВМ связана с качеством программ решения прикладных задач."

"Следует отметить относительную простоту составления программ на алгебраических входных языках, форма записи которых достаточно близка к стандартизованной форме записи алгоритма решения задачи. В связи с этим профессиональные программисты обычно составляют алгоритм решения задачи непосредственно в виде программы на алгоритмическом входном языке и часто отождествляют алгоритм и программу. Простота представления программой алгоритмов решения задач особенно характерна для языка программирования Бейсик (по крайней мере при программировании относительно простых задач), чем и объясняется преимущественное использование этого входного языка для микроЭВМ, предназначенных для широкого круга пользователей, не имеющих специальной подготовки по вычислительным технике и математике. Значительно сложнее представление алгоритмов решения прикладных задач на компактных входных языках. Это связано как с различной формой записи алгоритмов решения задач и программ на компактных входных языках, так и с относительным разнообразием способов отображения операторов алгоритма фрагментами программ на таких входных языках, вызывающих дополнительные затраты времени на выбор оптимального способа отображения операторов алгоритма."

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

(Reply to this) (Parent)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]tolstopuz
2007-11-27 10:33 am UTC (link)
"Повышение производительности ПМК и расширение емкости ОЗУ привело к повышению предельной сложности решаемых задач и соответствующему увеличению длины прикладных программ. Это ограничивает целесообразность применения печатных библиотечных программ в связи со значительными затратами времени на их ввод с клавиатуры."

"Значительно большие возможности повышения производительности руда пользователей связаны с созданием высокопроизводительных ПМК с алгоритмическими входными языками, большим адресным пространством ЦП и развитым комплектом внешних устройств, представляющих миниатюризированные аналоги внешних устройств профессиональных ПЭВМ."

"Основной путь повышения производительности ПМК именно как носимого, а не настольного микрокомпьютера в основном связан с повышением уровня операторов входного языка, обеспечивающих решение достаточно сложных типовых математических задач, и развитием "дружественных" пользователям операционных систем, освободающих от вспомогательных операций. Среди последних с наибольшими затратами времени связаны предварительная запись на бумаге расчетных выражений и их преобразования с последующим составлением программы решения прикладной задачи на входном языке."

"Таким обраом, в ПМК HP-18C и особенно HP-28C реализованы новые для ПМК тенденции обеспечения максимальных удобств пользователю, принципиально отличающийся от традиционного подхода к решению этой задачи, характерного для универсальных ЭВМ других классов, включая и персональные, а также для высокопроизводительных ручных компьютеров, подобных HP-71B. Несомненно, эти тенденции окажут заметное влияние и на особенности ПМК следующих поколений."

"Перспективы развития ПМК в обозримом будущем связаны с основными тенденциями, проявившимися в разработке таких современных ПМК, как HP-71B и HP-28C. Это, с одной стороны, повышение производительности средствами, аналогичными применяемым в универсальных ЭВМ других классов, а с другой - предоставление пользователю максимальных удобств применения ПМК как автономного, удобного и достаточно мощного вычислительного средства."

Почему же вы забыли своего Прометея, погасили огонь и вернулись в пещеру, чтобы копать ее дальше вглубь?

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]arbinada
2007-11-27 10:41 am UTC (link)
Это не из книжки Дьконова, часом?
Сколько стоило машиное время в то время и сколько сейчас?
Какова была доступность компьютеров для персонального пользования?
Калькулятору-калькуляторово.
Если символьный язык ПМК начинает мешать, значит нужно решать задачу на ПК.
Это уже почти закон. Экономический :)
Потому что время написания/отладки программы на бейсике на ПМК и ПК будут всегда в пользу ПК.
А если нет, значит программа была мала, ей вообще не нужен бейсик, она быстро кодируется на символьном языке ПМК.

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]tolstopuz
2007-11-27 10:59 am UTC (link)
я тоже говорю, что калькулятору - калькуляторово. только я определяю "калькуляторово" как задачу, которую хочется решить на коленке, не подходя к компьютеру, а вы - как задачу, которая решается на конкретной модели конкретного производителя.

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

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

помните книжку "практическая астрономия с калькулятором"? мне было очень обидно, что в мк-54 не влезают расчеты эфемерид планет и комет. вы, видимо, считаете, что книжка называлась неправильно, а правильное название - "практическая астрономия с компьютером".

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]arbinada
2007-11-27 11:16 am UTC (link)
Ни в коей мере.
Я исхожу как раз из того, что задача должна решаться "на коленке".
Иначе надо идти на ПК.
А на коленке решаются задачи, которые можно набрать руками за короткое время, не напрягаясь на оптимизацию. Это уровень ПМК-кодов во многие десятки команд бейсик-программ в единицы десятков строк. Максимально.

Не влезли расчеты эфемерид планет в МК-54? Это проблема недостаточного числа шагов в данной модели ПМК. Они влезут в МК-152. Однако, если программа потребует от вас написания 500 шагов, то лучше бы вы сразу сели за комп. Или взяли готовую из библиотечки.

В НиЖ была статья "Стоит ли программировать?", где этот вопрос обсуждался на конктретном примере с расчтами потерянного времени. По-моему вполне в тему. Мой ответ - не стоит :) Этим должны заниматься профессионалы.

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]tolstopuz
2007-11-27 11:25 am UTC (link)
естественно, шагов надо больше. но зачем все эти искусственные наслоения, не имеющие отношения к удобству набирания руками за короткое время?

переходы по номерам шагов, которых не было даже в ПЕРВОМ В МИРЕ ПМК и которые имеют право на жизнь только при числе шагов не больше сотни? это первая причина писать любую нелинейную программу на бумажке.

номера регистров? это причина расписывать на бумажке карту памяти, чего в программировании для настоящих компьютеров не делают уже лет 40, а для калькуляторов с бейсиком или rpl - лет 20.

и еще раз повторю цитату из трохименко (нет, это не дьяконов):

"Основной путь повышения производительности ПМК именно как носимого, а не настольного микрокомпьютера в основном связан с повышением уровня операторов входного языка, обеспечивающих решение достаточно сложных типовых математических задач, и развитием "дружественных" пользователям операционных систем, освободающих от вспомогательных операций. Среди последних с наибольшими затратами времени связаны предварительная запись на бумаге расчетных выражений и их преобразования с последующим составлением программы решения прикладной задачи на входном языке."

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]arbinada
2007-11-27 11:34 am UTC (link)
Смысл "набирания" программы такой: вы набираете пошагово туда те операции, которые делали бы, если б калькулятор был непрограммируемым. А потом прогоняете много раз с разными входными данными.
Или берете сложную программу, но уже готовую.
В обоих случая для конечного пользователя все сложности остаются за кадром.
Ну, и с тем же успехом можно утверждать, что Трохименко имел в виду нынешние КПК и ноутбуки. Запустил на нем маткад - и все дела :)

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]tolstopuz
2007-11-27 01:38 pm UTC (link)
такому "конечному пользователю" пмк не нужен, для него есть калькуляторы с памятью формул. если же он купил пмк, ему не нужны переходы по абсолютным адресам, а нумерованные регистры ничем не лучше именованных переменных. разработчику и абсолютные переходы, и нумерованные регистры только мешают. в итоге хуже для всех.

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

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]arbinada
2007-11-27 01:51 pm UTC (link)
Как современное - не преподносят, как совместимое со старыми разработками, коих море - да.
У нас был МК-85 с бейсиком (у меня где-то в ящике валяется), но он тсзать, массами не овладел. Как мне кажется, именно по причине полной несовместимости.

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]tolstopuz
2007-11-27 02:55 pm UTC (link)
что вы называете "разработкой", требующей совместимости? 50-100-байтовый огрызок? не смешите, их уже все забыли, кроме лунолетов. посмотрите, каким убожеством сейчас выглядят "программы" из трохименко-любича.

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

мк-85 был абсолютной вещью в себе, как и предыдущие. если посмотреть на доступную библиотеку программ для hp-41c, по сравнению с ней можно сказать, что и мк-61 массами не овладел. а программы для 28/48 пишут до сих пор.

вот, например, решение систем нелинейных уравнений (написана в этом году, но работает даже на hp-28c двадцатилетней давности):
http://www.hpcalc.org/details.php?id=6540

заметьте, эта программа удобна как раз для конечного пользователя. вот как с ней работают:

'2*X^3+Y+7*Z-96' 'E1' STO
'3*X+6*Y^3-2*Z-65' 'E2' STO
'-6*X+4*Y+2*Z^3-42' 'E3' STO
1 'X' STO
2 'Y' STO
3 'Z' STO
{ 'E1' 'E2' 'E3' }
{ 'X' 'Y' 'Z' }
1E-7
1E-7
MSLV CLMF

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

%%HP: T(3)A(R)F(.);
\<< 4 PICK SIZE DUP
IDN DUP2 SWAP 1
\->LIST RDM 0 DUP
DO DROP 1 + 0 ROT
1 6 PICK
FOR i 9 PICK i
GET DUP \->NUM ROT i
1 \->LIST 3 PICK PUT
3 ROLLD 1 8 PICK
FOR j 10 PICK
j GET 9 PICK DUP2
STO+ 8 ROLL i j 2
\->LIST 6 PICK \->NUM 6
PICK - 12 PICK /
PUT 8 ROLLD STO-
NEXT ABS 4
ROLL MAX 3 ROLLD
DROP
NEXT 4 PICK / 1
6 PICK
FOR i 8 PICK i
GET OVER i 1 \->LIST
GET STO-
NEXT 3 ROLLD
DUP2 2 DISP 1 DISP
UNTIL DUP 8 PICK
<
END 9 ROLLD 8
DROPN
\>>

что же предложилось бы на мк-152? написать подпрограмму для вычисления функций с шага 200, берущую исходные переменные из регистров 21-30 и кладущую результат в регистры 31-40. и так как

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]arbinada
2007-11-27 05:30 pm UTC (link)
Я не готов называть "уродцами" программки для старых ПМК, как и не могу назвать красавцем приведенный вами код.
Наверное, привыкшим к одному коду другое кажется уродским. Примерно, как мне, воспитанному в средней школе на паскале, си-бля-шарп или сиприплюснутые шедевры, попадающиеся от девелоперов, явно прогулявших занятия не только по ООП, но и по структурному программированию.
Но от машинки типа МК-152 я бы не отказался (если она будет выпущена в портативном исполнении) и с удовольствием и минимальными затратми времени иногда на ней что-то вычислял.
Упомянутые 8 ферзей, к слову, заняли у меня примерно 2 часа после 15 летней паузы в использовании: )

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]tolstopuz
2007-11-27 06:32 pm UTC (link)
кстати да, может быть, дело в некоторой умственной гибкости. то, что первым увиденным мной языком был фортран (второй класс, отцовские книжки), не испортило мне жизнь, и, испробовав за следующие почти 30 лет два калькулятора, несколько ассемблеров, несколько бейсиков, алгол, паскаль, c, c++, c#, pl/sql, я сейчас пишу на питоне, очень люблю его, но тем не менее не считаю остальные языки уродством. а мысль о том, что школьные представления о программировании могут остаться на всю жизнь, вызывает у меня не то ужас, не то жалость.

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

'2*X^3+Y+7*Z-96' 'E1' STO
'3*X+6*Y^3-2*Z-65' 'E2' STO
'-6*X+4*Y+2*Z^3-42' 'E3' STO
1 'X' STO
2 'Y' STO
3 'Z' STO
{ 'E1' 'E2' 'E3' }
{ 'X' 'Y' 'Z' }
1E-7
1E-7
MSLV CLMF

чем вы замените его в мк-152, если на ней будет реализовано решение системы нелинейных уравнений?

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

и вообще, пока мы двадцать лет назад по цепочке, без стека, складывали комплексные числа через ИП + С/П по программе трохименко-любича, эти сволочи работали с матрицами, как с числами, и писали решалки систем нелинейных уравнений. а вы вместо сравнения возможностей и удобства сравниваете ваше личное эстетическое впечатление от знакомой с детства палки-копалки и современной лопаты...

(Reply to this) (Parent)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]tolstopuz
2007-11-27 02:59 pm UTC (link)
и так как никакой возможности индексирования матриц в мк-152 нет, пресловутый "компактный язык" превращается в ассемблер, где мы должны руками считать регистр, в котором хранится каждый элемент.

жалкое, ушераздирающее зрелище. по сравнению с настоящим калькулятором, облегчающим пользователям вычисления.

(Reply to this) (Parent)(Thread)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]arvi
2009-04-11 12:28 pm UTC (link)
Отнюдь. Команду ПП (и PПП) никто не отменял. Два индекса в стек, и вызываешь подпрограмму обращения к элементу матрицы.

Всего 2 или 3 шага. А быстродействие серии МК-1xx таково, что особой разницы со встроенными командами на других ПМК не почувствуешь.

(Reply to this) (Parent)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]tolstopuz
2007-11-27 03:06 pm UTC (link)
кстати, насколько я понял, ввод этой программы и решение по ней системы пяти уравнений лежит на пределе возможностей hp-28c с двумя килобайтами озу. отсюда и ужасный стиль, как у нас при впихивании в 105 байт :)

но зато теперь примерно ясно, на что способен rpl с двумя килобайтами и линейной алгеброй в пзу.

(Reply to this) (Parent)

Re: P.P.S. Benchmark: 8 ферзей - итоги
[info]arvi
2009-04-11 12:27 pm UTC (link)
> помните книжку "практическая астрономия с калькулятором"?
> мне было очень обидно, что в мк-54 не влезают расчеты
> эфемерид планет и комет.

В МК-161 влезут с лёгкостью, было бы кому их закодировать. Причём его можно использовать на выезде, он компактнее ноутбука, дольше питается от аккумулятора и для вычислений не требует загрузки Windows.

http://arvi.livejournal.com/252327.html
http://mk.semico.ru/dr_ustr161.htm

(Reply to this) (Parent)


Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…