powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Сложить два числа в Kotlin :)
69 сообщений из 69, показаны все 3 страниц
Сложить два числа в Kotlin :)
    #39917713
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторfun sum(x: Number, y: Number) = x + y
println(sum(2.2, 2))

Сообщение об ошибке впечатляет :)

авторerror: unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
@InlineOnly public inline operator fun BigDecimal.plus(other: BigDecimal): BigDecimal defined in kotlin
@InlineOnly public inline operator fun BigInteger.plus(other: BigInteger): BigInteger defined in kotlin
public operator fun <T> Array<???>.plus(elements: Array<out ???>): Array<???> defined in kotlin.collections
public operator fun <T> Array<???>.plus(elements: Collection<???>): Array<???> defined in kotlin.collections
public operator fun <T> Array<Number>.plus(element: Number): Array<Number> defined in kotlin.collections
public operator fun BooleanArray.plus(element: Boolean): BooleanArray defined in kotlin.collections
public operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray defined in kotlin.collections
public operator fun BooleanArray.plus(elements: Collection<Boolean>): BooleanArray defined in kotlin.collections
public operator fun ByteArray.plus(element: Byte): ByteArray defined in kotlin.collections
public operator fun ByteArray.plus(elements: ByteArray): ByteArray defined in kotlin.collections
public operator fun ByteArray.plus(elements: Collection<Byte>): ByteArray defined in kotlin.collections
@InlineOnly public inline operator fun Char.plus(other: String): String defined in kotlin.text
public operator fun CharArray.plus(element: Char): CharArray defined in kotlin.collections
public operator fun CharArray.plus(elements: CharArray): CharArray defined in kotlin.collections
public operator fun CharArray.plus(elements: Collection<Char>): CharArray defined in kotlin.collections
public operator fun DoubleArray.plus(element: Double): DoubleArray defined in kotlin.collections
public operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray defined in kotlin.collections
public operator fun DoubleArray.plus(elements: Collection<Double>): DoubleArray defined in kotlin.collections
public operator fun FloatArray.plus(element: Float): FloatArray defined in kotlin.collections
public operator fun FloatArray.plus(elements: FloatArray): FloatArray defined in kotlin.collections
public operator fun FloatArray.plus(elements: Collection<Float>): FloatArray defined in kotlin.collections
public operator fun IntArray.plus(element: Int): IntArray defined in kotlin.collections
public operator fun IntArray.plus(elements: IntArray): IntArray defined in kotlin.collections
public operator fun IntArray.plus(elements: Collection<Int>): IntArray defined in kotlin.collections
public operator fun LongArray.plus(element: Long): LongArray defined in kotlin.collections
public operator fun LongArray.plus(elements: LongArray): LongArray defined in kotlin.collections
public operator fun LongArray.plus(elements: Collection<Long>): LongArray defined in kotlin.collections
public operator fun ShortArray.plus(element: Short): ShortArray defined in kotlin.collections
public operator fun ShortArray.plus(elements: ShortArray): ShortArray defined in kotlin.collections
public operator fun ShortArray.plus(elements: Collection<Short>): ShortArray defined in kotlin.collections
public operator fun String?.plus(other: Any?): String defined in kotlin
public operator fun String?.plus(other: Any?): String defined in kotlin
@SinceKotlin @ExperimentalUnsignedTypes @InlineOnly public inline operator fun UByteArray.plus(element: UByte): UByteArray defined in kotlin.collections
@SinceKotlin @ExperimentalUnsignedTypes @InlineOnly public inline operator fun UByteArray.plus(elements: UByteArray): UByteArray defined in kotlin.collections
@SinceKotlin @ExperimentalUnsignedTypes public operator fun UByteArray.plus(elements: Collection<UByte>): UByteArray defined in kotlin.collections
@SinceKotlin @ExperimentalUnsignedTypes @InlineOnly public inline operator fun UIntArray.plus(element: UInt): UIntArray defined in kotlin.collections
@SinceKotlin @ExperimentalUnsignedTypes @InlineOnly public inline operator fun UIntArray.plus(elements: UIntArray): UIntArray defined in kotlin.collections
@SinceKotlin @ExperimentalUnsignedTypes public operator fun UIntArray.plus(elements: Collection<UInt>): UIntArray defined in kotlin.collections
@SinceKotlin @ExperimentalUnsignedTypes @InlineOnly public inline operator fun ULongArray.plus(element: ULong): ULongArray defined in kotlin.collections
@SinceKotlin @ExperimentalUnsignedTypes @InlineOnly public inline operator fun ULongArray.plus(elements: ULongArray): ULongArray defined in kotlin.collections
@SinceKotlin @ExperimentalUnsignedTypes public operator fun ULongArray.plus(elements: Collection<ULong>): ULongArray defined in kotlin.collections
@SinceKotlin @ExperimentalUnsignedTypes @InlineOnly public inline operator fun UShortArray.plus(element: UShort): UShortArray defined in kotlin.collections
@SinceKotlin @ExperimentalUnsignedTypes @InlineOnly public inline operator fun UShortArray.plus(elements: UShortArray): UShortArray defined in kotlin.collections
@SinceKotlin @ExperimentalUnsignedTypes public operator fun UShortArray.plus(elements: Collection<UShort>): UShortArray defined in kotlin.collections
public operator fun <T> Collection<???>.plus(elements: Array<out ???>): List<???> defined in kotlin.collections
public operator fun <T> Collection<???>.plus(elements: Iterable<???>): List<???> defined in kotlin.collections
public operator fun <T> Collection<???>.plus(elements: Sequence<???>): List<???> defined in kotlin.collections
public operator fun <T> Collection<Number>.plus(element: Number): List<Number> defined in kotlin.collections
public operator fun <T> Iterable<???>.plus(elements: Array<out ???>): List<???> defined in kotlin.collections
public operator fun <T> Iterable<???>.plus(elements: Iterable<???>): List<???> defined in kotlin.collections
public operator fun <T> Iterable<???>.plus(elements: Sequence<???>): List<???> defined in kotlin.collections
public operator fun <T> Iterable<Number>.plus(element: Number): List<Number> defined in kotlin.collections
public operator fun <K, V> Map<out ???, ???>.plus(pairs: Array<out Pair<???, ???>>): Map<???, ???> defined in kotlin.collections
public operator fun <K, V> Map<out ???, ???>.plus(pair: Pair<???, ???>): Map<???, ???> defined in kotlin.collections
public operator fun <K, V> Map<out ???, ???>.plus(pairs: Iterable<Pair<???, ???>>): Map<???, ???> defined in kotlin.collections
public operator fun <K, V> Map<out ???, ???>.plus(map: Map<out ???, ???>): Map<???, ???> defined in kotlin.collections
public operator fun <K, V> Map<out ???, ???>.plus(pairs: Sequence<Pair<???, ???>>): Map<???, ???> defined in kotlin.collections
public operator fun <T> Set<???>.plus(elements: Array<out ???>): Set<???> defined in kotlin.collections
public operator fun <T> Set<???>.plus(elements: Iterable<???>): Set<???> defined in kotlin.collections
public operator fun <T> Set<???>.plus(elements: Sequence<???>): Set<???> defined in kotlin.collections
public operator fun <T> Set<Number>.plus(element: Number): Set<Number> defined in kotlin.collections
public operator fun <T> Sequence<???>.plus(elements: Array<out ???>): Sequence<???> defined in kotlin.sequences
public operator fun <T> Sequence<???>.plus(elements: Iterable<???>): Sequence<???> defined in kotlin.sequences
public operator fun <T> Sequence<???>.plus(elements: Sequence<???>): Sequence<???> defined in kotlin.sequences
public operator fun <T> Sequence<Number>.plus(element: Number): Sequence<Number> defined in kotlin.sequences
fun sum(x: Number, y: Number) = x + y
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917715
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
private,
Выбрось котлин, предатель))
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917721
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кого он предал? Котлин делает хорошая бригада. Все и так молются на продукты JetBrains.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917736
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
В андроиде три года назад было java 99%. Счас 70% остальное kotlin.
Может те ребята и хорошие, в смысле компанейские... Анекдоты знают....
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917780
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мир - упрощается. Я всегда подозревал разработчиков андроида в некой... хм... поверхностности штоли.
Неглубоко копают поцаны. Им што главное? Штоб за 1 спринт насетапить UI. И чтоб передать на бэкенд
мышко-клики. Для этого Java не нужна ибо многословная. Entity - длинные выходят. А Kotlin делает
тоже самое но код - короче. И программист выбирает короче код ибо лень - двигатель прогресса.

Я их не виню даже. Это - эволюционный процес. И даже если есть кейсы где нужно именно Java.
(Хотя мне сложно судить там Java - другая. Даже не стековая как sun/oracle а вообще гугловая)
то они не играют особого значения для общей статистики популярности Котлин.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917825
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ну, мы в кавычках сопротивляемся. А школьники на неделю там Надеюсь погоду не делают.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917836
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, и как ты сопротивляешься? В этом форуме пишешь?
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917839
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Почему. У меня проект есть. И знакомые среди писателей есть. Общаемся.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917847
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну повезло тебе.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917861
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну повезло тебе.
любой может.
Просто постоянно надо писать код.
Вон, рядом, на акке не захотел писать цветочный магазин).
Его право.
Удачи!
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917866
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну субъективно котел приятнее джавы. он почти такой же приятный как скала. но скалу не форсят как котлы, поэтому она дохнет. а котел форсят - вот он процент и отжирает. имхо, эти вкусняхи рано или поздно должны были появиться в том или ином виде, просто потому что мы живем уже в 2020-м году и джава этому году явно не соответствует. к тому же на джаву ораклы по ходу подзабили. если не хотят в нее вносить очевидных и долгожданных вещей.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917867
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
ну почему ? в 14 появились новые фишки
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917868
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
Ну повезло тебе.
любой может.
Просто постоянно надо писать код.
Вон, рядом, на акке не захотел писать цветочный магазин).
Его право.
Удачи!

Есть 2 смысла писать. Заработать денег. И второе - просто for fun.
Возможно fun - Это мой вариант но я еще не придумал себе задачу.
А денег я зарабатываю на других технологиях. Которые вообще далеки от UI.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917874
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
private,

Ну дык правильно проверяет все функции-расширения. ;-)
Хотя странно, почему не ругнулось на этапе компиляции.
Багрепортнуть надо.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917875
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
private,

Ну дык правильно проверяет все функции-расширения. ;-)
да))) все гибкости и перегрузки)))
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917878
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Есть 2 смысла писать. Заработать денег. И второе - просто for fun.
Возможно fun - Это мой вариант но я еще не придумал себе задачу.
А денег я зарабатываю на других технологиях. Которые вообще далеки от UI.


Kotlin отлично живет со Spring'ом, так что его можно использовать не только в мобилках.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917886
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При выборе Scala/Kotlin я-бы выбрал Scala. Там зарплатная вилка +500+1000$ примерно. Тоесть тебе за ништяк
(за знание еще одного языка) уже на разговоре во время офера предложат больше. Да и библиотек под BigData
уже написано много на Scala.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917895
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чот я особого плюса от знания скалы не заметил. Платят в основном за технологии те же биг дата что ты упомянул или мл. А там особой разницы нет имхо на чем откладывают эти фреймворки. После скалы на джаву да только сквозь слезы. Ну и у скалы просто ну очень много нюансов которые постигать можно вечность - у джавы такого нет. Одерский постарался на славу. ))
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917897
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я даже не знаю как происходит собеседование на Scala. Такое количество тем...
Его можно растянуть а долгие месяцы. Так-же как и экзамен на знание
философии Конфуция для средневекового китайского чиновника.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917899
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Так-же как и экзамен на знание
философии Конфуция для средневекового китайского чиновника.
))
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917905
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я даже не знаю как происходит собеседование на Scala. Такое количество тем...
Его можно растянуть а долгие месяцы. Так-же как и экзамен на знание
философии Конфуция для средневекового китайского чиновника.

да и это круто. хочешь зодротить - какое поле для деятельности ))) исполнилось желание джавистов "хочу неведомую хрень чтоб разбираться можно было вечность" - ннна.

на нынешнее место скалиста кстати вообще попал как джавист. пришел поговорили меня как джависта, зовет цто на тот момент уже, так сказать, на финальной стадии переговоров. и говорит - скалу хочешь? я ну э я на ней никогда не писал если вас это не смущает то без проблем. он - а пофиг. вот и весь собес на скалиста.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917906
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
mayton
Я даже не знаю как происходит собеседование на Scala. Такое количество тем...
Его можно растянуть а долгие месяцы. Так-же как и экзамен на знание
философии Конфуция для средневекового китайского чиновника.

да и это круто. хочешь зодротить - какое поле для деятельности ))) исполнилось желание джавистов "хочу неведомую хрень чтоб разбираться можно было вечность" - ннна.

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

А штукарь бачей накинули сверху?
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917907
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
andreykaT
пропущено...

да и это круто. хочешь зодротить - какое поле для деятельности ))) исполнилось желание джавистов "хочу неведомую хрень чтоб разбираться можно было вечность" - ннна.

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

А штукарь бачей накинули сверху?

ну не штукарь. но накинули больше чем просил. не знаю правда, за это ли. да. накинули.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39917911
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сейчас висит офер в финку. а там тупо скромнее чем здесь получается. еще и конские налоги и джава. не знаю как отказаться. вначале сдуру согласился. а теперь хз че делать. россия - страна не такая уж и плохая. для скалистов.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918163
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
При выборе Scala/Kotlin я-бы выбрал Scala. Там зарплатная вилка +500+1000$ примерно. Тоесть тебе за ништяк
(за знание еще одного языка) уже на разговоре во время офера предложат больше. Да и библиотек под BigData
уже написано много на Scala.


Между Scala и Kotlin я выбрал Kotlin.
Т.к. Scala с Java дружит так себе.
А вот Kotlin я спокойно использую на текущих Java проектах.
А вот Scala так просто в проект не включишь.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918276
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что скала имеет более глубокие различия. а котлин - это просто беттер жава. ну и жидбрейнзы постарались в своих продуктах его протолкнуть. куда уж тут одерскому-академику.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918280
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
потому что скала имеет более глубокие различия. а котлин - это просто беттер жава. ну и жидбрейнзы постарались в своих продуктах его протолкнуть. куда уж тут одерскому-академику.
+1
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918303
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
потому что скала имеет более глубокие различия. а котлин - это просто беттер жава. ну и жидбрейнзы постарались в своих продуктах его протолкнуть. куда уж тут одерскому-академику.


Как бы да.
Но на Scala было выпущено несколько хайповых проектов.
К которым потом кое-как прикрутили совместимость Java.
Т.е. средний java-программист не смог в Scala (как например я)
А проекты хорошие, разработчиков нужно много, чтобы пилить БП

Kotlin-же лихо стартовал, без хайповых проектов.
Только за счет огромного количества синтаксического сахара.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918327
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul, David Pollak тоже не смог. Хотя он и автор книг по Scala.

Так что ты - не один.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918329
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
он стартовал за счет того что его промоутили и продолжают промоутить житбрейны и гугель лично впихивая туда кучу усилий и конечно же бабла.
на мое имхо на скале писать как на котлине или даже как на джаве проблем особых нет от слова совсем - плюшки все те же в наличии.

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

я сейчас сижу на проекте где по стечении двух лет тупо решили что скала в целом бизнесу не интересно, нет очевидного и явного бизнеспрофита, а вот головняк есть - и переезжают на джава котлин.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918341
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT, не одобряю твою манеру коверкать слова.

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

Не держи в себе короче.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918346
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT

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

