powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Тяпничный Скало-Зуб.
25 сообщений из 60, страница 1 из 3
Тяпничный Скало-Зуб.
    #39175572
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здарова collegues!

Скала наступает. Уже сверкает в вакансиях. Предлагаю поднять
топик специально для обсуждения вопросов Java/Scala разработки.

В смежном топике я обещал поднять дискурсы по спорным
вопросам - и вот я здесь.

Во первых - ссылки.


1) Ссылка на сайт фриков и Сан-Франциско которые это всё затеяли
http://www.scala-lang.org/

2) Книга.


Прошу всех энтузиастов попробовать "на зуб" этот гранит науки. Надеюсь
разгрызём совместно.

Ваш коллега,
mayton

P.S. Вы можете тоже сюда писать ваши вопросы.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39175808
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

А книга-то где? Так грызть, в сухомятку?
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39175870
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrickmayton,

А книга-то где? Так грызть, в сухомятку?

Вроде как давать ссылки на скачивание платных книг нельзя. А гуглится легко (правда сходу только pdf).
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39175919
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin,

А почему именно Scala, а не Groovy, например?
А если про вакансии, то там вообще Python больше "сверкает". В рамках форума может быть Jython?
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39175962
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... давайте сюда-же и Groovy.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39176291
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот правильная книга по Scala:

https://www.manning.com/books/functional-programming-in-scala

Никак не осилю :)


Groovy - это хорошо, но это та же Java...
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39176307
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диез,

Первой книгой её брать не стоит. Стоило бы сначала саму Скалу освоить.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39176580
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПрошу всех энтузиастов попробовать "на зуб" этот гранит науки. Надеюсь
разгрызём совместно.


Книга есть... Пробовал...
Как-то не пошло.
В реальном проекте попробовать не удается, т.к. работаю в команде.
А тут важно, чтобы все работали на одном стеке технологий.

maytonВаш коллега,
mayton
P.S. Вы можете тоже сюда писать ваши вопросы.

Если есть проект, то могу поучаствовать удаленно.
Т.к. есть интересные моменты в Scala, но внутренней мотивации не достаточно, что бы изучать самостоятельно.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39176603
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul, у нас тоже всё уперлость в неготовность команды изучить и использовать
нечто новое.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39176667
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonmad_nazgul, у нас тоже всё уперлость в неготовность команды изучить и использовать
нечто новое.

Я бы не сказал, что это упертость.
Скорее здоровый консерватизм.

Java обучить новичка гораздо легче, чем Scala.

Так скажем новичок севший разбираться с кодом, быстрее разберется с Java-кодом, чем с Scala-кодом.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39177195
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoSOfRedRiverДиез,

Первой книгой её брать не стоит. Стоило бы сначала саму Скалу освоить.

Понятно, что надо синтаксис изучать сначала...
Суть в том, что использовать Scala для того, чтобы писать на нем в императивном стиле - это та самая овчинка, что не стОит выделки. Накладные расходы большие, а преимущества незаметны.
Имхо, без погружения в ФП и Type-level, Scala не даёт особых преимуществ перед Java.
Мозги надо вывернуть, короче говоря :)
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39177200
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диез,

Это заблуждение. Scala не является pure functional языком. Программирую на нём, вполне можно обойтись без scalaz и теории категорий.
Как-бэ, фишка Скалы в том, что язык сочетает функциональный и объектно-ориентированный подходы, вобрав в себя множество разных фич из других языков. Из FP здесь: иммутабельность, чистые функции, АТД, немного комбинаторов.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39177232
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoSOfRedRiverДиез,

Это заблуждение. Scala не является pure functional языком. Программирую на нём, вполне можно обойтись без scalaz и теории категорий.


А я где-то сказал, что Scala - чисто функциональный язык? Как раз наоборот - я и говорю, что на нем можно писать в императивном стиле, но это довольно бессмысленно. Если уж переходить на Scala - то надо использовать возможности по полной.

DoSOfRedRiver

Как-бэ, фишка Скалы в том, что язык сочетает функциональный и объектно-ориентированный подходы, вобрав в себя множество разных фич из других языков. Из FP здесь: иммутабельность, чистые функции, АТД, немного комбинаторов.

Я знаю, какие возможности есть в Scala (кстати, чистоту функций язык никак не контролирует)
Меня больше интересуют path-dependent types, high-order types и прочие фичи компилятора. Очень уж заманчиво отлавливать ошибки в compile-time, а не в логах продакшн-серверов.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39177277
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диез,

Я к тому, что идеологически Скала не задумывался как ФП язык. Достаточно Programming in Scala полистать, чтобы убедиться. Хотя тот же scalaz весьма убедительно смотрится.

ДиезЯ знаю, какие возможности есть в Scala (кстати, чистоту функций язык никак не контролирует)

Я бы добавил аннотацию. Вроде даже какие-то подвижки были - результатов не видно.


ДиезМеня больше интересуют path-dependent types, high-order types и прочие фичи компилятора. Очень уж заманчиво отлавливать ошибки в compile-time, а не в логах продакшн-серверов.

Наверное, higher kind types имеются ввиду? В Dotty, кстати, обещают нормальные dependent types.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39177470
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoSOfRedRiver
Наверное, higher kind types имеются ввиду?
Да, речь о них, конечно.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39177518
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39177534
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он интересен. Но лучше его пустить отдельным топиком.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39184312
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скалозуб продолжается. Внезапно Scala-порт Card-Raytracer 18105781 появился.
После того как я завершу (ш)кодинг можно будет гнать бенчмарк
и смотреть где и как Scala отстаёт от Java.

Несколько траблов.

Тернарная операция отсутствует.

Вместо (C++)
Код: plaintext
1.
	double p = pow(l % r * (b > 0), 99);




Скала предлагает if- c возможностью возврата значения.
Код: java
1.
var p:Double = pow(l % r * (if (b > 0) 1.0 else 0.0), 99.0)



Я пока еще путаюсь в покрывающих конструкторах, пропертях и свойсвтвах
и авто-выводе типов. Но думаю что к концу (ш)кодинга что-то появится.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39184327
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... если main класс объявлен как синглтон (object) то можно ли его инстанциировать из main ?
Смешно но я завис не на алгоритме а на конструкторах.

Желтым маркером я отметил то где среда ругается.



Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
import java.io
import java.io.{Writer, PrintWriter, OutputStream, FileOutputStream}
import java.lang.Math._

object CardRaytracer(out_:OutputStream,width_:Int,height_:Int) {

    val WIDTH       = 512
    val HEIGHT      = 512
    val SUB_SAMPLES = 64

    var width  = WIDTH
    var height = HEIGHT

    def out:Writer

    // .................................................. bla-bla ...................

    def this(out_:OutputStream,width_:Int, height_:Int) {
        this.width  = width_
        this.height = height_
        this.out    = out_
    }

    def this(out_:OutputStream) {
        this.out = out_;
    }

    def main(args: Array[String]): Unit = {
        def begin = System.currentTimeMillis();
        if (args.length == 0) {
            new CardRaytracer(System.out).process();
            System.err.printf("Elapsed time : %d sec\n",(System.currentTimeMillis()-begin)/1000);
            System.exit(1);
        } else if (args.length == 1) {
            def os = new FileOutputStream(args(0));
            new CardRaytracer(os).process();
            os.close();
            System.err.printf("Elapsed time : %d sec\n", (System.currentTimeMillis() - begin) / 1000);
            System.exit(2);
        } else if (args.length == 3) {
            def os = new FileOutputStream(args(0));
            new CardRaytracer(os, valueOf(args(1)), valueOf(args(2))).process();
            os.close();
            System.err.printf("Elapsed time : %d sec\n", (System.currentTimeMillis() - begin) / 1000);
            System.exit(2);
        }
        System.exit(0);
    }

}



Код: java
1.
2.
3.
Error:(61, 21) traits or objects may not have parameters
object CardRaytracer(out_:OutputStream,width_:Int,height_:Int) {
                    ^
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39184335
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мужики, у меня плохие новости - Scala никогда не будет мейнстримом, и так и останется в тени Java. Если даже главная компания-идеолог Scala - Typesafe (нынче Lightbend), в которой сидит сам Одерски, дистанцируется о Scala, то чего уж говорить про остальной мир.

На запудривайте себе мозги всякой ерундой.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39184343
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39184347
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv, вот так вот взял и обломал.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39184370
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv,

По-моему это вы "пудрите мозги". Откуда информация о том, что "Одерски дистанцируется от Scala"?
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39184381
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoSOfRedRiver, пофиксил object. Отказался от него.

Теперь новая бочина.

Код: java
1.
2.
3.
4.
5.
6.
7.
$ scala\CardRaytracer.scala:180: error: overloaded method value printf with alternatives:

  (x$1: java.util.Locale,x$2: String,x$3: Object*)java.io.PrintWriter <and>
  (x$1: String,x$2: Object*)java.io.PrintWriter
 cannot be applied to (String, Int, Int)
        wr.printf("P6 %d %d 255 ", width, height)
           ^



Всё устал. Пошёл спать.
...
Рейтинг: 0 / 0
Тяпничный Скало-Зуб.
    #39185017
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Не нужно пытаться портировать Java код. В Scala есть интерполяция строк:

Код: java
1.
println(s"P6 $width $height 255 ")
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Тяпничный Скало-Зуб.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]