powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Перспективы Scala
56 сообщений из 56, показаны все 3 страниц
Перспективы Scala
    #39691480
Vladimir2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые форумчане. Я извиняюсь что пишу сюда, но отдельного форума по Scala нет. Подскажите пожалуйста, есть ли смысл изучать Scala и насколько это востребованный/будет востребованным язык? Если выбор дальнейшего языка предстоит из C# и Scala, что стоит выбрать?
...
Рейтинг: 0 / 0
Перспективы Scala
    #39691504
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir2018,
Форума нет, но поиск по этой ветке есть.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39691537
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из C# переходить в Java, потому что это самый распространённый язык на платформе Java. В платформе .NET тоже много языков, но вы пользуетесь самым распространённым. Зачем переходить с распространённого на маргинальный. Когда освоите Java, тогда у вас возникнет своё представление, стоит ли вдобавок к нему использовать маргинальные языки. Сейчас среди маргинальных стал относительно модным Kotlin. Так что если интересует маргинальное, то может лучше его (узнать самостоятельно, мне не нужны ни Scala, ни Kotlin).
Без знания Java всё равно не обойтись, так как надо освоить библиотеку классов JDK, а документация к ней рассчитана на знающих Java.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39691547
nastyaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Partisan M,

мне можете помочь пожалуйста((
http://www.cyberforum.ru/java-j2se/thread2313781.html
...
Рейтинг: 0 / 0
Перспективы Scala
    #39691751
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЕсли выбор дальнейшего языка предстоит из C# и Scala, что стоит выбрать?
Rust.

Вполне серьезно. Говорю осознанно имея длительную практику использования Scala, C#, C...
...
Рейтинг: 0 / 0
Перспективы Scala
    #39691790
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scala и Kotlin немного похожи (в обоих есть higher order functions, тип после названия переменной). Kotlin на мой взгляд нагрузили всякими костылями типа reified, companion object/@JvmStatic.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39692021
Фотография nexoma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- jperl, jphp почили незамеченными
- groovy не выстрелил
- jython не выстрелил

- scala выстрелила (за всех говорить не буду, от себя: простой читаемый текст, REPL, простой запуск скриптов, тесная интеграция с богатым набором java-библиотек, довольно простая поддержка для j2ee от maven и gradle, ну и свои монстры от typesafe, успех библиотек, написанных на scala, напр. akka, даже для андроида пишут на ней )

- java начала "подтягиваться", уходит в opensource, надеюсь, не теряет контроля корпорациями над ней, т.к. и sun и oracle тщательно блюли разброд и шатания
- с# как альтернатива java (от мелкософт) уже вовсю шурует и на линукс-платформах, причем прогресс также космический,

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

причем будут влиять и узкие технологии, как например взлёт python после появления tensorflow. а java-библиотеки тут проиграют, вероятно по скорости, хотя и могут воспользоваться jni-подходом.



например, звезд на гитхабе на deep learning на java и scala сильно мало (хотя Spark сильно потеснил всё на больших данных), всё у питона. а это глубокое обучение, скоро будет глубоким влиянием.
микрософт тут пока вообще догоняет на питоне.

да и политика не за горами, всё могут просто запретить :) останется только opensource на уровне МСВС 5.0.


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

так что, не торопясь - ява, скала, дотнет на досуге.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39693333
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nexomaтрудна оценка, очень трудна, для специалистов высокой квалификации уже сейчас требуют в вакансиях микс обеих технологий. и большие данные становятся всё больше с каждым днём, превращаясь из data lake в data universe.

так что, не торопясь - ява, скала, дотнет на досуге.
Обеих технологий - это каких ? Если java/scala то есть такое, java/dotnet нигде не видел.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39693496
denisftw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Scala к настоящему моменту отъела довольно приличный кусок market share от Java, что в принципе уже делает ее вполне mainstream языком. Есть огромная проблема с маркетингом от Lightbend/Typesafe, который иногда больше вредит чем помогает. С другой стороны, популярность Scala как росла, так и растет: если взять, например, мою статью двухлетней давности "Analyzing Scala popularity" и сравнить с новыми числами indeed.com, то можно увидеть 30% прирост, что неплохо.

Котлин действительно похож, но есть несколько отличий. Если отбросить продвинутые вещи типа НКТ, которых в Котлине нет, то остается два момента. Во-первых, maturity экосистемы. Если брать Скалу сейчас, то можно без проблем писать приложение не выходя за рамки Scala-стэка (sbt, Play, MacWire, ScalikeJDBC, Circe, etc). Если брать Котлин, то многое нужно будет брать из Java. Во-вторых, дизайн языка: если в Скале большая часть проблем имеет универсальное решение (flatMap/map и for expressions); то в Котлине решения более специфичны (nullable types, coroutines).
...
Рейтинг: 0 / 0
Перспективы Scala
    #39693521
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пару недель назад общался с рекрутером этой конторы https://www.lotusflare.com.
У них интересный стек. Scala, Kafka, Spark, NoSQL. Реальная вакансия.
Но не мой профиль.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39693525
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir2018 есть ли смысл изучать Scala и насколько это востребованный/будет востребованным язык?
Изучать смысл есть. Потому как в Scala создатели старались напихать всех возможных концепций помаксимуму. Поэтому их изучение это хороший буст в умениях. Полученые знания можно с переменным успехом потом применять и в других языках. Даже если готовой функциональности в языке нет, зачастую можно использовать аналогичные приёмы и без этого.

Vladimir2018 Если выбор дальнейшего языка предстоит из C# и Scala, что стоит выбрать?
Необычный вопрос. И, как всегда, без указания конечной цели выборе. .NET и Java это две разные платформы. Работу на Java найти проще. Scala выстрелила в своё время, но вытеснить Java как основной язык Java платформы она не способна по ряду причин.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39693678
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Статью Девида Поллака нужно добавлять ко всем подобным топикам.

Я так думаю.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39693791
denisftw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Статья обиженного на Typesafe Поллака к перспективам Scala не имеет никого отношения и рост популярности языка с момента ее выхода - лишнее тому подтверждение. Однако, то что фамилия Поллака всплывает в данном топике весьма показательно. Помнится, в свое время на Quora кто-то писал, что не рассматривает Скалу "так как Пол Филипс критиковал ее систему типов". Бедняга, конечно, не в курсе, что Пол Филипс как писал на Скале, так и пишет.

В статье (по ссылочке выше) есть ссылка на пост Мануэля Бернарда "5 years of Scala and counting". Вот ее имеет смысл почитать - там как раз 90% форумных мифов развинчивается.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694110
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не говорю что Поллак прав.

Я просто акцентирую на том что в Scala заложены такие возможности которые для обычных 99% бизнесовых задач не нужны.

Кроме того если в скрам команде есть программист гений который будет обычные задачи бизнеса решать с привлечением сущностей высокого порядка то он поставит в сложное положение code review и команду.

Формально он не нарушил правила разработки java. Но создал ситуацию.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694114
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlakowitzИзучать смысл есть. Потому как в Scala создатели старались напихать всех возможных концепций помаксимуму. Поэтому их изучение это хороший буст в умениях. Полученые знания можно с переменным успехом потом применять и в других языках.

Нет смысла изучать, раз это непригодно для использования. Создатель Scala - один. Швейцарский профессор Мартин Одерски. Он сам рассказал, что ему университет дал свободу творчества. Вот он и создал язык, напихав в него всевозможные достоинства. Но при создании языка не было определённой цели, и так как он был не программист, то ему было трудно понять, что нужно программистам.
Подобным образом - напихиванием в язык всех возможных достоинств не программистами - были созданы Nemerle (не менее уродливый язык, состряпали 3 польских аспиранта, но они были не дураки, раз вскоре его забросили) и PL/I и Ada (были созданы комитетами чиновников и навязаны программистам, так что в течение некоторого времени использовались).

Но хоть Scala не нужен для программирования, он годится для фанатствования и изображения свой мнимой крутизны: "мне надо то, что 99% процентам программистам не надо". Ну да, тебе надо выпендриваться. Но в этом у Scala возник конкурент - Kotlin.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694363
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MНет смысла изучать, раз это непригодно для использования...
Но хоть Scala не нужен для программирования, он годится для фанатствования и изображения свой мнимой крутизны: "мне надо то, что 99% процентам программистам не надо". Ну да, тебе надо выпендриваться. Но в этом у Scala возник конкурент - Kotlin.
Да ну! А пацаны-то и не знали. Конечно, не в счет фреймворки Kafka, Spark, Akka - и это то, что пришло на ум сразу. Банк "Тинькофф" вовсю кодит на Scala. Ну и всякая "мелочь" для полноты картинки: Twitter, LinkedIn.
Да, язык не без особенностей. Ну и что из того? Он используется и используется там, где реально тяжелые задачи, реально нагруженный продуктив.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694384
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fplabPartisan MНет смысла изучать, раз это непригодно для использования...
Но хоть Scala не нужен для программирования, он годится для фанатствования и изображения свой мнимой крутизны: "мне надо то, что 99% процентам программистам не надо". Ну да, тебе надо выпендриваться. Но в этом у Scala возник конкурент - Kotlin.
Да ну! А пацаны-то и не знали. Конечно, не в счет фреймворки Kafka, Spark, Akka - и это то, что пришло на ум сразу. Банк "Тинькофф" вовсю кодит на Scala. Ну и всякая "мелочь" для полноты картинки: Twitter, LinkedIn.
Да, язык не без особенностей. Ну и что из того? Он используется и используется там, где реально тяжелые задачи, реально нагруженный продуктив.

На Ада тоже программировали..
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694543
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Partisan MНо хоть Scala не нужен для программирования, он годится для фанатствования и изображения свой мнимой крутизны: "мне надо то, что 99% процентам программистам не надо". Ну да, тебе надо выпендриваться.

что? не осилил Partisan M? бывает ...
для эксперимента попробуй следующий код переписать со SCALA на JAVA.


Код: 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.
91.
92.
93.
94.
 s"""
#pragma once
#include ${"\"" + host.name + ".h\""}
#include <string.h>
#include <stdio.h>
#include <assert.h>
 bool reuse(Channel * ch, CursorBase * cur, uint8_t after){return false;}
static PackBytes * c_TEST_Channel_process(PackBytes * pack, int32_t id);
static Channel c_TEST_Channel = {.process = c_TEST_Channel_process};

INLINER int32_t Arrays_equals(uint8_t * L, uint8_t * R, size_t bytes)
{
	for (size_t i = 0; i < bytes; i++) if (L[i] != R[i]) return i;
	return -1;
}
static PackBytes * zero2empty(PackBytes * pack) {
	pack = (PackBytes *)realloc(pack, sizeof(PackBytes) + pack->meta->packMinBytes);
	for (int32_t i = pack->meta->packMinBytes; -1 < --i;)pack->data[i] = 0;//clean bytes
	return pack;
}
void failure (uint32_t place,Channel * ch, int32_t id, int32_t arg ){assert(false);}

$test_pack_src

$test_rsv


static PackBytes * c_TEST_Channel_process(PackBytes * pack, int32_t id) { $LINE
#define rb_size0 (5)
	static RBUF_INIT(PackBytes*, rb_size0) sendout_packs;
	static RBUF_INIT(PackBytes*, rb_size0) received_packs;
	static Cursor cur[NESTED_MAX];

	for (bool LOOP = false;;)
	{
		void(*handler)(Cursor * cur);
		switch (id)/*220*/
		{
		$test_packs_process
		default:
			assert(0);
			return NULL;
		case PROCESS_CHANNEL_REQEST:
			if (pack == NULL) return (RBUF_ISEMPTY(sendout_packs)) ? NULL : RBUF_GET(sendout_packs);
			if (RBUF_ISFULL(received_packs))
			{
				dispose_pack(pack);
				return NULL;
			}
			
			RBUF_PUT(received_packs, pack)
				return NULL;
		case PROCESS_HOST_REQEST:
			if (pack == NULL) return (RBUF_ISEMPTY(received_packs)) ? NULL : RBUF_GET(received_packs);
			if (RBUF_ISFULL(sendout_packs))
			{
				dispose_pack(pack);
				return NULL;
			}
			
			RBUF_PUT(sendout_packs, pack)
			return NULL;
		case PROCESS_RECEIVED_PACKS:
			LOOP = true;
			goto next_pack;
		}
		setCursor(pack, (Cursor *)&cur);
		handler((Cursor *)&cur);
		if (!reuse(&c_TEST_Channel, pack, AFTER_PROCESSING)) dispose_pack(pack);
		
		
		if (!LOOP) return NULL;

next_pack:
		if (RBUF_ISEMPTY(received_packs)) return NULL;

		pack = RBUF_GET(received_packs);
		id = pack->meta->id;
		
	}
}



void c_TEST_Channel_process_received() { c_TEST_Channel_process(NULL, PROCESS_RECEIVED_PACKS); }
void c_TEST_Channel_send(Cursor * src) { c_TEST_Channel_process(src->base.pack, PROCESS_HOST_REQEST); src->base.pack=NULL;}
int main() $LINE
{
	static uint8_t buff[512];
	static Cursor cur[NESTED_MAX];
	 $test_src
}

"""


это кусок реального кода генератора исходников на С из моего проекта кодогенератора BlackBox

Partisan Mнапихав в него всевозможные достоинства. Но при создании языка не было определённой цели, и так как он был не программист, то ему было трудно понять, что нужно программистам.

за одно обсудим. нужен ли программистам паттернматчинг, которого до сих пор в JAVA нет.
хоть какой то type inference в JAVA недавно прикрутили, который в SCALA с самого рождения.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694552
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Cheblin]
это кусок реального кода генератора исходников на С из моего проекта кодогенератора BlackBox /quot]
Очень плохой пример как демонстрация возможностей скалы. Я бы вообще кусок этого когда сложил в отдельный файл. Если уж очень хочется засунуть прямо в код, в джаву тоже вроде завезли multiline strings.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694559
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin, вау-эффекта нет.

Либо ты ошибся и хотел вообще другое запостить.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694570
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cossack5 Я бы вообще кусок этого когда сложил в отдельный файл
все это уже пройденный этап.
даже Twirl в начале использовался.

оказалось НЕ практичным. когда пишешь кодогенератор генерируемый код и данные очень сильно переплетены и держать в голове контекст генерируемого кода ,которого фактически ещё, очень не непросто

cossack5в джаву тоже вроде завезли multiline strings.
ой, я что то пропустил.
надо мне обновить свои знания.
поподробнее можно.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694571
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinой, я что то пропустил.
надо мне обновить свои знания.
поподробнее можно.
http://openjdk.java.net/jeps/326. Если бы еще добавили string interpolation, было бы еще лучше.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694572
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonCheblin, вау-эффекта нет.
вау-эффект обещаю, выкладывай JAVA аналог.

Либо ты ошибся и хотел вообще другое запостить.
я специально выложил очень простую в понимании, даже не подготовленному читателю, фичу SCALA.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694574
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cossack5 http://openjdk.java.net/jeps/326.

читаю.
This will be a preview language feature.
это какие-то сферические мультистроки. мне у себя скомпилировать на последней версии JDK не удалось.
приведите рабочий код.
спасибо.

Если бы еще добавили
а может просто перестать ждать и открыть для себя SCALA?
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694577
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin This will be a preview language feature.
это какие-то сферические мультистроки. мне у себя скомпилировать на последней версии JDK не удалось.
приведите рабочий код.
спасибо.