Есть проект что-то типа scala-native. Насколько я понял ребята замахнулось на сильный перформанс.
Если он взлетит тогда scala будет собирать бинарники по производительности такие-же как clang/rust.
Потому-что в стек технологий они вставили тот-же промежуточный компиллятор.

Серъезная предъява. Я так ду.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918421
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
он стартовал за счет того что его промоутили и продолжают промоутить житбрейны и гугель лично впихивая туда кучу усилий и конечно же бабла.


JetBrains - да промоутили.
С Гуглом немного сложнее.
Скажем так они (Гугл) дествовали по принципу - "Не можешь победить, возглавь!"
Т.е. это было большей частью иннициатива снизу.
Когда еще бета версию Kotlin распробовали мобильщики.

andreykaT

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


Ну ФП сейчас и в Java внедряют, так что тут Scala первая, но не единственная.

andreykaT

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


Главная проблема Scala что интероперабельность с Java ну очень посредственная.
Так что иногда нужно плясать с бубном, чтобы подключить библиотеку Java и наоборот.

Для примера Spring.
Был такой проект Spring Scala но как-то сдулся.

В то же время Spring Kotlin наоборот вполне себе живет и процветает.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918479
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спринг со своей парадигмой просто не встроился в скалу. вернее, они это поняли но уже сильно позже и стали рожать какую то реактивщину но сильно после.

у скалы свой спринг есть - плей на акке и гуисе. для сферического в вакууме набора задач в общем то тоже самое что и спринг но такой модный реактивный... да он и на джаве есть.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918481
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Ну ФП сейчас и в Java внедряют, так что тут Scala первая, но не единственная.

Давай я тебе расскажу одну штуку. Java - это очень (!) консервативный язык. У него есть комьюнити (JCP
Java Community Process) где обсуждаются все-все возможности развития. Комьюните это строгое.
И практически всегда отвергающее всё новое. Потому что слишком много стоит на кону. Много
ентерпрайза. И позволить себе такие эксперименты над языком как делает C# это комьюнити не
может.

И это первое и последнее чудо что они втащили в язык синтаксический сахар для method-reference
или как его назвали lambda. Потому что остальное было реализовани библиотеками типа Streams.
Насколько я понимаю под это дело подпилили спецификацию виртульной машины и добавили возможность
жонглировать ссылками на методы. (я попробую найти эти изменения в спеках где-то между 7 и 8).

Объективно реализовать в полной мере ФП в Java будет скорей всего невозможно. Тут будут виновны
система типов (mixin атомов и объетов) а также ограничения самой JVM. А также неполноценный механизм
генериков который был хорош тем что он вообще был создан. И плох тем что он неполноценный. Не такой
как в С++ например.

Поэтому ФП в Java - это жалкая пародия на настоящее ФП. По сути это некий компромисс чтоб бородачи
на самокатах почувствовали себя "в тренде".

Вобщем не обольщайтесь.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918482
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на джаве фп рюшки есть да. и синтаксис с определенными допущениями позволяет писать код.. но... это все не какое то топорное штоле. выглядит как попытка натянуть сову на кактус.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918484
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT

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

Это и сила и слабость скалы. Проблемы начинаются когда собираются вместе лютый ФП-шник с вчерашним java-прогером. А HR как набирают? Знаешь скалу? -Знаю. Ну на 200К. Начинаешь завтра.
В лучшем случае они разобьют друг другу лицо)))
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918489
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Ну ФП сейчас и в Java внедряют, так что тут Scala первая, но не единственная.


Не внедряют а пробуют внедрить, успехи так себе и я не думаю что станет лучше. Java никогда не сможет стать ФП если они сохранят backward compatibility

Код: java
1.
2.
3.
4.
5.
Главная проблема Scala что интероперабельность с Java ну очень посредственная.
Так что иногда нужно плясать с бубном, чтобы подключить библиотеку Java и наоборот.

Для примера Spring.
Был такой проект Spring Scala но как-то сдулся.



И да, и нет. Подключить библиотеку в Java проект не составляет никакого труда, если разработчики озаботились созданием API, как спарк и кафка например. Требовать же спринг на скале - это как требовать поддержку ruby on rails для питонистов, наверное конечно можно, но не стоит. Но тут речь о фреймворках а не либах
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918497
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще уже не понимаю, что в данной дискуссии понимают под ФП )))

В 1990-ом году, в школе, изучал APL.
Ну да, нет там циклов for (как в Basic или Pascal которые изучали до этого), вместо циклов и вызова функции в цикле, нужно делать функцию и перемножать ее на матрицу. В целом, нам было глубоко пофиг, что for, что умножить на матрицу - какая разница?

Только сейчас (лет 5-ть назад), случайно узнал, что оказывается, я изучал ФП ! Как я был крут !

mayton

Java - это очень (!) консервативный язык

Что и плохо.

Посмотреть на Delphi. Взяли Pascal и не побоялись поменять язык так, что бы он был удобен, прост и хорошо сочитался со средой разработки и новыми (на тот момент) веяниями/технологиями. Программы для COM на Delphi выглядят не чуть не хуже/сложнее, чем на VB.

Проперти в Delphi.... Блин, вроде элементарное расширение языка. Почему этого нет в Java? Смотришь на бесконечные простыни get'ов / set'ов и честно говоря, ООП тут же начинает асоциироваться с рядом слов из великого и могучего.

mayton

И это первое и последнее чудо что они втащили в язык синтаксический сахар для method-reference
или как его назвали lambda.
...
Насколько я понимаю под это дело подпилили спецификацию виртульной машины и добавили возможность
жонглировать ссылками на методы

Не уверен.

У меня чувство, что для каждой лямбды просто создается свой отдельный внутренний класс. Никто не мешал и раньше делать "лямбды" (callback'и), только нужно было самому класс создавать.

Т.е. чисто синтаксический сахар. Полезный, но:
1) нужно было сделать уже давно
2) синтаксис лямбд.... совершенно странный, через одно место и полностью велосипедно-квадратный

Ссылок на ф-ции/методы (как в C++) вроде нет.
mayton

Объективно реализовать в полной мере ФП в Java будет скорей всего невозможно.

Ху есть ФП, которое невозможно реализовать?

mayton

А также неполноценный механизм
генериков который был хорош тем что он вообще был создан. И плох тем что он неполноценный. Не такой
как в С++ например.

IMHO механизм генериков в Java хорош именно своей неполноценностью.

Может с точки зрения теории, оно и неполноценно. Но зато с точки практики - просто, понятно и в большинстве случаев работает

template в C++ - IMHO это жуть и мрак.

mayton

Поэтому ФП в Java - это жалкая пародия на настоящее ФП.

У меня большое подозрение, что значительная часть людей под "настоящее ФП" понимают всевозможную порнографию из Java Script и прочих скриптовых языков.

Начиная от отказа в типизации - а кому нафиг нужна НЕ типизированная Java? и останется ли она Java'ов?
и до возможнсоть переписывать вся и все "на лету" и впендюривать свои методы в чужие объекты

Только при чем тут ФП, мне не понятно. Та же самая возможность "впендюривать" в Java Script реализована через ФОРТ ядро. Который, вроде, к ФП и не относится.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918502
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВикипедияА в функциональном языке при вызове функции с одними и теми же аргументами мы всегда получим одинаковый результат: выходные данные зависят только от входных. Это позволяет средам выполнения программ на функциональных языках кешировать результаты функций и вызывать их в порядке, не определяемом алгоритмом и распараллеливать их без каких-либо дополнительных действий со стороны программиста (что обеспечивают функции без побочных эффектов — чистые функции

https://ru.wikipedia.org/wiki/Функциональное_программирование

Как можно сделать ФП который компилируется в JVM bytecode или "будет собирать бинарники по производительности такие-же как clang/rust" мне совершенно не понятно. Что там останется от ФП ?
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918510
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Насколько я понимаю под это дело подпилили спецификацию виртульной машины и добавили возможность жонглировать ссылками на методы. (я попробую найти эти изменения в спеках где-то между 7 и 8).
Скорее - между 6 и 7.
У Шипилёва в одном из старых роликов было про "лямбы врукопашную" на Java 7.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918517
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev

У меня чувство, что для каждой лямбды просто создается свой отдельный внутренний класс. Никто не мешал и раньше делать "лямбды" (callback'и), только нужно было самому класс создавать.

Я кажется дизассемблировал лямбду в восьмерке. Получалось что вроде каждая лямбда компилирует в текущем классе
метод в знаком $ в составе имени.

Попробую сегодня уточнить для 11-тки.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918523
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev


Как можно сделать ФП который компилируется в JVM bytecode или "будет собирать бинарники по производительности такие-же как clang/rust" мне совершенно не понятно. Что там останется от ФП ?

Вот тут не понял - а что мешает то? ФП это как SQL - декларативное описание программы. В какой очередности что-то дергать или выполнять(в том числе в абсолютно императивном стиле) - все идет на откуп движку БД. Но у тебя же не возникает вопроса - что там остается от SQL?
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918528
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Leonid Kudryavtsev


Как можно сделать ФП который компилируется в JVM bytecode или "будет собирать бинарники по производительности такие-же как clang/rust" мне совершенно не понятно. Что там останется от ФП ?

Вот тут не понял - а что мешает то? ФП это как SQL - декларативное описание программы. В какой очередности что-то дергать или выполнять(в том числе в абсолютно императивном стиле) - все идет на откуп движку БД. Но у тебя же не возникает вопроса - что там остается от SQL?

ФП-шность и способность кода собираться через LLVM - это два независимых вектора развития.
Одно другому не мешает. Вот хаскель вроде тоже использует LLVM и ничего.

Я хотел сказать что программисты владеющие Scala могут получить (внезапно!) помимо
умного и лаконичного языка еще и язык с высоким перформансом. Если раньше на чаше
весов Java-vs-Scala, первая побеждала в бизнес-решениях по скорости кода на выходе.
То поесле нативного компиллятора ситуация может быть диаметральной.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918532
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Я вообще уже не понимаю, что в данной дискуссии понимают под ФП )))

В 1990-ом году, в школе, изучал APL.
Ну да, нет там циклов for (как в Basic или Pascal которые изучали до этого), вместо циклов и вызова функции в цикле, нужно делать функцию и перемножать ее на матрицу. В целом, нам было глубоко пофиг, что for, что умножить на матрицу - какая разница?

Только сейчас (лет 5-ть назад), случайно узнал, что оказывается, я изучал ФП ! Как я был крут !

Тогда ты изучал процедурное программирование а не ФП.

maytonХу есть ФП, которое невозможно реализовать?


Все можно, вопросв том как получится. Классическое ФП предполагает как минимум immutable - в Хаскеле например это вшито, в java же мутабельность повсеместна и нету способа гарантировать ее отсутствие в отдельно взятом куске кода, это и создает проблемы. Все эти map, flatMap io-монады работают потому что они следуют неким законам
Также в джаве геморно с нулами и эксепшенами ну и система типов слабовата, поэтому не внося кардинальные изменения в язык ее не сделаешь ФП-шной, да и не надо если честно.
IMHO механизм генериков в Java хорош именно своей неполноценностью.

Может с точки зрения теории, оно и неполноценно. Но зато с точки практики - просто, понятно и в большинстве случаев работает

Реально тебе нравится Map<Key<? super String>, Container<A extends Comparable<A>> понятным и очевидным? а как в рантайме отличить List<String> от List<Int>?
template в C++ - IMHO это жуть и мрак.

Возможно, но есть же и другие языки? Та же Scala просто уделывает по дженерикам
У меня большое подозрение, что значительная часть людей под "настоящее ФП" понимают всевозможную порнографию из Java Script и прочих скриптовых языков.

Ну это их проблемы. Вообще не сталкивался конкретно с таким, но что ФП понимают неправильно - это да

Начиная от отказа в типизации - а кому нафиг нужна НЕ типизированная Java? и останется ли она Java'ов?

Хотя есть примеры нетипизирванного ФП, все же на мой взгляд оно реально рулит только при сильной типизации

и до возможнсоть переписывать вся и все "на лету" и впендюривать свои методы в чужие объекты

Это может быть полезно. Как вариант решения expression problem.

Но соглашусь с основным поинтом - ФП у каждого свое в голове, но нормальные материалы начинают появляться и я думаю что в скором времени "все договорятся". Просто говоря о ФП мешают много всего в кучу, хотя сама идея очень простая - программа описывается как "рецепт" где прописываются зависимости по данным(что от чего зависит) и способы получить из одних данных другими посредством чистых функций. Все описания сайд эффектов выносятся в lazy трансформации, и они выполняются непосредственно в рантайме.
Таким образом ФП программа это некое синтаксическое дерево, которое подается на вход интерпретатору, в идеальном случае в методе main - которое и делает всю черную работу
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918534
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я хотел сказать что программисты владеющие Scala могут получить (внезапно!) помимо умного и лаконичного языка еще и язык с высоким перформансом.
Подчёркнуто мною.
Могут и не получить, поскольку функциональный язык может генерировать больше "мусора", мемоизация может потребовать больше памяти, а без мемоизации - может не быть и выигрыша по скорости.Если раньше на чаше весов Java-vs-Scala, первая побеждала в бизнес-решениях по скорости кода на выходе.
То поесле нативного компиллятора ситуация может быть диаметральной.А что понимается под "нативным компилятором"???
Если AOT/JIT, то оба они работают с байт-кодом и не зависят от механизма генерации этого байт-кода.
Если речь о прямой трансляции входного языка в байт-код (без промежуточной генерации java-текста), то как-то не наблюдается таковой.
Наверное, создание эффективного компилятора с языка высокого уровня - не самая тривиальная задача?
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918535
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В С++ темплейты позволяют инжектить примитивные типы. int/double/long.
В Java - только объекты-обёртки каждый из которых имеет офигенный футпринт.
Концептуально вроде цель достигнута. Генерик работает но реализация конечно говно.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918536
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton


Я хотел сказать что программисты владеющие Scala могут получить (внезапно!) помимо
умного и лаконичного языка еще и язык с высоким перформансом. Если раньше на чаше
весов Java-vs-Scala, первая побеждала в бизнес-решениях по скорости кода на выходе.
То поесле нативного компиллятора ситуация может быть диаметральной.


Ну я ради интереса года два назад писал бенчмарки и никакой разницы между скалой и java не заметил по перфомансу, все в пределах погрешности. Насчет того что при native станет лучше - я бы сильно не надеялся. Во-первых там есть ряд ограничений, во-вторых таже java заоптимизирована по самое небалуй и местами сравнимо с C++, так что...
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918538
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
mayton


Я хотел сказать что программисты владеющие Scala могут получить (внезапно!) помимо
умного и лаконичного языка еще и язык с высоким перформансом. Если раньше на чаше
весов Java-vs-Scala, первая побеждала в бизнес-решениях по скорости кода на выходе.
То поесле нативного компиллятора ситуация может быть диаметральной.


Ну я ради интереса года два назад писал бенчмарки и никакой разницы между скалой и java не заметил по перфомансу, все в пределах погрешности. Насчет того что при native станет лучше - я бы сильно не надеялся. Во-первых там есть ряд ограничений, во-вторых таже java заоптимизирована по самое небалуй и местами сравнимо с C++, так что...

Я в топиках карточного рей-трейсера обязательно подниму эту тему.
Просто мой технический долг там лежит. Scala- реализация глючит.
Тоесть не рендерит картинку правильно. И это меня обескураживает.
Так-бы я уже сделал native benchmark
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918542
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В С++ темплейты позволяют инжектить примитивные типы. int/double/long.
В Java - только объекты-обёртки каждый из которых имеет офигенный футпринт
... который можно удалить за счёт эскейп-анализа в JIT.
Точно-точно офигенный?
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918546
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай посмотрим. Нужен тест. И дамп памяти.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918566
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично мне тест не нужен - у меня просто нет проблем из-за "офигенного футпринта" (по русски - "больших накладных расходов").
Но мне не очень нравится, когда делаются весьма прямолинейные утверждения, которые весьма неочевидны, если "учесть все известные факторы".

P.S.
Тот же CardRayTracer сильно ускоряется на Java 11 в сравнении с Java 8. Байт-код, понятное дело, от Java 8. Но Java 11 научили автовекторизации и JIT сделал то, что лично я не просто не умею, а никогда не буду уметь в обозримом будущем.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918579
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На сколько процентов ускоряется?
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918607
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
andreykaT, не одобряю твою манеру коверкать слова.

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

Не держи в себе короче.

да не, они норм парни. и котлин их норм. идешку их я использую уже лет 5-6. жаль скале так не повезло с промоутом как котлину. мне кажется, скала все-же имеет гораздо более серьезный потенциал чем эта джава с плюшками.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918655
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Leonid Kudryavtsev

У меня чувство, что для каждой лямбды просто создается свой отдельный внутренний класс. Никто не мешал и раньше делать "лямбды" (callback'и), только нужно было самому класс создавать.

Я кажется дизассемблировал лямбду в восьмерке. Получалось что вроде каждая лямбда компилирует в текущем классе
метод в знаком $ в составе имени.

Попробую сегодня уточнить для 11-тки.

По поводу лямбд. Вот выхлоп стандартного javap-дизассемблера (фрагмент)

Код: java
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.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
         0: iconst_2
         1: bipush        100
         3: invokestatic  #2                  // InterfaceMethod java/util/stream/IntStream.range:(II)Ljava/util/stream/IntStream;
         6: invokedynamic #3,  0              // InvokeDynamic #0:test:()Ljava/util/function/IntPredicate;
        11: invokeinterface #4,  2            // InterfaceMethod java/util/stream/IntStream.filter:(Ljava/util/function/IntPredicate;)Ljava/util/stream/IntStream;
        16: invokedynamic #5,  0              // InvokeDynamic #1:test:()Ljava/util/function/IntPredicate;
        21: invokeinterface #4,  2            // InterfaceMethod java/util/stream/IntStream.filter:(Ljava/util/function/IntPredicate;)Ljava/util/stream/IntStream;
        26: invokeinterface #6,  1            // InterfaceMethod java/util/stream/IntStream.boxed:()Ljava/util/stream/Stream;
        31: invokedynamic #7,  0              // InvokeDynamic #2:apply:()Ljava/util/function/Function;
        36: invokeinterface #8,  2            // InterfaceMethod java/util/stream/Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        41: invokedynamic #9,  0              // InvokeDynamic #3:accept:()Ljava/util/function/Consumer;
        46: invokeinterface #10,  2           // InterfaceMethod java/util/stream/Stream.forEach:(Ljava/util/function/Consumer;)V
        51: return
      LineNumberTable:
        line 8: 0
        line 9: 11
        line 10: 21
        line 11: 26
        line 12: 36
        line 13: 46
        line 14: 51

  private static void lambda$main$3(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
         0: getstatic     #11                 // Field java/lang/System.out:Ljava/io/PrintStream;
         3: aload_0
         4: invokevirtual #12                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
         7: return
      LineNumberTable:
        line 13: 0

  private static java.lang.String lambda$main$2(java.lang.Integer);
    descriptor: (Ljava/lang/Integer;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: invokedynamic #13,  0             // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/Integer;)Ljava/lang/String;
         6: areturn
      LineNumberTable:
        line 12: 0

  private static boolean lambda$main$1(int);
    descriptor: (I)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
         0: iload_0
         1: iconst_5
         2: irem
         3: ifeq          10
         6: iconst_1
         7: goto          11
        10: iconst_0
        11: ireturn
      LineNumberTable:
        line 10: 0
      StackMapTable: number_of_entries = 2
        frame_type = 10 /* same */
        frame_type = 64 /* same_locals_1_stack_item */
          stack = [ int ]

  private static boolean lambda$main$0(int);
    descriptor: (I)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
         0: iload_0
         1: iconst_3
         2: irem
         3: ifeq          10
         6: iconst_1
         7: goto          11
        10: iconst_0
        11: ireturn
      LineNumberTable:
        line 9: 0
      StackMapTable: number_of_entries = 2
        frame_type = 10 /* same */
        frame_type = 64 /* same_locals_1_stack_item */
          stack = [ int ]
}




Исходник где предположтельно 4 лямбды.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
package mayton.algo.roundpoll;

import java.util.stream.IntStream;

public class RoundPoll {

    public static void main(String[] args) {
        IntStream.range(2, 100)
                .filter(i -> i % 3 != 0)
                .filter(i -> i % 5 != 0)
                .boxed()
                .map(i -> "'" + i + "'")
                .forEach(i -> System.out.println(i));
    }

}



Вобщем лямбда реализована как приватный статический метод. Имя - как композит из имени класса и специального
счетчика с долларом. Видимо для предотвращения clashing names.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918656
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, про вопрос перформанса я помню. Надо актуализировать этот чортов Card-Raytracer.
Руки не доходят. Там надо сделать чуть больше действий. Я если уж доберусь до него то и сделаю
чуть больше. Хотя-бы табличку на титульной странице поправить надо,
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918672
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton#22066461, thanks
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918723
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите а в котлине нормальный патернматчинг есть?
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918732
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
На сколько процентов ускоряется?
Пересмотрел свои старые сообщения в "Четверговых акторах".
Тогда это было Java8 vs Java10 - минус, примерно, 25% времени (31-34 секунды против 25-28 секунд).

Тогдашнего сорца не нашёл, взял код Andrew Kensler . Сейчас ничего не менял, только добавил примитивный отсчёт времени.
Получил и увеличение времени и отсутствие разницы: по 38-39 секунд на актуальных OpenJDK 1.8.0_232-b09 и 11.0.5+10.
Проц у меня с тех пор, вроде, не менялся.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918735
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, если мы поднимем на 25% - то мы перегоним clang c AVX-оптимизацией над которой
работал Зяма. Кстате это самая быстрая имплементация этого бенчмарка.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918801
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Basil A. Sidorov, если мы поднимем на 25% - то мы перегоним clang c AVX-оптимизацией
"Закусывать надо".
"Плюс двадцать пять" относилось к Java 8 vs Java 10 на моём компьютере три года назад.
Зачем приплетать сюда "clang с AVX-оптимизацией", если ни тогда ни сейчас с моей стороны не было ни одного слова про другие реализации???
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918843
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дак у меня статистика как раз по восьмёрке.
И она опубликована.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918913
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
забыл ник
пропущено...

Вот тут не понял - а что мешает то? ФП это как SQL - декларативное описание программы. В какой очередности что-то дергать или выполнять(в том числе в абсолютно императивном стиле) - все идет на откуп движку БД. Но у тебя же не возникает вопроса - что там остается от SQL?

ФП-шность и способность кода собираться через LLVM - это два независимых вектора развития.
Одно другому не мешает. Вот хаскель вроде тоже использует LLVM и ничего.

Я хотел сказать что программисты владеющие Scala могут получить (внезапно!) помимо
умного и лаконичного языка еще и язык с высоким перформансом. Если раньше на чаше
весов Java-vs-Scala, первая побеждала в бизнес-решениях по скорости кода на выходе.
То поесле нативного компиллятора ситуация может быть диаметральной.

А ну вот домашняя страничка этого поделия
https://scala-native.readthedocs.io/en/v0.3.9-docs/
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918935
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
да не, они норм парни. и котлин их норм. идешку их я использую уже лет 5-6. жаль скале так не повезло с промоутом как котлину. мне кажется, скала все-же имеет гораздо более серьезный потенциал чем эта джава с плюшками.


Scala не повезло не с промотуерами, а немного не правильной стратегией развития.
Т.к. они (Scala) опираются на JVM, то все java-программисты ожидали, что проблем м/у Java и Scala не будет.
Но это оказалось немного не так.
Для тог же Spark пришлось писать отдельное реализация API для Java, которое еще и отставало от API для Scala на ранних этапах.
Потом пересмотрели приоритеты и сказали, что основное API будет для Java.

А так Scala мощный язык, но его мощь его и сгубила.
"Будь проще и люди к тебе потянуться" :-)

ДжетБрейнс фишку просекли и сделали "проще".
Результат не заставил себя долго ждать.

Как минимум на мобилках.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39918939
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
Скажите а в котлине нормальный патернматчинг есть?


Нет и А. Бреслав в своих докладах по Котлин от него отбивается руками и ногами.
Типа это нафиг никому не нужно, а делать очень сложно и вообще не хотим.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39919196
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я уже говорил Java/Kotlin по своему понимают ФП и тащут в свои языки жалкую карикатуру.
Они переварили паттерн матчинг и поняли это как усложнённый switch/case.

Вот (примерно) так выглядит паттерн матчинг в Haskell. Сопоставление аргумента функции с известным промежуточным
результатом свёрток.

Код: plaintext
1.
2.
3.
factorial' 0 = 1
factorial' 1 = 1
factorial' n = n * factorial' (n - 1)
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39919202
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Как я уже говорил Java/Kotlin по своему понимают ФП и тащут в свои языки жалкую карикатуру.
Они переварили паттерн матчинг и поняли это как усложнённый switch/case.

Вот (примерно) так выглядит паттерн матчинг в Haskell. Сопоставление аргумента функции с известным промежуточным
результатом свёрток.

Код: plaintext
1.
2.
3.
factorial' 0 = 1
factorial' 1 = 1
factorial' n = n * factorial' (n - 1)



Нормально понимают в скале паттерн матчинг. Отсутвие няшного синтаксиса вызвано рядом причин, основная из которых совместимость с Java и JVM
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39919207
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я говорю вобщем про бесконечные компромиссы. Вот втащили в Kotlin нечто. Это нечто - имеет
характерный bracer-like синтаксис. Можно назвать это pattern-matching-ом. А можно просто назвать
это синтаксическим сахаром над обычным if-else.
...
Рейтинг: 0 / 0
Сложить два числа в Kotlin :)
    #39919276
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну я говорю вобщем про бесконечные компромиссы. Вот втащили в Kotlin нечто. Это нечто - имеет
характерный bracer-like синтаксис. Можно назвать это pattern-matching-ом. А можно просто назвать
это синтаксическим сахаром над обычным if-else.


Так в Котлин и не собираются внедрят pattern-matching. :-)
...
Рейтинг: 0 / 0
69 сообщений из 69, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Сложить два числа в Kotlin :)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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