LINUX.ORG.RU

вопросы по Scala


0

0

Вот решил ознакомиться с Ынтерпрайзно-гламурненькими технологиями
(привычки С/C++). Жабку пробовал когда-то - сильно не понравилась.
Заинтересовала Scala. Ну и ессно вопросы:

1. Перспективы развития/использования ?;
2. Область применения: та же что и java или есть нюансы ?;
3. Использование java-наработок(либы и т.п.) полностью ли совместимы?;
4. Использование jvm: можно ли использовать все возможности,
производительность - не падает ли ?
и, scalac myScala.scala; scala
myScala - работает, а java myScala - нет... Почему, или не должно ?
5. Ну и вообще...


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

> Вот все-таки у большинства фанатов модных «новых» и «современных» говноязыков в голове такое обгашенное говно, что даже называть это говном стыдно - ну т.е. это вроде как говорить что трава зеленая - дебилом немножко выглядишь

Не понял, о чем вы. Я не отрицаю, что Generics появились до Scala. Я лишь говорю, что Scala(как и Groovy) - полигон для опробования новой функциональности для Java. А анонимные классы - они неудобные, кода много писать. Сравните Google Collections и то, что будет после Lambda.

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

>> Хм. Я не большой спец ни по Яве, ни по Скале, но разве Разве в Java7 есть вещи вроде structural typing, pattern matching, гибкий синтаксис? Или это «матан»?

Да допилят к 8 подобие traits, ну switch из Groovy возьмут, улучшат Type inference.

А, ну Java 8, конечно, всех зарулит :D Если серьезно, то, судя по тому, как рожали дженерики и лямбды, и тому, что родилось, Java 8 будет УГ чуть более, чем полностью. Или Сан/Оракел оставят Яву в покое.

Java читабельна - it's enough.

Вот в этом есть сомнения... это было enough в 2000-м, насчет 2010-го уже не ясно.

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

>Да допилят к 8 подобие traits,

Лучше бы они генерики сделали без стирания типов. А то позорище ведь.

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

>Такое ощущение, что С/C++ как обычно рулят и больше ничего...

Рулит. А еще очень сильно рулит проектирование/программирование в терминах предметной области.

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

Неслабый такой алтернативный взгляд на историю, гыгы


Почему альтернативный? Гыгы. Домашнее задание: узнать, кто сделал компилятор Java 1.5 с дженериками и кто автор Scala

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

Или Сан/Оракел оставят Яву в покое


Скорее всего они действительно поняли, что переделывать JVM с TOC и с дженериками с сохранениями типов уже нет ни пороха, ни денег ни людей для этого, а опенсорсники какобычно только в лужи пукать горазды. Может для JVM 8 возьмут купят JVM у какой-нить BEA или IBM, а? А мож Java останется legacy, как кобол, а весь ентерпрайз действительно слезет на C#/F#?

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

Я НИ в одной статье об истории generics и вообще жабы не нашел упоминание этой скалы или как ее там.

Зато вот даже про Лисп упоминают:

And you're right: we were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp. Aren't you happy?

- Guy Steele, co-author of the Java spec

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

> А вообще у нее большая проблема со средами разработки. И делать в имеющемся что-то серьезнее hello-world увольте.

Чем scala plugin для IDEA не устраивает ?

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

Согласен, как-то народ слабо критикует )

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

В одном слове 3 ошибки - это я круто :)

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

> Потому что Java7 догоняет ее в основных фишках

Pattern matching, в том числе по регулярным выражениям ? Более строгая система типов ? Actors ? Управляемые автоматические преобразования ? Traits ? Вменяемое построение DSL ? Scala'вский for ? Companion objects ? Встроеный матчинг по XML ? Структурные типы ?

Или это всё «матан» ?

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

> Лучше бы они генерики сделали без стирания типов. А то позорище ведь.

Врятли. Для этого нужно байткод менять, AFAIK.

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

>> Compilers are giant pattern-matching machines

Погуглил, чей © не нашел. Чей?

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

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

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

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

>потому-что этот микс С с непонятно чем, год от года становится все хуже - старые проблемы остаются, новые появляются...

ОК, а что хотеть от высокоуровнего системного языка, он (сильно) не без недостатов, но он нужен. И где альтернатива ? Что ФП может предложит ? Тока реально, Ди, пока, не предлагать.

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

С++ не системный(ABI и мэнглинг в жопе) и не высокоуровневый(как минимум половину конструкций языка можно чуть ли не построчно транслировать в ассемблер)

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

Да, и еще, основная проблема плюсов - неочевидность некоторых _важных_(системных) вещей.

drZlo
() автор топика
Ответ на: комментарий от Love5an

> и не высокоуровневый

Еще раз - системный и высокоуровневый !!! Все транслируется в асм, это не критерий.

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

>Еще раз - системный и высокоуровневый
Если много раз что-то повторить, оно от этого правдой не станет.

Все транслируется в асм, это не критерий.

критерий
высокоуровневый язык на то и высокоуровневый что у него под каждой конструкцией скрываются километры(ну, утрированно) машинных команд(ну, команд низкоуровневого языка вообще - байткода там, или Си). Абстракция, типо. Например, CL высокоуровневый. Или Python. Или Haskell.

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

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

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

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

>чушь. высокоуровневый он как раз потому, что от низкого уровня абстрагирован

А как ее померить то, абстракцию?
Вот я написал, как можно, как мне кажется.
И это, по наблюдениям, примерно так в реальности и есть.

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

Например,

class MyCpy {

...
my_cpy(void * dst, void *src, size_t size) {
memcpy(void * dst, void *src, size_t size);
}

}

Транслируется в одну асм команду.
и что ?

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

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

насчет предложить - CL + FFI?

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

Есть такие понятия - HIL & HDL, вот от них и надо скакать.

drZlo
() автор топика
Ответ на: комментарий от Love5an

А как ее померить то, абстракцию?

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

И это, по наблюдениям, примерно так в реальности и есть.

ну да. только это следствие высокоуровневости, а не определение

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

> С++ высокоуровневый только тогда, когда

Это не технический параметр.

Смысл в том, что он позволяет и так и сяк. А уж как ...

drZlo
() автор топика
Ответ на: комментарий от jtootf

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

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

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

Итого: С++ не высокоуровневый язык. С++ не низкоуровневый язык. В попытках скрестить ужа с ежом редко получается колючая проволока.

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

Смысл в том, что он позволяет и так и сяк

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

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

> Высокоуровневый язык

Нука, нука определение ...

просто незачем занимать себе голову низкоуровневыми вещами.


Бред. Ты скоро дойдешь до: «Программировать не надо»...

Низкоуровневый язык всегда даёт


Дают деффки.
Новый гуру ?

drZlo
() автор топика
Ответ на: комментарий от Darkman

Врятли. Для этого нужно байткод менять, AFAIK.


Купят jvm у кого-нибудь

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

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

«_Всегда_» - слишком сильно :)

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

> Бред. Ты скоро дойдешь до: «Программировать не надо»...

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

Дают деффки.

Школота детектед.

Новый гуру ?

Ну не могу же я после каждого слова писать «IMHO»? Я высказал своё мнение, какие языки являются высокоуровневыми и низкоуровневыми, и почему С++ не является ни тем, ни другим.

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

Просто, если не надо «жесткого» IO, числодробилки с этими данными, то C++ - не нужен.

в большинстве случаев для этого достаточно C и высокоуровневого языка с удобным FFI. т.е. достаточность ты определил, но с необходимостью до сих пор всё сложно

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

Почему тема про скалу превращается в срач между CL и C++?

потому что на ЛОРе урожай фанатиков; скала оными обзавестись ещё не успела, потому о ней моментально забывают

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

> Почему тема про скалу превращается в срач между CL и C++?

Это ЛОР.

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

> Почему тема про скалу превращается в срач между CL и C++?

Закон ЛОРа. Какую тему не начни, она всегда может свалиться в срач «CL vs Something» или «Something vs C++» (в худшем, но частом случае — в «CL vs C++»). Хотя тут появился новый тренд имени tia — «D vs Something», так что есть все шансы на приятное разнообразие. 8))

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

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

Рожу, например, мне в преобразование Холецкого добиться выйгрыш в 1мс - праздник. И написал высокоуровневые ф-ции линейной алгебры, которые народ использует.

Школота детектед.


Детектед только люди, которые не умеют выражать свои мысли.


Ну не могу же я после каждого слова писать «IMHO»?


А крылья за спиной спили.

drZlo
() автор топика
Ответ на: комментарий от jtootf

потому что на ЛОРе урожай фанатиков; скала оными обзавестись ещё не успела

...но всё-таки /r/ r :)

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

> Рожу, например, мне в преобразование Холецкого добиться выйгрыш в 1мс - праздник. И написал высокоуровневые ф-ции линейной алгебры, которые народ использует.

Пример не засчитан. Опиши подробнее, почему тебе приходилось при реализации алгоритма на высокоуровневом языке держать постоянно в голове низкоуровневые детали, и как тебе это помогло. Да, и какой высокоуровневый язык при этом был использован, С++ не считается.

Детектед только люди, которые не умеют выражать свои мысли.

А, может быть, кто читать не умеет? Что тебе непонятно, спросил бы?

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

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

это невозможно!

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