The OpenNET Project / Index page

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



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

Оглавление

Выпуск языка программирования Rust 1.54, opennews (??), 29-Июл-21, (0) [смотреть все]

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


50. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Хан (?), 29-Июл-21, 23:20 
Неужели нельзя сделать не столь адовый синтаксис? Такое чувство что это C++ под веществами
Ответить | Правка | Наверх | Cообщить модератору

54. "Выпуск языка программирования Rust 1.54"  +3 +/
Сообщение от Аноним (46), 29-Июл-21, 23:25 
Нормальный синтаксис, просто для некоторых незнакомый и непривычный, потому что нет опыта с ML-языками например.
Ответить | Правка | Наверх | Cообщить модератору

60. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 29-Июл-21, 23:30 
Нормальный? В каком месте? Это же кому то взбрело в голову скрестить ML-языки в которых шарит 3,5 анонимуса и ООП вроде C++/Java/C# которое знают процентов 90... от чего получился Rust который могут понимать все теже 3,5 анонисуса
Ответить | Правка | Наверх | Cообщить модератору

101. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 00:45 
> ML-языки в которых шарит 3,5 анонимуса

То что вы не шарите, не означает, что шарит мало людей.

> и ООП

И в чём тут проблема? ООП родной подход для функциональных языков.

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

139. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Хан (?), 30-Июл-21, 02:31 
Аудитория OCaml, F#, Haskell, Lisp как бы намикает на популярность и понятность ФП

Особняком стоит Erlang который также непонятен но кое где взлетел

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

216. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 04:46 
>Аудитория OCaml, F#, Haskell, Lisp как бы намикает на популярность и понятность ФП

Вы забыли Javascript и Python.

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

436. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Хан (?), 30-Июл-21, 20:21 
JS в котором любой базовый тип это обьект? Хммм не знал что в ФП все обьект и наследование есть через прототипы, хотя это уже неактуально в новом JS наследование правильное
Ответить | Правка | Наверх | Cообщить модератору

122. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Aukamo (ok), 30-Июл-21, 02:00 
С чего вы вдруг взяли что в Rust есть ООП? ООП держится на 3х китах: инкапсуляция, наследование, полиморфизм. Можете начать пояснять начиная с наследования.
Ответить | Правка | К родителю #60 | Наверх | Cообщить модератору

140. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Хан (?), 30-Июл-21, 02:33 
Ключевое слово "Скрестить" ФП и ООП... понятное дело что нормальным ООП там и не пахнет
Ответить | Правка | Наверх | Cообщить модератору

147. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Aukamo (ok), 30-Июл-21, 02:44 
Т.е. ваше экспертное мнение таково, что LINQ для C# как и сам С# не состоятелет в силу того что используются 2 таких несовместимых подхода как ФП и ООП?
Ответить | Правка | Наверх | Cообщить модератору

152. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Хан (?), 30-Июл-21, 02:52 
C# изначально спроектирован как ООП язык, различные фичи добавлялись походу, так что дефолтная концепция не пострадала

Скажи еще что у Java плохое ООП из за того что туда добавили лямбды

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

160. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Aukamo (ok), 30-Июл-21, 03:04 
RTFM: https://doc.rust-lang.org/book/ch17-00-oop.html
Ответить | Правка | Наверх | Cообщить модератору

171. "Выпуск языка программирования Rust 1.54"  –5 +/
Сообщение от Хан (?), 30-Июл-21, 03:22 
Наследования нет))) лол

Тупо почти структуры...

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

316. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (316), 30-Июл-21, 12:14 
А чего вы его здесь минусуете? Ну, ведь, действительно же в Rust нет нормального наследования.
Ответить | Правка | Наверх | Cообщить модератору

143. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от adolfus (ok), 30-Июл-21, 02:38 
Не три кита, а гораздо больше, причем главный из них -- это обмен сообщениями между объектами, чтобы передавать информацию, а не вызовы "методов". Кстати, в C++ вообще нет методов, только функции-члены классов.
Ответить | Правка | К родителю #122 | Наверх | Cообщить модератору

150. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Aukamo (ok), 30-Июл-21, 02:49 
> Не три кита, а гораздо больше

Нить рассуждений потеряна. Я выступил с критикой сравнения стуктур в Rust с ООП, в то время как вы.. не знаю о чём говорите.


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

527. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от adolfus (ok), 31-Июл-21, 15:32 
>> Не три кита, а гораздо больше
> Нить рассуждений потеряна. Я выступил с критикой сравнения стуктур в Rust с
> ООП, в то время как вы.. не знаю о чём говорите.

О том, что "три кита" инкапсуляция, наследование, полиморфизм для ООП вторичны, а первичен обмен сообщениями. Эти три кита появились в дискурсе потому, что не смогли в сообщения.

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

191. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 04:05 
>инкапсуляция, наследование, полиморфиз

Никакого отношения к ООП не имеет.
Это система типов страуструпа.

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

205. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Хан (?), 30-Июл-21, 04:30 
Бредишь истинным ООП Алана Кея на клеточном уровне? Лол конечно, но это лютые тормоза... для примера можешь написать программу где каждая функция будет отдельным процессом и любой чих будет вызывать ОС для передачи сообщений через пайпы
Ответить | Правка | Наверх | Cообщить модератору

231. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (246), 30-Июл-21, 05:36 
Концепция не имеет никакого отношения к вопросам производительности. Концепция - одно, реализация - другое.

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

А вот полиморфизм обязателен - это просто другая формулировка принципа контрактов. А без виртуальных функций с соответствующим оверхедом никакого полиморфизма не будет, так что всегда в общем случае будет dispatch table. Называть это вызовом метода или обменом сообщениями - вопрос терминологии, суть та же. Принимать «неизвестные сообщения» (скажем, в специальный метод, как в Ruby), или не давать такое скомпилировать - вопрос дизайна языка, добавить или убрать случай «not found in dispatch table» можно всегда».

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

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

253. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Хан (?), 30-Июл-21, 07:48 
Действительно я то думал, че смолтолк так взлетел с его передачей сообщений! Прям да, тормоз был всех времен и народов
Ответить | Правка | Наверх | Cообщить модератору

228. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (246), 30-Июл-21, 05:26 
На трёх китах держится плоская земля. А для ООП достаточно понятия контракта и объекта как чёрного ящика, поддерживающего контракты.

Способ реализации в плюсах, позаимствованный из Симулы - это лишь способ реализации. Читайте Алана Кея, короче.

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

259. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Хан (?), 30-Июл-21, 08:01 
ООП Кея больше подходит для сетей, в чем и нашло себя в виде микросервисов.... но в программе ООП по Кею не канает
Ответить | Правка | Наверх | Cообщить модератору

413. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (547), 30-Июл-21, 19:12 
Если воспринимать буквально, то не канает.

А если немного переформулировать, и добавить типизации (что намного чаще полезно, чем вредно), то получается:

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

Тогда внезапно получается, что:
1. Инксапсуляция нужна ("черный ящик", во внутренности которого не лезем),
2. Полиморфизм нужен (привязка к контрактам, конкретный объект не важен),
3. А вот наследование вообще мимо. И, действительно, наследование всегда заменяется композицией, и зачастую в языках, где есть наследование, композиция предпочтительнее (см. composite reuse principle).

При этом и Rust, и Go получаются вполне себе ООП.

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

415. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (547), 30-Июл-21, 19:18 
Другими словами, представь себе, что в С++ ты можешь наследоваться только от pure abstract классов. После чего, чтобы не городить кучу микрообъектов и ручное делегирование, добавим трейты как в Scala.

Что-то принципиально изменилось? Да ничего.

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

282. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от n00by (ok), 30-Июл-21, 09:12 
> Нормальный синтаксис, просто для некоторых незнакомый и непривычный, потому что нет опыта
> с ML-языками например.

