LINUX.ORG.RU
ФорумTalks

Чем scala лучше java?

 ,


1

3

Не вброс, не троллинг. Гуглил долго. Нормальных аргументов так и не нашел. Может тут кто-то что-то знает. Стоит ли выбросить яву и начать изучать скалу? И почему?

stevejobs на всякий случай

Перемещено tailgunner из development

Deleted

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

Имхо, это неправильно.

let myMegaManatka : MegaManatka<int> = new MegaManatka<int>(5)

vs

let myMegaManatka = new MegaManatka(5)

Всегда будешь в таких случаях два раза тип писать?

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

Карго культ, тебе дают инструмент - вывод типа, а ты сразу догмами из старых книжек.

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

Буду питсать

List<Integer> myMegaManatka = new WhatEver<>();

Все эти let, var, fun и прочее говно приводят лишь к мануальным ошибкам. Учитывая постоянную деградацию уровня программистов.

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

То или хотел написать

MegaManatka<int> myMegaManatka = new MegaManatka<int>(5);

Что то же самое, что и

let myMegaManatka : MegaManatka<int> = new MegaManatka<int>(5)

Или ты совсем не в теме.

Все эти let…

Это просто другой синтаксис для объявления функции, что тебе не нравится?

var

Очередной нескучный синтаксис.

fun

Лямбда‐функция, скорее всего. Только утята будут кричать, что они не нужны.

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

Нет, в моем посте оператор diamond (<>), который выводит тип и нет говнокейворда let. Тип написан один раз. ЧЯДНТ?

Лямбда‐функция, скорее всего. Только утята будут кричать, что они не нужны.

нет, это вместо int main() теперь fun main() : int. Типа оно само умеет тип выводить, ты только в комментарии выше подпиши, что это инт, ну чтоб незабыть, тыж понимаешь.

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

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

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

выводит тип

То есть вывод типов, да? Ну так в чём проблемы?

нет говнокейворда let

Это говно и утятские ку‐ка‐ре‐ки, а не аргумент. С таким тебе в /b/

нет, это вместо int main() теперь fun main() : int.

И что тебе не нравится? Три буквы, которые обозначают, что дальше следует функция? Но это опять вскукареки.

В F# с fun лямбда‐функции объявляются просто, вот я и подумал про них, потому что тред почти не читал, не поняв, что разговор про Rust.

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

Тип написан один раз. ЧЯДНТ?

Подожди.

List<Integer> myMegaManatka = new WhatEver<>();
Слева список, справа WhatEver. Непорядок. При попытке исправить получаем один тип, написанный два раза.

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

Если ты полиморфизм имел в виду, я не так понял. В таком случае тоже лучше иметь на виду тип переменной, а не стремное var и через неделю смотря этот код долго искать, что же автор имел в виду.

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

Явное указание типа — половина успешно написанной программы.

А вы практикуете венгерскую нотацию?

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

Тип написан один раз. ЧЯДНТ?

Троллить на ЛОР пришел, вместо чтения книжек, вот ЧТДНТ.

Типа оно само умеет тип выводить, ты только в комментарии выше подпиши, что это инт, ну чтоб незабыть

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

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

Вы конечно же имели ввиду:

MegaManatkaFactory<? extends MegaManatka<? super Composite>> manatkaFactory = getManatkaFactory();
Очень красивый и очевидный код, это вам не val какой.

anonymous
()
Ответ на: комментарий от Guest_1488
Map<Integer> map = new HashMap<>();

Вот тип, написанный один раз. А если на месте Map<Integer> будет var?

MegaManatka<Integer> myMegaManatka = new MegaManatka<>(6);

Что это за говно и где ты это взял?

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

Ты чё несёшь вообще. Истории какие‐то про говно, про малафью, про фабрики. Ты на вопрос отвечай.

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

Что это за говно и где ты это взял?

Что тебе не нравится? Класс параметризуется одним типом, при инициализации принимает переменную типа, которым параметризуется. Что не так?

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

А если на месте Map<Integer> будет var?

Java это не спасет. Нормального type inference нет. Scala в свою очередь спокойно подставляет в левую половину более общие типы.

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

Это говно уровня 3 класса. Так не пишет примерно никто и никогда.

Нормальные возражения будут? Ты всё‐таки ответишь, как не писать тип два раза? Или будешь кукарекать до тех пор, пока я тебе похожий код где-нибудь на жидхабе в репе мелкософта не предоставлю?

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

Ты всё‐таки ответишь, как не писать тип два раза?

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

Или будешь кукарекать
Ахаха, а я у него и не заметил. Вот это победа.

Кукарекаешь пока тут только ты.

Deleted
()
Последнее исправление: rj45 (всего исправлений: 1)
Ответ на: комментарий от Guest_1488

Сейчас он тебе объяснит, что если слева не интерфейс, то это не ынтырпрайз.

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

Немножечко поучиться программировать. У меня в проектах на java по несколько десятков тысяч строк ниразу не написан тип 2 раза.

