Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 17

На данный момент на последний вопрос ответило 25 человек. Это, конечно, сложно назвать репрезентативной выборкой, но то, что количество людей, писавших до Scala на Python и Haskell в сумме больше, чем на Java — для меня сюрприз. Возможно, Одерски не так уж неправ, вводя этот новый синтаксис.

Мне кажется, что хаскелисты просто подписаны на тег Scala (или, скажем так, вероятность того, что хаскелист ткнет на эту статью больше, чем для джависта), поэтому так и получилось.


А вообще, разве не легче всё писать без скобок? Питон доказывает, что вполне себе хорошее решение

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

Поддержка Скалы в IDE и редакторах и так отстаёт от других языков из-за сложняков вроде имплицитов, так теперь ещё и авто-форматирование кода пропадает.

«Опциональность» тут вообще выглядит как издевательство. Забыл открывающую фигурную скобку и всё, твой код уже интерпретируется иначе.

Что же касается популярности языка, то синтаксис тут вторичен. Ставка на то чтобы быть better Java сыграла злую шутку. Скала и её сообщество дали миру много замечательных вещей таких как Spark или Kafka. Но потом Скалу отбросили до вторичной роли «языка реализации» и Java опять вышла на передний план.
НЛО прилетело и опубликовало эту надпись здесь
К сожалению примера, с которым столкнулся на практике, нет под рукой, но вот здесь есть похожий.
НЛО прилетело и опубликовало эту надпись здесь

Вроде бы есть попытка пофиксить это. Но у меня не завелось. Возможно, в M2, на которой я тестил, этого еще не было.

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


lst.map(a => a + 1)
lst.map{a => 
    a + 1 
}

vs


lst.map:
    a => 
        a+1

И ещё такие конструкции становится неудобно собирать в цепочку или вкладывать друг в друга.


В итоге я без скобок только небольшое количество конструкций использую:
1) объявления классов и методов (читаемость повышается, закрывающая скобка не нужна)
2) конструкции типа x match:
3) иногда в циклах for, но обычно со скобками лучше

Кстати, на превью пример справа, со старым синтаксисом, выглядит проще, чем пример слева. Замена фигурных скобок на скобки "something ... end something" не выглядит упрощающим чтение улучшением. Теперь нужно сосредотачиваться на этих end, читать их (а вдруг там не end?), тогда как скобки обычно просто воспринимаются в фоне.


Что действительно улучшает читаемость — это отсутствие круглых скобок вокруг условий. Но такой синтаксис совместим и с фигурными скобками, как это сделано в Rust.

Теперь нужно сосредотачиваться на этих end, читать их (а вдруг там не end?), тогда как скобки обычно просто воспринимаются в фоне.

Справедливости ради, по гайдлайну этот пример на картинке нужно переписать как-то так:


package newsyntax:

    abstract class C():

        def this(x: Int) =
            this()
            if x > 0 then
                var y = x
                while y > 0 do
                    println(y)
                    y -= 1
            else
                x match
                    case 0 => println("0")
                    case _ =>

    end C
end newsyntax

Это и компактнее и, имхо, читабельнее. На картинке сделано с кучей end просто для понимания соответствия старого кода и нового.

НЛО прилетело и опубликовало эту надпись здесь
А можно поинтересоваться о причинах такого перехода? Не ожидал, что такой кейс будет популярен…
НЛО прилетело и опубликовало эту надпись здесь
Да, хорошо работать в одиночку и самому определять стек. Но ведь тогда и рефакторинг не должен быть слишком сложен? Просто интересно…
НЛО прилетело и опубликовало эту надпись здесь
Может и есть в этом какой-то смысл, но не для тех, кто перешёл с Явы на Скалу.
У нас в компании попеременно написано 70/30 -> Java/Scala и убрать фигурные скобки, ну крайне сомнительная идея, как по мне.
Хотя в некоторых случаях будет выглядеть интересно и лаконично.
Всем сторонникам и противникам сотступов рекомедую принять участие в обсуждение этой фичи так что бы потом не было обидно, что мнение не было учтено — contributors.scala-lang.org/t/feedback-sought-optional-braces/4702
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации