Кіріспе

Бағдарламалау тілдерін жүйелік бағдарламалау және скрипттеуге бөлу

Остерхауттың дихотомиясы – компьютерлік ғалым Джон Остерхауттың жоғары деңгейдегі бағдарламалау тілдері екі топқа жататындығын сипаттауы, олардың әрқайсысының ерекше қасиеттері мен қолданылуы бар: жүйелік бағдарламалау тілдері және скрипт тілдері – үлкен және шағын бағдарламалауды салыстырыңыз. Жүйелік бағдарламалау тілдері (немесе қолданба тілдері) әдетте мынадай қасиеттерге ие:
Олар статикалық түрде типтеледі.
Олар күрделі деректер құрылымдарын құруды қолдайды.
Олардағы бағдарламалар машиналық кодқа компиляцияланады.
Олардағы бағдарламалар басқа бағдарламалардан тәуелсіз жұмыс істеуге арналған.
Жүйелік бағдарламалау тілдері операциялық жүйелер, деректер қоры серверлері және веб-браузерлер сияқты ішкі функционалдылығы көп компоненттер мен қолданбалар үшін қолданылады. Бұл қолданбалар әдетте күрделі алгоритмдер мен деректер құрылымдарын қолданады және жоғары өнімділікті қажет етеді. Жүйелік бағдарламалау тілдерінің прототиптік мысалдары – C, OCaml және Modula 2. Керісінше, скрипт тілдері (немесе байланыстыру тілдері) мынадай қасиеттерге ие:
Олар динамикалық түрде типтеледі.
Оларда күрделі деректер құрылымдары үшін көбінесе ұсыныс жоқ немесе өте аз.
Олардағы бағдарламалар (скрипттер) интерпретацияланады.
Скрипт тілдері функционалдықтың көп бөлігі басқа бағдарламалардан алынатын (көбінесе жүйелік бағдарламалау тілдерінде іске асырылатын) қолданбалар үшін қолданылады; скрипттер басқа бағдарламаларды біріктіруге немесе қолданыстағы бағдарламалардың үстіне қосымша функционалдық қабаттарды қосуға қолданылады. Остерхаут скрипттер көбінесе қысқа болады және оларды көбінесе тәжірибесі аз бағдарламашылар жазады деп санайды, сондықтан орындау тиімділігі қарапайымдық пен басқа бағдарламалармен өзара әрекеттесудің оңайлығынан кем маңызды. Скрипттеуге арналған жалпы қолданбаларға веб-беттерді жасау, есептерді дайындау, графикалық пайдаланушы интерфейстері және жүйелік әкімшілендіру кіреді. Скрипт тілдерінің прототиптік мысалдары – Python, AppleScript, C shell, DOS пакеттік файлдары және Tcl. Остерхауттың дихотомиясы оның Tcl тілінің құрылымының негізі болып табылады.

Тарих

Дихотомия толыққанды түрде осы еңбекте баяндалған, бірақ Остерхаут бұл ерекшелікті кем дегенде Tcl (1988) жобаланғаннан бері айқындап келген және оны әр түрлі уақытта жариялаған. 1994 жылдың қыркүйек және қазан айларының соңындағы "Tcl соғысы" осы мәселенің алғашқы эпизоды болды, онда Ричард Столлман "Неліктен Tcl-ді пайдаланбау керек" деген мақала жариялап, Tcl-ді сынады, ал Остерхаут өзінің дихотомиясын түсіндіре отырып жауап берді:

Сын

Сыншылар бұл дихотомияның өте ерікті екенін айтады және оны Остерхауттың қателігі немесе Остерхауттың жалған дихотомиясы деп атайды. Статикалық және динамикалық типтеу, дерек құрылымының күрделігі, тәуелді және жеке-дара ерекшеліктер байланыссыз сипаттамалар болуы мүмкін, бірақ Остерхауттың дихотомиясына қатысты негізгі сын – компиляция мен интерпретация арасындағы айырмашылық. Тілдің семантикасы мен синтаксисі тілдің іске асырылуы машиналық тілге компиляциялануына, интерпретациялануына, токенделуіне немесе әр рет орындалғанда байт-компиляциялануына, не осылардың кез келген комбинациясына едәуір дәрежеде тәуелді емес. Бұған қоса, кеңінен қолданылатын тілдердің ешқайсысы компиляторсыз таза интерпретацияланбайды; бұл бағдарламалау тілдерінің классификациясында компиляциялау мен интерпретациялауды күмәнді параметр етеді.