Пруфай давай. И чтобы во всех проектах.

То есть ты даже не к курсе, что Map параметризуется двумя типами.

Ахаха, а я у него и не заметил. Вот это победа.

Кукарекаешь пока тут только ты.

Это ты так свой фейл оправдываешь?

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

Гордиться своей необучаемостью - ну такое

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

Ну в твоем случае первое.

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

Скалу пилят - академики-романтики. Котлин - реалисты и практики

Спарк написан на скале. Кафка написана на скале. Даже простихосподи ignite написан на скале. А что из крупного и полезного опенсурса написано на котлине? Практики зарабатывания бабла из джетбрейнз?

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

Котлина боюсь по причине JetBrains. Не доверяю я этой шараге.

Про сам язык не скажу, но котлин обеспечивает JetBrains. У меня лично неприязнь к этой компании. Сегодня она есть, завтра ищи свищи.

Все эти let, var, fun и прочее говно приводят лишь к мануальным ошибкам. Учитывая постоянную деградацию уровня программистов.

Суеверия всё это

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

Спарк написан на скале.
Кафка написана на скале.
Даже простихосподи ignite написан на скале

Поржал. Все 3 проекта под софтомогильником Apache. RIP.

Кафка и Игнит на 70% написаны на Жабе. Скалы там от силы 5-10%. И только Спарк написан на Скале на 70%.

Так что не звездоболь, что якобы на Скале пишутся крупные проекты.

А что из крупного и полезного опенсурса написано на котлине?

Многие приложения под Андроид, которыми пользуются миллионы юзверей.

FilosofeM ★★
()

Я восторгаюсь ЛОРом иногда.

Не будь его - я наверное никогда бы не услышал о существовании таких замечательных языков как Скала и Котлин и ещё парочку. Уже забыл даже каких.

;)

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

Многие приложения под Андроид, которыми пользуются миллионы юзверей.

Списочек желателен.

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

Не будь его - я наверное никогда бы не услышал о существовании таких замечательных языков как Скала и Котлин и ещё парочку.

Уютная у вас криокамера 😉

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

Бгг, и этот кадр писал про зп в полляма.

Индустрии нужны стрательные индусы.

Возможно, но вероятнее всё же обычная черепашка.

aedeph_ ★★
()
Последнее исправление: aedeph_ (всего исправлений: 1)
Ответ на: комментарий от vertexua

Фетишизм не нужен со стрелками, Kleisli и тд. Это не ФП, а ононизм с всенарастающим количеством церемонии поверх того что ты хочешь реально сделать.

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

По мне так scala недотягивает до языка ФП, полностью соответствуя званию гибридного языка (никто не сказал, что это серебряная пуля), но часто на практике scala хороша, тем не менее. Когда уже давно тошнит от java, но нужна именно jvm, то вполне можно взять scala для решения задач, что и делают многие.

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

List<Integer> myMegaManatka = new WhatEver<>();

вот это new WhatEver<>(); так уж обязательно, сама java могла бы и догадаться.

или Class<?>.. = .. , сама java могла бы и догадаться.

не матан какой нибудь.

в яве или мусорить угловыми скобками или SuppressWarnings

ps. то что в лялямбдах нельзя значение локальных переменных менять низя, всю прелесть от их убивает.

barberry ★★
()

вообще то у явы есть шанс заново родиться. счас есть явы .. 1.10 или 1.11 уже? так вот пусть сделают ветку 2.1.

- выпил всех легаси
- выпил залипух
- переосмысление, рефакторинг по полной

и настанет весна. правда если там одни стариканы .. то.. можно набрать молодых

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

ты написал сделать в следующих версиях. я предлагаю в новой ветке 2. совместимость в первой, ништяки во второй.

по большому счету выхода другого у явы просто нет.

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

diamond operator завезли в java7, ау

ps: и что еще за List = new List

Deleted
()
Последнее исправление: rj45 (всего исправлений: 1)
Ответ на: комментарий от Partisan

А еще на ней можно удобно и понятно программировать алгебру, дискретную математику и прочий хитрый матан. Не удивлюсь если студентов скоро будут учить этому с использованием Scala вместо Pascal, благо и синтаксис и семантика очень схожи.

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

За Option лютый респект разработчикам, теперь можно не ломать каждый раз голову для реализации паттерна Null object в своем проекте.

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

Это да. Хотя уже много где есть. Вон даже в Java есть, но увы не используется повсеместно.

https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html

Ну и в других языках есть разного уровня качества

https://en.cppreference.com/w/cpp/utility/optional

https://docs.python.org/3/library/typing.html#typing.Optional

https://doc.rust-lang.org/std/option/enum.Option.html

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

Где? В Java совсем дохляк. В Scala/Rust - очень круто. В Scala есть даже экстракторы, когда экстракцию данных в match пишешь сам.

employee match {
  case Gamer(Starcraft(2)) =>
}
vertexua ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.