LINUX.ORG.RU

Вышла Scala Final 2.6.0


0

0

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

Структурные типы позволяют использовать в коде Ruby-like конструкции:
def test(f: { def getName(): String }){
println(f.getName)
}

Здесь test принимает в качестве параметра любой объект, имеющий в составе метод getName, возвращающий String

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

Re: Вышла Scala Final 2.6.0

Урааааа

anonymous ()

Re: Вышла Scala Final 2.6.0

Новости - сто лет в обед! ЛОР начинает просыпаться и опохмеляться?

anonymous ()

Re: Вышла Scala Final 2.6.0

а написать что это такое "религия не позволяет"(R)?

zup-rk27 ★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от zup-rk27

Re: Вышла Scala Final 2.6.0

> а написать что это такое "религия не позволяет"(R)?

Язык программирования под Java VM.

Fice ★★ ()

Re: Вышла Scala Final 2.6.0

>Здесь test принимает в качестве параметра любой объект, имеющий в составе метод getName, возвращающий String

а если нету? runtime exception или проверка компилятором?

ЗЫ. интерфейсы придумали трусы?

k0l0b0k ★★ ()

Re: Вышла Scala Final 2.6.0

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

Таким темпом, скоро выйдет язык Stone написанный на Scala, который в свою очередь на Java, а потом... :)

Deleted ()

Re: Вышла Scala Final 2.6.0

Ну и при чем тут линукс?

ssvda ()
Ответ на: Re: Вышла Scala Final 2.6.0 от Deleted

Re: Вышла Scala Final 2.6.0

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

Вы не путайте Java - язык и Java - платформу, прошу вас. Есть JVM, есть java byte-code для JVM, именно в него и компилируется Scala.

Вообще язык очень интересный, всё чаще про него слышно. Начинаем ботать :)

achy ()

Re: Вышла Scala Final 2.6.0

и где тут ruby-like?

libc ()

Re: Вышла Scala Final 2.6.0

"Ruby-like конструкциями" назвали использование особой формы для реализации duck typing? Ежели так, то Scala становится очень и очень интересным языком, так как имеет массу интересных решений из самых разных языков, а компилируется все равно под ту же JVM.

anonymous ()
Ответ на: Re: Вышла Scala Final 2.6.0 от achy

Re: Вышла Scala Final 2.6.0

>Вы не путайте Java - язык и Java - платформу, прошу вас. Есть JVM, есть java byte-code для JVM, именно в него и компилируется Scala.

ну, первая скала на яве и писалась :)

>Вообще язык очень интересный, всё чаще про него слышно. :)

+1

adarovsky ★★★★ ()

Re: Вышла Scala Final 2.6.0

Кстати, почему-то на сайте нет раздела Success Stories или Who Using it.

adarovsky ★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от adarovsky

Re: Вышла Scala Final 2.6.0

> Кстати, почему-то на сайте нет раздела Success Stories или Who Using it.

Так ведь тем и интересен, какой красноглазый джедай будет смотреть на реальные проверенные временем решения, э?

Gharik ()
Ответ на: Re: Вышла Scala Final 2.6.0 от k0l0b0k

Re: Вышла Scala Final 2.6.0

> ЗЫ. интерфейсы придумали трусы?

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

впрочем, чем бы дитя не тешилось... только бы не пугалось от такого "человеческого лица" :-)

dea ()
Ответ на: Re: Вышла Scala Final 2.6.0 от Gharik

Re: Вышла Scala Final 2.6.0

>Так ведь тем и интересен, какой красноглазый джедай будет смотреть на реальные проверенные временем решения, э?

Дык гуголь по слову Scala выдаёт много всякого материалу. Видать используют её, но как-то самим разработчикам на это положить... Нехорошо, ей-богу

adarovsky ★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от dea

Re: Вышла Scala Final 2.6.0

>да уж, странно пускать слюни от такой дикой конструкции, которая в жабе выглядит гораздо элегантнее

