Кіріспе

E — 1997 жылы Mark S. Miller, Dan Bornstein, Douglas Crockford, Chip Morningstar және тағы басқалар Electric Communities компаниясында жасаған, қауіпсіз таратылған есептеулерге арналған объектіге бағытталған бағдарламалау тілі. E тілі негізінен Joule тілінен, сондай-ақ Java-ға қауіпсіз таратылған бағдарламалау мүмкіндіктерін қосатын Original E-ден туындаған. E Java синтаксисіне ұқсас хабар алмасу арқылы есептеулерді біріктіреді. Оқиға циклдары мен уәделерге негізделген параллелизм моделі, құлыптанудың (deadlock) ешқашан болмайтынын қамтамасыз етеді.

Философия

E тілі компьютерлік қауіпсіздік және қауіпсіз есептеулер үшін жасалған. Бұл, негізінен, таза нысанаға бағытталған есептеу моделін қатаң сақтау арқылы іске асырылады, ол қауіпсіз есептеуді қолдайтын қасиеттерге ие. E тілі және оның стандартты кітапханасы бағдарламашыларға қауіпсіз бағдарлама құруға және бағдарламалық компоненттердің бір-біріне толық сенімсіздік танытса да, өзара жұмыс істеуіне мүмкіндік беру үшін мүмкіндіктерге негізделген дизайн философиясын тұрақты түрде қолданады. E тілінде объектілерге сілтемелер мүмкіндіктер ретінде табельделеді, сондықтан мүмкіндіктер есептеу немесе түсінік жүзіндегі қосымша шығындарға әкелмейді. Тілдің синтаксисі қауіпсіздік кемшіліктерін тексеруді жеңілдету үшін жасалған. Мысалы, лексикалық ауқым берілген айнымалыға тиетін әсерін тексеру қажетті код көлемін шектейді. Тағы бір мысал ретінде, тіл салыстыру үшін == операторын, ал тағайындау үшін := операторын пайдаланады; шатасудың алдын алу үшін = операторы қолданылмайды.

Есептеу моделі

E-де барлық мәндер объектілер, ал есептеулер объектілерге хабарламалар жіберу арқылы жүзеге асырылады. Әрбір объекті бір ыдысқа (процеске ұқсас) жатады. Әрбір ыдыстың орындалудың бір ғана жібі, стек жамылғысы және оқиға кезегі болады. Ұқсас бағдарламалау – қашықтағы объектілерге (басқа ыдыстардағы объектілерге) хабарламалар жіберудің мәселесі ғана. Қашықтағы тараптармен байланыс E орындау кезінде шифрланады. Келіп түскен хабарламалар ыдыстың оқиға кезегіне қойылады; ыдыстың оқиға циклы келіп түскен хабарламаларды келу ретімен бірінен соң бірін өңдейді. E-де хабарламаларды жіберудің екі тәсілі бар: дереу шақыру және кейінге қалдырылған жіберу. Дереу шақыру – бұл бір уақытта орындалмаған тілдегі әдеттегі функция немесе әдіс шақыруы сияқты: жіберуші қабылдаушы аяқталып, мәнді қайтарғанша күтеді. Кейінге қалдырылған жіберу – нәтиже үшін орын сақтаушы, яғни уәде деп аталатын хабарламаны жібереді. Жіберуші дереу уәдесімен жұмысты жалғастырады. Кейіннен, қабылдаушы аяқталып, нәтижені бергенде, уәде нәтижеге айналады. Қашықтағы объектілермен байланыс кезінде тек кейінге қалдырылған жіберуге рұқсат берілгендіктен, тұйықталулар болмайды. Ұқсас жүйелерде уәде механизмі желілік кешігулерден туындаған кідірістерді азайтады.