Реализация защищенного варианта Scala - какой метод лучше? - PullRequest
2 голосов
/ 21 октября 2010

Привет, ребята из Scala, на самом деле я пишу магистерскую диссертацию, и мне нужно внедрить язык безопасности в Scala. Таким образом, это означает, что мне нужно добавить аннотации, чтобы указать специальные уровни разрешений для переменных и других программных конструкций в Scala. Идея добавить это исходит от Jif (настоящий типизированный язык безопасности http://www.cs.cornell.edu/jif/) и FlowCaml (http://www.normalesup.org/~simonet/soft/flowcaml/).) Мне еще нужно проверить, как эти языки добавляют свои расширения безопасности.

Я поговорил со своим советником, и он предложил три варианта, как я могу реализовать эту функцию в Scala:

  1. компилятор исходного кода (я не думаю, что это лучшее решение для написания вещей с нуля, потому что я буду занят парсером и семантикой и по собственному опыту знаю, что у меня нет вполне достаточно времени для работы над основным материалом)
  2. плагин для проверки типов (я не написал плагин для компилятора и думаю, что он не будет работать на последующих версиях Scala, потому что компилятор все еще находится в разработке)
  3. создать библиотеку в Scala (синтаксис здесь просто бесплатный, поэтому я могу легко создать что-то подобное на языке, который я хочу => думаю, что это похоже на изобретение DSL, и я считаю, что это лучшее решение)

Если у вас есть другая идея, как реализовать, пожалуйста, дайте мне знать, и если у вас есть плюсы и минусы для методов, упомянутых выше, пожалуйста, дайте мне знать. Я убежден, что после этого проекта я научусь с удовольствием программировать на Scala (я знаком с Java и Ruby).

Привет

Матиас Гюнтер

Ответы [ 2 ]

1 голос
/ 06 ноября 2010

Это определенно работа для плагина компилятора: написание плагина, который позволяет аннотациям дополнительно уточнять возможные отношения подтипа, довольно просто, по крайней мере, в простых случаях.

Вы можете быть достаточно уверены, что API плагинов компилятора останется стабильным на протяжении всего магистерского диссертации, и вам следует изучить scala.tools.nsc.symtab.AnnotationCheckers и google, например, плагины, которые реализуют проверки времени компиляции -) обнуляемость (т. е. T @NonNull <: T, но не T <: T @ NonNull), которая структурно аналогична простейшей нетривиальной типизированной схеме безопасности. </p>

1 голос
/ 23 октября 2010

Ого, это довольно значительный проект!

Я думаю, что ответ на ваш вопрос зависит от того, ищете ли вы звуковое дополнение или если вы просто хотите что-то, что может быть обойдено программистом, но все же может быть полезным. Поскольку вы упоминаете Jif и FlowCaml, я полагаю, что вы хотите пойти по пути и предоставить гарантии для вашего языка. Тогда я не думаю, что есть много вариантов, но создайте свои собственные языковые конструкции поверх Scala и предоставьте новый интерфейс для них.

Я очень сомневаюсь, что вы можете реализовать безопасность в виде библиотеки в стиле Пэн Ли и Стив Зданцевич или Алехандро Руссо . Причина в том, что Scala может иметь побочные эффекты повсюду, и это в значительной степени разрушает любые гарантии безопасности, которые вы можете попытаться применить.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...