The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз языка программирования Rust 2021 (1.56) , opennews (??), 21-Окт-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


215. "Релиз языка программирования Rust 2021 (1.56) "  +1 +/
Сообщение от burjui (ok), 22-Окт-21, 20:14 
> Проблема современного IT - усложнение.

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

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

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

> и только усложняют освоение

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

> И здесь в расте то же самое - ну вот скажем - "|| a.x + 1" захватит только "a.x" вместо "a"

Эта фича просто убирает ненужное ограничение, налагаемое недостаточно умным ранним компилятором. А вы бы предпочли, чтобы его не снимали? Тогда, может быть, уберём из GCC какие-нибудь оптимизации или ворнинги? Ну а что, это же усложнение компилятора, пусть лучше программист вручную оптимизирует и перечитывает каждую строчку кода по десять раз, вторым глазом поглядывая в стандарт - тогда точно программы будут быстрее и надёжнее.

Ответить | Правка | К родителю #75 | Наверх | Cообщить модератору

225. "Релиз языка программирования Rust 2021 (1.56) "  –1 +/
Сообщение от Аноним (225), 22-Окт-21, 22:24 
> То же самое можно сказать практически про любую область - например, промышленность. Технологии усложняются, потому что того требуют усложнившиеся задачи, а не просто потому, что кому-то так захотелось.

Не согласен, IT превратилось вещь в себе, и оторвалось от объективной реальности. Многие вещи делаются не для решения каких-то реальных практических задач реального мира вне IT, а для поддержки самого IT, усложняя его еще больше. Как всякие сложные деривативы в финансах. Куча фреймворков, решающих одни и те же задачи, но чуть по другому; попытки сделать то что никто еще не делал, просто потому что это никто не делал, не задаваясь вопросом - зачем (типа запустить бздовой окружение на ядре линукс) и пр. - все это из этой серии. При этом в реальном мире, как делали самолеты раньше - так в общем и делают, основные принципы не сильно изменились, и меняются не так быстро, потому что это инженерная наука, а IT - кустарничество.

> Это на заре программирования можно было довольствоваться простым ЯП вроде Fortran для решения всех подряд задач, а то и вообще ассемблером. Простые задачи уже давно решены, а для сложных нужны и более сложные инструменты.

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

Ответить | Правка | Наверх | Cообщить модератору

316. "Релиз языка программирования Rust 2021 (1.56) "  +/
Сообщение от Oleg N. (?), 26-Окт-21, 01:09 
Ты прав, брат. Мы катимся в ж0пу. Нужно что-то вроде unix'а того времени, что представит новый взгляд на известные вещи. Хотя и идеи unix не до конца выжатый. Plan9 тому подтверждение.
Ответить | Правка | Наверх | Cообщить модератору

226. "Релиз языка программирования Rust 2021 (1.56) "  –1 +/
Сообщение от Аноним (225), 22-Окт-21, 22:28 
> Эта фича просто убирает ненужное ограничение, налагаемое недостаточно умным ранним компилятором. А вы бы предпочли, чтобы его не снимали? Тогда, может быть, уберём из GCC какие-нибудь оптимизации или ворнинги?

Во! Сами говорите "оптимизации GCC" - а здесь это выносится в синтаксис языка. Есть же разница? И сами же признаете, что появилось это из-за недостаточно продуманной изначально концепции. То бишь - костыль.

Ответить | Правка | К родителю #215 | Наверх | Cообщить модератору

239. "Релиз языка программирования Rust 2021 (1.56) "  +/
Сообщение от Аноним (-), 22-Окт-21, 22:55 
>> Эта фича просто убирает ненужное ограничение, налагаемое недостаточно умным ранним компилятором.
> И сами же признаете, что появилось это
> из-за недостаточно продуманной изначально концепции. То бишь - костыль.

Какая занимательная подмена понятий - в лучших местных "традициях".


Ответить | Правка | Наверх | Cообщить модератору

244. "Релиз языка программирования Rust 2021 (1.56) "  +1 +/
Сообщение от burjui (ok), 23-Окт-21, 00:00 
Синтаксис не поменялся. Компилятор стал умнее, и в замыкании захватывает не всю структуру, а только используемые в замыкании поля. Концепция осталась прежней, просто реализация отставала. Теперь не отстаёт. Надоели вы все уже, честное слово. Ни документацию, ни комментарии читать просто неспособны. Такое ощущение, будто пытаюсь объяснить арифметику попугаям: вроде, в ответ звучат согласованные предложения, но следа мыслительного процесса в них не обнаруживается.
Ответить | Правка | К родителю #226 | Наверх | Cообщить модератору

261. "Релиз языка программирования Rust 2021 (1.56) "  +2 +/
Сообщение от Прохожий (??), 23-Окт-21, 08:52 
Их задача на этом форуме не понять точку зрения оппонента, а просто тупо перекричать, затроллить. Они таким образом пытаются самоутвердиться.
Ответить | Правка | Наверх | Cообщить модератору

297. "Релиз языка программирования Rust 2021 (1.56) "  –1 +/
Сообщение от AA_suited (ok), 24-Окт-21, 19:56 
> Компилятор стал умнее, и в замыкании захватывает не всю
> структуру, а только используемые в замыкании поля.

Я не уверен что это "умнее". Где доказательство, хотя бы на пальцах, объясняющее, что в будущем не выплывут косяки в семантике и в восприятии  структур программистами?

Без такого доказательства это типичный аджайл в худшем смысле этого слово.

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

Ответить | Правка | К родителю #244 | Наверх | Cообщить модератору

302. "Релиз языка программирования Rust 2021 (1.56) "  +/
Сообщение от Аноним (-), 24-Окт-21, 20:53 

> Я не уверен что это "умнее". Где доказательство, хотя бы на пальцах,
> объясняющее, что в будущем не выплывут косяки в семантике и в
> восприятии  структур программистами?

Новость не читай, ссылки не смотри, сразу с умным видом комментарий пиши ...
https://doc.rust-lang.org/edition-guide/rust-2021/disjoint-c...
https://github.com/rust-lang/rfcs/blob/master/text/2229-capt...

Ответить | Правка | Наверх | Cообщить модератору

312. "Релиз языка программирования Rust 2021 (1.56) "  +/
Сообщение от AA_suited (ok), 25-Окт-21, 18:58 
> Новость не читай, ссылки не смотри, сразу с умным видом комментарий пиши
> ...
> https://doc.rust-lang.org/edition-guide/rust-2021/disjoint-c...
> https://github.com/rust-lang/rfcs/blob/master/text/2229-capt...

1. Где именно эти ссылки в новости?

2. Глянул я на dummy let и слегка ВЫРЕЗАНО_ЦЕНЗУРОЙ.

2А. Почему средство вернуться назад выполнено не в виде прагмы  компилятору, а вот так?!

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

А что если этот dummy let стоит не сразу после заголовка функции, а вот так:


let c = move || {
    
  длинный код

  if( длинное условие которое однако даёт всегда false )
  {
    длинный код
    dummy let спрятанный среди длинного кода
    длинный код
  }
};

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

Они где-то ещё такие вот выверты в расте делают, или это первый?

Ответить | Правка | Наверх | Cообщить модератору

