Аударғыш түрлері

Жоғары деңгейлі тілдер көптеген алгоритмдерді үйреншікті математикалық амалдардың жазылуына жақын ыңғайлы түрде жазып түсіндіруге мүмкіндік береді. Бұл тілдерді пайдалану программалаудағы кездесетін қиындықтарды азайтады. Жоғары деңгейлі тілдерді программа жасауда пайдалану 60-шы жылдары басталды. Содан бері бүгінгі күнде дейін белгілі есептерді шешуге арналған әмбебап, сандай-ақ бағдарланған көптеген әртүрлі тілдер жасалып пайдаланылып келеді. Әрбiр программалау тілінің өзінің аты бар. Көптеген программалау тілінің аты олар алғаш жасалғаннан бастап тіркелген. Содан бері программалау тілдерінде қолданылатын ережелер өзгергенімен тілдер аты сол бұрынғы күйінде өзгеріссіз қалуда. Программалау тілдері Қазіргі кезде жоғары деңгейлі программалау тілдері былай бөлінеді: *процедуралы (көптеген классикалық программалау тілдері, мысалы, FORTAN, PASCAL, BASIC, C); *логикалық (ЛИСПЫ, ПРОЛОГ т.б.); *объектік-бағдарланған (С++, Java т.б.). Қысқа программаларды жасауда процедуралық программалау тілдерін пайдалану ыңғайлы; логикалық программалау тілдерін алгоритмдерді теориялық зерттеуде жасанді интеллекті оқытып үйрену жұмыстарында деректер базасымен жасалатын операцияларда өндіріс объектілерін және әскери бөлімдерді басқару жүйелерін басқаруда, ал объектік-бағдарланған программалау тілдерін бәрінен де үлкен және күрделі программаларды (Мысалы, компьютерлік ойындарда), жасақтауда пайдаланған жөн. Әртүрлі программалау тілдерінің арасында айтарлықтай елеулі айырмашылықтардың болуына қарамастан олардың барлығында негізгі операцияларды жүзеге асырудың ұқсас құралдары бар. Бұдан басқа әртүрлі программалау тілдерін пайдаланғанда жұмыс істеу қиындығының түрліше болатындағына қарамастан кез келген программаны жасауда кез келген типтегі программалау тілін пайдалануға болады. Бұл тілдердің әрқайсысына тоқталмай-ақ, осы тілдерді машина тіліне аударушы жұмысына тоқталайық. Машина тілінен өзгеше программалау тілінде құрылған программа компьютерде орындалу үшін жарамды түрде, яғни машина тіліне түрлендіруі тиіс. Мұндай түрлендіру трансляциялау деп аталады. Ассемблердің ендірілетін тілі мнемокод, макроассемблер-макротіл, ал компилятордікі-поцедуралы бағдарланған тілдер боып табылады. Осыған байланысты ендірілетін тілдерді транцлятордың түрлеріне қарай ассемблер тілі, макроассемблер тілі деп аталады т. с. с. Транслятор арқылы өңделіп алынған программа тікелей компьютерде орындалады немесе оны басқа транцлятордың өңдеуіне тура келеді. Трансляциялау мен программаның орындалуы уақыт жағынан бөлінген болады. Интерпретатордан басқа трансляторларда алдымен барлық программа трансляцияланады содан кейін орындалады. Осы режімде жұмыс істейтін трансляторлар компиляциялаушы типті трансляторлар деп аталады. Егер мұндай транслятордың ендірілетін тілі процедуралы-бағдарланған тіл болса, онда транслятор компилятор деп аталады. Трансляциялау кезеңімен орындау кезеңдері уақыт бойынша ығысып ауысып келіп отыратын транслятор интерпретатор деп аталады. Машина тілінде немесе жүктелуші тілде ұсынылған программа транслятор жұмысының нәтижесі болып табылады. Транслятордың жұмысын төрт кезеңi Транслятордың жұмысын төрт кезеңге бөлуге болады: *лексикалық талдау. Мұның негізгі атқаратын қызыметі программаның бастапқы мәтінін одан әрі қарай өңдеу үшін ең ықшамды және ыңғайлы етіп ұсыну. Осылауша алынған мәтін транслятордың синтаксистік талдаушы деп аталатын келесі бөліміне бастапқы деректер ретінде беріледі; *синтаксистік талдау. Бұл кезңде бастапқы мәтінді синтаксистік талқылау жүргізіледі, яғни сөйлемдердің типтерін тану және программаның құрылымын айқындау, сонымен бірге синтаксистік қателіктерді айқындаушы синтаксистік бақылау; *объктік программаны жасау. Бұл кезеңде шын тілдің баламалы сөйлемдерінің мәні зерттеліп, симантикалық талдау жасалады; *объктік программаны безендіру және беру. Бұл транслятор жұмысының соңғы қорытынды кезеңі. Объктік программаны кітапханаға жазуға, баспаға шығаруға болады. Пайдаланушының нұсқауы бойынша транслятор ендіретін қосымша информацияның белгілі бір бөлігі ғана баспаға беріледі. Шығарылатын есептің сипатына және пайдаланушылардың категориясына байланысты трансляторларға әртүрлі талаптар қойылады. Мысалы, берілген программалау тілін игергісі келетін жаңадан бастаушыларға транслятордың ең маңызды сипаттамасы диагностикалық хабарларының толық әрі қарапайым болуы болып табылады. Егер компьютерде сплыстырмалы түрде алғанда көп уақыт есептеуді қажет етпейтін көптеген майда есептер шығарылатын болса, онда сол есептерді шығару үшін алынған программаның сапасына айтарлықтай мән берілмейді. Транслятордың жұмыс істеу жылдамдығы үлкен рол атқарады. Ұзақ есептелетін күрлелі есептер үшін талап етілетін машиналық уақытты және программаның орындалуы үшін қажетті жадтың көлемін ескере отырып транслятордың жасаған программаның ұтымдылығы ең маңызды рол атқарады. Мұндай ұтымды программалар алу трансляциялау алгоритмдерін күрделендіре түсуді талап етеді, ол трансляторды күрделендіре түсуге және оның жұмыс істеу уақытын арттыруға алып келеді. Осыған байланысты программалау жүйесінің өзінде тіптен бір программалау тілі үшін де бірнеше әртүрлі трансляторлар қарастырылады, ал пайдаланушы өзіне ең керекті трансяторларды таңдап алады.