Это не синтаксис. Когда вместо return пишется просто значение - в случае ML это семантика. Получается, что Rust исходно функциональный с императивными возможностями. Отсюда все споры и отторжение его как "замены Си".

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

93. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Rev (?), 30-Июл-21, 00:33 
Адовый синтаксис только если использовать дженерики и указание времён жизни. Но есть секрет - можно их не использовать :-D
Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

125. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Aukamo (ok), 30-Июл-21, 02:03 
А ещё можно разобраться в том как это всё работает, говорят помогает. + относительно новые версии раста много чего уже делают сами (вроде как в 1.28+ много сахара добавили)
Ответить | Правка | Наверх | Cообщить модератору

121. "Выпуск языка программирования Rust 1.54"  +6 +/
Сообщение от topin89 (ok), 30-Июл-21, 01:58 
Из всех языков на выбор, ты выбрал C++ для сравнения? C++?

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

Язык, в котором в try catch можно упихнуть всю функцию, примерно так:

void func() try {} catch(...) {}

Язык, в котором для проброса rvalue-ссылок нужно городить огород из шаблонов и std::forward? Вместе с самими rvalue/lvalue ссылками.

Язык, в котором до недавней редакции простая конкатенация векторов превращалась в квест с двумя begin'ами и одни end'ом?

Вместе с тем в новой редакции появились концепты с ещё одним новым, интересным синтаксисом?

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

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

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

Rust -- это C++ без веществ, а не наоборот. Не уверен, помогут ли эпохи остаться таковым, но очень надеюсь.

Чего мне не хватает в нём -- это пользовательские литералы, типа 10ms вместо Duration::from_millis(10). Было предложение, но что-то заглохло.

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

129. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Aukamo (ok), 30-Июл-21, 02:22 
Если постараться, на Rust можно написать код который будет куда хуже того что вы привели. Много кто из новичков жалуется не неочевидность trait-ов. Библиотеки, в том числе стандартная, имеет тенденцию раскрывать потенциал структур через trait-ы, например используя `std::fs::File` нужно ещё `std::io::{Read, Write}` подключить. Обращу ваше внимание что они даже не в одном модуле находятся. И эта же ситуация возникает повсеместно во всех crate-ах, это уложняет понимание библитек без хорошой документации. В целом, ко всему есть доступ, но путаница всё равно возникает.

Ещё можно критиковать Rust за сырость и относительно частые deprecation. На С++ можно использовать последнюю версию GCC\Clang и просто ставить `std=c++11` или какую либо ещё версию, обновляется ли rustc\cargo если ставишь override на старую версию не знаю. Тот же С++ с нами уже очень давно, много проблем уже обросли костылями.

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

325. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Ordu (ok), 30-Июл-21, 13:25 
> Обращу ваше внимание что они даже не в одном модуле находятся.

В генерируемой документации есть ссылки на все трейты типа. Ты можешь вниз прокрутить, или в боковой панели посмотреть. И им не надо находиться здесь: что такое трейт Read, Write, я знаю и так. Когда используешь крейт постоянно (например std) все основные трейты его знаешь, иногда реализуешь их не консультируясь с документацией на тему того, как там в точности выглядит декларация методов. В std таких грядка -- Read, Write, Iterator, PartialEq, PartialOrd ... Их запоминаешь со временем примерно так же, как в C++ запоминаешь как перегружать те или иные операторы, и пишешь заголовок int operator+(чётотам) не консультируясь с документацией.

> это уложняет понимание библитек без хорошой документации.

Да. Но без документации разобраться сложно с библитекой на любом языке. В расте же есть гарантия документации -- может быть плохой документации, если разработчик не озаботился, но по-крайней мере иерархический html, с модулями, типами, с трейтами типов, и всякой прочей информацией ты получишь. Этим может заниматься IDE, наверное, выводя всю информацию о типах, но я пользуюсь сгенерённой документацией. Потому как не нашёл способ сделать всё это удобно в emacs -- всплывающие кстати и некстати подсказки я пробовал, мне они мешают. Может можно сделать, чтобы отдельная панель была для отображения структурированной информации, но emacs не дружит с мышью, её поддержка сделана через привычное для emacs'а место костылями, поэтому я предпочитаю браузер.

> Библиотеки, в том числе стандартная, имеет тенденцию раскрывать потенциал структур через trait-ы, например используя `std::fs::File` нужно ещё `std::io::{Read, Write}` подключить.

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

> На С++ можно использовать последнюю версию GCC\Clang и просто ставить `std=c++11` или какую либо ещё версию, обновляется ли rustc\cargo если ставишь override на старую версию не знаю.

В расте есть эдишны. Edition 2015, Edition 2018, и тут на подходе Edition 2021. Ты можешь использовать распоследний компилятор с любым эдишном.

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

512. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Aukamo (ok), 31-Июл-21, 11:01 
Не знаю, может меня не так поняли, я Rust пользуюсь, относительно, давно. Критика была не вида "в Rust нету .." а, скорее, "хотелось бы чтобы было ..". Я понимаю, что к Rust можно привыкнуть, или, как минимум, попытаться. Да и то что я им пользуюсь никак не умоляет факт наличия косяков, ну прям совсем.
Ответить | Правка | Наверх | Cообщить модератору

144. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от Хан (?), 30-Июл-21, 02:39 
Ключевое слово "Синтаксис" C++, а не детали реализации его стандартной либы или грязных костылей во имя совсестимости...

А Rust чисто синтаксис адовее C++ и это без всяких требований обратной совместимости не только с C98 но и с C89...

Казалось бы делайте с чистого листа, вы не обременены различными комитетами но все как всегда

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

170. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 30-Июл-21, 03:19 
*C++98
Ответить | Правка | Наверх | Cообщить модератору

312. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним зеленый (?), 30-Июл-21, 11:36 
Серьезно, прочитайте уже https://habr.com/ru/post/532660/ а то опять про синтаксис, когда не в нем проблема. А в новых фичах, которых нет в С++ - отсюда сложность.
Ответить | Правка | К родителю #144 | Наверх | Cообщить модератору

332. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Ordu (ok), 30-Июл-21, 14:00 
Хорошая ссылка. Но мне кажется не поможет. Люди лезущие на баррикады из-за синтаксиса -- это безмозглые фанатики с мозгами отутюженными идеологией. Им бесполезно что-то объяснять.

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

Но когда претензии к синтаксису -- это всё, сливай воду.

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

343. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Хан (?), 30-Июл-21, 14:52 
Ты ссылку на хабр кинь пацанам из Microsoft, а то они не знали как нужно  и значит сделали C# с одним из самых чистых и читаемых синтаксисов в статически типизированных языках
Ответить | Правка | К родителю #312 | Наверх | Cообщить модератору

349. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (349), 30-Июл-21, 15:56 
Как-то по последним версиям шарпа не видно что это "одним из самых чистых и читаемых синтаксисов в статически типизированных языках" там уже навортили почти как в C++. Хотя у ms есть такой чистый и очень читабельный язык - это F#.
Ответить | Правка | Наверх | Cообщить модератору

438. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним зеленый (?), 30-Июл-21, 20:29 
А как же сборщик мусора в виртуальной машине? Это сильно упрощает многое по синтаксису кмк.
Ответить | Правка | К родителю #343 | Наверх | Cообщить модератору

560. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Хан (?), 01-Авг-21, 03:41 
Даже если вручную удалять обьекты в C# синтаксис читается сразу, а не после пару банок темного нефильтрованного
Ответить | Правка | Наверх | Cообщить модератору

369. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Кир (?), 30-Июл-21, 16:48 
> И они при этом _не могут_ полностью заменить макросы для такой банальной вещи, как определить, под какую ОС компилируем

Ты правда настаиваешь, что

#[cfg(target_os = "macos")]
fn macos_only() {
  // ...
}

чем-то принципиально лучше чем
#ifdef __linux__
void linux_only() {
}
#endif
?
Как по мне, те же шарики, вид сбоку. Как минимум, в сишном варианте писать меньше: можно в один блок насовать много платформоспецифичного.

> Язык, в котором в try catch можно упихнуть всю функцию, примерно так: void func() try {} catch(...) {}

Да просто как жить-то теперь?

> Язык, в котором для проброса rvalue-ссылок нужно городить огород из шаблонов и std::forward? Вместе с самими rvalue/lvalue ссылками.

о, ты слышал про std::forward, молодец. а про std::move слышал?

> Да по библиотекам, unique_ptr должен был быть очень простой, очень эффективной обёрткой над обычным указателем

Он такой и есть ))

> Вместе с тем в новой редакции появились концепты с ещё одним новым, интересным синтаксисом?

Появились, и что? Полезная штука.

template<int N>
concept power_of_two = (N & (N-1)) == 0;

template<int N = 256>
auto fft(/*...*/) requires power_of_two<N> {
    cout << "Doing fast Fourier transform by " << N << " samples." << endl;
    //...
}

проделай такое на ржавом, пример в студию.

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

562. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (571), 01-Авг-21, 08:36 
Зря спорите, по хитровыкрученным конструкциям оба хороши.
Ответить | Правка | Наверх | Cообщить модератору

628. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним зеленый (?), 02-Авг-21, 13:44 
>проделай на расте

Я не тот чел, но вот константная функция которая вычисляется во время компиляции.

const fn power_of_two(n: u32) -> u32 {
    if n & (n-1) != 0 { panic!("oops"); }
    return n;
}

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

655. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Кир (?), 04-Авг-21, 00:22 
Нет, мне не нужно, чтобы функция вычислялась в компайл-тайме, мне нужно, чтобы компилятор проверил, что шаблон параметризуется не абы каким целым N, а степенью двойки. А работать функция должна в рантайме, выполняя N-точечное БПФ на данных, скажем, читаемых из файла.
Ответить | Правка | Наверх | Cообщить модератору

661. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним зеленый (?), 05-Авг-21, 20:42 
Пока не запилили в языке, вот таким макросом можно:

macro_rules! const_assert {
    ($x:expr $(,)?) => {
        const _: [(); 0 - !{ const ASSERT: bool = $x; ASSERT } as usize] = [];
    };
}

Это ассерт статических значений - стадии компиляции. (Из крейта static_assertions)
Ответить | Правка | Наверх | Cообщить модератору

662. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Кир (?), 05-Авг-21, 23:33 
Мои глаза.... Ты должен мне глаза!
Ответить | Правка | Наверх | Cообщить модератору

666. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Ф1 (?), 06-Авг-21, 13:58 
> Мои глаза.... Ты должен мне глаза!

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

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

667. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 07-Авг-21, 11:17 
Чем-то отличается от устаревшего?

#define STATIC_ASSERT(COND,MSG) typedef char static_assertion_##MSG[(COND)?1:-1]

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

668. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Кир (?), 07-Авг-21, 14:45 
Серьезно? Смотри, static_assert в C++:

template<int N = 256>
auto fft(/*...*/) {
    static_assert((N & (N-1)) == 0, "Assert message");
    cout << "Doing fast Fourier transform by " << N << " samples." << endl;
    // ...
}

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

669. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 07-Авг-21, 17:49 
> Серьезно? Смотри, static_assert в C++:
>
template<int N = 256> 
> auto fft(/*...*/) {
>     static_assert((N & (N-1)) == 0, "Assert message");


"Серьезно? Смотри, жопа!"
Он привел _реализацию_ static_assert на мкаросах (а не вызов
const_assert!(std::mem::size_of::<String>() == 24);)

ты - просто вызов (реализованной где-то в недрах компилятора).

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

670. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Кир (?), 09-Авг-21, 02:30 
Ты не поверишь, какой магии можно накрутить в C++, но разве этим стоит хвастаться? По-моему, реализованный в компиляторе static_assert в миллион раз лучше всяких коловерчений на расте, не говоря уж про концепты. Именно эту мысль и хотелось подчеркнуть )
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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