E je souběžný objektově orientovaný programovací jazyk založený na třídách se zaměřením na bezpečnost a spolehlivé distribuované systémy. Navrhli a vyvinuli jej Mark S. Miller, Dan Ingalls, Bob Harper a David Ungar ve společnosti Xerox PARC v polovině 80. let 20. století. Jazyk E byl použit v řadě komerčních i open-source projektů, zejména v operačním systému Inferno.
E je založen na programovacím jazyce Smalltalk-80. Na rozdíl od Smalltalku, který je určen pro vzdělávací a výzkumné účely, je však E určen pro použití při vývoji komerčního softwaru. E je přímým potomkem programovacího jazyka T, který byl vyvinut v Xerox PARC na počátku 80. let.
E je souběžný programovací jazyk, což znamená, že je navržen tak, aby podporoval programy, které mohou běžet paralelně. To je v protikladu k většině ostatních programovacích jazyků, které jsou určeny pro programy, které běží sekvenčně.
E je jazyk založený na třídách, což znamená, že k definování vztahů mezi objekty používá hierarchii tříd. Jazyk E také podporuje vícenásobnou dědičnost, což znamená, že třída může dědit z více než jedné jiné třídy.
E je objektově orientovaný jazyk, což znamená, že k reprezentaci dat a procedur používá objekty. Objekty lze vytvářet, ničit a předávat jako argumenty procedurám. Objektově orientované programovací jazyky jsou určeny k podpoře vývoje rozsáhlých a složitých softwarových systémů.
Jazyk E je zaměřen na bezpečnost. Obsahuje funkce, které mají programům ztížit porušování bezpečnostních zásad. Jazyk E například podporuje zabezpečení založené na schopnostech, což znamená, že k objektu lze přistupovat pouze tehdy, pokud má program příslušná oprávnění.
E je distribuovaný programovací jazyk. Obsahuje funkce, které mají usnadnit vývoj programů spouštěných na více počítačích. E například podporuje vzdálené volání procedur, což znamená, že proceduru lze vyvolat na vzdáleném počítači.
E je jazyk s otevřeným zdrojovým kódem. Referenční implementace programovacího jazyka E je k dispozici pod licencí open-source.
E je programovací jazyk pro všeobecné použití. Lze jej použít k vývoji široké škály aplikací.