Erlang записан в Ada?

Обновление: Принципиальным отличием является то, что self-типы могут зависеть от нескольких классов (я допускаю, что это немного угловой случай). Например, у вас может быть

class Person {
  //...
  def name: String = "...";
}

class Expense {
  def cost: Int = 123;
}

trait Employee {
  this: Person with Expense =>
  // ...

  def roomNo: Int;

  def officeLabel: String = name + "/" + roomNo;
}

Это позволяет добавить миксин Employee просто ко всему, что является подклассом Person и Expense. Конечно, это имеет смысл только в том случае, если Expense распространяется на Person или наоборот. Дело в том, что использование self-типов Employee может быть независимым от иерархии классов, от которых она зависит. Неважно, что расширяет что - Если вы переключаете иерархию Expense против Person, вам не нужно изменять Employee.

7
задан Community 23 May 2017 в 12:30
поделиться

3 ответа

Обычно я бы бросил вам кучу ласковых слов на такую ​​тему, но оказывается, что именно этот вопрос был изучен (это .doc файл. извините).

У Rational был компилятор с большим объемом кода на обоих языках и большим объемом данных, собранных за несколько лет о количестве ошибок, времени исправления и т. Д. Из любопытства один из их инженеров подсчитал числа.

Ответ был: «Стоимость разработки C превышает затраты на разработку Ada». Если вы прочитаете заголовок резюме, то увидите, что, по их расчетам, написание того же кода на Ada обходится им примерно вдвое меньше, чем стоимость написания его на C .

Я знаю, что каждый, кто читает это, очень хочет вытащить дыры в этом заключении. Я тоже. Но они смотрели на чертовски почти со всех сторон, которые я мог придумать в отчете.

11
ответ дан 6 December 2019 в 15:25
поделиться

Возможно, но на каком языке был написан ваш компилятор Ada? Ада? А как насчет компилятора, который пишет ваш ПЕРВЫЙ компилятор Ada?

В какой-то момент, когда вы создаете программное обеспечение, формальная семантика и программные процессы гораздо важнее, чем язык, на котором что-то было написано.

0
ответ дан 6 December 2019 в 15:25
поделиться

"Better" in what way? Better as in faster? Better as in less bugs? Better as in more portable? Better as in more readable? Better as in more extensible?

For any suitable definition of "better" arguments can be made either way. However, it is just about sacred writ that no compiled language is more portable than C. Thus, if one of your goals is to make your application highly portable, C is an excellent choice.

More people understand C than Ada. Writing erlang extensions might be much harder if it was written in Ada, simply because fewer people are conversant with the language.

C code can be highly performant, but I am aware of no comparisons between C and Ada w/r to compiler optimizations.

Ada's type checking might be useful, or it could be a real problem. One presumes that a VM does it's own type checking on the pieces that matter to it. The overhead of RTTC in Ada could impose a completely unnecessary burden.

3
ответ дан 6 December 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: