URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 115665
[ Назад ]

Исходное сообщение
"Релиз языка программирования Rust 1.30"

Отправлено opennews , 26-Окт-18 11:14 
Состоялся (https://blog.rust-lang.org/2018/10/25/Rust-1.30.0.html) релиз языка системного программирования Rust 1.30 (http://www.rust-lang.org), развиваемого проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime.

Автоматическое управление памятью в Rust избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo (http://blog.rust-lang.org/2014/11/20/Cargo.html), позволяющий получить нужные для программы библиотеки  в один клик. Для размещения библиотек поддерживается репозиторий crates.io (https://crates.io/).


В подготовке нового выпуска приняли участие 178 разработчиков. Основные новшества (https://github.com/rust-lang/rust/blob/master/RELEASES.md#ve...):


-  Добавлена поддержка двух новых видов процедурных макросов (https://doc.rust-lang.org/book/procedural-macros.html): макросы похожие на атрибуты и макросы похожие на функции. Атрибутоподобные макросы напоминают ранее доступные произвольные макросы на базе механизма "derive", но кроме генерации кода только для атрибута "#[derive]" позволяют создавать собственные произвольные атрибуты, а также не ограничены работой только со структурами и перечислениями (enums). Макросы похожие на функции дают возможность определить макрос в форме вызова функции (например, "let sql = sql!(SELECT * FROM posts WHERE id=1);").

-  Добавлена (https://github.com/rust-lang/rust/pull/50911/) возможность выноса макроса в текущую область видимости (scope) по аналогии  функциями при помощи ключевого слова "use", без использования специальной аннотации "#[macro_use]";

-  Стабилизирован пакет (crate) proc_macro, предоставляющий API для упрощения создания макросов. В proc_macro также значительно расширен API для обработки ошибок, который уже задействован в пакетах подобных syn и quote;

-  Началась работа по упрощению системы создания модулей. Добавлена возможность использования ключевого слова "crate" в пути для отсылки к корню иерархии модулей, например, "crate::foo" ссылается на модуль "foo", размещённый в "src/lib.rs". При использовании внешних пакетов отныне не требуется указание префикса "::", например, вместо  "json = ::serde_json::from_str(foo);" теперь можно писать "let json = serde_json::from_str(foo);". Логика разбора пути "a::b::c" выглядит следующим образом: если  "a" является именем пакета, то в этом пакете осуществляется поиск "b::c"; если в "a" указано ключевое слово "crate", то поиск "b::c" осуществляется относительно корня иерархии модулей; иначе
"a::b::c" извлекается из текущей позиции в иерархии модулей;

-  Добавлена возможность использования ключевых слов в качестве идентификаторов. Например, для создания локальной переменной с именем "for" можно указать "let r#for = true;", а для создания функции с именем "for" - "fn r#for() {". При вызове подобной функции следует использовать признак raw-идентификатора - "r#for();";

-  Добавлен атрибут "#[panic_handler]", предоставляющий возможность определения функции для обработки сбоев (panic) в Rust runtime. Подобное может оказаться полезным для сборки приложения без стандартной библиотеки, используя режим no_std;

-  Реализована возможность определения  в макросах видимости ключевых слов, таких как "pub", используя спецификатор "vis";

-  Стабилизированы атрибуты для инструментов Rust (https://github.com/rust-lang/rust/pull/53459/), таких как  rustfmt и clippy. Например,  "#[rustfmt::skip]" может применяться отключения форматирования следующего элемента;

-  В разряд стабильных переведена новая порция API, в том числе

    Ipv4Addr::{BROADCAST, LOCALHOST, UNSPECIFIED},  Ipv6Addr::{BROADCAST, LOCALHOST, UNSPECIFIED}, Iterator::find_map;

-  Из-за неверной трактовки в функциях "trim_*" понятий "лево" и "право" для  RTL-языков, данные функции переименованы:  trim_left в trim_start, trim_right в trim_end, trim_left_matches в trim_start_matches,   trim_right_matches  в trim_end_matches;

-  В пакетный менеджер Cargo добавлен индикатор прогресса выполнения операций.


URL: https://blog.rust-lang.org/2018/10/25/Rust-1.30.0.html
Новость: https://www.opennet.ru/opennews/art.shtml?num=49503


Содержание

Сообщения в этом обсуждении
"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 12:00 
>Добавлена возможность использования ключевых слов в качестве идентификаторов. Например, для создания локальной переменной с именем "for" можно указать "let r#for = true;", а для создания функции с именем "for" - "fn r#for()

А я думал ХРУСТ сильнее испохабить уже невозможно, ан нет.

Они начали на полном серьезе воспроизводить мемы времен младенчества языков программирования, когда можно было писать:


IF = TRUE
define THEN goto X:
define ELSE goto Y:

IF IF THEN THEN ELSE ELSE



"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 17:35 
У вас FFI с библиотекой, имя символа в которой такое же, как какое-то ключевое слово в языке, что будете делать?

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 18:10 
>У вас FFI с библиотекой, имя символа в которой такое же, как какое-то ключевое слово в языке, что будете делать?

- Мама, что такое Name mangling???


"Релиз языка программирования Rust 1.30"
Отправлено имя , 26-Окт-18 18:22 
Name mangling? В си? Да вы эстет!

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 30-Окт-18 08:02 
Причём здесь манглинг, дебик. Как ты напишешь в принципе в языке Функцию или любой другой символ, чьё имя есть ключевое слово? Никак. Напиши в сях переменную с именем register.

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 12:14 
>Из-за неверной трактовки в функциях "trim_*" понятий "лево" и "право"

Как можно неверно трактовать понятие "Лево"??? Разработчки языка страдают аутизмом?
>данные функции переименованы: trim_left в trim_start

ФЕЙСПАЛМ. Вместо того что бы ДОБАВИТЬ функции trim_start и trim_end они их ПЕРЕИМЕНОВАЛИ. А если мне нужно обрезать строку имменно слева, вне зависимости от содержания, например для сериализации, что мне использовать?

Ответ прост. Нужно использовать язык программирования разработанный не 15летними аутистами.


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 12:31 
Скорее всего это про языки с письмом справа налево

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 12:42 
У Арабов ЛЕВО это не ЛЕВО?
А если человек двуязычный?
Как только он начинает писать по Арабски у него руки меняются местами?

А что по поводу языков с письмом сверху вниз? Руки с ногами меняются?

Разгадка то проста. Программисты мозиллы жопоруки, но тупы. Или тупы но жопоруки, в зависимотси от того что у них сейчас ЛЕВО.


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 13:04 
> Разгадка то проста. Программисты мозиллы жопоруки, но тупы. Или тупы но жопоруки,

И только анонимы опеннета в шляпах, плащах и со шпагами …
Причем, каждый второй аноним - правая рука Линуса (или левая рука Горшечника), каждый третий - тайный консультант и вдохновитель Кнута и Шнайера.


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 14:09 
>Из-за неверной трактовки в функциях "trim_*" понятий "лево"

Я знаю где лево. Это делает меня умнее всех программистов мозиллы.
А вам есть чем похвастаться?


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 14:58 
>>Из-за неверной трактовки в функциях "trim_*" понятий "лево"
> Я знаю где лево.

И? Вместо простых и понятных "start/end" будем продолжать использовать зависящих от отобажения/языка left/right? Т.е. встроим в trim_left и trim_right еще и распозновалку выводимого языка, до кучи.
> Это делает меня умнее всех программистов мозиллы.

Нет, всезнание и всеумение делает анонима опеннета анонимом опеннета.

> А вам есть чем похвастаться?

А я сумел в английский:
> For (readers/users of) RTL languages, trim_right is hinting that it will be
> trimming the prefix, but this is of course not the case (and similarly for
> _left).


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 15:22 
>зависящих от отобажения/языка left/right?

Вы в мозилле работаете?
ЛЕВО и ПРАВО от языка не зависят!
А вот start/end от языка зависят.
Вы путаете не только лево и право, но и причину со следствием и зад и перед.
>Нет, всезнание и всеумение делает анонима опеннета анонимом опеннета.
>Анонимный пользователь 4chan решил задачу, над которой математики думали 25 лет

И так бывает. Анонимы сила!
>А я сумел в английский:

То что вы смогли прочитать их кривую отмазку не делает ее менее кривой.
> RTL languages, trim_right is hinting that it will be
> trimming the prefix

LOLNO.

Контр пример:
Вы генерируете сессию пользователя.
Вам нужно добавить к имени пользователя соль и захешировать.
Вы тримите имя пользователя справа, а "умный" раст вдруг распознал LTR язык и тримит слева.
В итоге в результирующей строке куча пробелов и энтропия около нуля
Подбор в течении дней, а не ста тысяч лет.

Такая ошибка была в фейсбуке с сесиями - https://www.youtube.com/watch?v=O5xRRF5GfQs


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 15:40 
>>зависящих от отобажения/языка left/right?
> Вы в мозилле работаете?
> ЛЕВО и ПРАВО от языка не зависят!

Для анонимов поясняю: лево/право в отображаемом выводе и представление байтиков в памяти это две большие разницы.
Поэтому, для _корректного_ выполнения trim_left/right нужна дополнительная распозновалка, так как в зависимости от отображения резать придется или с конца или с начала. Ну или можно громко и пафосно объявить, что trim относится к общепринятой репрезентации строки в памяти, поэтому trimleft режет всегда с начала.

> А вот start/end от языка зависят.
> Вы путаете не только лево и право, но и причину со следствием
> и зад и перед.

Ага, ага. "Вся рота идет не в ногу. Один подпоручик в ногу!"
В общем -- сам придумал, сам оспорил, сам победил и сам доволен … даже немного завидно.

>>Нет, всезнание и всеумение делает анонима опеннета анонимом опеннета.
>>Анонимный пользователь 4chan решил задачу, над которой математики думали 25 лет
> И так бывает. Анонимы сила!

Особенно мощно и сильно у опеннетовски анонимов ЧСВ.


>> RTL languages, trim_right is hinting that it will be
>> trimming the prefix
> LOLNO.
> Контр пример:
> Вы генерируете сессию пользователя.
> Вам нужно добавить к имени пользователя соль и захешировать.
> Вы тримите имя пользователя справа, а "умный" раст вдруг распознал LTR язык
> и тримит слева.
> В итоге в результирующей строке куча пробелов и энтропия около нуля
> Подбор в течении дней, а не ста тысяч лет.

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



"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 15:57 
>Для анонимов поясняю: лево/право в отображаемом выводе и представление байтиков в памяти это две большие разницы.
>Поэтому, для _корректного_ выполнения trim_left/right нужна дополнительная распозновалка, так как в зависимости от отображения резать придется или с конца или с начала.

Нет не нужна. Вася ты понимаешь что строка мажет содержать и арабский и ASCII и японский традиционный одновременно? Что ты будешь резать в ней?
"  معايير الويب World! " например.

trim_left должен резать СЛЕВА(Ака со стороны старших байтов/Code point). Как делает большинство стандартных библиотек.
А вот если нужно корректная работа с UTF-8, то этим должна заниматься выделенная, подключенная библиотека.
Которая проведет токинизацию, нормирование, разбитие на значимые области и тд.
Который ты передашь в параметрах, что, откуда и куда тебе резать надо, и как поступать в проблемных случаях.
Тащить в стандартную библиотеку это не нужно.


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 16:06 
> Нет не нужна. Вася ты понимаешь что строка мажет содержать и арабский

Поздравляю, ты наконец начал понимать.

> trim_left должен резать СЛЕВА(Ака со стороны старших байтов/Code point). Как делает большинство

Не должен. Он вообще там нафиг не нужен.



"Релиз языка программирования Rust 1.30"
Отправлено ig0r , 26-Окт-18 20:10 
Дело в том что начало строки всегда начало, но в зависимости от языка строки которая хранится начало может быть справа или слева, поэтому и переименовали trim_left в trim_start а trim_right в trim_end.

"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 26-Окт-18 21:46 
>>А вот start/end от языка зависят.

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


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 26-Окт-18 13:39 
> У Арабов ЛЕВО это не ЛЕВО?

Лево у них лево. Для них нулевой символ строки слева. У них всё то же самое, но ментальная модель строки перевёрнутая, из-за чего "left" и "right" не работает. А вот "start" и "end" будучи гендерно-нейтральными словами, работают и с твоей ментальной моделью строки, и ментальной моделью араба.

> Или тупы но жопоруки, в зависимотси от того что у них сейчас ЛЕВО.

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

> А что по поводу языков с письмом сверху вниз?

А ничего. RAM в компьютере представляют либо горизонтально, либо вертикально, когда это вертикальное представление то адреса могут расти либо вверх, либо вниз. Легко и непринуждённо можно переходить от горизонтального представления к вертикальному, но вот от адресов растущих вверх к адресам растущим вниз -- это боль. Тебе говорят "стек растёт вверх", и ты представляешь себе операцию push(x) как *(stack_ptr++) = x, но через две страницы закрадывается подозрение, что вверх это *(stack_ptr--) = x. И это кошмар, перечитываешь текст по несколько раз, только чтобы убедиться, что понял его правильно. Точно так же, я подозреваю, переход от вертикальных строк к горизонтальным не будет представлять никаких проблем. А вот от горизонтальных строк к зеркально-отражённым строкам -- тут ты убъёшься отслеживать, что в данном контексте означает лево или право.

Я тебе скажу вот что, в мышлении человека очень активно используется зрительная кора, в ней проскакивают зрительные/геометические образы, без которых мышление может быть крайне затруднительным. Все эти "слева" "справа" возникают не случайно, но именно описывают те самые зрительные образы. Вот ты работаешь со строкой, которая суть последовательность байт, у которой есть начало и конец, но нет какой-либо протяжённости с севера на юг или с запада на восток, но и тем не менее ты мыслишь о строке как о геометрическом объекте. Строка _не_ геометрический объект, но в твоей голове она имеет геометрические свойства. Это выглядит ненужным усложнением, но это не мешает, до тех пор пока ты не начинаешь общаться с человеком, в чьей голове образ строки иной, который, говоря о левом конце строки, имеет в виду конец строки, потому что его образ строки простирается слева-направо. И наилучшая стратегия организации общения с таким человеком -- перейти к гендерно-нейтральным терминам, говорить не "лево"/"право", а "начало"/"конец" (или "конец"/"начало", в зависимости от того, что именно ты имел в виду). Это не более чем смена используемых слов, но такая смена позволяет обойти несовместимости кодера и декодера слов без дополнительных этапов процессинга.

> А если человек двуязычный?

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


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 26-Окт-18 15:39 
> Бегом читать ISO стандарт на с++. Особенно раздел memory model.

Зачем? Если кто-то пользуется дурацкими моделями, почему я должен? Есть меньшие адреса, есть большие адреса, а лево и право -- это уже как получится. Если я храню в памяти растр, то у растра есть "лево"/"право", "верх" и "низ", зачем мне нужны ещё лево право у памяти? Чтобы я как и ты в случае с utf8 путался бы в словах?

> Вы запутались совсем.
> Нет ничего зазорно в том что бы называть тупых тупыми.

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

> А что представляют собой данные в памяти компьютера как не цифры?

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

На некоторых архитектурах структура памяти сложнее. Скажем на x86 блоки по 64 байта образуют кеш-линию, и эти кеш-линии кешируются в более быстрой ассоциативной памяти. Иногда добавляют ещё слоёв кешей.

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

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

Тут единственная проблема встаёт -- это бывают архитектуры high-endian, бывают low-endian. Это о том, как хранятся многобайтовые целочисленные значения в памяти. Можно располагать старшие байты по младшим адресам, можно располагать их по старшим адресам. Кстати, именно работая с этими различиями я и понял, что идея приписывать памяти "лево" и "право" ущербна, она лишь путает и сбивает с толку. Если ты думаешь не о лево и право, а о меньших/больших адресах, и вербализуя свои мысли в голове не используешь слов "лево"/"право", но используешь "меньшие"/"большие" адреса, то проблема испаряется и даже не возникает.

Правда эта модель будет работать только с линейной памятью, в x86 же с её виртуальными адресными пространствами, и страничной трансляцией этой модели не всегда достаточно, и там подчастую приходится держать в голове линейную память, виртуальную память и трансляцию из второй в первую. На x86 которые ещё 32-битные, там было ещё веселее, там были сегменты, которые превращали всё это в такую лапшу, что ничего не поймёшь пока не напишешь собственную ОС.

Я так и вижу, как ты, дочитав до сюда, опять потерял нить и ничего не понимаешь, и поэтому думаешь что все вокруг тупые. Поэтому я тебе дам основной вывод из всего вышесказанного в готовом виде: то, что ты называешь памятью компьютера -- это условность, это не память, но какая-то модель памяти, и в зависимости от задачи, тебе следует использовать разные модели памяти. Некоторые из этих моделей даже типизированные модели, который позволяют говорить, как ты говоришь: память содержит цифры. Но тебе никогда не следует забывать, что то, как тебе память видится в данный момент -- это не более чем один из способов её видеть. И не факт, что это лучший способ. Лучшего вообще не существует, и на всякий случай всегда следует использовать две-три модели одновременно: есть психологические теории мышления, которые говорят, что мышление возможно только тогда, когда проблема имеет в психике два разных описания на разных "языках". Например, это может быть геометрическое описание в виде визуальных образов, символьное описание в виде формул, словесное описание на естественном языке. Процесс "перевода" с одного языка на другой критично важен для процесса мышления, и без него мышление не работает.


"Релиз языка программирования Rust 1.30"
Отправлено Илья , 26-Окт-18 19:06 
Вам что, помандеть негде?

"Релиз языка программирования Rust 1.30"
Отправлено КГБ СССР , 26-Окт-18 19:17 
> Вам что, помандеть негде?

В самом деле: форум, как и парламент, не место для дискуссий!


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 26-Окт-18 22:15 
слева и справа - природные однозначные понятия.
меньшие или большие адреса о которых ты говоришь - всё верно, так все и устроенно, но скажи мне -
слева ли на той же "линейной РАМ" будет находится ячейка памяти с меньшим адресом?

"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 27-Окт-18 06:59 
> слева и справа - природные однозначные понятия.

А линейная память, о которой ты говоришь, не природное понятие -- это искусственная абстракция.


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p akaJerom , 27-Окт-18 11:10 
натуральный ряд чисел тоже искуственное понятие?

пс: даже в теории о больше-меньше, есть понятие слева и справа. Число в натуральном ряду стоящее слева всегда меньше того, которое справа. И именно из-за природного понятия слева или справа, в натуральном ряду приняли понятие большего и меньшего.


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p akaJerom , 27-Окт-18 11:13 
*сс

"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 27-Окт-18 12:45 
> натуральный ряд чисел тоже искуственное понятие?

Конечно же. Число -- это абстракция. Чисел не существовало пока люди не придумали их.

> Число в натуральном ряду стоящее слева всегда меньше того, которое справа.

facepalm.jpg

Ты троллишь что ле? Или ты действительно веришь в то, что написание натурального ряда слева-направо -- это фундаментальный закон природы, а не рандомно закрепившееся культурное правило?


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p akaJerom , 27-Окт-18 15:03 
> Ты троллишь что ле?

Ну тогда докажи почему 1<2 истина.



"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 27-Окт-18 16:45 
По определению. Я может своё математическое образование и забыл за 15 прошедших лет, но не настолько же.

"Релиз языка программирования Rust 1.30"
Отправлено Sw00p akaJerom , 27-Окт-18 17:48 
> По определению. Я может своё математическое образование и забыл за 15 прошедших
> лет, но не настолько же.

на досуге - Готлоб Фреге, Рене Декарт


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p akaJerom , 27-Окт-18 15:05 
>> Чисел не существовало пока люди не придумали их.

Того чего не существует - не придумаешь.

пс: придумай мне тут новую геометрическую фигуру.



"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 27-Окт-18 16:49 
> Того чего не существует - не придумаешь.

Да ладно! Всё ровно наоборот, ты не сможешь придумать то, что существует.

Смотри сюда, следи за руками, и не говори что не видел, я тебе сейчас разъясню всё. Если ты что-то придумываешь, то результатом процесса придумывания является что? Правильно: психический образ. Ты придумал квадрат? Значит у тебя в голове появилась идея квадрата, и именно она и является результатом. Но идея квадрата (равно как и любая идея) может существовать только в психике. И в то же время, когда ты говоришь "квадрат существует" ты имеешь в виду, что квадрат существует вне твоей психики. Таким образом мы получаем, что результат придумывания внутри психики, а предполагаемое существование снаружи, значит это разные вещи, и то что ты придумал не существует, а то что существует ты не придумал.


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p akaJerom , 27-Окт-18 17:37 
>[оверквотинг удален]
> Смотри сюда, следи за руками, и не говори что не видел, я
> тебе сейчас разъясню всё. Если ты что-то придумываешь, то результатом процесса
> придумывания является что? Правильно: психический образ. Ты придумал квадрат? Значит у
> тебя в голове появилась идея квадрата, и именно она и является
> результатом. Но идея квадрата (равно как и любая идея) может существовать
> только в психике. И в то же время, когда ты говоришь
> "квадрат существует" ты имеешь в виду, что квадрат существует вне твоей
> психики. Таким образом мы получаем, что результат придумывания внутри психики, а
> предполагаемое существование снаружи, значит это разные вещи, и то что ты
> придумал не существует, а то что существует ты не придумал.

Такс начнём по-порядку, про квадрат было ожидаемо))) так вот напряги психику и придумай "круглый квадрат"


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 27-Окт-18 16:51 
> пс: придумай мне тут новую геометрическую фигуру.

Я не буду придумывать, я приведу чужие придумки, ок? Тебе двух хватит?

1. Бутылка Клейна.
2. Любой фрактал (попробуй воспроизвести его в реальности, с размерами элементов стремящимися к нулю).


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p akaJerom , 27-Окт-18 17:39 
>> пс: придумай мне тут новую геометрическую фигуру.
> Я не буду придумывать, я приведу чужие придумки, ок? Тебе двух хватит?
> 1. Бутылка Клейна.
> 2. Любой фрактал (попробуй воспроизвести его в реальности, с размерами элементов стремящимися
> к нулю).

ясно, не придумал


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 27-Окт-18 16:59 
> пс: придумай мне тут новую геометрическую фигуру.

Хотя если подумать чуть глубже, то выходит как в первом моём комменте: любая геометрическая фигура -- не более чем абстракция и плод воображения. Видел ли ты когда-нибудь точку, размер которой равен нулю? Видел ли ты когда-нибудь бесконечную прямую? Квадрат -- ты видел его? Абсолютно плоский, квадрат со сторонами, которые абсолютно прямые и без зазоров между атомами? Ты хоть какую-нибудь геометрическую фигуру встречал в реальности, или как и все сталкивался лишь с предметами, которые похожи на геометрические абстракции до некоторой степени. Если не всматриваться пристально.


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p akaJerom , 27-Окт-18 17:43 
> Видел ли ты когда-нибудь точку

какими свойствами обладает твоё понятие "точка", опиши и я скажу - видел или нет.

> ты когда-нибудь бесконечную прямую?

аналогично точке

>Ты хоть какую-нибудь геометрическую фигуру встречал в реальности

всюду


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 27-Окт-18 18:08 
>> Видел ли ты когда-нибудь точку
> какими свойствами обладает твоё понятие "точка", опиши и я скажу - видел
> или нет.

Как неловко признавать свою неправоту, да? Будем теперь крутиться ужом на сковородке, лишь бы не признать себя неправым. Речь идёт о геометрической точке, открой учебник по геометрии и почитай определения.

>>Ты хоть какую-нибудь геометрическую фигуру встречал в реальности
> всюду

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


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 28-Окт-18 00:05 
>>Речь идёт о геометрической точке, открой учебник по геометрии и почитай определения.

Открой Основания Геометрии Гильберта и узнай что есть геометрическая точка!!!

>>а сложной квантовой системой из многих частиц

ага которая нарушает геометрии Эвклида, Лобачевского, Римана?


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p akaJerom , 27-Окт-18 17:46 
>Видел ли ты когда-нибудь точку, размер которой равен нулю?

самое интересное пропустил)), а будет ли существовать то, у чего размер равен "нулю", при условии, что "нуль" - есть ничто?

пс: хотя у физиков фотоны с "нулевой" массой покоя :)


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 27-Окт-18 18:24 
>>Видел ли ты когда-нибудь точку, размер которой равен нулю?
> самое интересное пропустил)), а будет ли существовать то, у чего размер равен
> "нулю", при условии, что "нуль" - есть ничто?

Если не будет существовать, то ты слил в споре: геометрическая точка придумана человеком, но не существует в реальности.

> пс: хотя у физиков фотоны с "нулевой" массой покоя :)

Толку-то от их нулевой массы покоя, если они никогда не находятся в покое?


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 28-Окт-18 00:08 
>>геометрическая точка придумана человеком, но не существует в реальности.

Читай Гильбертово определение точки!!!

>>если они никогда не находятся в покое?

не говори никогда никогда))) а типа фотон остановить нельзя?


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p akaJerom , 27-Окт-18 18:03 
> не более чем абстракция и плод воображения.

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

>и без зазоров между атомами

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



"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 27-Окт-18 18:13 
>> не более чем абстракция и плод воображения.
> Декарт ясно сказал, мыслю - значить существую.
> Поправлю его...

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

>>и без зазоров между атомами
> про "зазоры" не понял,

Теперь тебе надо вспомнить школьную физику: между атомами вещества куча пустого места. Даже внутри атома больше пустоты, чем вещества. Идея непрерывного объекта, заполняющего часть пространства полностью, возникает в голове у человека только как иллюзия, вызванная несовершенством органов чувств.


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 28-Окт-18 00:20 
>>Идея вещи и вещь -- это разные вещи.

выйди сначала из порочного круга, "Все критяне лжецы, сказал критянен"!

>>Если существует идея вещи, из этого не вытекает существование вещи.

Не идея вещи и вещь, а идея и вещь - разные понятия. И когда мы говорим о существовании идеи мы не говорим о существовании вещи. Единороги как идея существуют, как вещи в "твоем" реальном мире может и нет.

>>Если существует вещь, из этого не вытекает существование идеи вещи.

игра с modus ponens

>>между атомами вещества куча пустого места.

ага они круглые, и если три окружности поставить рядом, то меж ними всегда "пустота" - так вот, пустота - пустое слово. Пустоты в природе не существует!!!

>>Даже внутри атома больше пустоты, чем вещества.

Ага по учению Рыбникова))))


>>Идея непрерывного объекта

Если спрошу, что есть непрерывность - думаю ответа не последует

>>заполняющего часть пространства полностью

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

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

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


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 28-Окт-18 11:11 
>>>Идея непрерывного объекта
> Если спрошу, что есть непрерывность - думаю ответа не последует

И как всегда ошибаешься


"Релиз языка программирования Rust 1.30"
Отправлено anonymous , 30-Окт-18 00:20 
> а про пространство вообще помолчу,
> Эйнштейн тупо выкинул слово эфир и заменил его понятием пространства-времени,
> и в чём разница, если точного определения нет.

Ну что за глупость!
Понятие пространство-время не заменило эфир!
Это понятие _изменилось_. В теориях "до Эйнштейна" пространство и время не зависили ни от чего,
в теориях Эйнштейна пространство и время зависят друг от друга и от объектов "внутри них".
И эти теории подтверждаются экспериментами.

А теории использующие эфир не подтвердились экспериментами, поэтому и были отброшены.


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 30-Окт-18 01:11 
> Ну что за глупость!

Вот с такого утверждения начинает дискуссию всякий глупец.

> Понятие пространство-время не заменило эфир!

Вам в школе проходили про понятия эфира? Думаю нет, как и моему деду в начале 20 века.

> Это понятие _изменилось_.

Понятие чего? и что изменилось? в моём утверждении - заменилось. Если вы понятия не имеете, что есть эфир, как можно его изменить или заменить?

>>В теориях "до Эйнштейна" пространство и время не зависили ни от чего

Эфир со временем никто не связывал, чтобы они были зависимы.

> в теориях Эйнштейна пространство и время зависят друг от друга и от объектов "внутри них".

У Эйнштейна нет понятия пространства и понятие времени, есть одно понятие пространства-времени, которое и есть понятие эфира.

> И эти теории подтверждаются экспериментами.

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

> А теории использующие эфир не подтвердились экспериментами, поэтому и были отброшены.

