|
|
|
|
5.17, Аноним84701 (ok), 13:00, 14/04/2019 [^] [^^] [^^^] [ответить]
| +7 +/– |
> А останется Си.
Не останется. Для этого нужно не только чистить (т.е. удалить пространство имен, заменить нормальный, интегрированный непосредственно с ЯП движок макросов на "левый", отдельный препроцессор, умеющий лишь чуть больше, чем search&replace, удалить излишне строгую и гибкую типизацию, эти ваши новомодные трейты и дженерики), а еще и добавлять -- например, кучу исторически обусловленных UB.
| |
|
|
|
2.62, Аноня (?), 18:17, 14/04/2019 [^] [^^] [^^^] [ответить]
| +10 +/– |
Из плюсов
1. Интересная асинхронная модель
2. Отсутствие Null, очень мощный патерн-мачинг, Энамы со значениями
2. Абстракция от любых небезопасных взаимодействий с указателями
3. Возможность любых небезопасныйх действий с указателями в unsafe
3. FFI C, можно любую библиотеку в пару кликов завернуть
2. Единый стиль форматирования заложен в язык Rustfmt
3. Rustup как менеджер установленных версий раста, очень удобно
4. Cargo, очень удобно
Из минусов (имхо)
6. Куча больных фанатиков, которые после месячного опыта в JS лезут куда не надо
| |
|
3.90, Аноним (90), 23:22, 14/04/2019 [^] [^^] [^^^] [ответить]
| –6 +/– |
> Интересная асинхронная модель
Ничего интересного, шлём мессаджи в чаннелах.
> Отсутствие Null, очень мощный патерн-мачинг, Энамы со значениями
Option, pattern-matching слизан со Scala, он не дотягивает всё равно, Энамы со значениями - ололо, ну никто такого не умеет.
> Абстракция от любых небезопасных взаимодействий с указателями
В любых managed языках
> FFI C, можно любую библиотеку в пару кликов завернуть
Ok
> Единый стиль форматирования заложен в язык Rustfmt
Зачем это в языке. Решается сторонними тулами
> Rustup как менеджер установленных версий раста, очень удобно
Ok
> Cargo, очень удобно
Решается автоматическими системами сборки
| |
|
4.113, Аноним (113), 07:24, 15/04/2019 [^] [^^] [^^^] [ответить]
| +14 +/– |
Тут весь прикол в том, что антинулл абстракции и паттерн-мэтчинг поставили на низкровневый язык. Так что все эти ваши "слизано со Скала" и "в 100500 языках есть" не аргумент - есть-то есть, но обычно это языки с ГЦ, а то и интерпретируемые.
| |
|
|
2.73, Аноним (113), 20:42, 14/04/2019 [^] [^^] [^^^] [ответить]
| +6 +/– |
В нем же безопасная память без GC, это разве не киллер-фича?
| |
2.91, Аноним (91), 23:35, 14/04/2019 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Давайте только серьезно: на сколько нормальный этот язык?
Вот смотри. Пргер пишет разработчикам - я не моуг сделать ан вашем расте вот такую вешь. Разарабы отвчеют - оке, щас добавим в язык
| |
|
3.161, burjui (ok), 11:14, 17/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
Наглое враньё. Разработчики отвечают: пишите RFC, мы почитаем и подумаем. Иногда в язык что-то из RFC попадаёт. Иногда даже в изначальном виде.
| |
|
|
1.7, Анонимс (?), 12:16, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
Что говорят бенчмарки Rust vs. C++, какой язык более производительный и удобный в разработке? Или ещё пока рано делать какие-то выводы?
| |
|
|
3.24, rustshlak (?), 13:28, 14/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
выборка не репрезентативная
в отличии от раста
на С и С++ можно написать код по разному
и в примере как раз не самые лучшие реализации
| |
|
4.26, Аноним84701 (ok), 13:40, 14/04/2019 [^] [^^] [^^^] [ответить]
| +3 +/– |
> и в примере как раз не самые лучшие реализации
Ну да, все так - проект "The Great Computer Language Shootout" слишком молод, за чуть менее чем 20 лет не успели вылизать реализации:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/revcom
всего 6 штук плюсовых.
И фильтр там хитрый стоит -- так-то туда код может любой желающий запостить (при мне ЛОРовец закоммитил более быструю реализацию чего-то для своего любимого ЯП), но вот анонимы с опеннета фильтруются только так, иначе бы они давно показали, как надо правильно реализовать! :)
| |
|
5.35, rustshlak (?), 14:18, 14/04/2019 [^] [^^] [^^^] [ответить]
| –3 +/– |
у меня достаточно знаний что бы увидеть почему реализация на расте опередила на чуть чуть реализацию на СИ
и как сольет раст если из реализации на СИ это устранить
а вам слабо назвать это причину ?
| |
|
6.42, Ordu (ok), 14:55, 14/04/2019 [^] [^^] [^^^] [ответить]
| +7 +/– |
> у меня достаточно знаний что бы увидеть почему реализация на расте опередила на чуть чуть реализацию на СИ
> и как сольет раст если из реализации на СИ это устранить
Почему же?
У меня нет желания копаться в коде и профайлить его, тем более что у меня есть generic объяснение: это работа оптимизатора. Меньше десяти процентов производительности, на фоне нескольких вариантов C'шной реализации -- это стопудов работа оптимизатора, C просто упёрся в невозможность оптимизировать некоторые вещи, в силу того что он позволяет слишком много свобод программисту. Искусственный интеллект оптимизатора недостаточно интеллект, чтобы сообразить некоторые вещи, а программист недостаточно искусно владеет C, для того, чтобы эти вещи выразить в коде в виде понятном для оптимизатора.
Строгость rust'а позволяет иногда оптимизатору оптимизировать лучше. Или программисту меньше парится о возможных ошибках, потому как они невозможны. Тут ярким примером может служить utf8 строка: rust валидирует эти строки на входе, что с одной стороны замедляет, например, работу BufReader::read_line, но с другой стороны позволяет затем работать со строкой исходя из предположения, что мы имеем дело с валидным utf8, не добавляя в код условных переходов на случай невалидного utf8, и таким образом делая быстрее любой код итерирующий по символам. То есть вместо того, чтобы при каждом проходе по строке производить валидацию параллельно, мы делаем её один раз. И это может проявлятся не только в случае utf8 строк, но и в случае, например, указателей, потому что компилятор rust'а И программист, полагаются на то, что эти указатели ненулевые, в то время как C'шный код вынужден постоянно держать в уме возможность для любого указателя быть нулевым.
Это, кстати, создаёт impedance mismatch на границе между rust'овым кодом и C'шным, потому что получая, например, строку из C'шного кода (то есть char*), мы должны проверить не NULL ли он, проверить валидность этой строки (потому что C запросто может жонглировать невалидными utf8 строками), и только после этого начинать какую-то осмысленную работу с этой строкой (это ещё если не придётся упереться в вопросы lifetime'ов, и не придётся рубить эти проблемы как гордиев узел посредством растового аналога strdup, хотя подобные проблемы, наверное, и в грамотном C'шном коде будет решаться так же, в rust'е они просто ярче проявляются и их сложнее не заметить). Но это я отвлёкся от темы.
Помимо этого может сказываться большая выразительность языка. Например, rust для итерации позволяет использовать не только циклы, но и итераторы с их функционалами, типа map и reduce, которые гораздо удобнее оптимизатору для понимания происходящего, и более того ограничивают программиста загоняя его в узкие рамки, и вынуждая писать код, который легко векторизовать.
Но это всё теоретические сопли, рассуждения из общих соображений. И я бы с радостью посмотрел бы на подробное сравнение C'шного кода и Rust'ового, чтобы с профайлером, ассемблерными дампами и прочими атрибутами, которое бы либо подтвердило мои общие соображения, либо опровергло бы их, дав альтернативное объяснение, которое лучше отражает реальность. Но сам я не готов лезть и тратить час, два или полдня на это.
| |
|
7.69, Forth (ok), 19:09, 14/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Если говорить про область системного ПО, то там часто с UTF-8 дела иметь не приходится.
Что касается null, то многие функции пишутся с расчетом, что null туда не прилетит и никаких проверок не делается в релизном коде. В дебажном компилится макросами assert. Где тут потери производительности?
Итераторы в С всегда делались на макросах или на структурах, если нужно.
Возвращаешь вместо указателя на коллекцию итератор и функцию next.
P.S. Сам перехожу на Rust с C, там где он был мне C был нужен. Если буду писать на Rust быстрее, чем на C, уже стоило того.
| |
|
8.74, Ordu (ok), 20:45, 14/04/2019 [^] [^^] [^^^] [ответить] | +7 +/– | Да Ты читаешь файл конфигурации, в нём может быть много чего, в том числе и utf... текст свёрнут, показать | |
|
9.86, Forth (ok), 22:40, 14/04/2019 [^] [^^] [^^^] [ответить] | –1 +/– | Я про то, что большой вопрос сколько данных на самом деле содержат utf-8 В Java... большой текст свёрнут, показать | |
|
10.96, Ordu (ok), 00:22, 15/04/2019 [^] [^^] [^^^] [ответить] | +2 +/– | Some None будет возникать, если мы передаём в функцию или извлекаем из какой-ни... текст свёрнут, показать | |
|
11.122, Forth (ok), 10:27, 15/04/2019 [^] [^^] [^^^] [ответить] | –1 +/– | В C можно не передавать null и делать assert и ничего не проверять Статический ... текст свёрнут, показать | |
|
|
|
|
9.88, Forth (ok), 22:42, 14/04/2019 [^] [^^] [^^^] [ответить] | –1 +/– | Так тут assert не при чем Assert для отлова ошибок в своем коде, а не для прове... текст свёрнут, показать | |
|
|
|
6.104, Аноним (104), 01:52, 15/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
> у меня достаточно знаний что бы увидеть почему реализация на расте опередила
> на чуть чуть реализацию на СИ
> и как сольет раст если из реализации на СИ это устранить
> а вам слабо назвать это причину ?
Не говоришь потому, что боишся быть опозореным.
| |
|
|
4.28, zo0M (ok), 13:44, 14/04/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
давайте факты в студию, или вы так, заради "потрындеть"? мне ваша полемика до одного места
я вам бенчмарк, а теперь вы мне свой, вот тогда и поговорим серьезно.
| |
|
5.36, rustshlak (?), 14:23, 14/04/2019 [^] [^^] [^^^] [ответить]
| –8 +/– |
это не ваш бенчмарк
а я достаточно уверен в себе что бы никому ничего не доказывать
в прочем лишний раз убеждаюсь что растоманы это похапе недоучи
про алгоритмическую сложность их не учили
какой то чудо растоман видимо только закончил школу
и применил свои знания на бенчмарке
получив чуть выиграша против "тупой реализации на СИ"
и стадо растоманов уже подумало что их раст впереди ЛОЛ))))
сравните лучше одинаковые алгоритмические сложности на СИ и расте
и поймете в какой попе ваш раст
| |
|
6.64, Аноня (?), 18:37, 14/04/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
Rust и c/с++ не настолько отличаются в производительности, чтобы серьёзно их сравнивать. Ну получите вы отличие в 7% И что?
Перепишите всё с сей на раст или наоборот?
Дело не в производительности, и производительность не первоочередная задача у раста.
| |
|
7.101, Аноним (101), 00:55, 15/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
У раста вообще не понятно какая задача. Так замусорить синтаксис только ради введения семантики владения памятью - это надо было додуматься. А если кто-то придумает как дедлокобезопасность реализовать - опять новый язык с кучей мусора в синтаксисе будет?
| |
|
8.116, Аноня (?), 08:07, 15/04/2019 [^] [^^] [^^^] [ответить] | +/– | Нет, некоторые проблемы нереально решить средствами языка Круг задач, решаемый ... текст свёрнут, показать | |
|
9.124, Аноним (124), 11:00, 15/04/2019 [^] [^^] [^^^] [ответить] | +/– | а ещё собственным определением понятия ООП, которое тоже ограничено и не включае... текст свёрнут, показать | |
|
|
|
6.93, НяшМяш (ok), 23:50, 14/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Вас в детстве языком без указателей и UB били? Что за ненависть к просто ещё одному языку? Почему вы считаете, что лучше опозориться прилюдно, чем пройти мимо новости?
| |
6.123, Аноним (123), 10:56, 15/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Так ты и не доказывай, просто объясни как по-твоему можно быстрее написать код. А ходить и без дела поливать говном людей, которые меньше тебя разбираются в языке, выставляет тебя самого как недавно школу окончившего.
| |
|
|
|
|
|
3.57, Аноним (57), 17:07, 14/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Трындец, вот это фанбойство в терминальной стадии: макросы, рубины и непревзойденная ржавчина в одной куче с солнцеликой восторженностью.
| |
|
2.34, Ordu (ok), 14:10, 14/04/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Что говорят бенчмарки Rust vs. C++, какой язык более производительный и удобный в разработке?
Бенчмарки тебе ничего не скажут. rust работает на том же уровне, что и C++, и абстракции использует схожие, а это значит, что в бенчмарках отличия будут в обе стороны и ничего не скажут осмысленного. Про удобство в разработке они тоже ничего не скажут тебе. Если вопрос интересен, то у тебя есть два способа исследовать его:
1. читать в интернете посты в блогах вида "я писал на C++ 20 лет, и решил попробовать rust"
2. писать на C++ 20 лет, а потом попробовать rust.
| |
|
|
4.55, Ordu (ok), 16:50, 14/04/2019 [^] [^^] [^^^] [ответить] | +1 +/– | Во-первых, потому что выше вопрос был про C , а не про C Во-вторых, потому что... большой текст свёрнут, показать | |
4.65, Аноня (?), 18:42, 14/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
Ну потому что классов нет намеренно. Есть трейты и обобщения.
| |
|
|
|
1.9, developer (??), 12:25, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –17 +/– |
Какая разница производительный он или удобный? читаем "развиваемого проектом Mozilla" - то есть с учетом падения доли лисо-браузера под удар ставиться и само развитие и поддержка ражавчины.
Следовательно энтузиастам поковыряться вечером дома - зеленый свет, но как-то ассоциировать это перспективой и ставить на это уже перебор.
| |
|
2.10, username (??), 12:29, 14/04/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
Да ладно, вон уже амазон ставку сделал на длительную поддержу. А вы все не стоит да ни к чему.
| |
2.18, zo0M (ok), 13:01, 14/04/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
ох уж эта диванная аналитка от местных икспердов... /facepalm
| |
2.52, мурзилла (?), 16:36, 14/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
не переживайте, мы зарабатываем не на браузере, а на пилежке инвесторских бабок.
инвесторы как раз одобряют их выкидывание в бездонные ямы типа хруста, а браузер...браузер как-нибудь бесплатные любители пусть напишут.
Дизайнер для очередного изменения положения деталей интерфейса тоже недорого, в общем.
| |
|
3.128, Аноним (124), 11:13, 15/04/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
> инвесторы как раз одобряют их выкидывание в бездонные ямы типа хруста
не суди по своему совку об остальном мире. если тут пилёж и выкидывание, то это не означает, что этим занимаются инвесторы.
| |
|
|
|
2.32, Ordu (ok), 14:03, 14/04/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
Нет, по-моему, ещё не осилили. Трейты для [T; N], реализуются макросами для всяких разных N от 1 до 32 (или типа того). То есть, я не заглядывал в этот библиотечный код уже год или два, но это видно в доках, плюс я думаю, я бы заметил в release notes, если бы что-то изменилось.
| |
|
1.12, Аноним (12), 12:52, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –7 +/– |
"Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo, позволяющий получить нужные для программы библиотеки в один клик" - оно что, GUIвое?
| |
1.21, Аноним (21), 13:14, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –5 +/– |
Эталонное ненужно, никакой совместимости с C/C++ или чем нибудь другим, даже в 1.0 не было union, только сейчас добавили атомики (в С11/C++11 были уже, а с расширениями еще раньше). Уже мертвый язык.
| |
|
|
|
|
|
6.89, Аноня (?), 22:49, 14/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
> С помощью этого нельзя сделать #include <stdlib.h>
Назавите причину, по которой компилятор раста должен работать с препроцессором СИ?
Как вы вообще себе это представляете? Я в недоумении
| |
|
|
8.150, Аноня (?), 19:53, 15/04/2019 [^] [^^] [^^^] [ответить] | +/– | Берёте библиотеку на сях, заворачиваете её в rust обёртку и используете из своег... текст свёрнут, показать | |
|
|
6.158, KonstantinB (ok), 10:51, 16/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
А еще с помощью этого нельзя сделать const leftPad = require('left-pad'). Беда, огорчение!
| |
|
|
|
|
2.39, Аноним84701 (ok), 14:36, 14/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
> даже в 1.0 не было union,
Вообще-то, растовый enum - это вполне себе "tagged union". Только вот проверку тэга там частенько можно сделать в компайлтайме, в отличие от …
| |
|
3.49, Аноним (21), 16:25, 14/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
А простой union они добавили просто так? Напоминаю что язык для системщины.
| |
|
4.60, Аноним84701 (ok), 17:33, 14/04/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Напоминаю что язык для системщины.
И что вас так шокирует?
В асме нет никаких union, да и в си без них можно вполне обойтись.
Unon - всего лишь "сборник" возможных типов, для удобства (в довольно специфичных случаях) чтобы не пихать все в глобальное пространство имен.
Напоминаю, что в ржавчине есть дженерики, dynamic-dispatch и привод куска памяти к определенному типу (хоть и в ансейфе).
И вообще, когда начинается пляска "я точно знаю, что в этом куске памяти вооот этот вот тип будет" -- это все в unsafe.
ЗЫ: посмотрел -- оно действительно в ансейфе :)
https://doc.rust-lang.org/reference/items/unions.html
| |
|
|
2.61, Junior frontend developer (?), 17:53, 14/04/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
Простой union небезопасен и потому был исключен из дизайна. Вроде позже добавили как часть небезопасного надмножества языка.
Аналогично и с ООП. Это набор ~15 различных фич разной нужности и безопасности. В rust добавили/добавляют только те, что безопасны и не зарекомендовали себя как плохие практики.
| |
|
|
4.85, Анонн (?), 22:40, 14/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
> А для этого нужно было городить новый язычек?
А как ещё можно встроить нужную для этого семантику?
Нет безусловно можно было взять за основу си,вот только на выходе все равно получился бы ЯП, лишь местами и неудачным синтаксисом напоминающий си, но с другими парадигмами и иным подходом к разработке.
Т.е. по сути тот же "новый язычок". И толку тогда, тянуть все костыли и подпорки?
| |
|
5.100, Аноним (101), 00:40, 15/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
В Си++ семантика владения вроде растовской реализуется простым введением библиотечных типов-меток и обучением компилятора как их понимать. Только оказалось, что 80% таких проверок можно реализовать даже без меток, а растовская семантика переусложнена до невозможности.
| |
|
4.110, Аноним (113), 05:49, 15/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
А как ты в старо сделаешь, чтобы компилятор строго все проверял? Сделать-то можно, да только это уже все равно будет другой язык
| |
|
|
|
|
2.44, Ordu (ok), 15:26, 14/04/2019 [^] [^^] [^^^] [ответить] | +2 +/– | Что ты называешь нормальным ООП Как в java Как в C Как в Haskell Как в g... большой текст свёрнут, показать | |
|
3.47, хотел спросить (?), 16:18, 14/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
> тебе не может запретить писать ООП код на C или на ассемблере
Можно пожайлуста реализацию полиморфизама на C? Или инкапсуляции?
| |
|
4.53, Ordu (ok), 16:44, 14/04/2019 [^] [^^] [^^^] [ответить] | +2 +/– | В качестве примера инкапсуляции в C, ты можешь взять любую функцию любого C шног... большой текст свёрнут, показать | |
|
|
6.138, Ordu (ok), 13:34, 15/04/2019 [^] [^^] [^^^] [ответить] | –1 +/– | Там сокрыты все поля структуры MyObject Ты даже не знаешь как они называются Т... большой текст свёрнут, показать | |
|
7.165, хотел спросить (?), 12:11, 18/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Ты любишь динамическую типизацию?
Я чуть ли не прямым текстом написал, что нет.
Вот о чем мы тогда разговариваем?
--
По какой причине у нас нет доступа к филдам MyObject?
| |
|
8.166, Ordu (ok), 12:32, 18/04/2019 [^] [^^] [^^^] [ответить] | +/– | Но динамический диспатч -- это и есть динамическая типизация У тебя есть Parent... текст свёрнут, показать | |
|
|
10.169, Ordu (ok), 22:52, 18/04/2019 [^] [^^] [^^^] [ответить] | +/– | А, простите Ну дык тогда rust самое то, что нужно вам Там динамический диспатч... большой текст свёрнут, показать | |
|
|
|
|
14.181, Ordu (ok), 06:53, 27/04/2019 [^] [^^] [^^^] [ответить] | +/– | Нисколько не странный и не глупый, если ты дашь себе труд освежить в памяти бесе... большой текст свёрнут, показать | |
|
|
|
|
|
13.182, Ordu (ok), 08:26, 27/04/2019 [^] [^^] [^^^] [ответить] | +/– | И отношение типа has тоже Но мерками ООП невозможно оценивать не-ООП подход к п... большой текст свёрнут, показать | |
|
|
15.184, Ordu (ok), 01:26, 29/04/2019 [^] [^^] [^^^] [ответить] | +/– | Это не удивительно Именно поэтому я рекомендую взять Haskell и изучить его Я к... текст свёрнут, показать | |
|
|
17.186, Ordu (ok), 04:07, 01/05/2019 [^] [^^] [^^^] [ответить] | +/– | Не значит Точно так же это не значит, что они хуже Просто для тебя это закрыта... текст свёрнут, показать | |
|
|
19.188, Ordu (ok), 08:07, 02/05/2019 [^] [^^] [^^^] [ответить] | +/– | Как ты можешь видеть или не видеть, если ты не понимаешь, что такое ФЯ Естестве... текст свёрнут, показать | |
|
21.190, Ordu (ok), 10:53, 02/05/2019 [^] [^^] [^^^] [ответить] | +/– | Нет, не ясно Если тебе кажется, что тебе стало что-то понятно, то это иллюзия п... текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.58, Аноним (57), 17:13, 14/04/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Или инкапсуляции?
Вот в этом месте растофанатикам лучше бы молчать в тряпочку.
| |
|
3.54, Аноним (40), 16:47, 14/04/2019 [^] [^^] [^^^] [ответить] | +/– | ООП с наследованием, где методы и свойства наследуются автоматически Нет ООП ... большой текст свёрнут, показать | |
|
4.59, Ordu (ok), 17:19, 14/04/2019 [^] [^^] [^^^] [ответить] | +2 +/– | Deref DerefMut тебе в помощь Дайте мне определение синтаксического сахара Всё ... большой текст свёрнут, показать | |
|
5.63, Аноним (40), 18:31, 14/04/2019 [^] [^^] [^^^] [ответить] | –1 +/– | И где тут автоматическое наследование Всё же руками приходится делать, не Да ... большой текст свёрнут, показать | |
|
6.71, Ordu (ok), 19:42, 14/04/2019 [^] [^^] [^^^] [ответить] | +2 +/– | Написать метод deref self - ParentType Да надо И что Интерпретатор -- это... большой текст свёрнут, показать | |
|
7.81, Аноним (40), 21:55, 14/04/2019 [^] [^^] [^^^] [ответить] | –1 +/– | Спасибо за наводку, но я её правда не до конца ещё осознал Не могли бы вы приве... большой текст свёрнут, показать | |
|
8.95, Ordu (ok), 00:14, 15/04/2019 [^] [^^] [^^^] [ответить] | +/– | https doc rust-lang org book ch15-02-deref html Там правда примеры с умными ук... большой текст свёрнут, показать | |
|
9.106, Аноним (40), 02:53, 15/04/2019 [^] [^^] [^^^] [ответить] | –1 +/– | gt оверквотинг удален На мой же взгляд компиляцию не всегда имеет смысл делать... большой текст свёрнут, показать | |
|
|
|
|
|
|
7.159, KonstantinB (ok), 18:49, 16/04/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
Наследование наследованию рознь.
Наследование от абстрактного класса при четко выраженном отношении "is-a" - абсолютно ок. В Расте трейты с дженериками - вполне себе полноценная замена (при этом намного мощнее).
| |
|
|
|
4.157, KonstantinB (ok), 05:55, 16/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
"ООП с наследованием" - это и есть "как в C++ и Java". К ООП концепция наследования прямого отношения не имеет (см. Smalltalk).
| |
|
|
2.45, Вы забыли заполнить поле Name (?), 16:07, 14/04/2019 [^] [^^] [^^^] [ответить]
| –2 +/– |
> предлагается ставить язык с какого-то говносайта путём curl | bash вместо использования
> пакетов дистрибутива
патамушта разработчики сидять под Б-жественной Десяточкой, у них все так ставится.
> в коде по-видимому захардкожено, что некоторые фичи языка можно использовать только на найтли,
> а большинство пакетов как раз зависит от пакетов, зависящих от ночных фич.
патамушта не обмазаться наисвежайшим у этого поколения не принято, ага.
> пакет для Qt какая-то недоделанная альфа
ну это-то как раз единственное, что нормально. И может даже со временем альфа превратится в бету.
"зато у них разработчики дешовенькие!"
| |
2.56, Аноним (20), 16:56, 14/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
>в коде по-видимому захардкожено, что некоторые фичи языка можно использовать только на найтли, а большинство пакетов как раз зависит от пакетов, зависящих от ночных фич
найтли чаще всего требуется для низкоуровневых вещей вроде ассемблерных вставок, конпеляния чего-то специфического с no_std, работы с аллокаторами и т.п. Про "большинство пакетов" конечно чушь. Большинство пакетов, которыми ты интересовался.
| |
|
3.129, Ретроград (?), 11:24, 15/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Вот это, кстати, вообще ядерная пушка. Язык системного программирования, в котором нельзя делать ассемблерные вставки и собрать бинарник без стандартной библиотеки. Особенно веселила ситуация с no_std, который спустя несколько лет слезных просьб эмбеддед-разработчиков таки попал в stable, а необходимый для него panic_handler еще +много лет висел за feature gate и в итоге в стабильном компиляторе была фича, которую невозможно использовать. Кажется, буквально в декабре 2018 года это дело наконец-то пофиксили и теперь можно собирать standalone бинарники. Спустя 8 лет!
| |
|
2.103, FHD (?), 01:44, 15/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
>> Нет предсобраных пакетов
Ты совсем кретин, раз не понимаешь, что на выходе нужен нативный код под конкретную платформу!
В текущем виде ты можешь компилировать под платформы, который могут выйти позже
| |
|
1.79, Аноним (-), 21:30, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
> а теперь возможно использование перечислений ('#[range(0..10)]') и конструкций вида "#[bound(T: MyTrait)]";
О да! Вот увидит какой-нибудь непосвященный шпион такой код и нихрена поймёт! Круто!
| |
|
2.84, Аноним (84), 22:34, 14/04/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
Это да.
Вообще, из того, что в расте цикл
for x in 0..L
означает, что x принимает значения от 0 до L-1 (хотя 0..L как раз выглядит СИММЕТРИЧНЫМ диапазоном, в отличие от 0..=L) уже говорит о том, что язык был мучительно придуман во время сидения на унитазе.
Или, например, я могу создать range целых чисел и проитерировать по нему. При этом range char'ов я создать тоже могу, но проитерировать по нему - нет. Сюрпрайз!
Спасибо, жрите сами.
| |
|
3.105, kiwinix (?), 02:12, 15/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Не встречал надобности итерировать буквы ни в расте ни в других языках.
А значит претензия не засчитана.
П.С. Скорее всего не так уж и хотелось итерировать буквы
| |
|
4.115, Аноним (115), 07:33, 15/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
Отличительная черта фанатиков чего бы то ни было (будь то смартфон, DE/тайловый менеджер или язык программирования) - кричать НИНУЖНА, если в их объекте фанатизма нет того, что оказалось нужным обычным людям, не фанатикам.
Зачастую после крика НИНУЖНА следуют далеко идущие выводы о собеседнике.
| |
|
3.111, Аноним (20), 06:44, 15/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
>При этом range char'ов я создать тоже могу, но проитерировать по нему - нет
for c in b'a'..=b'z' {}
| |
|
|
5.118, Аноним (20), 09:51, 15/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
ясно. Ты не нашел в доках rust функцию char::from_u32 и правильные диапазоны в стандарте utf-8, и побежал жаловаться на форумы, какой плохой этот rust. Дай угадаю - ты веб-макака, да?
| |
|
6.119, Аноним (115), 09:58, 15/04/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
Не-не, дружок. Я её нашёл и мне ПРИШЛОСЬ её использовать - преобразовывать range char'ов в range int'ов, и итерировать уже по нему. Что в C я мог, кстати, сделать без всяких преобразований.
Но ты не отвлекайся. Скажи, пожалуйста, зачем в прекрасном расте есть возможность создать range символов, если по нему нельзя итерировать?
| |
|
5.121, scor (ok), 10:22, 15/04/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Не-не, дружок. Интересует юникод.
Вообще, да, странная ситуация.
С одной стороны есть вполне вменяемое объяснение почему нет итератора для чаров https://internals.rust-lang.org/t/iterating-over-range-char/8965/9
С другой стороны Ord таки задефайнен для чаров и ничто не мешало приделать итератор, раз уж определён порядок.
Но с третей стороны, например, в том же хаскеле такое делать можно, но совершенно не очевидно, чего хотел программист делая какой-нибудь
'''
map f ['а' ..'я']
'''
Это в рамках какого алфавита должно происходить? Или вот это что значит?
'''
λ> 'е' < 'ё'
True
λ> 'ё' < 'ж'
False
'''
Понятно, что это из-за:
'''
λ> 'е'
'\1077'
λ> 'ё'
'\1105'
λ> 'ж'
'\1078'
'''
Но если принять, что это нормальное поведение и так и должно быть, то получается, что мы хотим работать тупо с интами и чары тут ни при чём, а если хотим работать с каким-то конкретным алфавитом, то придётся его задавать руками (или брать из готовых библиотек) и работать уже не с Char, а явно с RusAbc, EngAbc или IcelandicAbc.
Возможно, что в расте хотели избежать этой неопределённости и намеренно не реализовали итераторы для чаров. Но зачем тогда там можно делать range для них, тоже не ясно. Выглядит как логическая дырка.:)
ЗЫ. Я вообще не специалист по расту. А выше мысли по мотивам нагугленного за десять минут материала.:)
| |
|
6.131, Ретроград (?), 11:50, 15/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Раст целиком и состоит из таких "логических дырок". Этот "язык системного программирования" спустя почти десятилетие своего развития до сих пор не определился со своей моделью памяти, что уж говорить о таких мелочах.
| |
|
7.162, burjui (ok), 11:42, 17/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
Будьте добры пояснить, что вы имеете ввиду. Выглядит так, будто вы высосали это из пальца/бутылки.
| |
|
|
|
|
|
|
1.94, Аноним (94), 23:54, 14/04/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
А всё же, есть ли альтернативы Расту? С более адекватным синтаксисом, с нулевой абстракцией, +- такой же скоростью, и не unsafe? И да, более-менее популярный.
| |
|
2.98, Аноним (101), 00:31, 15/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Чувак, если ты считаешь, что раст безопасен, то ты просто ничего не понимаешь в Computer Science.
| |
|
3.151, Аноня (?), 20:19, 15/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Computer Science.
Computer Science - это наука о компьютере, если кто не знал. Продолжайте, пожалуйста
| |
|
2.102, Аноним (101), 01:05, 15/04/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Вот тебе простой пример: переполнение стека. Чем в этом плане Раст лучше современных реализаций Си/Си++? Да ничем! А растоманы продолжают думать, что Раст гарантирует им безопасность. Не гарантирует он её на самом деле даже про память. А кроме памяти есть ещё куча разных опасностей.
| |
|
3.112, Аноним (20), 06:56, 15/04/2019 [^] [^^] [^^^] [ответить]
| +4 +/– |
раст гарантирует отсутствие неопределенного поведения за пределами блоков unsafe. Падения после переполнений стека, деления на ноль и т.п. не приводят к порче памяти. В общем, иди учи уроки и никогда не кидайся терминами, значение которых не понимаешь. (не говоря уже про "C/C++" - одно это выдает в тебе человека, который никогда ничего не писал ни на том, ни на другом)
| |
|
|
|
6.133, Аноним (-), 11:57, 15/04/2019 [^] [^^] [^^^] [ответить]
| –2 +/– |
Читай пост №102 по буквам. Лупу возьми. Потом ещё раз читай по моей ссылке до понимания что такое обход stack guard page.
| |
|
7.134, анонн (?), 12:12, 15/04/2019 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Читай пост №102 по буквам. Лупу возьми. Потом ещё раз читай по
> моей ссылке до понимания что такое обход stack guard page.
Т.е. ничего внятного? Понятно.
| |
|
|
Часть нити удалена модератором |
9.140, анонн (?), 13:44, 15/04/2019 [^] [^^] [^^^] [ответить] | +/– | Т е вы не знаете как объяснить то аморфное нечто, что вы, возможно, имели в вид... текст свёрнут, показать | |
|
|
|
|
|
|
|
|
1.108, Аноним (108), 05:43, 15/04/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Мужики, этот язык можно использовать без использования сети aka dependence hell?
Тупо поставил, и пишешь как в devc++, без всякой прочей хрени.
| |
|
2.146, JustCurious (?), 16:45, 15/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
Очень странно слышать аргумент про dependency hell в пользу С++, да еще и против Rust.
Но на всякий случай, если не троллите, для использования стандартной библиотеки интернет не нужен, и она тут побогаче чем в С++ (как минимум есть модули fs и net для работы с файловой системой и сетью соответственно, в С++ std::filesystem появился только в С++17, а сетевых примитивов до сих пор нет). Так что можете тупо поставить и писать, как в С++.
А для загрузки зависимостей - так и в С++ мы же их все с интернета загружаем, просто в линуксе мы привыкли это делять системным пакетным менеджером, а на других платформах свои велосипеды. Если уж нужно указать зависимость с локального хранилища, конечно же Cargo это умеет: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specify
| |
|
|
2.160, Junior frontend developer (?), 22:13, 16/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
> От синтаксиса блевать тянет, даже книжку дочитать не смог...
Никак не могу понять чем людям синтаксис не угодил? Типичный сиподобный язык с современными влияниями из ML.
Самый же что ни на есть дружелюбный и современный синтаксис, как тот же TypeScript или Kotlin
| |
|
3.163, burjui (ok), 11:51, 17/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
Понимаете, есть такая категория людей - приплюснутые. У них в череп только один вид синтаксиса влазит. Вот этот товарищ даже книжку дочитать не смог - так мозг от напряжения раздуло. Таких от Lisp нужно держать подальше во избежание порчи имущества разлетающейся мозговой тканью.
| |
|
|
1.172, Аноним (-), 19:45, 20/04/2019 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Я Раст "ниасилил", что мне делать? Синтаксис очень сложный.
Зачем нужны 2 вида переменных: которые можно изменять и, которые нельзя изменять. Это что за наркота? Разве не достаточно на все случаи жизни иметь всего 2 квалификатора типа: пременная (потенциально изменяемая) и константа (совершенно не изменяемая).
| |
|
2.175, Junior frontend developer (?), 00:36, 23/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Зачем нужны 2 вида переменных: которые можно изменять и, которые нельзя изменять.
> Это что за наркота? Разве не достаточно на все случаи жизни
> иметь всего 2 квалификатора типа: пременная (потенциально изменяемая) и константа (совершенно
> не изменяемая).
В расте так и есть. Неизменяемая по умолчанию, так как она проще и хорошая практика, поэтому изменяемая использует 2 слова, вместо const.
Есть конечно отличие в том, что этот модификатор изменяет поведение не только самой переменной, но и всего контента. Язык построен вокруг идеи контролируемой изменяемости.
| |
|
3.176, Аноним (-), 04:29, 24/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
>В расте так и есть...
Стоп! Погоди, а для чего нужен модификатор по имени "const", который имеется в в языке? По моему он должен быть на месте "неизменяемой по умолчанию" переменной. Растаманы плодят сущности?
| |
|
4.177, Аноним84701 (ok), 11:58, 24/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
>>В расте так и есть...
> Стоп! Погоди, а для чего нужен модификатор по имени "const", который имеется в в языке?
> По моему он должен быть на месте "неизменяемой по умолчанию" переменной. Растаманы плодят сущности?
Глупые и самонадеянные потому что - не спросили заранее на опеннете, как нужно правильно :(
Вместо этого сделали и написали что-то, зачем-то в документацию, где даже разъяснили разницу :
https://doc.rust-lang.org/reference/items/constant-items.html
https://doc.rust-lang.org/stable/book/ch03-01-variables-and-mutability.html
> Like immutable variables, constants are values that are bound to a name and are not allowed to change, but there are a few differences between constants and variables.
> First, you aren’t allowed to use mut with constants. Constants aren’t just immutable by default—they’re always immutable.
> You declare constants using the const keyword instead of the let keyword, and the type of the value must be annotated.
> Constants can be declared in any scope, including the global scope, which makes them useful for values that many parts of code need to know about.
> The last difference is that constants may be set only to a constant expression, not the result of a function call or any other value that could only be computed at runtime.
>
Хипстота, что с нее взять.
| |
4.178, Junior frontend developer (?), 18:16, 24/04/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Стоп! Погоди, а для чего нужен модификатор по имени "const", который имеется
> в в языке? По моему он должен быть на месте "неизменяемой
> по умолчанию" переменной. Растаманы плодят сущности?
Это вообще специфический случай для полностью статического значения как по значению, так и по памяти.
| |
|
|
|
|