Кіріспе

ISWIM (If You See What I Mean) – Питер Лэндин жасаған және алғаш рет 1966 жылы ACM Communications журналында жарияланған «The Next 700 Programming Languages» мақаласында сипатталған абстрактілі компьютерлік бағдарламалау тілі (немесе тілдер отбасы). Іске асырылмаса да, ол бағдарламалау тілдерін, әсіресе SASL, Miranda, ML, Haskell және олардың кейінгі нұсқалары сияқты функционалдық бағдарламалау тілдерін, сондай-ақ Lucid сияқты деректер ағыны бағдарламалау тілдерін дамытуға зор әсер етті.

Дизайн

ISWIM – функционалдық ядросы бар императивті бағдарламалау тілі, оған лямбда-есептеудің синтаксистік тәттіленуі қосылған, сонымен қатар өзгертілетін айнымалылар, тағайындау және қуатты басқару механизмі: бағдарламалық нүкте операторы да бар. Лямбда-есептеуге негізделген ISWIM жоғары деңгейлі функцияларға және лексикалық ауқыттағы айнымалыларға ие. ISWIM-нің операциялық семантикасы Landin-нің SECD машинасы арқылы анықталады және шақыруды мән бойынша, яғни ынталы бағалауды қолданады. ISWIM-нің мақсаты математикалық жазуға көбірек ұқсау болды, сондықтан Landin ALGOL-дің операторлар арасындағы нүктелі үтірлерін және begin-end блоктарын алып тастап, оларды ығысу қағидасымен және енгізуге негізделген ауқыммен алмастырды. ISWIM-нің ерекше ерекшелігі – where-тармақтарын пайдалануы. ISWIM бағдарламасы – where-тармақтарымен (көмекші анықтамалар, айнымалылар арасындағы теңдеулерді қоса алғанда), шартты өрнектер және функция анықтамаларымен біліктіленген жалғыз өрнек. CPL-мен бірге ISWIM where-тармақтарын қолданған алғашқы бағдарламалау тілдерінің бірі болды. Ерекше семантикалық мүмкіндік – жаңа дерек типтерін өнімдердің (мүмкін рекурсивті) қосындысы ретінде анықтау қабілеті. Бұл табиғи тіл стиліндегі сипаттама арқылы жасалды, бірақ нотациядан басқа, қазіргі функционалдық тілдерде кездесетін алгебралық дерек типтерімен дәл сәйкес келеді. ISWIM айнымалыларында нақты типтік декларациялар болған жоқ және Landin тілдің LISP сияқты және ALGOL-ден айырмашылығы динамикалық түрленуге ие болуы мүмкін (бірақ 1966 жылғы мақалада нақты айтылмаған); бірақ ол сондай-ақ типтік қорытындының қандай да бір түрін әзірлеуді көздеген болуы мүмкін.

Іске асырулар және туындылар

ISWIM-ді тікелей іске асыруға ұмтылыс жасалмады, бірақ Арт Эванның PAL тілі және Джон К. Рейнольдстың Gedanken тілі Лэндиннің көптеген түсініктерін, соның ішінде басқару операцияларын күшті түрде беруді қамтыды. Екеуі де динамикалық түрде терілген. Робин Милнердің ML тілі J операторы болмаған және типтік шешімдермен ISWIM-мен маңызды жағынан бірдей деп есептелуі мүмкін. ISWIM-нен таралған тағы бір бағыт – императивтік мүмкіндіктерді (тапсыру және J операторы) жою, нәтижесінде таза функционалдық тіл пайда болады. Одан кейін жалқау бағалауға көшуге болады. Осы жол SASL, Kent Recursive Calculator (KRC), Hope, Miranda, Haskell және Clean бағдарламалау тілдеріне жеткізді.