Уверен, что ни про эфир, и не про какие-то попытки экспериментов вы не в курсе.


"Релиз языка программирования Rust 1.30"
Отправлено Анонимный Алкоголик , 31-Окт-18 08:06 
>>>В теориях "до Эйнштейна" пространство и время не зависили ни от чего
> Эфир со временем никто не связывал, чтобы они были зависимы.

Ну как не связывал... В доэйнштейновской классике Эфир, как и всё прочее, существовал во времени и пространстве. Так с ними и связывался...


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 31-Окт-18 23:05 
> Ну как не связывал...

не вижу примера связи времени с эфиром...


"Релиз языка программирования Rust 1.30"
Отправлено None , 28-Окт-18 14:39 
Юноша не застал холивары на тему, на карте распределения памяти адрес 0 размещать сверху или снизу...

"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 28-Окт-18 17:22 
вы у нас тут застали холивар о "палке о двух концах"

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 22:58 
> Лучшего вообще не существует,

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

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


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 27-Окт-18 00:16 
>>Но вот захочешь ты быстрый алгоритм написать

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


"Релиз языка программирования Rust 1.30"
Отправлено Moomintroll , 26-Окт-18 14:59 
> Лево у них лево. Для них нулевой символ строки слева. У них всё то же самое, но ментальная модель строки перевёрнутая, из-за чего "left" и "right" не работает. А вот "start" и "end" будучи гендерно-нейтральными словами, работают и с твоей ментальной моделью строки, и ментальной моделью араба.

Вы здесь перепутали всё с точностью до наоборот.

Как Вы (и прочие высказавшиеся ранее) сказали - лево и право у всех одинаковые.

А вот как раз «"start" и "end" будучи гендерно-нейтральными словами» работают по разному - у европейцев старт слева, а у арабов спарава.


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 26-Окт-18 15:44 
> Вы здесь перепутали всё с точностью до наоборот.

А, да вы правы. Это у нас нулевой байт слева, у них он справа.

> А вот как раз «"start" и "end" будучи гендерно-нейтральными словами» работают по разному - у европейцев старт слева, а у арабов спарава.

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

Говоря start/end разные культуры ссылаются на одно и то же, хотя при этом в голове представляют разные образы. Образы же, хоть и разные, но они одинаковы с точностью до изоморфизма. Отказ от использование "left"/"right" прячет этот изоморфизм с глаз долой, и можно делать вид, что образы просто одинаковы.


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 19:08 
Щас найдёлся еще один, который начнёт утверждать что все на самом деле не правы, и вероятно кто-то считает нулевой символ концом строки.

"Релиз языка программирования Rust 1.30"
Отправлено Анонимный Алкоголик , 31-Окт-18 08:25 
> А, да вы правы. Это у нас нулевой байт слева, у них
> он справа.

Да нет. Нулевой байт и у них и у нас справа. Только у нас нулевой байт равен нулю, а у них имеет нулевое смещение... >:-)
>:-)
>:-)


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 31-Окт-18 12:49 
>> А, да вы правы. Это у нас нулевой байт слева, у них
>> он справа.
> Да нет. Нулевой байт и у них и у нас справа. Только
> у нас нулевой байт равен нулю, а у них имеет нулевое
> смещение... >:-)

Я никогда не думал, что люди настолько не в состоянии отличать реальность от иллюзий. Это бывает непросто, но не в столь тривиальных случаях. Приятно осознавать себя одарённым, ЧСВ летит в небеса.


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 26-Окт-18 21:51 
выше написал - все споры ведут к палке о двух концах!!!

"Релиз языка программирования Rust 1.30"
Отправлено Илья , 26-Окт-18 18:59 
Старт у строки там где символ с индексом "0".
Конец у строки - там индекс будет длина-1.
А Лево и право - это скорее к вопросу отображения локали.

Всё правильно сделали. А вы зря расходуете свои нервы по пустякам


"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 26-Окт-18 22:21 
нарисуйте на бумаге ряд ячеек, и поставьте в начальной (стартовой) ячейке индекс 0, она будет слева или справа?

пс: у англосакса (или немца), который проектировал линейную модель памяти как по вашему где стоял бы индекс 0?


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 27-Окт-18 06:18 
> Скорее всего это про языки с письмом справа налево

А что, есть взаимосвязь между порядком символов в строке и порядком их отображения на экране?


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 13:03 
> Как можно неверно трактовать понятие "Лево"??? Разработчки языка страдают аутизмом?

Нет, но есть подозрение, что анонимы не умеют в аглицкий:

https://github.com/rust-lang/rust/issues/30459


str's trim_left and trim_right implicitly assume LTR text #30459
Closed
huonw opened this Issue on 18 Dec 2015 · 18 comments

These functions and their _matches variants operate on the start and end of the string, which are only the left and right (respectively) of the displayed text when rendered left-to-right like English. For (readers/users of) RTL languages, trim_right is hinting that it will be trimming the prefix, but this is of course not the case (and similarly for _left).



"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 26-Окт-18 13:09 
> Добавлена поддержка двух новых видов процедурных макросов

Наконец-то они вынесли это из nighly. Ряд проектов теперь сможет перейти на stable rust.


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 16:29 
> Ряд проектов

Оба?


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 26-Окт-18 16:49 
>> Ряд проектов
> Оба?

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

Один из этих проектов -- это API к табличным базам данных. Ты объявляешь struct в rust'е, который автоматически мапится на запись в табличке бд. После чего ты можешь использовать эту структурку как для создания данных в памяти, так и для получения их из бд, так и для создания соответствующей таблички, при этом все замороки типа преобразования типов из БДшных в rust'овые берёт на себе библиотечный код, ты об этом даже не думаешь.

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


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 23:03 
> Наконец-то они вынесли это из nighly. Ряд проектов теперь сможет перейти на
> stable rust.

Судя по всему теперь у плюсов появился наконец достойный конкурент. В нечитаемом коде который никто не понимает. Собственно фирменная проблема плюсов - многие програмеры сперва делают себе кучу абстракций а потом на этом наворачивают. Это было бы ничего, если бы не один нюанс: остальные люди могут и не въехать в эти абстракции, понять их неверно, или убить массу времени на это понимание. Поэтому я видал проекты на плюсах сдохшие по причине того что автор забил а остальные вообще не способны понять столь "гени(т)альный" код.

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


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 27-Окт-18 07:05 
Я не очень понимаю о каком нечитаемом коде в rust'е говорят люди. От тебя я слышу это не в первый раз, но до сих пор мне не приходилось сталкиваться с кодом на rust'е, который не был бы прозрачен. Поэтому я очень приветствую конкретные ссылки на код. Любопытно посмотреть.

"Релиз языка программирования Rust 1.30"
Отправлено Илья , 29-Окт-18 08:58 
https://github.com/antoyo/relm/blob/7e1baa6a62b2db5917720a1d...

Простой пример: Не обращаясь к документации найдите объявление структуры Counter.

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


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 29-Окт-18 10:32 
"Не обращаясь к документации" -- это искусственное ограничение в случае rust'а, поскольку документация генерируется автоматически, и изучение кода идёт именно через документацию. Если ты выкидываешь этот инструмент, и берёшь взамен IDE, которая тебе не находит нужный сорец, то кто тут ССЗБ?

Но вопрос был в том, где нечитаемый код. Код Counter'а нечитаемый? Где ссылка на него? Код использующий Counter нечитаем? Да не, читаем. Кристалльно прозрачен и понятен.

Растовые макросы читаются глазами как текст на естественном языке, не сложнее. Даже проще, чем lisp'овые макросы. Ну да, из документации ссылка ведёт на файл, а не на конкретную строчку файла, но... и чё?

> макросы это очень плохая практика

Академический буллшит. Макросы сложно писать. Хорошие макросы писать ещё сложнее. Но хороший макрос может сделать твой код гораздо короче и понятнее. Макрос может позволить тебе сделать то, что иначе ты не сделаешь. Статическая проверка SQL синтаксиса, сопутствующих преобразований типов, экранирования/деэкранирования значений? Ты этого никогда не сделаешь без макроса. Без макроса ты закончишь тем, что будешь для составления SQL запросов конкатенировать строчки вручную, а потом с пылающим пердаком закрывать SQL-инъекции на работающем сервере. Или вместо SQL синтаксиса для запросов ты получишь долбаный ООП интерфейс, который позволит написать прототип, а потом, в погоне за производительностью, ты будешь заменять использования этого ООП интерфейса на составление запросов вручную, а потом с пылающим пердаком закрывать SQL-инъекции на работающем сервере.

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

Rust, по сравнению с C, позволяет гораздо больше вещей делать без макросов. Но, как я сказал выше, любая самая блестящая модель программирования имеет свои границы. Rust'овая не исключение. И слава богу, потому что попытка сделать исключение из этого правила приведёт к такому оверинженерингу, что чертям станет тошно, а в результате всё равно будут возникать edge-cases, в которых этого оверинженеринга будет недостаточно.

> Так же автодополнение внутри макросов не работает

Да и плевать на него. Бесполезная вещь, создающая видимость ускорения написания кода. Но это иллюзия, а не ускорение. Тем более что использование макросов реально упрощает написание кода. Гораздо больше чем все эти ваши автодополнения.


"Релиз языка программирования Rust 1.30"
Отправлено Илья , 30-Окт-18 07:54 
> "Не обращаясь к документации" -- это искусственное ограничение в случае rust'а, поскольку
> документация генерируется автоматически, и изучение кода идёт именно через документацию.
> Если ты выкидываешь этот инструмент, и берёшь взамен IDE, которая тебе
> не находит нужный сорец, то кто тут ССЗБ?
> Но вопрос был в том, где нечитаемый код. Код Counter'а нечитаемый? Где
> ссылка на него? Код использующий Counter нечитаем? Да не, читаем. Кристалльно
> прозрачен и понятен.

Ну так как, нашли? Нет его, опредления этой структуры на уровне обчычного кода. Она сгенерирована с помощью атрибута. Или макроса в зависимости от используемой версии раста.

То есть, за место того, чтобы просто кликнуть пару раз в требуемое место, чтобы "пощупать" эту структуру, Вам нужно проломиться сквозь слой абстракции макроса и предположить (!) что именно он нагенерирует. А затем, основываясь на этом предположении писать код.

> Без макроса ты закончишь тем, что будешь для составления SQL запросов конкатенировать строчки вручную, а потом с пылающим пердаком закрывать SQL-инъекции на работающем сервере.

Простые вещи легко реализуются на чём угодно. Хоть на макросах, хоть IQueryable.
Сложные запросы в любом случае будете писать руками

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

Иногда копипаст - это не так уж и плохо по сравнениею с сложно устроенным "общим" механизмом, который часто модифицируют. Вообще, ищите золотую середину и всё у вас будет хорошо


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 30-Окт-18 09:15 
>> "Не обращаясь к документации" -- это искусственное ограничение в случае rust'а, поскольку
>> документация генерируется автоматически, и изучение кода идёт именно через документацию.
>> Если ты выкидываешь этот инструмент, и берёшь взамен IDE, которая тебе
>> не находит нужный сорец, то кто тут ССЗБ?
>> Но вопрос был в том, где нечитаемый код. Код Counter'а нечитаемый? Где
>> ссылка на него? Код использующий Counter нечитаем? Да не, читаем. Кристалльно
>> прозрачен и понятен.
> Ну так как, нашли?

И не искал.

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

Я представляю о чём речь.

> То есть, за место того, чтобы просто кликнуть пару раз в требуемое
> место, чтобы "пощупать" эту структуру, Вам нужно проломиться сквозь слой абстракции
> макроса и предположить (!) что именно он нагенерирует. А затем, основываясь
> на этом предположении писать код.

macroexpand. Используй macroexpand, Luke, если макросы читать не получается.

>> Без макроса ты закончишь тем, что будешь для составления SQL запросов конкатенировать строчки вручную, а потом с пылающим пердаком закрывать SQL-инъекции на работающем сервере.
> Простые вещи легко реализуются на чём угодно. Хоть на макросах, хоть IQueryable.
> Сложные запросы в любом случае будете писать руками

Вопрос в том как я буду их писать, буду ли я вручную экранировать строки, или не экранировать их. Буду ли я вручную разбираться ответом и преобразовывать типы как надо. Или всё это за меня сделает макрос, да ещё и SQL-синтасис проверит.

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

Ой, не надо мне тут советы давать. Я ходил по граблям макросов в lisp'е, я делал обе ошибки -- писал макросы, когда их не надо писать, и не писал тогда, когда их надо писать. Если речь идёт о крупном проекте, то просто не позволяйте писать макросы рядовым разработчикам. Для них это должно быть запретно. Нужду в макросе должен увидеть умудрённый опытом разработчик, и он же должен написать макрос. Вот и всё.


"Релиз языка программирования Rust 1.30"
Отправлено Илья , 30-Окт-18 23:41 
> macroexpand

Где же вы раньше были. пойду читать, что за зверь такой


"Релиз языка программирования Rust 1.30"
Отправлено Ordu , 31-Окт-18 07:22 
>> macroexpand
> Где же вы раньше были. пойду читать, что за зверь такой

