Войти
ФлеймФорумПрограммирование

Стоит ли изучать новый язык Rust? (18 стр)

Страницы: 117 18 19 2026 Следующая »
#255
17:22, 8 мар. 2018

В какие-то вы сложности ударились. Тролить раст можно куда проще. Вот только что на хабре вычистал:

let x = action();       // вызов функции
let y = action!();      // вызов макроса

Как можно сделать такой синтакс в новом ЯП? Разработчики буквально проигнорировали десятилетия боли и страданий тысяч людей и опять впилили фичу "что б покороче, понезаметней и заарючек побольше". В плюсах всякие лямбды тоже не ахти, но там причина понятна — у языка наследство эпических масштабов, делают как могут. Тут же можно было с нуля сделать читаемо и понятно... И это же не единственный случай, а общий подход. Разработчики об удобстве совсем не думают.


#256
(Правка: 17:38) 17:29, 8 мар. 2018

Tiendil
> Как можно сделать такой синтакс в новом ЯП?
Что на ваш взгляд не так? Приведите минусы.

К примеру в haxe макросы при вызове и объявлении вообще не отличается от функций, кроме как спецификатором macro:

import haxe.macro.Expr;

class Main {
  static public function main() {
    var x = 0;
    var b = add(x++);
    trace(x); // 2
  }

  macro static function add(e:Expr) {
    return macro $e + $e;
  }
}

И это очень удобно на практике.

Tiendil
> В плюсах всякие лямбды тоже не ахти, но там причина понятна
Наверное лямбды в раст вас сильно напугают:

vec.iter().map(|x| x*x).collect()
|x| x*x - это лямбда, если что.
#257
18:02, 8 мар. 2018

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

#258
18:14, 8 мар. 2018

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

#259
18:21, 8 мар. 2018

Джек Аллигатор
> Я вот пишу в нормальном редакторе кода с подсветкой
Дело совсем не в этом.
Макросы в Rust являются хорошо спроектированной системой, вобравшей в себя современный опыт метапрограммирования:
1) работают с AST
2) гигиеничные https://en.wikipedia.org/wiki/Hygienic_macro
3) грамматика формализована
4) имеют инструменты для отладки

В итоге их использование абсолютно безопасно.
Большой разницы вызывать функцию или макрос нет - неконтролируемые побочные эффекты отсутствуют.

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

опять впилили фичу "что б покороче, понезаметней и заарючек побольше"

Это опровергает твою трактовку.
#260
20:06, 8 мар. 2018

desss
> Это опровергает твою трактовку.
наоборот. Нет чтоб сделать как везде, вызов он и есть вызов. Вместо этого впилили восклицательный знак, который добавляет закорючек, легко не заметить, легко забыть написать.

#261
21:02, 8 мар. 2018

Джек Аллигатор
> Tiendil, если ты пишешь код в стандартном блокноте винды, то замечания справедливые. Я вот пишу в нормальном редакторе кода с подсветкой, и там ну никак перепутать функцию с макросом невозможно просто потому что подсветка разного цвета.
Я читаю код на много больше чем пишу.

За последний год код читал я примерно вот этим: emacs, vim, vi, cat, diff, kdiff3, smartgit, notepad++, sublim text, github, gitlab, bitbacket, огромное количество бложиков и прочих интернет сайтов, бумажные книги, электронные книги.

И вот подстветка там ни разну не единообразна.

Кроме того, мы читаем не цвета всё-таки, а символы (если убрать цвет, код останется читаемым, если убрать символы, то нифиги не прочтёшь). Цвета просто чуть-чуть помогают, но не могут избавить от проблем с синтаксисом. По крайней мере никакая подстветка не помоглоа Perl-у избавиться от своей репутации.  А Rust прям вызов ему бросает по чати использования знаков препинания.


desss
> Что на ваш взгляд не так?
1. Вводят ещё одну ненужную нотацию. Значения всех спец. символов на клавиатуре и так перегружены дальше некуда. У "!" как минимум есть стандартные значения в обычном языке, в математике да и в более стандартных местах ЯП. Размер памяти у людей довольно ограничен. Переключаться между контекстами мозгу дорого.
2. Добавление спец. символов обычно усложняет парсинг текста человеком, поскольку они имеют разные приоритеты и нотации (префиксная, постфиксная, etc). Приходится перечитывать уже ранее прочтённый код, с учётом новой семантики.
3. Беглый взгляд на такой код не заметит никакой разницы, а она должна быть видна сразу, поскольку семантически вызов функции и макроса это очень разные вещи. Если бы они не имели разницы, это было бы одна вещь, а не две.

> Наверное лямбды в раст вас сильно напугают:
Вы лямбды в плюсах видели вообще? :-D  Хотя растовская жадность до "лишних" символов походу и лябды задело. Стрелочку или двоеточие вставить религия не позволила походу.

> К примеру в haxe макросы при вызове и объявлении вообще не отличается от функций, кроме как спецификатором macro.
Если спецификатор используется при вызове, то всё ок. Если вызов реально ничем не отличается, то удачи в разбирательстве со сколь-нибудь большими проектами.

#262
(Правка: 21:54) 21:32, 8 мар. 2018

Tiendil
> 1.
> 2.
Я бы отнес эти пункты скорее к вкусовщине - спорить с вашим отношением к этому я не буду.
Доказательства же того, что введение в язык конкретного смысла для конкретного символа, который конкретно вы оценили вредным,
бьет по производительности программирования, качестве использования языка и приводит к постоянным перечитываниям кода, отсутствуют.

> Размер памяти у людей довольно ограничен. Переключаться между контекстами мозгу дорого.
Ну не вам на это жаловаться :)

За последний год код читал я примерно вот этим: emacs, vim, vi, cat, diff, kdiff3, smartgit, notepad++, sublim text, github, gitlab, bitbacket


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

> Если спецификатор используется при вызове, то всё ок.
Я привел пример кода - там прекрасно видно, что в Haxe спецификатор macro у определения функции, а не у вызова.

> Если вызов реально ничем не отличается, то удачи в разбирательстве со сколь-нибудь большими проектами.
Во время работы в предыдущей студии, я написал кроссплатформенный игровой движок на Haxe, и на нём же игру. Не в одиночку разумеется.
Активно писал и использовал макросы. Мне то ли повезло в разбирательствах, то ли макросы в современных языках только названием похожи на макросы в C++.

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

1) работают с AST
2) гигиеничные https://en.wikipedia.org/wiki/Hygienic_macro
3) грамматика формализована
4) имеют инструменты для отладки

#263
0:59, 9 мар. 2018

Tiendil
> Я читаю код на много больше чем пишу.
Признак старого проекта. Это значит что ты скатываешься как профессионал в говно, теряешь навыки

#264
1:04, 9 мар. 2018

desss
в крестах сильно не хватает работы с аст\экспрессионами

#265
8:51, 9 мар. 2018

kvakvs

> Вот ведётся некоторая работа в этой рабочей группе на жидхубе
А насколько экосистема приспособлена к переносу на другое железо?
Так же как llvm, или ко всему нужно портировать крейты?

#266
19:18, 9 мар. 2018

Ghost2
> А насколько экосистема приспособлена к переносу на другое железо?
> Так же как llvm, или ко всему нужно портировать крейты?
Не уверен, но вроде она достаточно умная чтоб вытащить исходник и собрать под твой тулчейн.

#267
2:52, 20 авг. 2018

desss
> Все таки решился и поставил IntelliJ IDEA и плагин IntelliJ Rust.
> Я говорил в VS Code поддержка нормальная, так вот она полное говно по сравнению
> IntelliJ Rust.
пришел к тому же мнению, бида пичаль, что отладчика нет, но народ пишет, что вроде можно из студии цепляться к процессу через pdb файл, короче мутновато как-то.

#268
13:28, 20 авг. 2018

kipar
> наоборот. Нет чтоб сделать как везде, вызов он и есть вызов. Вместо этого
> впилили восклицательный знак, который добавляет закорючек, легко не заметить,
> легко забыть написать.
я тоже пилю свой синтаксис и также для вычислений в компайл-тайм ввёл спецификатор ! для макросов\компайл-тайм функций (не глядя на другие языки)
Причины:
1. точно указать компилятору что надо делать без всякой магии
2. ограничить программита в выборе выражений - "чистые функции"

Tiendil
> 1. Вводят ещё одну ненужную нотацию. Значения всех спец. символов на клавиатуре
> и так перегружены дальше некуда. У "!" как минимум есть стандартные значения в
> обычном языке, в математике да и в более стандартных местах ЯП. Размер памяти у
> людей довольно ограничен. Переключаться между контекстами мозгу дорого.
> 2. Добавление спец. символов обычно усложняет парсинг текста человеком,
> поскольку они имеют разные приоритеты и нотации (префиксная, постфиксная, etc).
> Приходится перечитывать уже ранее прочтённый код, с учётом новой семантики.
> 3. Беглый взгляд на такой код не заметит никакой разницы, а она должна быть
> видна сразу, поскольку семантически вызов функции и макроса это очень разные
> вещи. Если бы они не имели разницы, это было бы одна вещь, а не две.

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

#269
14:15, 20 авг. 2018

ребят, отвлекитесь от холивара? Есть, кому удалось настроить под себя норм воркспейс под раст? Что там с отладкой?

Страницы: 117 18 19 2026 Следующая »
ФлеймФорумПрограммирование