в идеях - ога, элегантнее. однако чтобы сделать такое в яве, надо сляпать интерфейс, у которого есть этот метод getName(), и все классы, в том числе и сторонних разработчиков, обязать его заимплементить. В идеале — красивее. В реалиях — не пришлось бы через рефлекшены ходить

>впрочем, чем бы дитя не тешилось... только бы не пугалось от такого "человеческого лица" :-)

Ещё один пример — with. Когда можно сказать, что принимаемый параметр должен реализовывать не один, а несколько интерфейсов. В яве придётся либо опять перекраивать дерево наследования, без особой на то причины, либо использовать незабвенные instanceof

adarovsky ★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от adarovsky

Re: Вышла Scala Final 2.6.0

> Дык гуголь по слову Scala выдаёт много всякого материалу. Видать используют её, но как-то самим разработчикам на это положить... Нехорошо, ей-богу

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

Gharik ()
Ответ на: Re: Вышла Scala Final 2.6.0 от Gharik

Re: Вышла Scala Final 2.6.0

>Понятное дело, ценители искусства, финансисты и прочие гломурные модники найдут для себя в гуголе много интересного, а куда податься бедным линупсоидам?

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

adarovsky ★★★★ ()

Re: Вышла Scala Final 2.6.0

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

ЗЫ. После функциональных языков синтаксис scala в применении к функциоанльному подходу выглядит как то не кузяво.

cathode ()
Ответ на: Re: Вышла Scala Final 2.6.0 от adarovsky

Re: Вышла Scala Final 2.6.0

> в идеях - ога, элегантнее. однако чтобы сделать такое в яве, надо сляпать интерфейс, у которого есть этот метод getName(), и все классы, в том числе и сторонних разработчиков, обязать его заимплементить.

представь себе, это и проще, и читабельнее, и надежнее

впрочем, если тебе runtimeException больше нравится, я не буду возражать ;)

> В идеале — красивее. В реалиях — не пришлось бы через рефлекшены ходить

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

> Ещё один пример — with. Когда можно сказать, что принимаемый параметр должен реализовывать не один, а несколько интерфейсов. В яве придётся либо опять перекраивать дерево наследования, без особой на то причины, либо использовать незабвенные instanceof

"перекраивать дерево" это лишний implements довавить что-ли?

dea ()
Ответ на: Re: Вышла Scala Final 2.6.0 от dea

Re: Вышла Scala Final 2.6.0

> если тебе runtimeException больше нравится

Насколько я понимаю, там будет ошибка при компиляции.

> перекраивать дерево" это лишний implements довавить что-ли?

Да. А если у тебя нет исходников библиотеки, то даже это невозможно.

tailgunner ★★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от tailgunner

Re: Вышла Scala Final 2.6.0

>> если тебе runtimeException больше нравится

>Насколько я понимаю, там будет ошибка при компиляции.

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

dea ()
Ответ на: Re: Вышла Scala Final 2.6.0 от tailgunner

Re: Вышла Scala Final 2.6.0

>> перекраивать дерево" это лишний implements довавить что-ли?

>Да. А если у тебя нет исходников библиотеки, то даже это невозможно.

сомнительно, ПМСМ это легко исправляется обычным фасадом/декоратором или proxy на худой конец

dea ()
Ответ на: Re: Вышла Scala Final 2.6.0 от dea

Re: Вышла Scala Final 2.6.0

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

Именно ошибка при компиляции. Как и в случае с with

В том и синус, иначе никакого интереса этот язык не представлял бы

adarovsky ★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от dea

Re: Вышла Scala Final 2.6.0

>сомнительно, ПМСМ это легко исправляется обычным фасадом/декоратором или proxy на худой конец

ты ж заблудишься в этих фасадах в конце концов. Тебе вообще не кажется странным создавать новый интерфейс, в котором только implements и всё, только ради того, чтобы какая-то функция его потом вызвала?

adarovsky ★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от cathode

Re: Вышла Scala Final 2.6.0

>Жутковатый язык, напоминает свалку. Нет, идея конечно правильная: много возможностей - это хорошо, но синтаксис какой-то непоследовательный.

Сначала я тож испугался. Однако последовательности в нём довольно много. А вот сущностей — не так много, как кажется сначала

>ЗЫ. После функциональных языков синтаксис scala в применении к функциоанльному подходу выглядит как то не кузяво.

он же не чисто функциональный. При желании на нём можно императивщину лабать за милую душу :)

adarovsky ★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от adarovsky

Re: Вышла Scala Final 2.6.0

>> Сначала я тож испугался.

Есть опыт програмирования на scala?

cathode ()
Ответ на: Re: Вышла Scala Final 2.6.0 от adarovsky

Re: Вышла Scala Final 2.6.0

> Именно ошибка при компиляции. Как и в случае с with

врешь ты все ;-) я пробежался немного, в лучшем случае контроль только для Scala классов, так что о нормальном использовании жаба-платформы можно забыть, да и для родных scala как мне показалось можно получить runtime подарочек во время new

dea ()
Ответ на: Re: Вышла Scala Final 2.6.0 от adarovsky

Re: Вышла Scala Final 2.6.0

> ты ж заблудишься в этих фасадах в конце концов.

гм... а в "суперпупермультипарадигменной" Scala ты, значится, не заблудишься?

dea ()
Ответ на: Re: Вышла Scala Final 2.6.0 от adarovsky

Re: Вышла Scala Final 2.6.0

>в идеях - ога, элегантнее. однако чтобы сделать такое в яве, надо сляпать интерфейс, у которого есть этот метод getName(), и все классы, в том числе и сторонних разработчиков, обязать его заимплементить. В идеале — красивее. В реалиях — не пришлось бы через рефлекшены ходить

Не факт. В реалиях, в случае скалы мы получим Exception, в софте тех же сторонних разработчиков, которые уверен "поблагодарят" вас за такую фигню. Софт на яве тоже получит Exception, но! При следующей сборке компилятор _заставит_ разработчика имплементировать getName(). ИМХО лучше пусть будет прога менее красива внутренне, зато более устойчива. А рефлексия - это не так уж и плохо кстати (исключение - софт критичен ко времени выполнения).

k0l0b0k ★★ ()

Re: Вышла Scala Final 2.6.0

Кто реально и для реальных задач использует это поделие?

Bioreactor ★★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от achy

Re: Вышла Scala Final 2.6.0

> всё чаще про него слышно

И сколько же господин achy набашлял бабла за использование этого языка? Или пионЭры-кульхацкеры за "чупа-чупс" работают. :) Пора взрослеть.

Bioreactor ★★★★★ ()

Re: Вышла Scala Final 2.6.0

Очередное яваподелие! подождите закапывать, господа, в кучку вон там сложите, а как кучка здоровой станет - оптом закопаем, чтобы не коать лишнего)

AiFiLTr0 ★★★★★ ()

Re: Вышла Scala Final 2.6.0

Java сам по себе не плох и не хорош. Плохо или хорошо выбирать или не выбирать Джаву под конкретную задачу. А то можно или телескопом гвозди забивать или очередной "велосипед из руды" изобретать.

Bioreactor ★★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от cathode

Re: Вышла Scala Final 2.6.0

>Есть опыт програмирования на scala?

Неа. Только посмотрел чуток и всё. В проекте не стали использовать, я и забил на неё. А впечатления приятные остались, да.

adarovsky ★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от dea

Re: Вышла Scala Final 2.6.0

>врешь ты все ;-) я пробежался немного, в лучшем случае контроль только для Scala классов, так что о нормальном использовании жаба-платформы можно забыть, да и для родных scala как мне показалось можно получить runtime подарочек во время new

заинтересовал. Щас проверю, результаты сюда отпишу

adarovsky ★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от adarovsky

Re: Вышла Scala Final 2.6.0

>> Неа. Только посмотрел чуток и всё. В проекте не стали использовать, я и забил на неё. А впечатления приятные остались, да.

Насколько я понял scala номально интегрируется с Java, в смысле Java классы и пакеты можно импортировать в scala-код? Я прав?

cathode ()
Ответ на: Re: Вышла Scala Final 2.6.0 от dea

Re: Вышла Scala Final 2.6.0

> >Насколько я понимаю, там будет ошибка при компиляции.

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

Не гони пургу. Scala - статически типизированный язык. С системой типов сильно более мощной, чем в Java (хотя и слабее, чем в Haskell). И generics (ну, ээ, там они называются параметризованные типы, IIRC), там лучше - там можно запросить любой тип наследования между type[parent] и type[child], что небесполезно.

anonymous ()
Ответ на: Re: Вышла Scala Final 2.6.0 от cathode

Re: Вышла Scala Final 2.6.0

> Насколько я понял scala номально интегрируется с Java, в смысле Java классы и пакеты можно импортировать в scala-код? Я прав?

Ага. У нее, например, вообще нет своего ввода-вывода, во всех примерах в начале стоит import java.lang.System._ и потом println("blah blah). Или оно System._ даже само импортирует, забыл.

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

anonymous ()
Ответ на: Re: Вышла Scala Final 2.6.0 от adarovsky

Re: Вышла Scala Final 2.6.0

Докладаюсь:

$ cat Interface1.java
public interface Interface1 {
    public void func1();

$ cat Interface2.java
public interface Interface2 {
    public void func2();

$ cat Impl.java
public class Impl implements Interface1 {
    public void func1() {
        System.out.println("func1()");
    }

    public void func2() {
        System.out.println("func2()");
    }
}

$ cat TestMixin.scala

object TestMixin {
    def func(arg: Interface1 with Interface2): Unit = {
        arg.func1();
        arg.func2()
    }

    def main(args: Array[String]): Unit = {
      func( new Impl() )
    }
}

$ scalac TestMixin.scala
TestMixin.scala:9 error: type mismatch;
 found   : Impl
 required: Interface1 with Interface2
      func( new Impl() )
            ^
one error found


Если добавляем Interface2 в Impl:

$ scala TestMixin
func1()
func2()

adarovsky ★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от Bioreactor

Re: Вышла Scala Final 2.6.0

>И сколько же господин achy набашлял бабла за использование этого языка? Или пионЭры-кульхацкеры за "чупа-чупс" работают. :) Пора взрослеть.

Набашлянием приходится пока заниматься на Java. Но: 1) есть и свои проекты, 2) пару раз уже удавалось убеждать начальство не использовать технологии прошлого века.

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

Гениальнейшая идея, обидно, что они её придумали и без меня, но радует, что без меня реализовали. :)

achy ()
Ответ на: Re: Вышла Scala Final 2.6.0 от cathode

Re: Вышла Scala Final 2.6.0

>Насколько я понял scala номально интегрируется с Java, в смысле Java классы и пакеты можно импортировать в scala-код? Я прав?

Да. Влёт. И обратно. Но, понятно, с ограничениями. Я пример отпостил (правда, без обратного использования, только java -> scala)

adarovsky ★★★★ ()
Ответ на: Re: Вышла Scala Final 2.6.0 от adarovsky

Re: Вышла Scala Final 2.6.0

Вот то, что в байт-код нагенерилось:

$ cat TestMixin\$.jad
// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3)
// Source File Name:   TestMixin.scala

import scala.ScalaObject;

public final class TestMixin$
    implements ScalaObject
{

    public TestMixin$()
    {
    }

    public void main(String args[])
    {
        func(new Impl());
    }

    public void func(Interface1 interface1)
    {
        interface1.func1();
        ((Interface2)interface1).func2();
    }

    public int $tag()
    {
        return scala.ScalaObject.class.$tag(this);
    }

    public static final TestMixin$ MODULE$ = this;

    static
    {
        new TestMixin$();
    }
}

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