Первые шаги в Scala
От: Аноним  
Дата: 31.07.07 07:46
Оценка: 730 (16)
Статья:
Билл Веннерс, Мартин Одерски, Лекс Спун. Первые шаги в Scala
Автор(ы): Билл Веннерс, Мартин Одерски, Лекс Спун
Дата: 30.07.2007
Scala – статически типизированный, объектно-ориентированный язык программирования, в котором смешиваются императивный и функциональный стили программирования. Одна из причин заинтересоваться программированием на Scala, состоит в том, что Scala позволяет увеличить производительность разработчика по сравнению с Java, сохраняя скорость исполнения JVM, существующие инвестиции в Java-код, знания и множество API, имеющихся для JVM. Scala обладает краткостью языков типа Ruby или Python, но при этом статически типизирована, как и Java.


Авторы:
VladD2
Kupaev

Аннотация:
Scala – статически типизированный, объектно-ориентированный язык программирования, в котором смешиваются императивный и функциональный стили программирования. Одна из причин заинтересоваться программированием на Scala, состоит в том, что Scala позволяет увеличить производительность разработчика по сравнению с Java, сохраняя скорость исполнения JVM, существующие инвестиции в Java-код, знания и множество API, имеющихся для JVM. Scala обладает краткостью языков типа Ruby или Python, но при этом статически типизирована, как и Java.
Re: Первые шаги в Scala
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 09.10.07 07:17
Оценка: 3 (1)
Здравствуйте, Купаев Михаил, Чистяков Влад (перевод), Вы писали:

КМЧ>Статья:

КМЧ>Билл Веннерс, Мартин Одерски, Лекс Спун. Первые шаги в Scala
Автор(ы): Билл Веннерс, Мартин Одерски, Лекс Спун
Дата: 30.07.2007
Scala – статически типизированный, объектно-ориентированный язык программирования, в котором смешиваются императивный и функциональный стили программирования. Одна из причин заинтересоваться программированием на Scala, состоит в том, что Scala позволяет увеличить производительность разработчика по сравнению с Java, сохраняя скорость исполнения JVM, существующие инвестиции в Java-код, знания и множество API, имеющихся для JVM. Scala обладает краткостью языков типа Ruby или Python, но при этом статически типизирована, как и Java.


КМЧ>Авторы:

КМЧ> VladD2
КМЧ> Kupaev

КМЧ>...


Спасибо, интересно.

Единственный комментарий:

...
Тип результата здесь – scala.Unit, Scala-аналог void в Java. Главная разница между Unit в Scala и void в Java состоит в том, что Scala позволяет записать значение типа Unit, а именно (), а в Java нет значений типа void. (другими словами, как 1, 2 и 3 являются потенциальными значениями типа int в Scala и Java, так () является единственным значением типа Unit в Scala.) За этим исключением Unit и void эквивалентны. В частности, каждый возвращающий void метод в Java отображается на возвращающий Unit метод в Scala.
...


Выделенное утверждение не совсем соответствует действительности:

public class BBB {
    public static void main(String[] args) throws Exception {
        Constructor<Void> constructor = Void.class.getDeclaredConstructor();
        constructor.setAccessible(true);
        Void aVoid = constructor.newInstance();
        System.out.println(aVoid);
    }
}


Output:

java.lang.Void@757aef


Т.е. получить значение типа void все таки можно. Другой вопрос, что его можно получить только 'искусственным путем'.

Пример:
import java.lang.reflect.*;

public class BBB {
    public static void main(String[] args) throws Exception {
        Method method = BBB.class.getMethod("test");
        System.out.println(method.invoke(BBB.class)); // prints null, not Void 
    }

    public static void test() {
        System.out.println("hello");
    }
}
http://denis-zhdanov.blogspot.com
Re[4]: Первые шаги в Scala
От: mkizub Литва http://symade.tigris.org
Дата: 13.10.07 15:18
Оценка: 1 (1)
Здравствуйте, denis.zhdanov, Вы писали:

M>>Void это не void! Так же, как Integer это не int.


DZ>rtfm?


DZ>

DZ>The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void.


Шо, проблемы с аглицким? Void — это placeholder класс, который содержит ссылку на тот класс, который представляет void.
Integer.TYPE — The Class instance representing the primitive type int
Void.TYPE — The Class object representing the pseudo-type corresponding to the keyword void.
И так-же, как Integer != int, так и Void != void, а Integer.TYPE == int.class, и Void.TYPE == void.class
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re: Первые шаги в Scala
От: alvas  
Дата: 11.10.07 19:01
Оценка:
КМЧ>Статья:
КМЧ>Билл Веннерс, Мартин Одерски, Лекс Спун. Первые шаги в Scala
Автор(ы): Билл Веннерс, Мартин Одерски, Лекс Спун
Дата: 30.07.2007
Scala – статически типизированный, объектно-ориентированный язык программирования, в котором смешиваются императивный и функциональный стили программирования. Одна из причин заинтересоваться программированием на Scala, состоит в том, что Scala позволяет увеличить производительность разработчика по сравнению с Java, сохраняя скорость исполнения JVM, существующие инвестиции в Java-код, знания и множество API, имеющихся для JVM. Scala обладает краткостью языков типа Ruby или Python, но при этом статически типизирована, как и Java.


Спасибо за статью. До этого про Scala я знал только его название

Свои комментарии (Они скорее для авторов статьи чем для переводчиков):
1) цитата:
"Примеры этой статьи написаны для Scala 2.5.0-RC1, так что вам нужно скачать более свежую версию, чем 2.5.0-RC1"
— наверное точнее будет
"Примеры этой статьи написаны для Scala 2.5.0-RC1, так что вам нужно скачать 'Scala 2.5.0-RC1 или более свежую'"
2) в статье сильно сбивало с толку объяснение когда можно и когда не нужно ставить скобки, когда можно не ставить, но желательно все-таки поставить. И все в таком духе. Как мне кажется для "Первые шаги ..." это лишнее.
3) исходя из описания trait'ов я понял что их лучше сравнивать с абстрактными классами чем с интерфейсами. Как мне кажется на них они больше похожи
4) слово mixin вообще упоминается только в заголовке
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[2]: Первые шаги в Scala
От: mkizub Литва http://symade.tigris.org
Дата: 12.10.07 16:07
Оценка:
Здравствуйте, denis.zhdanov, Вы писали:

DZ>

DZ>java.lang.Void@757aef


DZ>Т.е. получить значение типа void все таки можно. Другой вопрос, что его можно получить только 'искусственным путем'.


Void это не void! Так же, как Integer это не int.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[3]: Первые шаги в Scala
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 13.10.07 15:08
Оценка:
Здравствуйте, mkizub, Вы писали:

M>Void это не void! Так же, как Integer это не int.


rtfm?

The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void.

http://denis-zhdanov.blogspot.com
Re[2]: Первые шаги в Scala
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.10.07 08:44
Оценка:
Здравствуйте, alvas, Вы писали:

A>2) в статье сильно сбивало с толку объяснение когда можно и когда не нужно ставить скобки, когда можно не ставить, но желательно все-таки поставить. И все в таком духе. Как мне кажется для "Первые шаги ..." это лишнее.


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

A>3) исходя из описания trait'ов я понял что их лучше сравнивать с абстрактными классами чем с интерфейсами. Как мне кажется на них они больше похожи


Все же trait — это скорее расширенная версия интерфейсов. Точнее так. Trait-ы заменяют интерфейсы и предоставляют реализацию по умолчанию некоторых их методов. Главная особенноть trait-ов по сравнению с классами — это возможность наследовать класс сразу от нескольких trait-ов. Тут они полностью аналогичны интерфейсам.

A>4) слово mixin вообще упоминается только в заголовке


Опять же вопрос к автору. От себя скажу, что trait в данном случае == mixin.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.