LINUX.ORG.RU

Группа разработчиков Scala получила грант Евросоюза

 , , ,


1

4

Группа разработчиков языка Scala получила грант Евросоюза, выиграв конкурс языков для параллельного программирования. Разработчики получат в течение следующих 5 лет на развитие своего детища 2,3млн €.

Scala — язык программирования для платформы JVM, сочетающий возможности объектно-ориентированного и функционального программирования. Scala был разработан в лаборатории швейцарского ВУЗ’а EFPL.

>>> Подробности

★★★★★

Проверено: maxcom ()

Ответ на: комментарий от r

В твоем коде которые тебя попросилил привести как иллюстрацию твоих высказываний оно тоже не использовалось.

И, надо заметить, гуарды там отнюдь не снижали надежности решения, в отличии от вашего кода.

eao197 ★★★★★ ()
Ответ на: комментарий от r

Модифицировать программу в три строчки в общем случае легче чем программу в 23 строчки реализующую одну и ту же функцию - это что рокет саянс?

Какое отношение к вышесказанному имеет метрика FuncLOC%?

eao197 ★★★★★ ()
Ответ на: комментарий от r

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

Феерично. Пожалуй, это так же следует куда-нибудь утащить на цитаты.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

>И, надо заметить, гуарды там отнюдь не снижали надежности решения, в отличии от вашего кода.

Потому что критерии к нему не апликабельны - в нем это в принципе нельзя проверить.

И что дальше? Я все еще не вижу твоего _соответствующего_ примера, равно как и открытого письма Одерскому. Расскажи ему что методы который я привел в пример так писать нельзя, расскажи ему про применение гвардов к Option.

Или что? Какая позиция по поводу кодов одерского? Говнокод или не говнокод?

r ★★★★★ ()
Ответ на: комментарий от eao197

>Какое отношение к вышесказанному имеет метрика FuncLOC%?

То есть не очевидно что при большомроценте бесполезного синтаксического шума разбираться в том что действительно делает программа значительно труднее - рокет саянс?

r ★★★★★ ()
Ответ на: комментарий от eao197

>Феерично.

Ты это себе сказал? Начинаешь сам с собой разговаривать?

r ★★★★★ ()
Ответ на: комментарий от r

Я смотрю разница принципиальна - да.

Вообще-то да. Смотрим. Пару примеров из указанных вами.

Файла src/scalap/scala/tools/scalap/Main.scala у меня нет. Но есть другие:

src/compiler/scala/tools/util/PathResolver.scala:

    def scalaBootClassPath  = scalaLibDirFound match {
      case Some(dir) if scalaHomeExists => join(ClassPath expandDir dir.path: _*)
      case _                            => ""
    }

src/compiler/scala/tools/nsc/doc/html/page/Template.scala:

    { tpl.companion match {
        case Some(companion) if (isSelf && !isReduced) =>
          <div class="block">
            go to: <a href={relativeLinkTo(companion)}>companion</a>
          </div>
        case _ =>
          NodeSeq.Empty
      }

src/compiler/scala/tools/nsc/Interpreter.scala:

      val valueExtractor = handlers.last.generatesValue match {
        case Some(vname) if typeOf contains vname =>
          """
          |lazy val scala_repl_value = {
          |  scala_repl_result
          |  %s
          |}""".stripMargin.format(fullPath(vname))
        case _  => ""
      }

Пока вы не умеете писать такие же match-и Одерскому можно, а вам — нет.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

>Пока вы не умеете писать такие же match-и

Какие такие же? Те самые к которым ты у меня предьявлял претензии о том что в конце стоит case _? Теперь ты изменил свое мнение?

И покажи как указанные матчи соответствуют твоим утверждениям. Структура для разбора - точно такая же как у меня - алг тип Option. Компилятор компрехенсивности не проверяет.

ы?

Дальше будем обсуждать тот феерический бред что ты сморозил?

r ★★★★★ ()
Ответ на: комментарий от r

Посчитал, мультиэкзитная программа, формула: π - s + 2 = 7 - 8 + 2 = 1

Сюрприз?

Еще какой.

Вот есть инструмент для получения метрик Java кода: JavaNCSS. Поскольку он Scala не поддерживает, то скармливается ему дословно переведенный в Java исходный вариант (с выбрасыванием лишнего). Если запускать JavaNCSS с ключем -function, то получаем:

Nr. NCSS CCN JVDC Function
  1   29  12    0 Login.login(Request,String,String)
  2    1   1    0 Login.respond(int,String)
  3    1   1    0 Request.storeInSession(String,Object)
  4    2   1    0 AccountsStorage.find(String)
  5    2   1    0 UserInfo.passwordMatches(String)
  6    2   1    0 AccessStorage.find(String)
Average Function NCSS:       6.17
Average Function CCN:        2.83
Average Function JVDC:       0.00
Program NCSS:               47.00
Нужен только столбец CCN, поскольку он указывает на цикломатическую сложность. Видим значение 12 (двенадцать)!

Берем таким же образом урезанный мой вариант на Java, получаем:

Nr. NCSS CCN JVDC Function
  1    5   3    0 MyLogin.login(Request,String,String)
  2    1   1    0 MyLogin.respond(int,String)
  3    6   2    0 MyLogin.doLogin(Request,String,String)
  4    2   1    0 MyLogin.handleUnknownUserLogin()
  5    5   1    0 MyLogin.KnownUserLoginHandler.KnownUserLoginHandler(Request,String,String,UserInfo)
  6    8   3    0 MyLogin.KnownUserLoginHandler.handle()
  7    2   1    0 MyLogin.KnownUserLoginHandler.handleInactiveUserLogin()
  8    5   2    0 MyLogin.KnownUserLoginHandler.handlePetrivkaAuthSchemeLogin()
  9   10   3    0 MyLogin.KnownUserLoginHandler.handleUsualAuthSchemeLogin()
 10    2   1    0 MyLogin.KnownUserLoginHandler.setupSuccessfulAuthResult()
 11    2   1    0 MyLogin.KnownUserLoginHandler.findAuthScheme()
 12    1   1    0 Request.storeInSession(String,Object)
 13    2   1    0 AccountsStorage.find(String)
 14    2   1    0 UserInfo.passwordMatches(String)
 15    2   1    0 AccessStorage.find(String)
Average Function NCSS:       3.67
Average Function CCN:        1.53
Average Function JVDC:       0.00
Program NCSS:               70.00
Получаем, что максимальная CCN для моего кода — 3.

Кстати говоря, не видно смысла складывать CCN для всех функций вместе. Тогда как усредненный CCN является более осмысленным показателем.

eao197 ★★★★★ ()
Ответ на: комментарий от r

То есть не очевидно что при большомроценте бесполезного синтаксического шума разбираться в том что действительно делает программа значительно труднее - рокет саянс?

В таких языках, как Scala и Java синтаксического шума немного. Либо это код (тогда строки попадают в LOC), либо это пустые строки (не шум), либо это комментарии (что, опять же, вряд ли можно считать шумом). Так что, если FuncLOC% отличен от 100%, значит остальное приходится на пустые строки (как они могут мешать чему-то?), либо на коментарии (опять же, как комментарии могут мешать сопровождению). Так что, не понятно.

Но характерно другое. Опять получается, что по вашей метрике наивысшие баллы будет получать полностью обсфуцированный код. А если добавить сюда еще и такой критерий, как NJFunLOC, то идеальной по вашему набору метрик будет тот самый магический Main на 2Gb, записанный в одну строку :/

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

>Кстати говоря, не видно смысла складывать CCN для всех функций вместе.

Жаль.

Тогда как усредненный CCN является более осмысленным показателем.


Чего?

r ★★★★★ ()
Ответ на: комментарий от r

Какие такие же? Те самые к которым ты у меня предьявлял претензии о том что в конце стоит case _?

Такие, для которых аналоги на if-ах будут хуже как по читабельности, так и по надежности. Во всех примерах, которые я приводил, будет именно так.

А вот ваш случай, не такой. И не из-за case _ (поскольку это следствие), а из-за трех(!) case Some(user).

Ну да это уже мной неоднократно объяснялось, с примерами.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

>В таких языках, как Scala и Java синтаксического шума немного.

Кто говорил о синтаксическом шуме? И в жабе его _много_.

Либо это код (тогда строки попадают в LOC),


если ты думаешь что записав объявления однострочников и фигурные скобки в LOC ты что-то покажешь кроме того что ты один и тот же алгоритм реализовал в 3 раза большим кодом - то давай.

Опять получается, что по вашей метрике наивысшие баллы будет получать полностью обсфуцированный код


По твоей - однострочники. Запиши каждую строчку в функцию - CC получишь 1 по каждой функции. Желаю тебе всю жизнь таким API пользоваться, и такие программы развивать.

r ★★★★★ ()
Ответ на: комментарий от eao197

> Такие, для которых аналоги на if-ах будут хуже как по читабельности, так и по надежности.

Ты утверждаешь что match нужно употреблять только на 2 варианта?

r ★★★★★ ()
Ответ на: комментарий от r

Кто говорил о синтаксическом шуме?

(катаясь под столом от смеха), да вы батенька, сего дня и говорили:

То есть не очевидно что при большомроценте бесполезного синтаксического шума разбираться в том что действительно делает программа значительно труднее - рокет саянс?

:))))))))

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

>(катаясь под столом от смеха), да вы батенька, сего дня и говорили:

В данном случае имелись ввиду не public static, а конструкции которыё явля.тся ничем иным как обявлениями. Или ты заявишь что вот тут:

f(x) = f1(x)
f1(x) = f3(x)
f3(x) = x

много FunLOC?

Поскольку ты его начал относить к синтаксису языка а не мусору решения - я и уточнил что я не тот шум имею ввиду.

r ★★★★★ ()
Ответ на: комментарий от r

>По твоей - однострочники. Запиши каждую строчку в функцию - CC получишь 1 по каждой функции. Желаю тебе всю жизнь таким API пользоваться, и такие программы развивать.

Ну вот опять на APL начинают гнать.

Hug37r011 ()
Ответ на: комментарий от r

> >Пробовал (и не раз), до тебя не дошло (ни на один мой вопрос ты так и не ответил).

Я не собираюсь отвечать на придуманное тобой мое мнение. Процитируй меня - тогда я отвечу. Я отвечаю за свои слова а не за твои впечатления.

Я уже цитировал и делал это не раз. О чём и написал. Но до тебя это не дошло. Я даже знаю, почему:

Не спорь с упёртыми людьми, которые не могут прочитать не то, что вопросы к ним, но и собственные ответы, данные день назад

Вот пруф предыдущей фразы: http://www.linux.org.ru/news/java/5817442/page16?lastmod=1296757526795#commen...

Ты заврался и запутался. И каждый раз, когда тебя спрашивают, ты делаешь вид, что вопроса не видел и отвечаешь на выдуманный тобой вопрос. Несмотря на то, что тебе спрашивали совершенно о другом.

anonymous ()
Ответ на: комментарий от anonymous

>И каждый раз, когда тебя спрашивают, ты делаешь вид, что вопроса не видел и отвечаешь на выдуманный тобой вопрос.

Маловато - надо было написать целый талмуд о том какой я не хороший, привести еще 16 ссылок, и подпрыгнуть три раза - но только не процитировать меня - ведь это оказывается так сложно.

r ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.