314. "Релиз языка программирования Rust 2021 (1.56) "  +/
Сообщение от Аноним (-), 25-Окт-21, 20:21 
>> Новость не читай, ссылки не смотри, сразу с умным видом комментарий пиши
>> ...
>> Раздельный захват в замыканиях [является ссылкой на https://doc.rust-lang.org/edition-guide/rust-2021/disjoint-c...
>> Disjoint capture was proposed as part of RFC 2229 [RFC 2229 является ссылкой на https://github.com/rust-lang/rfcs/blob/master/text/2229-capt... and the RFC contains details about the motivation.
> 1. Где именно эти ссылки в новости?

Наверняка, это происки спецслужб!


>> If possible changes are detected, cargo fix will insert statements like let _ = &a to force a closure to capture the entire variable.
>> In order to have rustfix migrate your code to be Rust 2021 Edition compatible, run:
>> cargo fix --edition

.
> 2. Глянул я на dummy let и слегка ВЫРЕЗАНО_ЦЕНЗУРОЙ.
> 2А. Почему средство вернуться назад выполнено не в виде прагмы  компилятору,
> а вот так?!
> 2В. Сам по себе подход, как минимум, дискуссионный, и даже думаю неверный.
> Т.е. программист вносит код, не имеющий никакого действия, однако после него
> поведение компилятора изменяется где-то снаружи. В нормальном языке компилятор и программист
> должны иметь право выкинуть, например, недостижимый код и все должно быть
> как раньше после этого.

...
> А что если этот dummy let стоит не сразу после заголовка функции, а вот так:

Сам что-то придумал, сам что-то оспорил.
("средство вернуться назад" ... "программист вносит код" ... "если этот dummy let" стоит не сразу" - а описываются-то всего лишь автовставки для автоматической миграции кода. Т.е. вместо того, чтобы городить огород и изобретать велосипед с новыми прагмами, для _миграции_ - просто вставляется код, явно захватывающий "всю" переменную)

Ответить | Правка | Наверх | Cообщить модератору

303. "Релиз языка программирования Rust 2021 (1.56) "  +1 +/
Сообщение от burjui (ok), 24-Окт-21, 21:13 
> Где доказательство, хотя бы на пальцах,
> объясняющее, что в будущем не выплывут косяки в семантике и в
> восприятии  структур программистами?

Ты несёшь несусветную чушь. Это элементарное изменение, которое ни у одного растомана не вызывает вопросов, потому что все, кому было надо, уже давно вкурили лайфтаймы. Но опеннетовским экспертам не надо. Они на Rust не пишут и доки не читают, зато мнение имеют по любому вопросу, независимо от уровня своей компетенции.

Ответить | Правка | К родителю #297 | Наверх | Cообщить модератору

310. "Релиз языка программирования Rust 2021 (1.56) "  +/
Сообщение от AA_suited (ok), 25-Окт-21, 18:28 
>> Где доказательство, хотя бы на пальцах,
>> объясняющее, что в будущем не выплывут косяки в семантике и в
>> восприятии  структур программистами?
> Ты несёшь несусветную чушь.

нет

> Это элементарное изменение,

даже элементарные вещи нуждаются в доказательстве, типа 2+2=4

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

> которое ни у одного растомана
> не вызывает вопросов,

если это правда, то на языке можно ставить крест

> Но опеннетовским экспертам не надо.

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

итак, у тебя все ещё есть шанс не выглядеть идиотом:

1. сначала дай доказательство 2+2=4

2. потом дай доказательство того, что изменение не принесет косяков в семантику

Ответить | Правка | Наверх | Cообщить модератору

313. "Релиз языка программирования Rust 2021 (1.56) "  +/
Сообщение от burjui (ok), 25-Окт-21, 19:44 
За формализованными доказательствами обращайся к создателям языка и разработчикам компилятора. Боюсь, я недостаточно компетентен в computer science и теории типов для этого. Предупреждая возможное "ааа хрустоманы ничё не знают", 99.9% сишников и пользователей любого другого ЯП тоже не смогут формализовать даже половину правил своего любимого языка, при этом им это никак не мешает писать хороший код, если верить местным экспертам. Но ещё, как вариант, можете перестать спорить и быть contrarian for the sake of it (прошу прощение за неграмотность и незнание русской идиомы), а вместо этого начать изучать язык серьёзно, без предвзятости, и читать документацию, тогда будет понятно, что изменение с точки зрения семантики действительно тривиально.

Основная проблема хейтерастов (хейтеров раста) - в том, что они составляют мнение о языке без должного с ним ознакомления. Вот у меня есть неплохой бенчмарк для новых языков, которые мне интересны: писать на них компилятор простенького наколенного статически типизированного ЯП хотя бы в байткод, грубо на 5к строк. Уверен, и вы можете придумать аналог. После завершения такого небольшого, но достаточно сложного проекта, уже можно считать себя более-менее компетентным на среднем уровне, делать предварительные выводы и рассуждать, хотя бы на уровне диванного эксперта, о нюансах семантики. А иначе их мнение ничем не подкреплено и основано на собственном невежестве.

> я могу их доказывать, а ты

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

Хотя...
> если это правда, то на языке можно ставить крест

Такие заявления указывают на инфантильность и импульсивность в мышлении. Сомневаюсь, что эта дискуссия приведёт к какому-либо результату, но пока ещё не теряю надежды.

Ответить | Правка | Наверх | Cообщить модератору

317. "Релиз языка программирования Rust 2021 (1.56) "  +/
Сообщение от AA_suited (ok), 26-Окт-21, 02:57 
> За формализованными доказательствами обращайся к создателям языка и разработчикам компилятора.

меня вполне устроит неформальное доказательство ("на пальцах") при отсутствии формальной семантики языка

и да, я знаю, что и это сложно

> 99.9% сишников и
> пользователей любого другого ЯП тоже не смогут формализовать даже половину правил
> своего любимого языка, при этом им это никак не мешает писать
> хороший код, если верить местным экспертам.

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

Однако если новый язык (раст) постоянно запутывает свою семантику, то смысла на него переходить нет.

> что изменение с точки зрения семантики действительно тривиально.

Это изменение действительно выглядит крайне естественно (и да, тривиально) с точки зрения пользователя данного конкретного частного случая. А как оно будет выглядеть с точки зрения пользователей других частных случаев, причем не только в текущей версии языка, но и во всех последующих его версиях? Вот правильный вопрос.

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

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

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

ОК, хорошо, крест на языке как конкуренте С++ для тех, кто может выбирать.

Как исследовательский проект и источник идей раст конечно очень интересен.

Ответить | Правка | Наверх | Cообщить модератору

322. "Релиз языка программирования Rust 2021 (1.56) "  +/
Сообщение от burjui (ok), 26-Окт-21, 10:44 
> меня вполне устроит неформальное доказательство ("на пальцах") при отсутствии формальной
> семантики языка

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

struct X {
    a: i32,
    b: i32,
}

let x = X { a: 0, b: 0 };
let f = || x.a + 1;
// Это не скомпилируется в версиях ниже 1.56, потому что x целиком захвачен по ссылке в f
let g = || x.b + 1;

Теперь g тоже скомпилируется, т.к. в f захватится только то, что нужно - x.a, а в g - x.b
Напомню, что "захватить" (взять ссылку на) часть структуры можно было и раньше:

let xa = &x.a;
let xb = &x.b;

Более того, можно даже одно поле захватить, а другое переместить:

let xa = &x.a;
some_function(x.b);

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

> Это изменение действительно выглядит крайне естественно (и да, тривиально) с точки зрения
> пользователя данного конкретного частного случая. А как оно будет выглядеть с
> точки зрения пользователей других частных случаев, причем не только в текущей
> версии языка, но и во всех последующих его версиях? Вот правильный
> вопрос.

https://blog.rust-lang.org/2021/10/21/Rust-1.56.0.html:

This new behavior is only activated in the new edition, since it can change the order in which fields are dropped. As for all edition changes, an automatic migration is available, which will update your closures for which this matters by inserting let _ = &a; inside the closure to force the entire struct to be captured as before.

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

> Анонимус написал об обратной совместимости. Это полезно, и тоже стоит обдумать, но
> мне кажется, что у правильно спроектированного языка вообще не должно возникать
> проблем обратной совместимости при его развитии.

С этим полный порядок, т.к. изменение вносится в рамках 2021 edition, а значит, старый код компилируется по-старому (2015 & 2018 editions), а новый код не меняет семантику, поэтому может использоваться из старого.

https://doc.rust-lang.org/edition-guide/editions/index.html:

The most important rule for editions is that crates in one edition can interoperate seamlessly with crates compiled in other editions. This ensures that the decision to migrate to a newer edition is a "private one" that the crate can make without affecting others.

The requirement for crate interoperability implies some limits on the kinds of changes that we can make in an edition. In general, changes that occur in an edition tend to be "skin deep". All Rust code, regardless of edition, is ultimately compiled to the same internal representation within the compiler.

Как видите, ничего страшного не произошло, и те, кому эта фича не нужна, даже не заметят, что автор библиотеки её использует, пока не заглянут в Cargo.toml

Я ж говорю: всё есть в документации, только кто ж её читает? 🤓

> ОК, хорошо, крест на языке как конкуренте С++ для тех, кто может
> выбирать.

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

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру