The OpenNET Project / Index page

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



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

Оглавление

Выпуск языка программирования Rust 1.48, opennews (ok), 19-Ноя-20, (0) [смотреть все]

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


3. "Выпуск языка программирования Rust 1.48"  +5 +/
Сообщение от Аноним (3), 19-Ноя-20, 22:01 
Системный язык, а такой малопортируемый, аж стыдно. Nim благодаря бекенду C/C++ портируется куда угодно.
Ответить | Правка | Наверх | Cообщить модератору

15. "Выпуск языка программирования Rust 1.48"  +2 +/
Сообщение от Аноним (15), 19-Ноя-20, 23:04 
Нет платформ, кроме юникс лайка и виндовс
Ответить | Правка | Наверх | Cообщить модератору

54. "Выпуск языка программирования Rust 1.48"  +6 +/
Сообщение от Аноним (54), 20-Ноя-20, 00:11 
И? Я про них и имел в виду. Даже в них он портирован не везде нормально.
Ответить | Правка | Наверх | Cообщить модератору

160. "Выпуск языка программирования Rust 1.48"  +3 +/
Сообщение от пох. (?), 20-Ноя-20, 10:31 
У вас опечатка в слове "linux на полутора аппаратных платформах из сотен".

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

172. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от Anonimous (?), 20-Ноя-20, 11:06 
Это если вы про домашние компы. Но вот предприятия могут заплатить за софт в разы больше чем несколько млн. пользователей.
Ответить | Правка | Наверх | Cообщить модератору

174. "Выпуск языка программирования Rust 1.48"  +1 +/
Сообщение от Аноним (15), 20-Ноя-20, 11:08 
А мак? А, прости Господи, фрибсд?
Ответить | Правка | К родителю #160 | Наверх | Cообщить модератору

204. "Выпуск языка программирования Rust 1.48"  +1 +/
Сообщение от Аноним (204), 20-Ноя-20, 13:52 
Не правда. Debian поддерживает большинство. Можно и Gentoo собрать. 1,5 платформы – это вам к винде.
Ответить | Правка | К родителю #160 | Наверх | Cообщить модератору

29. "Выпуск языка программирования Rust 1.48"  –3 +/
Сообщение от Аноним (29), 19-Ноя-20, 23:19 
Системный язык, не требующий понимания работы с указателями?
Ой-вей. Даже в Visual Basic можно напрямую с памятью работать...
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

44. "Выпуск языка программирования Rust 1.48"  +4 +/
Сообщение от Аноним (44), 19-Ноя-20, 23:43 
Системный язык программирования - это на котором можно написать системные компоненты, библиотеки, приложения.

Для абсолютного большинства такого софта нет никаких ограничений на управление памятью.

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

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

И для embedded он тоже отлично подходит

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

71. "Выпуск языка программирования Rust 1.48"  +8 +/
Сообщение от uis (ok), 20-Ноя-20, 01:59 
>библиотеки, приложения

А это прикладное программирование.

>С какого момента стало считаться, что если нельзя написать ядро - это не системный язык программирования?

С момента определения критериев системного языка программирования.

>Во-первых, на Nim можно. Во-вторых по всем бенчмаркам он по потреблению памяти и производительности часто обгоняет и Rust, и чистый C.

И каким образом, если язык транслируемый? Особенно интересно, как скормленный компилятору си код из транслятора быстрее, чем тот-же код не из транслятора. Это такой-же бред, как заявлять, что ассемблер медленнее, например, раста.

>И для embedded он тоже отлично подходит

И каким образом? Вы-же выше писали, что на нём нельзя написать ядро.

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

83. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от topin89 (ok), 20-Ноя-20, 02:23 
> И каким образом? Вы-же выше писали, что на нём нельзя написать ядро.
> > Во-первых, на Nim можно.

И даже без этого, для embed он тоже может подойти, там обычно нет динамического выделения памяти, и даже если нужно, в Nim можно явно вызывать malloc/free. Зачем он во встройке -- это другой вопрос, но использовать вполне реально. Хотя бы как макроязык поверх C.

>  Особенно интересно, как скормленный компилятору си код из транслятора быстрее, чем тот-же код не из транслятора

Скорее всего, очень крутой спец на C напишет код лучше, чем очень крутой спец на Nim.
Средний программист на Nim, с другой стороны, вполне может получить более быстрый код на C.
Любые заявления, что нужно становиться лучшим спецом по C идут в комплект с нужно становиться лучшим спецом на ассемблерах. Для критичных мест уж проще делать C/ASM вставки, благо, это реально.

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

90. "Выпуск языка программирования Rust 1.48"  +1 +/
Сообщение от Аноним (54), 20-Ноя-20, 02:54 
C/C++ лишь бекенд при компиляции. Никакого удобночитаемого Си кода там не будет. За этим в Vala.
Бенчмарки тут, к примеру: https://github.com/kostya/benchmarks
Как видите, Nim держится достойно, порой обгоняя Rust и даже Си.
Ответить | Правка | К родителю #71 | Наверх | Cообщить модератору

95. "Выпуск языка программирования Rust 1.48"  +4 +/
Сообщение от uis (ok), 20-Ноя-20, 03:23 
Даже Nim быстрее раста. Ещё вопросы?
Ответить | Правка | Наверх | Cообщить модератору

234. "Выпуск языка программирования Rust 1.48"  +1 +/
Сообщение от Дядя (?), 20-Ноя-20, 17:46 
Только в программе на Rust зачем то используют сетевое соединение:

fn notify(msg: &str) {
    use std::io::Write;
    if let Ok(mut stream) = std::net::TcpStream::connect("localhost:9001") {
        stream.write_all(msg.as_bytes()).unwrap();
    }
}

Уверен, что для замедления кода.

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

362. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от freecoder_xx (?), 26-Ноя-20, 11:54 
Ага. При этом C++ версия использует libnotify, когда в правилах тесте написано, что тестируется с использованием только стандартных функций.

Еще момент: в Rust зачем-то конвертируется строка в набор unicode-символов перед итерацией, тогда как в C++ итерация идет по байтам.

В общем, шляпа это, а не тест. В каждой реализации тестируется разное.

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

118. "Выпуск языка программирования Rust 1.48"  +2 +/
Сообщение от Сишникemail (?), 20-Ноя-20, 06:34 
Сишные бенчмарки там плохи - ну что это:
>> char *out = output;
>> ...
>> while (str != ends) {
>>    uint32_t n = __builtin_bswap32(*(uint32_t*)str);
>>    *out++ = chars[(n >> 26) & 63];
>>    *out++ = chars[(n >> 20) & 63];
>>    *out++ = chars[(n >> 14) & 63];
>>    *out++ = chars[(n >> 8) & 63];
>>    str += 3;
>>  }

.

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

179. "Выпуск языка программирования Rust 1.48"  +2 +/
Сообщение от Lex (??), 20-Ноя-20, 11:30 
Иначе Nim будет не_быстрее !!1111
Ответить | Правка | Наверх | Cообщить модератору

59. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от банан (?), 20-Ноя-20, 00:23 
Он просто не компилируется если вы не умеете с указателями работать.
Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

162. "Выпуск языка программирования Rust 1.48"  +3 +/
Сообщение от пох. (?), 20-Ноя-20, 10:35 
> Он просто не компилируется если вы не умеете с указателями работать.

Я, я умею, смотрите, смотрите: unsafe { ...*...*...*****... }

И компилируется прекраснейше. Только потом почему-то падает :-( Наверное, надо было проверить что там в этом указателе? Ну я хз, хруст же ж безопастный язык, хотелось побыстрее наговнякать, а не писать мильен проверок - это и на си может каждый дурак!


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

251. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от банан (?), 20-Ноя-20, 22:01 
> это и на си может каждый дурак!

из ваших слов непонятно, иронизируете ли вы, или нет.


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

91. "Выпуск языка программирования Rust 1.48"  +1 +/
Сообщение от Аноним (54), 20-Ноя-20, 02:55 
А в Nim якобы нельзя?
Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

101. "Выпуск языка программирования Rust 1.48"  +1 +/
Сообщение от Аноним (101), 20-Ноя-20, 03:55 
Требует он всё, но в особых случаях, когда это реально надо, а не когда попало
Самый здравый подход
Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

38. "Выпуск языка программирования Rust 1.48"  –7 +/
Сообщение от Аноним (38), 19-Ноя-20, 23:39 
Это как не летающий самолет. Никакой это не системный язык. И создан он из ложной гипотезы что уязвимости по работе с памятью в нормальных языках появляются случайно, а не кто-то их специально добавляет.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

45. "Выпуск языка программирования Rust 1.48"  +8 +/
Сообщение от Аноним (15), 19-Ноя-20, 23:43 
Теория заговора? Есть какая-то организация добавления уязвимости памяти? Интересно и интересно, не расскажете ли?
Ответить | Правка | Наверх | Cообщить модератору

55. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от Аноним (55), 20-Ноя-20, 00:11 
Есть. И не одна. Любая организация, разрабатывающая софт на C занимается добавлением уязвимостей, связанных с неправильным доступпом к памяти. Особо поехавшие разработчики при этом факты некорректного доступа, отловленные валгриндом и асаном, ещё и отрицать пытаются.
Ответить | Правка | Наверх | Cообщить модератору

163. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от Аноним (163), 20-Ноя-20, 10:38 
>Есть какая-то организация добавления уязвимости памяти?

Как будто ты их сам не знаешь: NSA, CIA, MI6, ФСБ.

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

50. "Выпуск языка программирования Rust 1.48"  +2 +/
Сообщение от Аноним (50), 19-Ноя-20, 23:56 
Это такой ТООООЛСТЫЙ троллинг? Просто я испытываю испанский стыд...
Разве ZOG выгодно делать уязвимости в языках программирования?
Ответить | Правка | К родителю #38 | Наверх | Cообщить модератору

53. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от Аноним (53), 20-Ноя-20, 00:08 
То есть, по-твоему, все уязвимости связанны с памятью, клоун?
Ответить | Правка | Наверх | Cообщить модератору

68. "Выпуск языка программирования Rust 1.48"  +8 +/
Сообщение от Жорш (?), 20-Ноя-20, 01:50 
95% ошибок это доверять входящим данным без проверки. Без разницы откуда - файл, сокет, ввод, аргументы приложения и т.д. Ошибки с памятью, в основном, тоже являются этой же проблемой - слепое доверие что где-то оно чистится и я не выпрыгнул на границы. Если проблему с памятью можно ещё как-то решить придумав Rust, то остальные 95% сами себя не смогут излечить.
Ответить | Правка | Наверх | Cообщить модератору

153. "Выпуск языка программирования Rust 1.48"  +1 +/
Сообщение от red75prime (?), 20-Ноя-20, 09:54 
Но ошибки работы с памятью иногда позволяют обойти все защиты, что поставили для предотвращения SQL инъекций, command line инъекций и всяких других инъекций.
Ответить | Правка | Наверх | Cообщить модератору

336. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от някус (?), 23-Ноя-20, 23:50 
Я и вижу, как в безопасном "PHP" каждый второй Moodle не изобилует то залочками, то SQL-инъекциями, хотя казалось бы…
Ответить | Правка | Наверх | Cообщить модератору

183. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от Ordu (ok), 20-Ноя-20, 11:46 
> Если проблему с памятью можно ещё как-то решить придумав Rust, то остальные 95% сами себя не смогут излечить.

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

У тебя есть два варианта, либо создать тип Checked<T>, либо тип Unchecked<T>. За каждым из типов прячутся разные стратегии. За первым -- отказываться работать с T, если он не был завёрнут в обёртку Checked -- но это надо переделать все API за которыми прячется код работающий с T. За вторым -- заворачивать все входящие T в Unchecked<T>, и обрезать все возможности для программиста добраться до T, кроме как вызвав метод Unchecked::check(&self) -> &T. Этот вариант не требует кардинальных изменений API, но надо будет отследить все места, где данные входят в программу.

Есть ещё подход -- принудительно проверять всё в момент создания T, и это хорошо, но ровно до тех пор, пока у тебя нет возможности столкнутся со 100500 инстансами T, из которых реально нужны лишь парочка. Раст, кстати, так делает со строками: он проверяет валидность utf8-строк на входе, программер может отложить эту проверку на потом, жонглируя &[u8] слайсами, но ежели он хочет API для работы с черектерами и строками из них, ему придётся вызывать конструктор str, а тот проверит валидность utf8.

Твои проблемы решаются даже без раста, если по-хорошему. И они решались ещё до появления раста именно таким образом. Я подцепил идею, по-моему, из cl-sql, который давал API для сборки строк SQL-запросов, при этом проверял и экранировал все непроверенные/неотэкранированные ещё строки, при этом не проверяя и неэкранируя то, что не нужно экранировать.

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

93. "Выпуск языка программирования Rust 1.48"  +1 +/
Сообщение от Андрей (??), 20-Ноя-20, 03:14 
Системный язык, в релизах которого до сих пор нет доступа к SIMD - это какой-то совершенно не системный язык. Ну или это такой себе "системный" язык из экосистемы GNOME, где перегибают с минимализмом.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

192. "Выпуск языка программирования Rust 1.48"  +1 +/
Сообщение от Аноним (192), 20-Ноя-20, 12:49 
> SIMD and vendor intrinsics module

https://doc.rust-lang.org/core/arch/index.html

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

207. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от Андрей (??), 20-Ноя-20, 14:26 
Простите. Имел ввиду не только SIMD, а instrinsics в принципе:

https://doc.rust-lang.org/std/intrinsics/

> This is a nightly-only experimental API. (core_intrinsics)

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

320. "Выпуск языка программирования Rust 1.48"  +/
Сообщение от АО НМН (?), 23-Ноя-20, 01:05 
> Простите. Имел ввиду не только SIMD, а instrinsics в принципе:
> https://doc.rust-lang.org/std/intrinsics/
>> This is a nightly-only experimental API. (core_intrinsics)

"intrinsincs" практически не нужно. Особенно SIMD.
Нужны эффективно сделанные функции. Иногда они могут быть реализуемы одной ассемблерной командой. В других случаях (и их большинство, и особенно это касается SIMD) эти функции должны делаться прямо на Асм.
Возьмём например вычисление синуса. Там где есть машинная команда его вычисляющая, естественно ожидать, что обращение (в языке высокого уровня) к соответствующей функции скомпилируется в эту машинную команду. В других случаях произойдёт вызов подпрограммы. Команды SIMD сами по себе ничего особенно интересного не вычисляют. Их место в специальных функциях (вроде видеокодеков например) и соответствующих библиотеках.

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

313. "Выпуск языка программирования Rust 1.48"  –2 +/
Сообщение от Аноним (313), 22-Ноя-20, 07:18 
Только мне кажется, что синтаксис выглядит уродливым? Намешали боб с горохом, 6аслоили огурцы и яблоки.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

337. "Выпуск языка программирования Rust 1.48"  –1 +/
Сообщение от някус (?), 23-Ноя-20, 23:52 
Да так оно и есть, они скрестили кресты с ML, добавив рандомайзера, а потом объявили, что долго трудились над созданием нового языка. Разницу пропили.
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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