Оригиналът на статията е на Джеймс Бауман (James Bowman)Много много

...
Оригиналът на статията е на Джеймс Бауман (James Bowman)Много много
Коментари Харесай

Намерих отличен програмист на име Стив Возняк

Оригиналът на публикацията е на Джеймс Бауман (James Bowman)

Много доста от дълго време, когато компютрите бяха огромни, а бизнесът отегчителен, се случи нещо напълно ненадейно. Млади хакери откриха метод да сглобяват лични компютри от евтини процесори за телетайп машини и светофари. Един от тях е Стив Возняк. Тези момчета възприеха рестриктивните мерки на своите компютри като предизвикателство. Те се постараха и накараха тези дребни чипове да правят удивителни неща. Ето какво разгласява Dr Dobb’s Journal през месец август 1976 година:

Това е набор аритметични процедури за работа с действителни цифри. Микропроцесорът е 6502 (използва се в Apple I и II) и може да работи единствено с байтове – т.е. с цели цифри от диапазона сред 0 и 255. И още, този процесор може единствено да ги събира и изважда. Но благодарение на тази библиотека може да се пресметна да вземем за пример 1,2627 – 1099,56 и даже корен квадратен от Пи. Удивителното е, че създателят на тази стратегия е програмистът с име Стив Возняк, съумял да побере главните аритметични функционалности (събиране, изваждане, умножение и деление) единствено в 239 байта, употребявайки едвам 127 процесорни указания.

Това е един в действителност впечатляващ образец по програмиране. След като го разгледах няколко пъти, мога да кажа, че той е талантлив. Така да вземем за пример, циклите на подпрограмата за умножение и разделяне се повтарят 23 пъти – по веднъж за всеки обичай от резултата. Мислите, че Воз е изразходвал два бита, с цел да записва константата 23 в двете места? Разбира се, че не! Той записва константата 23 в предварителна подпрограма, която се употребява и в двата цикъла.

Да се спрем на различен образец. Необходимо е да се изчислят безспорните стойности на числата М1 и М2. Бихте могли да напишете да вземем за пример:
M1 = abs(M1); M2 = abs(M2);
Воз не позволява сходни непотребни повторения. Той написва единствено една подпрограма, която получава безспорното значение на М1, а по-късно разменя М1 и М2. После той извиква тази подпрограма повторно. По този метод той реализира същия резултат, само че с двойно по-малко код. Освен това, подмяната на М1 с М2 се употребява в още доста други места и този код прави доста работа.

Разбира се, този натоварен факторинг затруднява четенето и разбирането на логаритмите. Но е поразително, до каква степен този код е изпреварил времето си. Ако прочетем другите публикации в списанията от 1976 година, ще забележим маса неособено добре написан код. Това е разбираемо: по това време хората просто пробват всичко и си обясняват опциите на микропроцесорите. И измежду всичко това този безценен камък, което е заслужен на работата на актуален хакер, написал графична демосцена. За съпоставяне, сходно равнище на тотална досетливост стартира да се среща едвам след 30 години, като да вземем за пример в този удивителен сорс код също за процесора 6502.

Стига толкоз история. Защо през 2019 година съм се заел най-внимателно да уча този античен код? Причината е, че работя върху новия асистент за I²CDriver и SPIDriver, а той би трябвало да прави интервенции с плаваща точка на 8-битовия процесор Silicon Labs EFM8 (базиран на 8051), който използвах в предходните си планове. Сега той към този момент с лекост прави тези калкулации, тъкмо както тази библиотека за 6502. Аз нямах потребност от чак толкоз къс и усъвършенстван код, само че в този момент всичко работи бързо, доста по-бързо от аналогичната библиотека Keil. Отличният код в никакъв случай не умира!
Източник: kaldata.com

СПОДЕЛИ СТАТИЯТА


Промоции

КОМЕНТАРИ
НАПИШИ КОМЕНТАР