Оно вроде было намечено на jdk 11. Видимо, передумали.
Cheblinа может просто перестать ждать и открыть для себя SCALA?
Я для себя уже давно открыл. Но у скалы тоже есть минусы:
1) никакая поддержка IDE (та же idea неправильно показывает ошибки в коде, нет многих quick actions).
2) местами специфичный синтаксис, и опять idea которая не хочет здесь помогать сделать "чтоб скомпилировалось")
3) есть еще scala native, scala js, которые вроде никому не нужны, но на них тоже затрачиваются ресурсы.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694580
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cossack5,

Оно вроде
.... уж начал думать что-то пропустил.

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

в этом смысле у Rust, к сожалению, ещё более высокий порог... очень мало программистов сочетающих в голове низкоуровневое С и функциональщину SCALA или Хаскеля.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694583
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinединственный минус SCALA - высокий порог вхождения.
от чтения документации, до работоспособного кода, ( написанного действительно как на SCALA, а не в стиле "пишем на SCALA в стиле JAVA" ) значительная дистанция.
Мне не очень нравятся статические методы в scala, т.е. если мне в обычном классе нужны статические методы, я должен создать некий object с таким же именем и в нем писать эти методы. Как по мне, было удобно, если бы статические методы можно было писать и в object, и в class (чтобы не писать два раза object/class).
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694585
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cossack5,

некий object с
все Ваши неудобства - последствия JAVA аквариума.
напротив, именно с object, в SCALA всё удивительно логично. особенно в контексте, наличия traits .
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694598
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheblinmaytonCheblin, вау-эффекта нет.
вау-эффект обещаю, выкладывай JAVA аналог.
Аналог чего?

Постарайся в нескольких фразах описать идею. У меня нет времени читать все-все сорцы.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694609
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MСоздатель Scala - один. Швейцарский профессор Мартин Одерски. Он сам рассказал, что ему университет дал свободу творчества. Вот он и создал язык, напихав в него всевозможные достоинства. Но при создании языка не было определённой цели, и так как он был не программист, то ему было трудно понять, что нужно программистам.
А что нужно программистам?
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694620
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА что нужно программистам?
бабло
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694630
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonCheblinпропущено...

вау-эффект обещаю, выкладывай JAVA аналог.
Аналог чего?

Постарайся в нескольких фразах описать идею. У меня нет времени читать все-все сорцы.

Вы не внимательны.
я писал выше
для эксперимента попробуй следующий код переписать со SCALA на JAVA.
представите на JAVA приведенную выше одну строку написанную на SCALA, получите вау-эффект
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694640
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheblinВы не внимательны.
я писал выше
для эксперимента попробуй следующий код переписать со SCALA на JAVA.
представите на JAVA приведенную выше одну строку написанную на SCALA, получите вау-эффект
здесь похоже только вы на своей волне - я вот тоже ничего не понял: вы привели какой-то код на C и ссылку на multiline с интерполяцией, что предлагается переписать и зачем? от отсутствия multiline никто за все время существования java не умер, а интерполяция строк - фича довольно сомнительная, ибо:
совершенно непонятно как IDE будет поддерживать зависимости - ловить баги в рантайме оно нафиг не нужно (тут с грустью вспоминаем эклипс, который jsp толком не умел)

это прямой путь к разного рода уязвимостям (XSS, XSRF, RCE, SQL injection и пр.), потому как интерполироваться оно должно в зависимости от контекста, а не абы как (как в scala )
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694658
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinmaytonпропущено...

Аналог чего?

Постарайся в нескольких фразах описать идею. У меня нет времени читать все-все сорцы.

Вы не внимательны.
я писал выше
для эксперимента попробуй следующий код переписать со SCALA на JAVA.
представите на JAVA приведенную выше одну строку написанную на SCALA, получите вау-эффект
Начнем с того что я бы вообще так не делал.
Это хардкод. Я бы постарался генерализировать идею и описать ее в терминах ООП и композиции.

А а java есть фреймворк freemarker который решает аналогичные вещи.

Или apache velocity.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694668
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфиловздесь похоже только вы на своей волне - я вот тоже ничего не понял: вы привели какой-то код на C и ссылку на multiline с интерполяцией, что предлагается переписать и зачем?
это НЕ код на С. это одна SCALA мультистрока.

то, что видно как С код - это так подсветка кода всё разукрасила. поддержки SCALA на сайте нет.

Андрей Панфиловот отсутствия multiline никто за все время существования java не умер, а интерполяция строк - фича довольно сомнительная, ибо:

как Вам там пишется на JDK 1.1 ? от отсутствия джинериков смертей не наблюдается?

Андрей Панфилов а интерполяция строк - фича довольно сомнительная, ибо:
понятно.
нету - значит и не нужно. Л - логика!
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694676
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonНачнем с того что я бы вообще так не делал.
Это хардкод. Я бы постарался генерализировать идею и описать ее в терминах ООП и композиции.

А а java есть фреймворк freemarker который решает аналогичные вещи.

Или apache velocity.

весь приведенный перечень инструментов доступен в SCALA.
Соответственно все они были мной испытаны и проверены.

заявляю ответственно. Это всё Ацтой.

и в смысле удобства программирования, и в смысле поддержки в IDE, и в смысле скорости генерации текста.
Быстрее и эффективнее Twirl (который хадкордит во время компиляции все, до чего дотянется) ничего нет.
Но это всё предназначено и пригодно только для генерации web страниц.
Для кодогенерации НЕ пригодно.

В чем отличие?

В веб страницах в основном много контента и мало управляющих конструкций.

При кодогенерации наоборот.
Контент в ужастно мелкой грануляции (вплоть до ставить или нет запятую / точку с запятой в данном месте ) и гигантская мешанина управляющих конструкций.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694681
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinзаявляю ответственно. Это всё Ацтой.

Нет, безответственно.

FreeMarker и Velocity написаны на Java и с успехом могли бы применяться в Scala, если бы любителям Scala не хотелось выпендиваться, как в этой цитате. Нормальное для них видите ли недостаточно хорошо.
Правда, Velocity устарел. FreeMarker популярен и применяется в важных программных средствах. Но есть ряд других генераторов шаблонов на Java, из которых можно выбирать. Меня например заинтересовал некий Thymeleaf, потому что он применяется в Spring (наряду с FreeMarker). В FreeMarker единственная проблема - если в программу входит более старая его версия, тогда надо исходный код шаблона FreeMarker делать с учётом её возможностей.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694690
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinэто НЕ код на С. это одна SCALA мультистрока.

то, что видно как С код - это так подсветка кода всё разукрасила. поддержки SCALA на сайте нет.
getClass().getResourcesAsStream() - вроде нет никакого повода бежать и строчить минеты создателям scala, при этом жава код сам по себе, а остальное само по себе, и нет никакой лапши как в PHP.
CheblinАндрей Панфиловот отсутствия multiline никто за все время существования java не умер, а интерполяция строк - фича довольно сомнительная, ибо:

как Вам там пишется на JDK 1.1 ? от отсутствия джинериков смертей не наблюдается?А чего? в жаву уже завезли женерики?
CheblinАндрей Панфилов а интерполяция строк - фича довольно сомнительная, ибо:
понятно.
нету - значит и не нужно. Л - логика!Вы там в своем Китае читать разучились судя по всему, на мой взгляд я вполне доступно обосновал почему интерполяция - зло, если бы скала была бы столь же популярна как и жава (а не иметь три более-менее стрельнувших проекта из-за чего причислять себя к ылитарным погромистам), то из-за этой интерполяции каждый день бы новые CVE появлялись, нашлепанные ылитарными погромистами.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694693
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin,

Вот именно управляющих конструкций в примере не увидел. Может пример неудачный? Я так понимаю вы говорите, что такие встроенные конструкции позволяют не переключать контекст? А как такое в последующей поддержке? Такая длинная чужеродная простыня посреди кода выглядит сомнительно с точки зрения читабельности. А если там посередине еще и сложная логика в выражениях? В целом, если стоит задача кодогенерации со сложной логикой, зачем использовать такое низкоуровневое средство как шаблон? Почему не строить АСТ и по нему уже генерить код, тем самым разнеся логику и саму кодогенерацию?

Ну и в целом выпячивание именно мультистрок и интерполяции как килер фичи выглядит сомнительно. Почему неискушенный читатель должен предпочесть scala, а не, скажем, groovy, где такие же строки?
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694716
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подытожу для себя.

Мультистроки и интерполяция - это не та киллер-фича с которой надо выходить на Scala-презентацию.

Много языков имеют строковые подстановки с вычислением выражения но это не сделало их выдающимися.

Нужно привести пример кода который на уровне парадигмы принципиально сложно повторить в других ЯП в сравнение со Scala.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694861
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне тоже непонятно в чем крутизна примера, если есть 1001 других способов показать что скала крутая.
Мне например очень нравится концепция dependent-types.
В данном примере тип возвращаемого результата метода handle зависит от ЗНАЧЕНИЯ передаваемого в метод параметра. Передали LocalComputation - метод вернет LocalResponse, передали RemoteComputation - вернули RemoteResponse. Всего пару строк кодаи мощь системы типов скалы. Попробуйте переписать на java чо:) Многие java программисты даже не задумываются о том, сколько всего можно переложить на компилятор. Да, возможно дольше писать, но я лучше напишу так, чем миллион тестов потом:)
Код: 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.
import scala.concurrent.{Await, Future}
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global

case class LocalResponse(statusCode: Int)
case class RemoteResponse(message: String)

sealed trait Computation {
  type Response
  val work: Future[Response]
}

case class LocalComputation(work: Future[LocalResponse]) extends Computation {
  type Response = LocalResponse
}
case class RemoteComputation(work: Future[RemoteResponse]) extends Computation {
  type Response = RemoteResponse
}

object Service {
  def handle(computation: Computation): computation.Response = {
    val duration = Duration(2, SECONDS)
    Await.result(computation.work, duration)
  }

  def main(args:Array[String]) = {
    val a:LocalResponse = Service.handle(LocalComputation(Future(RemoteResponse(0))))
      a.statusCode
      //.statusCode
    // Result: LocalResponse = LocalResponse(0)
    val a2:RemoteResponse = Service.handle(RemoteComputation(Future(RemoteResponse("remote call"))))
    a2.message
      //.message
    // Result: RemoteResponse = RemoteResponse(remote call)
  }
}
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694865
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нельзя редактировать свои посты, бесит. Вот правильный код с комментариями -

Код: 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.
import scala.concurrent.{Await, Future}
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global

case class LocalResponse(statusCode: Int)
case class RemoteResponse(message: String)

sealed trait Computation {
  type Response
  val work: Future[Response]
}

case class LocalComputation(work: Future[LocalResponse]) extends Computation {
  type Response = LocalResponse
}
case class RemoteComputation(work: Future[RemoteResponse]) extends Computation {
  type Response = RemoteResponse
}

object Service {
  def handle(computation: Computation): computation.Response = {
    val duration = Duration(2, SECONDS)
    Await.result(computation.work, duration)
  }

  def main(args:Array[String]) = {
    val a:LocalResponse = Service.handle(LocalComputation(Future(LocalResponse(0))))
    println(a.statusCode) //Compiling fine

    val a2:RemoteResponse = Service.handle(RemoteComputation(Future(RemoteResponse("remote call"))))
    println(a2.message)//Compiling fine

    val a3:RemoteResponse = Service.handle(RemoteComputation(Future(LocalResponse("remote call")))) // BOOM
  }
}
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694877
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или вот, классика. DSL for Payrol Calculator, readable by business и обратите внимание, все steps имеют свой тип(фантомный), Step[PreDeductions] Step[Final] и тд. Если бизнес чел перепутает шаги местами,то это вызовет компилейшен эррор. Опять же, желающие могут попробовать силы в переписывании на java

Код: 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.
import scala.language.implicitConversions

object Pipeline {
  implicit class toPiped[V](value:V) {
    def |>[R] (f : V => R) = f(value)
  }
}

sealed trait PreTaxDeductions
sealed trait PostTaxDeductions
sealed trait Final

// For simplicity, use Float for money. Not recommended...
case class Employee(
                     name: String,
                     annualSalary: Float,
                     taxRate: Float,  // For simplicity, just 1 rate covering all taxes.
                     insurancePremiumsPerPayPeriod: Float,
                     _401kDeductionRate: Float,  // A pretax, retirement savings plan in the USA.
                     postTaxDeductions: Float)

case class Pay[Step](employee: Employee, netPay: Float)

object Payroll {
  // Biweekly paychecks. Assume exactly 52 weeks/year for simplicity.
  def start(employee: Employee): Pay[PreTaxDeductions] =
    Pay[PreTaxDeductions](employee, employee.annualSalary / 26.0F)

  def minusInsurance(pay: Pay[PreTaxDeductions]): Pay[PreTaxDeductions] = {
    val newNet = pay.netPay - pay.employee.insurancePremiumsPerPayPeriod
    pay copy (netPay = newNet)
  }

  def minus401k(pay: Pay[PreTaxDeductions]): Pay[PreTaxDeductions] = {
    val newNet = pay.netPay - (pay.employee._401kDeductionRate * pay.netPay)
    pay copy (netPay = newNet)
  }

  def minusTax(pay: Pay[PreTaxDeductions]): Pay[PostTaxDeductions] = {
    val newNet = pay.netPay - (pay.employee.taxRate * pay.netPay)
    pay copy (netPay = newNet)
  }

  def minusFinalDeductions(pay: Pay[PostTaxDeductions]): Pay[Final] = {
    val newNet = pay.netPay - pay.employee.postTaxDeductions
    pay copy (netPay = newNet)
  }
}

object CalculatePayroll {
  def main(args: Array[String]) = {
    import Pipeline._
    import Payroll._

    val e = Employee("Buck Trends", 100000.0F, 0.25F, 200F, 0.10F, 0.05F)
    val pay = start(e) |>
      minus401k        |>
      minusInsurance   |>
      minusTax         |>
      minusFinalDeductions
    val twoWeekGross = e.annualSalary / 26.0F
    val twoWeekNet   = pay.netPay
    val percent      = (twoWeekNet / twoWeekGross) * 100
    println(s"For ${e.name}, the gross vs. net pay every 2 weeks is:")
    println(f"  $$${twoWeekGross}%.2f vs. $$${twoWeekNet}%.2f or ${percent}%.1f%%")
  }
}



Ну и да, код можно еще упрощать и упрощать
...
Рейтинг: 0 / 0
Перспективы Scala
    #39694883
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как насчет нормальной поддердержки higher order functions ?

Код: java
1.
2.
3.
4.
5.
6.
7.
interface Function<T, R> {
R apply(T t);
}

useFunction(Function func)
{
}



Код: sql
1.
2.
3.
def useFunction[T,R] (f: T => R) 
{
}
...
Рейтинг: 0 / 0
Перспективы Scala
    #39695083
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никМне например очень нравится концепция dependent-types.
В данном примере тип возвращаемого результата метода handle зависит от ЗНАЧЕНИЯ передаваемого в метод параметра. Передали LocalComputation - метод вернет LocalResponse, передали RemoteComputation - вернули RemoteResponse.Чет я не особо фишку уловил, в жаве не так чтоли?

Код: 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.
	class RemoteResponse {
		public RemoteResponse(String message) {
			this.message = message;
		}

		String message;
	}

	abstract class Computation<T> {

		private T value;

		public Computation(T value) {
			this.value = value;
		}

		public T work() {
			return value;
		}
	}

	class RemoteComputation extends Computation<RemoteResponse> {

		public RemoteComputation(RemoteResponse value) {
			super(value);
		}

	}

	class Service {
		<T> T handle(Computation<T> computation) {
			return computation.work();
		}
	}

	public void test() {
		RemoteResponse response = new Service().handle(new RemoteComputation(new RemoteResponse("test")));
	}
...
Рейтинг: 0 / 0
Перспективы Scala
    #39695110
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловЧет я не особо фишку уловил, в жаве не так чтоли?

А теперь добавьте LocalResponse и LocalComputation и сделайте чтобы метод handle возвращал Future<T>

Код: java
1.
2.
3.
4.
5.
class Service {
        <T> Future<T> handle(Computation<T> computation) {
            return Executors.newFixedThreadPool(1).submit( () -> computation.work());
        }
    }
...
Рейтинг: 0 / 0
Перспективы Scala
    #39695127
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никА теперь добавьте LocalResponse и LocalComputation и сделайте чтобы метод handle возвращал Future<T>

Код: java
1.
2.
3.
4.
5.
class Service {
        <T> Future<T> handle(Computation<T> computation) {
            return Executors.newFixedThreadPool(1).submit( () -> computation.work());
        }
    }



Ничего не поменялось:

Код: 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.
	class LocalResponse {
		public LocalResponse(int status) {
			this.status = status;
		}

		int status;
	}

...

	class LocalComputation extends Computation<LocalResponse> {

		public LocalComputation(LocalResponse value) {
			super(value);
		}

	}

...

	class Service {
		<T> Future<T> handle(Computation<T> computation) {
			return Executors.newFixedThreadPool(1).submit(computation::work);
		}
	}

	public void test() throws Exception {
		RemoteResponse remote = new Service().handle(new RemoteComputation(new RemoteResponse("test"))).get();
		LocalResponse local = new Service().handle(new LocalComputation(new LocalResponse(1))).get();
	}
...
Рейтинг: 0 / 0
Перспективы Scala
    #39695138
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кмк в Scala лучше система типов.

По крайней мере generic collection of primitives выглядит как в c++
...
Рейтинг: 0 / 0
Перспективы Scala
    #39695182
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,

Да, вы правы. Я старался минимизировать пример, но убрал всю соль, действительно в таком виде его можно перепистаь на Java без особых проблем. В полном примере есть использование implicit фич, так что не охота было перегружать. Если интересно, то это частный случай так называемого magnet pattern, ознакомиться можно здесь -

А как насчет вот такого примера? Есть франшиза, есть персонажи. Есть метод, который должен компилироваться только если персонажи принадлежат данной франшизе. Сможете повторить на Java?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
object DepTypes3 {

  class Franchise(name: String) {
    case class Character(name: String)
    def createFanFictionWith(lovestruck: Character, objectOfDesire: Character): (Character, Character) = (lovestruck, objectOfDesire)
  }

  val starTrek = new Franchise("Star Trek")
  val starWars = new Franchise("Star Wars")

  val quark = starTrek.Character("Quark")
  val jadzia = starTrek.Character("Jadzia Dax")

  val luke = starWars.Character("Luke Skywalker")
  val yoda = starWars.Character("Yoda")

  starTrek.createFanFictionWith(lovestruck = quark, objectOfDesire = jadzia)
  starWars.createFanFictionWith(lovestruck = luke, objectOfDesire = yoda)

  //starTrek.createFanFictionWith(lovestruck = jadzia, objectOfDesire = luke) Компилейшен еррор, как и ожидается
}
...
Рейтинг: 0 / 0
Перспективы Scala
    #39695193
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКмк в Scala лучше система типов.

По крайней мере generic collection of primitives выглядит как в c++

То что вам кажется, является неоспоримым общепризнанным фактом. Несомненно система типов Scala в разы мощнее, не дотягивает конечно до Haskell но с Java сравнивать просто смешно. Даже представлять не охота, как можно закодировать List длиной 3 как тип..
https://apocalisp.wordpress.com/2010/06/08/type-level-programming-in-scala/
...
Рейтинг: 0 / 0
Перспективы Scala
    #39695194
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ссылка на magnet pattern - http://spray.io/blog/2012-12-13-the-magnet-pattern/
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Перспективы Scala
    #39901194
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня контора кстати решила отказаться от скалы по ряду компонентов. и перейти на православную джаву :)
вот так то. по ходу устали искать желающих поработать скалистов. и по тому что я вижу есть еще ряд игроков которые приняли аналогичное решение. скалистам или досвидос скажут или предложат писать на джаве.

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

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

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

вот такая вот ботва.


Контора- бодишоп?
Ниша скалы - проекты на бигдате и некоторые продуктовые приложения(игры, серверы, стриминг системы) - там обычно свой продукт и идейные личности, поэтому проблема с кадрами не натсолько остро стоит. Ну а так, да - в энтерпрайз скала не зашла и врядли в обозримом будущем зайдет.
Есть правда один большой плюс в ней - она структурирует мозги и помогает по-другому взглянуть на свой код под углами разных парадигм. Я стал намного лучшим java-программистом после скалы
...
Рейтинг: 0 / 0
Перспективы Scala
    #39901223
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет не бодишоп, а 100% продуктовая контора зарабатывающая на своем продукте деньги. как раз и бигдата и процессинг и энтерпрайз.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39901226
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в бодишопе в котором я работал даже джава кони откинула. я был последним джавистом по-сути там кто оттуда срулил. они перешли на питон ноду и пыху чуть чуть. в основном первые два. а тоже были времена и джавы и скалы. но вначале скала канула. потом джава.
...
Рейтинг: 0 / 0
Перспективы Scala
    #39901228
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник

Есть правда один большой плюс в ней - она структурирует мозги и помогает по-другому взглянуть на свой код под углами разных парадигм. Я стал намного лучшим java-программистом после скалы

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


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