Функция в lisp'е. Она есть в emacs'е и её можно использовать не только с lisp'овым объектом. Хотя, если честно, я не пробовал использовать её с rust-mode, может она там и нереализована? Ну, мне не приходилось сталкиваться в rust'е с реально зубодробительными макросами, типа макросов, реализующих CLOS или типа того. Всё что я видел -- это вроде "давайте сгенерим impl MyCoolTrait для типа, через кодогенерацию, чтобы его не надо было бы писать для каждого типа вручную". Эти вещи легко читаются глазами в сорцах.


"Релиз языка программирования Rust 1.30"
Отправлено freecoder , 31-Окт-18 18:23 
Да, это хороший пример, как использование атрибута может запутать, так как частично код генерируется в процедурном макросе. Однако мне потребовалось 5 минут, чтобы на Гитхабе отыскать то место, где создается структура. При этом я в своей жизни только один раз сам писал процедурный макрос и чтение кода особого труда мне не составило.

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 13:37 
> let r#for = true;

Но зачем? Чем это отличется от "my_for", например, если в коде это всеравно будет везде с приставкой "r#". Или нет?
Видимо, в талицу идетификаторов при трансляции все же занесется "for", но прогоаммисту-то до этого какое дело? Он  с этим разве что в каком-нибудь gdb встретится, наверно.
Или я чего-то не знаю?


"Релиз языка программирования Rust 1.30"
Отправлено trolleybus , 26-Окт-18 14:03 
Для интеграции с другими языками (с тем же Си, например). То есть, к примеру, надо из Rust вызвать функцию match(), которая на C, а просто так это не сделаешь: в Rust match - ключевое слово (а в Си - нет).

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 14:23 
Другие языки уже лет сорок используют или

import C

c.match()

или


c_match()
c_getc()

Зачем изобретать уродливую конструкцию

fn r#match()

я не понимаю. Мания NIH?
Кстати это несовместимое изменение языка и оно потребует переписывания всех анализаторов, lint-еров, и компилятора. Тогда как выше предложенные варианты обходятся без этого.

"Релиз языка программирования Rust 1.30"
Отправлено zekefast , 26-Окт-18 16:48 
Затем, что с новым инструментом cargo fix не сможет добавлять везде префикс my_ так как он у тебя в коде может уже быть использован, а сканировать всю базу кода на обнаружение конфликтов не имён и потом добавлять что-то вроде my1_ или my2_ не представляется очень разумным. + к этому же добавляется проблема с вызовами между языками. r# выглядит наиболее адекватным решением.

"Релиз языка программирования Rust 1.30"
Отправлено freecoder , 31-Окт-18 18:56 
Ответ был дан в блогпосте, анонсирующем выпуск:

"Пока не так много случаев, когда вам это пригодится. Но однажды вы попытаетесь использовать пакет для Rust 2015 в проекте для Rust 2018 или наоборот, тогда набор ключевых слов у них будет разным."
https://habr.com/post/428073/


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 15:42 
>В пакетный менеджер Cargo добавлен индикатор прогресса выполнения операций.

Знаете почему в GOLANG при компиляции нет индикатора прогресса?
А в го компилятор собирает средний проект менее секунды. Стандартную библиотеку - 5 секунд.

https://i.imgur.com/qfli0f7.png


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 15:57 
>>В пакетный менеджер Cargo добавлен индикатор прогресса выполнения операций.
> Знаете почему в GOLANG при компиляции нет индикатора прогресса?
> А в го компилятор собирает средний проект менее секунды. Стандартную библиотеку - 5 секунд.
> https://i.imgur.com/qfli0f7.png

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

https://benchmarksgame-team.pages.debian.net/benchmarksgame/...


regex-redux
source    secs    mem    gz    cpu    cpu load
Rust
2.44    194,804    765    3.87    85% 41% 20% 16%
Go
28.69    407,444    802    60.43    46% 51% 68% 46%
binary-trees
source    secs    mem    gz    cpu    cpu load
Rust
4.14    175,692    721    15.18    90% 90% 91% 100%
Go
28.90    471,068    654    110.50    96% 95% 95% 97%
...
pidigits
source    secs    mem    gz    cpu    cpu load
Rust
1.74    4,520    1366    1.74    1% 3% 0% 99%
Go
2.04    8,976    603    2.04    1% 0% 100% 0%


Но чего нет, того нет.

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 16:13 
Синтетические тесты это хорошо.
Но потребление памяти и быстродействие я бы предпочел сравнить на реальных проектах.
К сожалению не знаю никого кто бы использовал Раст в продакшене.
А вы?

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 16:31 
> Синтетические тесты это хорошо.
> Но потребление памяти и быстродействие я бы предпочел сравнить на реальных проектах.

Юлеж это хорошо! Можно сравнить время загрузки или запуска браузера или доступа/записи данных на ФС
https://www.redox-os.org/
Что там у ГОшников есть для сравнения?


"Релиз языка программирования Rust 1.30"
Отправлено Junior frontend developer , 28-Окт-18 15:55 
Никто не будет писать ОС на урезанном куске языка в 2018

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 29-Окт-18 01:42 
Go пока сливает по тестам даже Java (если внимательно посмотреть на тайминги), но этот язык простой, как угол дома. Годков через пять допилят оптимизцию так, что уделает всех, а вот Rust все усложняется и стабильных спек на горизонте не видать, скоро плюсы по сложности переплюнет (если уже не).

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 17:44 
FreePascal смеется над golang по времени сборки проекта.

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 29-Окт-18 01:44 
а зеленые треды там есть? без них микросервисы не сильно попишешь.

"Релиз языка программирования Rust 1.30"
Отправлено mma , 29-Окт-18 05:15 
Паскаль собирает быстро, для институтских поделок сойдет да и ладно:) Для всего остального есть C/Cpp/C#/Java.

"Релиз языка программирования Rust 1.30"
Отправлено Алексей , 26-Окт-18 19:02 
Ну очевидно для этого пришлось чем-то пожертвовать. Создатели Go пожертвовали итоговой оптимизацией программы. Или вы думаете там применяется какая-то магия 60 уровня, которая не доступна другим программистам?

"Релиз языка программирования Rust 1.30"
Отправлено freecoder , 31-Окт-18 19:02 
За два года компиляцию в Rust уже не раз ускоряли. Так что не все так плохо.

"Релиз языка программирования Rust 1.30"
Отправлено zekefast , 26-Окт-18 16:43 
Для этого всего лишь стоит прочитать оригинальную новость в блоге Rust. При миграции между изданиями языка возможно, что в одном из следующих изданий будет добавлено слово, которое испльзуется уже в проекте как идентификатор. Что бы избежать конфликта с переименованием и сохранить семантику проекта необходимо будет просто добавить везде r#.

Данная возможность является подготовкой к Rust 2018 Edition.


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 16:47 
>Rust 2018 Edition.

История с Python2/3 никого ничему не научила.


"Релиз языка программирования Rust 1.30"
Отправлено Ан , 26-Окт-18 17:02 
Ну почему же. В Rust 2018 насколько знаю просто в проекте будет прописана версия.
И Компилятор может использовать как до 2018 библиотеку, так и 2018 библиотеку.
Такого разрыва быть не должно.

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 19:19 
Звучит интересно. Я никогда не понимал все эти "extern crate..."

"Релиз языка программирования Rust 1.30"
Отправлено iZEN , 26-Окт-18 16:59 
Дополнительная прокладка к режиму компиляции Firefox и Tunderbird.

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 23:09 
> Дополнительная прокладка к режиму компиляции Firefox и Tunderbird.

Ну чо, изя, будет у тебя штук 5 компилеров, дюжина интерпретаторов, 20 гигатонн библиотек и 10 - хидеров. Про вспомогательное добро типа мезонавтотулсмэйков даже и вспоминать неудобно.

А потом со всей этой фигней мы попробуем взлететь...


"Релиз языка программирования Rust 1.30"
Отправлено iZEN , 27-Окт-18 10:57 
> А потом со всей этой фигней мы попробуем взлететь...

Перед "взлётом" можно сделать "pkg autorevove":

% pkg autoremove
Updating database digests format: 100%
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 62 packages:

Installed packages to be REMOVED:
    rarian-0.8.1_4
    gtk-doc-1.29
    bash-4.4.23
    bison-3.1,1
    libgit2-0.27.5
    rust-1.30.0
    c-ares-1.14.0_1
    cmake-3.12.3
    cppunit-1.14.0_5
    dmake-4.12.20150309
    docbook-xsl-1.79.1,1
    docbook-1.5
    docbook-sgml-4.5_1
    docbook-xml-5.0_3
    vigra-1.11.0_24
    fftw3-float-3.3.8_1
    getopt-1.1.6
    gettext-tools-0.19.8.1
    groff-1.22.3
    gmake-4.2.1_2
    gperf-3.0.3_1
    vala-0.40.7,1
    graphviz-2.40.1_6
    gsed-4.2.2_1
    gsfonts-8.11_8
    gts-0.7.6_5
    hdf5-1.10.2
    hdf-szip-2.1_2
    help2man-1.47.8
    highlight-3.43_2,3
    openexr-2.3.0
    ilmbase-2.3.0
    intltool-0.51.0_1
    iso8879-1986_3
    itstool-2.0.2_2
    jade-1.2.1_10
    jsoncpp-1.8.1_4
    libgd-2.2.5,1
    libssh2-1.8.0,3
    libtool-2.4.6
    libuv-1.23.2
    ruby-2.4.5,1
    libyaml-0.2.1
    scons-3.0.1
    m4-1.4.18,1
    mdds-1.3.1
    meson-0.48.0
    nasm-2.13.03,1
    ninja-1.8.2,2
    p5-Locale-gettext-1.07
    p5-XML-Parser-2.44
    patch-2.7.6
    psutils-1.17_5
    py27-libxml2-2.9.7_1
    rhash-1.3.5
    sdocbook-xml-1.1_2,2
    texinfo-6.5,1
    ucpp-1.3.2,1
    unixODBC-2.3.7
    xmlcharent-0.3_2
    yasm-1.3.0
    zip-3.0_1

Number of packages to be removed: 62

The operation will free 560 MiB.

Proceed with deinstalling packages? [y/N]:



"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 20:09 
на Haiku OS пойдёт?

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 20:09 
Макросы — зло.

"Релиз языка программирования Rust 1.30"
Отправлено Sw00p aka Jerom , 26-Окт-18 21:51 
макросы для машин, а не для человека

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 23:10 
> макросы для машин, а не для человека

Судя по синтаксису - для боевых человекоподобных роботов.


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 26-Окт-18 23:27 
>> макросы для машин, а не для человека
>
> Судя по синтаксису - для боевых человекоподобных роботов.

Судя по синтаксису - для боевых паукоподобных роботов.


"Релиз языка программирования Rust 1.30"
Отправлено kiwinix , 27-Окт-18 00:49 
Вот подскажите пожалуйста. Если учить php, то чтоб взяли программистом, нужно знать MySQL, html, css, js.. и какой-то фреймворк.

А в случае с растом, какие еще будут зависимости на собеседовании?


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 27-Окт-18 01:37 
> А в случае с растом, какие еще будут зависимости на собеседовании?

Спросят, почему решил устраиваться именно в Мозиллу.


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 27-Окт-18 04:01 
> А в случае с растом, какие еще будут зависимости на собеседовании?

MySQL, html, css, js.. и какой-то фреймворк.


"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 27-Окт-18 22:09 
Надо не учить, а жить этим.

"Релиз языка программирования Rust 1.30"
Отправлено freecoder , 31-Окт-18 19:06 
TCP/IP стек и блокчейны.

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 27-Окт-18 14:41 
очередной убийца с++ скатился

"Релиз языка программирования Rust 1.30"
Отправлено th3m3 , 27-Окт-18 21:35 
Аргументы?

"Релиз языка программирования Rust 1.30"
Отправлено java developer , 27-Окт-18 22:16 
Аргументы что не скатился?

"Релиз языка программирования Rust 1.30"
Отправлено freecoder , 31-Окт-18 19:10 
А что значит "скотился"?

"Релиз языка программирования Rust 1.30"
Отправлено Илья , 28-Окт-18 10:07 
А есть кто-нибудь, кто шарит в этой библиотеке?
http://relm.ml/relm-intro

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 28-Окт-18 15:09 
> А есть кто-нибудь, кто шарит в этой библиотеке?
> http://relm.ml/relm-intro

Есть. Но я их не знаю.


"Релиз языка программирования Rust 1.30"
Отправлено Илья , 29-Окт-18 08:20 
Ваше чувство юмора просто зашкаливает.

"Релиз языка программирования Rust 1.30"
Отправлено Аноним , 31-Окт-18 20:21 
Может кто из растаманов пояснить нафига это "Добавлена возможность использования ключевых слов в качестве идентификаторов."?

"Релиз языка программирования Rust 1.30"
Отправлено iZEN , 06-Дек-18 22:29 
Rust-1.31 на FreeBSD занимает 320 МБ в распакованном виде, в архиве пакета - rust-1.31.0.txz 104,1 МБ. На Ryzen 5 2600 собирается из исходников за 45 минут.
Это всё, что нужно знать об инфраструктуре этого языка.

"Релиз языка программирования Rust 1.30"
Отправлено Andrey Mitrofanov , 07-Дек-18 10:13 
> Rust-1.31 на FreeBSD занимает 320 МБ в распакованном виде, в архиве пакета
> - rust-1.31.0.txz 104,1 МБ. На Ryzen 5 2600 собирается из исходников
> за 45 минут.
> Это всё, что нужно знать
>об инфраструктуре этого языка.

Ты забыл, или тебе просто не надо, указать, что каждая следующая версия обязятельно собирается предыдущей, и, чтобы собрать этот свой "1.31"  таки из исходников, включая инструменты сборки! ddg://trusting+trust+compiler+attack, станцевать придётся с версии, кажется, 1.19 и какого-то "mrust"-а, собирая _каждую_ из них предыдущей -- в диапазоне  19..31, соответственно.

На досуге можешь посчитать диск и время.  Это тоже интересно публике.