]]> ]]>
Править | Обсудить | История

E

Дата создания:
1997
Создан под влиянием:
Парадигма:
Типизация:
Принятые расширения файлов:
.e
Реализации и версии (свернуть все | развернуть все):
Язык программирования

E — объектно-ориентированный язык программирования, предназначенный для безопасного распределенного программирования.

E был создан Марком Миллером (Mark S. Miller), Даном Борнштейном (Dan Bornstein) и группой сотрудников Electric Communities в 1997 году. Он произошел от языка для параллельных вычислений Joule и Original-E, расширений Java для распределенных вычислений. E задумывался как скриптовый язык, жертвующий эффективностью ради простоты использования.

Основой языка является ELib — библиотека, обеспечивающая взаимодействие объектов и потоков программы. Каждый объект существует в некотором процессе. Распределенные вычисления реализуются посредством отправки сообщений удаленным объектам (объектам, принадлежащим другим процессам). В E существует два способа пересылки сообщений — немедленный вызов (аналог обычного вызова функции в других языках — вызывающий процесс ожидает завершения работы вызванного) и отложенный вызов. Второй вид отправляет сообщение получателю и создает в отправителе временный объект-“обещание”. Отправитель может продолжать работу немедленно, используя этот объект. Позднее, когда получатель обработает сообщение и вернет результат, объект-обещание примет значение этого результата. Этот механизм позволяет избежать взаимных блокировок и уменьшить задержки, вызванные задержками в сети.

Язык спроектирован так, чтобы обеспечить как можно лучшую безопасность работы. В частности, этому способствует строгое следование объектно-ориентированной модели на основе мандатной защиты (мандатом объекта является ссылка на него). Все сообщение между процессами шифруется на уровне языка. Синтаксис языка также предназначен для упрощения аудита безопасности: ограничение области видимости переменных, == для проверки на равенство и := для присваивания значения (нет сбивающего с толку оператора =) и т.д.

Синтаксис языка напоминает Java, с тем отличием, что все программы состоят только из выражений. Основные типы данных — int, float, string, char и boolean; тип int поддерживает длинную арифметику.

Элементы синтаксиса:

Комментарий до конца строки #
Присваивание значения переменной <varname> := <value>
Равенство ==
Неравенство !=
Цикл с предусловием while (condtion) ...
Цикл for - next для диапазона целых чисел с инкрементом на 1 for i in 1..10 { ... }

Примеры:

Hello, World!:

Пример для версий E-on-Java 0.9.3
println("Hello, World!")

Числа Фибоначчи:

Пример для версий E-on-Java 0.9.3
var s := [0, 1]
var res := ""
for _ in 1..16 {
  def [a, b] := s
  s := [b, a + b]
  res := res + b.toString(10) + ", "
}
println(res + "...")

Факториал:

Пример для версий E-on-Java 0.9.3

E — язык с неявной типизацией; :int, указанный в сигнатуре функции, — не объявление типа, а ограничение (guard) — контракт на то, что функция factorial будет работать только с целочисленными аргументами и возвращать только целочисленные значения. Эти ограничения не обязательны, но полезны при проведении аудита безопасности кода.

def factorial(n :int) :int {
  if (n == 0) {
    return 1
  } else {
    return n * factorial(n-1)
  }
} 

for n in 0..16 {
  println(n.toString(10) + "! = " + factorial(n).toString(10))
}

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам