Кіріспе

Тарихи бағдарламалау тілі

MAD (Michigan Algorithm Decoder) – IBM 704 және одан кейін IBM 709, IBM 7090, IBM 7040, UNIVAC 1107, UNIVAC 1108, Philco 210 211 және IBM System/370 негізгі компьютерлері үшін бағдарламалау тілі және компиляторы. 1959 жылы Мичиган университетінде Бернард Галлер, Брюс Арден және Роберт М. Грэм жасаған MAD – ALGOL тілінің түрі. Ол 1960-шы жылдары колледждер мен университеттерде бағдарламалауды оқыту үшін кеңінен қолданылды және Ұқсас уақытты бөлісу жүйесін (CTSS), Multics және Мичиган терминалды жүйесінің компьютерлік операциялық жүйелерін жасауда шағын рөл атқарды. ELIZA чат-ботының бастапқы нұсқасы MAD SLIP тілінде жазылған. Мичиган университетінің Бентли тарихи кітапханасының архивінде MAD және MAD/I жасалуы туралы анықтамалық материалдар сақталған, оның ішінде қолмен жазылған түсіндірмелермен үш футтық баспалар және түпнұсқа баспа нұсқаулықтар бар.

Кіріс пішімі

MAD бағдарламалары – перфокарталарға жазылған операторлар жиынтығы, әдетте әр картада бір оператор болады, бірақ оператор бірнеше картаға созылуы мүмкін. 1-10 бағандарға оператор белгісі қойылуы мүмкін, 11-бағандағы ескертулер немесе түсініктемелер "R" әрпімен белгіленеді, ал 73-80 бағандар бос және реттік нөмірді қамтуы мүмкін. Таңба тұрақтыларынан басқа жерде аралықтар маңызды емес. GOM үшін енгізу еркін пішінде, реттік өріс жоқ, және жолдар 255 таңбаға дейін болуы мүмкін; жұлдызшадан (*) басталатын жолдар – түсініктемелер, ал плюс белгісінен (+) басталатын жолдар – жалғастыру жолдары.

Аттар

Айнымалы атаулары, функция атаулары және оператор белгілері бірдей форматта болады: бір әріптен кейін нөлден бес әріпке дейін немесе санға дейін. Функция атаулары нүктемен аяқталады. Барлық атауларды индекстеуге болады (атаудан кейін жақшамен, егер бірнеше индекс болса, олар үтірмен бөлінеді). GOM үшін атаулар 24 символға дейін болуы мүмкін және астын сызу символын ( _ ) қамтуы мүмкін. Тілдегі кілт сөздердің көпшілігі алты символдан ұзын немесе нүктелермен оралған болғандықтан, резервтелген сөздердің саны аз. Ұзын сөздердің орнына стандартты аббревиатураларды қолдануға болады. Бұл кілт сөздердің бірінші және соңғы әріптерінен тұрады, олардың арасында апостроф болады, мысалы, WHENEVER үшін W'R және DIMENSION үшін D'N.

Массивтер мен матрицалар

Өлшемдер санында шектеу жоқ. Теріс, нөлдік және бөлшек индекстерге рұқсат етіледі. Матрицалар жадтың бірінен соң бірі келетін орындарында сақталады, олардың тәртібі оң жақтанғы ең төменгі индексті өзгерту арқылы анықталады. Матрицаларға сілтеме жасау үшін әрбір өлшемге арналған индекстерді пайдануға болады, мысалы, NAME(s1,s2,s3), немесе бір индексті пайдануға болады, NAME(s1). Кіріс-шығыс тізімдері, ВЕКТОРЛЫҚ МӘНДЕР операторлары және кейбір кіші бағдарламалар A, ,B немесе A B түріндегі блок нотациясын қолдануға мүмкіндік береді, бұл A-дан B-ға дейінгі аймақтың барлығына сілтеме жасайды, соның ішінде A мен B-ны да қамтиды. Вектор тұрғысынан алғанда, A(1) A(N) дегеніміз A(1), A(2), A(3), ..., A(N) болады. Орындау барысында өлшемдерді өзгертуге мүмкіндік беретін мүмкіндіктер бар; бұл бағдарламашыға массивке бөлінген жалпы блок ішінде массивтің бастапқы элементінің орнын өзгертуге және кез келген сақтау схемасын анықтауға рұқсат береді.

Қатынас операторлары

. L. (кем)
LE. (кем немесе тең)
E. (тең)
NE. (тең емес)
G. (үлкен)
GE. (үлкен немесе тең)

Буль операторлары

. ЖОҚ. (бірлік логикалық емес)
НЕ. (логикалық немесе)
ЭКСТРИМДІ НЕ. (логикалық эксклюзивті немесе)
ЖӘНЕ. (логикалық және)
СОҢҒЫСЫ. (көрсеткіш)
ТЕҢ. (эквиваленттілік)

Біт операторлары (тек GOM)

. СЕТБИТ. (битті 1-ге қосу)
. РЕСЕТБИТ. (битті 0-ге қайта орнату)
. БИТ. (битті тексеру)