The OpenNET Project / Index page

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



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

"Выпуск языка программирования Rust 1.54"  +/
Сообщение от opennews (??), 29-Июл-21, 22:11 
Опубликован релиз языка системного программирования Rust 1.54, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки)...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=55563

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

Оглавление

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


4. "Выпуск языка программирования Rust 1.54"  +7 +/
Сообщение от FortyTwo (ok), 29-Июл-21, 22:20 
> В разряд стабильных переведена новая порция API

Счачстье то какое!

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

11. "Выпуск языка программирования Rust 1.54"  +14 +/
Сообщение от НяшМяш (ok), 29-Июл-21, 22:36 
Где бы взять запасную печень, что не релиз, так праздник.
Ответить | Правка | Наверх | Cообщить модератору

293. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от trdm (ok), 30-Июл-21, 09:45 
Сколько весит хелло ворд на русте с зависимостями?
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

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

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

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

313. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (313), 30-Июл-21, 11:37 
$ rustc -C opt-level=z -C lto -C codegen-units=1 -C panic=abort -Z strip=symbols hello.rs
$ du -h hello
224K    hello
Ответить | Правка | К родителю #293 | Наверх | Cообщить модератору

319. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 12:31 
> $ rustc -C opt-level=z -C lto -C codegen-units=1 -C panic=abort -Z strip=symbols
> hello.rs
> $ du -h hello
> 224K hello

-C prefer-dynamic
6,5K


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

322. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (-), 30-Июл-21, 12:44 
> Сколько весит хелло ворд на русте с зависимостями?

500 байт


$ cat hello.rs
#![no_std]
#![no_main]
use core::panic::PanicInfo;
use syscall::syscall;

#[panic_handler]
fn panic(_info: &PanicInfo) -> ! { loop {} }

#[no_mangle]
pub extern fn _start() -> ! {
    let message = "Hello World\n".as_bytes();
    unsafe {
        syscall!(WRITE, 0, message.as_ptr(), message.len());
        syscall!(EXIT,0);
    }
    loop {}
}


$ ./hello
Hello World

$ ll hello
-rwxr-x---   496B 30 Jul. 12:41 hello*
$  readelf -d hello  
There is no dynamic section in this file.
$ objdump -d  hello


Disassembly of section .text:

00000000004000b0 <.text>:
  4000b0:    55                       push   %rbp
  4000b1:    48 89 e5                 mov    %rsp,%rbp
  4000b4:    6a 04                    pushq  $0x4
  4000b6:    58                       pop    %rax
  4000b7:    6a 09                    pushq  $0x9
  4000b9:    5a                       pop    %rdx
  4000ba:    be cc 00 40 00           mov    $0x4000cc,%esi
  4000bf:    31 ff                    xor    %edi,%edi
  4000c1:    0f 05                    syscall
  4000c3:    6a 01                    pushq  $0x1
  4000c5:    58                       pop    %rax
  4000c6:    31 ff                    xor    %edi,%edi
  4000c8:    0f 05                    syscall
  4000ca:    eb fe                    jmp    0x4000ca

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

331. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от n00by (ok), 30-Июл-21, 13:41 
Интересный листинг.

00000000004000b0 <.text>:
  4000b0:    55                       push   %rbp
  4000b1:    48 89 e5                 mov    %rsp,%rbp
  4000b4:    6a 04                    pushq  $0x4           ; #define __NR_stat 4
  4000b6:    58                       pop    %rax
  4000b7:    6a 09                    pushq  $0x9           ; строка Hello World занимает 11 байт.
  4000b9:    5a                       pop    %rdx
  4000ba:    be cc 00 40 00           mov    $0x4000cc,%esi
  4000bf:    31 ff                    xor    %edi,%edi
  4000c1:    0f 05                    syscall
  4000c3:    6a 01                    pushq  $0x1           ; #define __NR_write 1
  4000c5:    58                       pop    %rax
  4000c6:    31 ff                    xor    %edi,%edi
  4000c8:    0f 05                    syscall
  4000ca:    eb fe                    jmp    0x4000ca

#define __NR_exit 60

Вот как выглядит корректный и с претензией минимальность


; fasm demonstration of writing 64-bit ELF executable
; (thanks to Franti.ek G.bri.)

; syscall numbers: /usr/src/linux/include/asm-x86_64/unistd.h
; parameters order:
; r9    ; 6th param
; r8    ; 5th param
; r10   ; 4th param
; rdx   ; 3rd param
; rsi   ; 2nd param
; rdi   ; 1st param
; eax   ; syscall_number
; syscall

format ELF64 executable 3

segment readable executable

entry $

           mov     edx,msg_size    ; CPU zero extends 32-bit operation to 64-bit
                                   ; we can use less bytes than in case mov rdx,...
           lea     rsi,[msg]
           mov     edi,1           ; STDOUT
           mov     eax,1           ; sys_write
           syscall

           xor     edi,edi         ; exit code 0
           mov     eax,60          ; sys_exit
           syscall

segment readable writeable

msg db 'Hello 64-bit world!',0xA
msg_size = $-msg


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

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

336. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 14:34 
Речь не об опкодах, а о номерах системных вызовов. См. комментарии в первом листинге.
Ответить | Правка | Наверх | Cообщить модератору

346. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 15:04 
> Интересный листинг.
>
 
>     pushq  $0x4    
>       ; #define __NR_stat 4
>     pushq  $0x1    
>       ; #define __NR_write 1

> #define __NR_exit 60
> Вот как выглядит корректный и с претензией минимальность

Вы там поаккуратнее с ярлыками и суждениями о "корректности":


head -14 /usr/src/sys/sys/syscall.h
/*
* System call numbers.
*
* DO NOT EDIT-- this file is automatically @generated.
* $FreeBSD$
*/

#define    SYS_syscall    0
#define    SYS_exit    1
#define    SYS_fork    2
#define    SYS_read    3
#define    SYS_write    4
#define    SYS_open    5
#define    SYS_close    6

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

355. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 16:07 
>[оверквотинг удален]
>  * $FreeBSD$
>  */
> #define SYS_syscall 0
> #define SYS_exit 1
> #define SYS_fork 2
> #define SYS_read 3
> #define SYS_write 4
> #define SYS_open 5
> #define SYS_close 6
>

Да, это получился зачётный конфуз.

Тем не менее вопрос по размеру строки в силе. "Hello World\n" 12 байт без терминатора, а в листинге 9. В оригинале было "Hello BSD"?

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

358. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 16:16 
> Тем не менее вопрос по размеру строки в силе. "Hello World\n" 12
> байт без терминатора, а в листинге 9. В оригинале было "Hello BSD"?

Подловил. Просто "sometext\n"

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

409. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 18:59 
Это ещё кто кого подловил. Если бы не эта разница в длине, я бы не обратил внимания, или может даже догадался про другую систему подумать. А так нашёл лишнее подтверждение, что код какой-то "не тот". :)
Ответить | Правка | Наверх | Cообщить модератору

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

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

424. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Аноним (-), 30-Июл-21, 19:44 
10 лет назад хелло_ворд весил 5 мегабайт. 7 лет назад хелло_ворд весил 3 мегабайта. 4 года назад хелло_ворд весил 1 мегабайт. Сейчас хелло ворд весит около 100 Килобайт.

Растаманы стыдятся отвечать на этот вопрос. Больше не задавай такие вопросы.

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

448. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 21:53 
> 10 лет назад хелло_ворд весил 5 мегабайт. 7 лет назад хелло_ворд весил
> 3 мегабайта. 4 года назад хелло_ворд весил 1 мегабайт.

У вас, криворуких - возможно все. И 100 мб.
> Сейчас хелло ворд весит около 100 Килобайт.

Врешь и не краснеешь.


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

494. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 31-Июл-21, 06:14 
>Врешь и не краснеешь.

Извини, сейчас helloworld на Расте весит 200-ти с чем-то килобайт.

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

506. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 31-Июл-21, 08:51 
>>Врешь и не краснеешь.
> Извини, сейчас helloworld на Расте весит 200-ти с чем-то килобайт.

Байт, без кило. 500 байтный пример https://www.opennet.ru/openforum/vsluhforumID3/124921.html#322 для FreeBSD можно ещё сократить, если рихтануть ELF, но это уже не относится к языку.
В других системах будет примерно так же, только некоторые параметры (номера сисколов) поменяются. Сравните с вариантом на ассемблере в моём ответе.

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

517. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 31-Июл-21, 13:17 
>>Врешь и не краснеешь.
> Извини, сейчас helloworld на Расте весит 200-ти с чем-то килобайт.

Как мило, очередной болту^W Экспердус опеннета.


cat hello.rs &&  rustc -O -C prefer-dynamic hello.rs && strip hello &&  wc -c ./hello                                                                          
fn main() {
  println!("Hello World!");
}
    6608 ./hello

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

572. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 01-Авг-21, 11:27 
> prefer-dynamic
> 6608 ./hello

Хитрозадый очень, да?
Статику давай, или считай все те либы, которые тащит за собой этот ваш раст.

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

573. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от anonymous (??), 01-Авг-21, 12:30 
151 байт, статика: https://github.com/kmcallister/tiny-rust-demo
Ответить | Правка | Наверх | Cообщить модератору

575. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 01-Авг-21, 12:55 
>> prefer-dynamic
>> 6608 ./hello
> Хитрозадый очень, да?

Если очередной опеннетный "антирастовец" не владеет предметом, то кто ему ССЗБ?

> Статику давай,

Тебе воон выше дали - с ходу 500 байт, без каких-то извращений с линковщиком.

> или считай все те либы, которые тащит за собой этот ваш раст.

Эталон давай, на труЪ языке, плюс как правильно собирать и что, как и где считать. А то знаю я вас - "тут считаем, тут ... не считаем! Не считаем, я скозал!"


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

625. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 13:04 
> Если очередной опеннетный "антирастовец" не владеет предметом, то кто ему ССЗБ?

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

> Тебе воон выше дали - с ходу 500 байт, без каких-то извращений с линковщиком

Это не "Hello, World" на расте, это не кроссплатформенная хрень на сисколах.

"Hello, World" на расте выглядит вот так и никак иначе:
----
fn main() {
    println!("Hello, world!");
}
----

> плюс как правильно собирать и что, как и где считать.

В Си статическая сборка делается просто ключом "-static" у gcc.
В расте, начиная с версии 1.48+ должно быть с ключом: '-C target-feature=+crt-static'. Но не факт, что это будет работать.
Проверять статичность линковки нужно выхлопом ldd - он должен быть пустым.


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

627. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 02-Авг-21, 13:25 
>> Тебе воон выше дали - с ходу 500 байт, без каких-то извращений с линковщиком
> Это не "Hello, World" на расте, это не кроссплатформенная хрень на сисколах.

Опечатка то по Фрейду. Действительно, не какая-то хрень, кросплатформенная, а, внезапно, пример системного программирования. Но тут же некоторым главное передёрнуть. Если слинковаться с libc, тогда бы он написал: "глядите, у Rust есть рантайм!"

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

631. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 14:53 
> внезапно, пример системного программирования.

Мы в этой подветке обсуждали размер бинаря "стандартного" helloworld-а со всеми его зависимостями, а не системное программирование на расте.
helloworld - это ни разу не системное программирование.

> Но тут же некоторым главное передёрнуть.

Вот подсовывание хрени на сисколах вместо "стандартного" helloworld-а и было передёргиванием.
Во-первых, вместо "стандартного" хотели подсунуть совсем другое, а, во-вторых, пытались увести дискуссию с неприятной для вас темы в сторону.

> Если слинковаться с libc, тогда бы он написал: "глядите, у Rust есть рантайм!"

Кто "он"? Разверни мысль.

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

634. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 02-Авг-21, 15:27 
>> внезапно, пример системного программирования.
> Мы в этой подветке обсуждали размер бинаря "стандартного" helloworld-а со всеми его
> зависимостями, а не системное программирование на расте.

Нет никакого стандарта на helloworld-ы. Вы это прекрасно понимаете, потому и закавычили. Исходный вопрос "Сколько весит хелло ворд на русте с зависимостями?"
https://www.opennet.ru/openforum/vsluhforumID3/124921.html#293
Пример показывает, что из зависимостей достаточно ядра. Наблюдаемый результат соответствует. Задача решена.

> helloworld - это ни разу не системное программирование.

helloworld и системное программирование ортогональны и не исключают друг друга.

>> Но тут же некоторым главное передёрнуть.
> Вот подсовывание хрени на сисколах вместо "стандартного" helloworld-а и было передёргиванием.

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

С другой стороны вот здесь https://www.opennet.ru/openforum/vsluhforumID3/124921.html#588
пишут, что к программе на Rust проблематично прилинковать статично его стандартную библиотеку. Вот это уже звоночек. Похоже, вокруг языка крутятся посторонние люди, которые плохо понимают требования.

> Во-первых, вместо "стандартного" хотели подсунуть совсем другое, а, во-вторых, пытались
> увести дискуссию с неприятной для вас темы в сторону.

Вопрос надо формулировать соответствующим образом, или не додумывать условия за автора. Может это он и опубликовал решение с сисколами. =)

>> Если слинковаться с libc, тогда бы он написал: "глядите, у Rust есть рантайм!"
> Кто "он"? Разверни мысль.

Да хоть кто. Тема рантайма идёт рефреном под каждой новостью.

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

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

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

> пишут, что к программе на Rust проблематично прилинковать статично его стандартную библиотеку.
> Вот это уже звоночек.

Помимо того, что требовать беспроблемную _статическую_ линковку с любой, даже "хитровывернутой", либой на _другом_ как-то странно, glibC - ни разу не "стандартная библиотека" раста.
Но тоже очень удобная для местных:
https://man7.org/linux/man-pages/man2/syscalls.2.html
> System calls are generally not invoked directly, but rather via
> wrapper functions in glibc (or perhaps some other library).

Сделали свой дубль - "тащин ненужный рантайм", используют системную либу "Фе, зависят от сишного рантайма!". Было уже с аллокатором, тащили jemalloc - "блоатварь тащит свой велосипед!", перешли по умолчанию на системный - "фу, не осилили свой аллокатор, используют сишрный, зачем раст вообще нужен!".
Кстати, растовская стат. либа вполне себе нормально линкуется с сишными.


#[no_mangle]
pub extern "C" fn main() {
    println!("Hell world");
}
gcc -static rstest/target/release/libstatictest.a -lpthread

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

637. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 02-Авг-21, 16:47 

> либой на _другом_ как-то странно

на _другом_ ЯП
//fix

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

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

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

Я и под Бздю предлагал его тебе собрать, ибо чел выше написал, что он переделывал сискольно-растовый исходник под Линь. А я, не вдаваясь в подробности его модификаций, посчитал, что без них у него что-то не собиралось или не работало.
Но ты тут же прибежал и начал кричать что я дико обглюкался, показывая мне строчку "$FreeBSD$".

Мда уж... молодец.

> glibC - ни разу не "стандартная библиотека" раста.

Ага. Это системная библиотека на подавляющем большинстве GNU/Linux-ов.
Через неё ваш Раст и работает, если верить выхлопу ldd. И нет никаких оснований этому выхлопу не верить.

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

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

646. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 02-Авг-21, 21:49 
>> как тут некоторые умники собрались линковать статику под венду - вопрос.
> Ты всё перепутал. Я тебе предлагал просто собрать сискольно-растовый helloworld под винду,
> не обязательно в статике, но без модификаций исходника. И показать нам
> что у тебя получилось.

Хорошая отмазка но нет. У тебя претензии были 1) "не кроссплатформенно" 2) "собери статику".
Получается как обычно: "там считаем, там ... ты все перепутал!"

> Я и под Бздю предлагал его тебе собрать, ибо чел выше написал,
> что он переделывал сискольно-растовый исходник под Линь. А я, не вдаваясь
> в подробности его модификаций, посчитал, что без них у него что-то
> не собиралось или не работало.
> Но ты тут же прибежал и начал кричать что я дико обглюкался,
> показывая мне строчку "$FreeBSD$".

Конечно же обглюкался - потому что оригинал дампа и был собран под "бздю"


wc -c nostd && file nostd      
     496 nostd
nostd: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), statically linked, stripped

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


>> glibC - ни разу не "стандартная библиотека" раста.
> Ага. Это системная библиотека на подавляющем большинстве GNU/Linux-ов.
> Через неё ваш Раст и работает, если верить выхлопу ldd. И нет никаких оснований этому выхлопу не верить.

Ну т.е. ты не знаешь разницы между системной и стандартной библиотекой.
Или же, я правильно понимаю, что (условная) "kernel32.dll" или "winnt" - стандартная библиотека сишки, плюсов (и еще кучи языков), потому что на венде "через нее ваш X и работает", если цитировать тебя же?
Или кто-то запутался в своей демагогии?

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

648. Скрыто модератором  +/
Сообщение от Растофиля (?), 03-Авг-21, 02:12 
Ответить | Правка | К родителю #646 | Наверх | Cообщить модератору

653. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 03-Авг-21, 14:12 
Сисколы в Виндосе, насколько помню, меняются в пределах версии ОС. Никто в здравом уме их там не использует. Если кто-то предлагает обойтись без ntdll.dll (а в случае вывода на консоль наверняка потребуется и WriteConsoleW из kernel32.dll) -- он либо не владеет предметом, либо намеренно пытается свести дискуссию к священной войне.
Ответить | Правка | К родителю #635 | Наверх | Cообщить модератору

638. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 17:39 
> Нет никакого стандарта на helloworld-ы

Вообще-то растовский "стандартный" helloworld есть прямо в главной книжке по расту:
https://doc.rust-lang.org/book/ch01-02-hello-world.html

> Пример показывает, что из зависимостей достаточно ядра.

Практически любую прикладную программу можно написать на один только сисколах. Но так никто не делает. И этому есть много разных причин.

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

> helloworld и системное программирование ортогональны и не исключают друг друга

Это не совсем так. За helloworld-ом уже давно закрепился особый смысл.
Вот, например, его описание на Wiki: https://ru.wikipedia.org/wiki/Hello,_world!

> Это хороший, годный минимальный пример.

Возможно. Но к размеру бинаря классического helloworld-а имеет весьма далёкое отношение.

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

Нормально там был сформулирован вопрос: "Сколько весит хелло ворд на русте с зависимостями?".

Но вместо прямого ответа последовали всякие плутовства. Тут тебе и сисколы, тут тебе и prefer-dynamic.  Всё это бросается в глаза.

Вы, ребята, этими своими хитростями создаёте своему любимому Расту плохую репутацию. Этот язык прямо на глазах становится "токсичным".
Я это и по буржуским форумам вижу, кстати. К RUST-евангелистам ведь не только на опеннете многие негативно относятся. Это уже общемировая тенденция, можно сказать.
Многих вы уже утомили своим Растом, да.


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

652. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 03-Авг-21, 14:07 
>> Нет никакого стандарта на helloworld-ы
> Вообще-то растовский "стандартный" helloworld есть прямо в главной книжке по расту:
> https://doc.rust-lang.org/book/ch01-02-hello-world.html

По ссылке насчитал 4 вхождения слова "standard":

"12.6. Writing Error Messages to Standard Error Instead of Standard Output

"If you want to stick to a standard style across Rust projects

"with the standard Rust distribution"

потому дальнейшую часть сообщения читать не буду, вряд ли она имеет смысл.

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

633. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 15:05 
> Опечатка то по Фрейду. Действительно, не какая-то хрень, кросплатформенная, а, внезапно, пример системного программирования.

Ты и в этом случае, кстати, выдернул одну фразу из контекста. Такое "хитроумное" выборочное цитирование.

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

636. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 02-Авг-21, 16:45 
>> Если очередной опеннетный "антирастовец" не владеет предметом, то кто ему ССЗБ?
> Ты не умеешь в статическую сборку, а не владею предметом оказывается я.

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

>> плюс как правильно собирать и что, как и где считать.
> В Си статическая сборка делается просто ключом "-static" у gcc.

В последний раз:
давай полный пример, чтобы не было потом "Ты не так понял и вообще я не я и мопедолошадь - не моя!"

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

639. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 18:18 
>> В Си статическая сборка делается просто ключом "-static" у gcc.
> ... для тебя стат. сборка "ух какой крутой скилл"

Да, знание ключа "-static" я считаю крутым скиллом. (facepalm.jpg) [нет, конечно]

> предыдущим (к сожалению, удаленным) перлам - не владеешь.

Ты свои перлы до сих пор продолжаешь извергать:

> как-то странно, glibC - ни разу не "стандартная библиотека" раста.

Собери свой растовский helloworld и посмотри наконец выхлоп ldd, что ли. Может поймёшь как оно у тебя работает. Я тебе писал это ночью, но всё потёрли.

> давай полный пример

Я не должен давать тебе никакой примеров.
Это ведь ты доказываешь крутизну Раста, а не я доказываю крутизну Си.
Есть такое общепринятое правило: "Бремя доказательства лежит на утверждающем".
Ты утверждаешь - ты и доказывай.

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

645. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 02-Авг-21, 21:27 
>> как-то странно, glibC - ни разу не "стандартная библиотека" раста.
> Собери свой растовский helloworld и посмотри наконец выхлоп ldd, что ли. Может поймёшь как оно у тебя работает. Я тебе писал это ночью, но всё потёрли.

Я то в курсе (и у меня оно ни разу не зависит от glibc),


rustc -O hello.rs && ldd hello
hello:
    libthr.so.3 => /lib/libthr.so.3 (0x8010af000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x8010dc000)
    libc.so.7 => /lib/libc.so.7 (0x8010f3000)

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

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

Ссылку на "ты доказываешь крутизну Раста" или балабол?


> Есть такое общепринятое правило: "Бремя доказательства лежит на утверждающем".
> Ты утверждаешь - ты и доказывай.

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


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

647. Скрыто модератором  +/
Сообщение от Растофиля (?), 02-Авг-21, 23:21 
Ответить | Правка | Наверх | Cообщить модератору

651. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Котофалк (?), 03-Авг-21, 13:34 
извините, что прерываю, но откуда вообще появилось требование статической линковки? тем паче для helloworld?
Ответить | Правка | К родителю #625 | Наверх | Cообщить модератору

542. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (542), 31-Июл-21, 19:46 
Всего лишь 200+ килобайт. А какой вес у ноды? А какой у джавы? У дотнета? У питона?

А у C++? Тоже со стандартной либой?

#include <iostream>

int main() {
    std::cout << "hello world" << std::endl;
    return 0;
}

$ g++ hello.cpp -O2 -static-libstdc++

$ du -sh ./a.out
1.3M    ./a.out

$ strip a.out
$ du -sh ./a.out
948K    ./a.out

(и 880K если Clang)

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

588. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (588), 01-Авг-21, 22:20 
В Расте так вообще не получится.
Нужно специально устанавливать MUSL libc и выбирать соответствующий target, чтобы получить на 100% статический бинарник.
Ответить | Правка | Наверх | Cообщить модератору

590. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 01-Авг-21, 23:26 
> $ g++ hello.cpp -O2 -static-libstdc++

У мну без доп. -static ldd ругается на зависимости.
А полностью стат., "пострипаный" плюсовой бинарь выходит в 1.4МБ (1.1 для шланга).

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

552. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (552), 01-Авг-21, 00:27 
В любом случае меньше любого интерпретируемого языка,
а с учетом засилья PHP, Python, Ruby для сайтов (коих у каждой компании),
то не думаю, что это как-то сильно кого-то беспокоит.

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

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

555. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 01-Авг-21, 00:46 
> В любом случае меньше любого интерпретируемого языка,
> а с учетом засилья PHP, Python, Ruby для сайтов (коих у каждой
> компании),
> то не думаю, что это как-то сильно кого-то беспокоит.

Ты его лучше спроси, как он вообще зависимости считает.
И пусть "эталонный" пример, с эталонными опциями сборки (и пояснением за эталонне окружение выполнения) на труЪ ЯП кинет, для начала.
Охренее^W Узнаешь много "нового".

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

596. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 00:00 
> Узнаешь много "нового".

Уже узнали, что Раст не умеет в статическую линковку с glibc.
Для статической линковки ему нужна MUSL.

Это просто "праздник" какой-то.

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

626. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Растофиля (?), 02-Авг-21, 13:08 
Вроде в новых версиях линковать статически с glibc они уже научились. Но это всё нужно проверять. У них там есть оговорки.
Ответить | Правка | Наверх | Cообщить модератору

5. "Выпуск языка программирования Rust 1.54"  +18 +/
Сообщение от Аноним (5), 29-Июл-21, 22:21 
> Инкрементальная компиляция была отключена в выпуске 1.52.1 из-за выявления скрытых ошибок

Теперь не только безопасная работа с памятью, но и безопасная компиляция.

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

40. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (40), 29-Июл-21, 23:06 
Друг, безопасности памяти в коде и отсутствие уязвимостей в принципе - принципиально разные вещи, второе нельзя достигнуть, но лучше всё же жить без первого
Ответить | Правка | Наверх | Cообщить модератору

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

80. "Выпуск языка программирования Rust 1.54"  –5 +/
Сообщение от Аноним (80), 29-Июл-21, 23:50 
Тогда зачем нужна эта ваша «безопасная память»?
Ответить | Правка | К родителю #40 | Наверх | Cообщить модератору

89. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Sw00p aka Jerom (?), 30-Июл-21, 00:10 
безопасная память это физически разделенная
Ответить | Правка | Наверх | Cообщить модератору

290. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (290), 30-Июл-21, 09:38 
чтобы тратить больше времени на разработку, изворачиваясь, делая обычные вещи. как с С++ в своё время.
Ответить | Правка | К родителю #80 | Наверх | Cообщить модератору

254. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 07:48 
> безопасности памяти в коде (1)
> отсутствие уязвимостей  в принципе (2)

...
> второе нельзя достигнуть,
> но лучше всё же жить без
> первого

Так понятнее, что на самом деле написано.

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

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

297. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 10:05 
Задним числом все умны.
Ответить | Правка | Наверх | Cообщить модератору

10. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноньимъ (ok), 29-Июл-21, 22:35 
>Вызов макросов внутри атрибутов может оказаться полезным для включения в документирующие комментарии содержимого из других файлов. Например, для вставки содержимого файла README и результата выполнения скрипта можно указать

Что-то я непронял совсем что тут происходит и зачем это нужно.
Макрос в коде меняет файл с кодом или что тут происходит?

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

19. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Dzen Python (ok), 29-Июл-21, 22:45 
Мне больше интересно, зачем вставлять в .rs файл содержимое .md файла.

Стандартный хедер "этот файл под лиценцией {0}, писан {1}, email {2}" может вставить даже не самая продвинутая IDE. Далее по идее ридми.тхт и комментарии должны наоборот, из src-файлов ИЗвлекаться, и на их основе генерироваться нормальная человеческая документация + файл ридми.

Также мне реально стало интересно, зачем пихать в .rs файл вывод .[скрипт].

Вот тут действительно, непонятно. Хотелось бы увидеть хотя бы три сценария использования, где это не натягивание совы на глобус, а глобуса - в попугая

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

21. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноньимъ (ok), 29-Июл-21, 22:48 
> Далее по идее ридми.тхт и комментарии должны наоборот, из src-файлов ИЗвлекаться, и на их основе генерироваться нормальная человеческая документация + файл ридми.

Вот и я раньше так думал, а теперь не понимаю что происходит. Может нам опытные растенианци объяснят.

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

420. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 19:37 
>Может нам опытные растенианци объяснят.

Растаманы - это растения? Растаман - это овощь?

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

53. "Выпуск языка программирования Rust 1.54"  +5 +/
Сообщение от ПомидорИзДолины (?), 29-Июл-21, 23:23 
В Расте документация генерируется на основе специально оформленных комментариев (doxigen вид сбоку). Когда документации становится много это усложняет навигацию по исходному когда.

Теперь часть документации можно вынести в отдельные файлы, а в исходниках остваить только краткую выжимку.

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

188. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 03:57 
Но зачем для этого какие-то макросы в исходниках? В доках пишешь имя функции и комментарий.

Или я чего-то не понимаю?

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

200. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Анонимъ (?), 30-Июл-21, 04:19 
Комментарии-документация чисто технически являются специальным синтаксисом для #[doc] макроса.
Ответить | Правка | Наверх | Cообщить модератору

210. "Выпуск языка программирования Rust 1.54"  +4 +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 04:35 
Я к тому что.
1 Доки собираются из исходников.
2 В исходниках слишком много доков, вынесем их в отдельный файл. Чтобы... Чтобы линковать отдельный файл в исходники откуда собирать доки?

Почему бы не собирать доки сразу из отдельного файла с доками?
Зачем в исходники то тянуть что попало из каких-то файлов?

Или я всё неправильно понимаю?

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

229. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Анонимъ (?), 30-Июл-21, 05:29 
https://doc.rust-lang.org/std/pin/index.html

Вот пример выше. Подобную документацию удобнее держать рядом с кодом.

Ну или https://docs.rs/legion/0.4.0/legion/index.html в качестве случайного примера.

В дополнение: примеры кода в документации являются полноправными тестами (выполняются по cargo test).

Там подкрутили, здесь сделали удобнее, вон там ещё затюнили маленько. Мелочи, но по совокупности получаем одну из самых лучших документаций в индустрии. По крайней мере у крейтов, которые используют больше чем 1.5 землекопа.

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

246. "Выпуск языка программирования Rust 1.54"  +4 +/
Сообщение от Аноним (246), 30-Июл-21, 06:39 
> примеры кода в документации являются полноправными тестами (выполняются по cargo test)

Особенно удобно, если это пример кода к какому-нибудь std::fs::remove_dir_all :)

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

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

547. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (547), 31-Июл-21, 23:16 
Да это понятно :-) Просто не люблю такое неявное поведение.
Мне видится более разумным явное указание того, что пример кода является одновременно и тестом, чем такая инвертированная логика.
Ответить | Правка | Наверх | Cообщить модератору

455. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (-), 30-Июл-21, 23:15 
>> примеры кода в документации являются полноправными тестами (выполняются по cargo test)
> Особенно удобно, если это пример кода к какому-нибудь std::fs::remove_dir_all :)

Ага, и то ли дело "make test" или ./configure_портянка_на_пару_тысяч_строк - там такое ну абсолютно невозможно!

> Суть проблемы в том, что в файле install.sh для очистки локальной копии собранных файлов вместо команды "rm -r yd-tools/usr" по ошибке была добавлена строка "rm -r /usr". Проблема появилась в коде 20 мая в ходе переработки сборочных скриптов и была исправлена несколько часов назад

Ой!

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

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

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

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

350. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 15:56 
Это логично, однако.
Комментировать код, и иметь отдельный файл для хранения документации, друг другу не противоречащие вещи.

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

Понятно если к такой системе пришли эволюционно и постепенно.
Но было ли абсолютно необходимо для раста набивать все шишки прошлых поколений, вопрос открытый.

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

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

363. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 16:21 
Документация ведь делится на несколько уровней. Есть и краткое описание проекта (почти не меняется и к какому-то конкретному фрагменту кода не привязана), информация об авторе, лицензии и т.п. Вот пример титульной страницы документации на Доксиген, наверняка в отдельном файле https://www.doxygen.nl/index.html
Ответить | Правка | Наверх | Cообщить модератору

46. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (46), 29-Июл-21, 23:14 
В cargo doc появилась поддержка не только api документации, поэтому теперь не обязательно нужен дополнительный тулинг, чтобы писать гайды, туториалы и проч подобные вещи.
Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

240. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от псевдонимус (?), 30-Июл-21, 06:13 
Тут происходит Чад кутежа во мгле ада.

Это раст, парень!

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

15. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Дмитрий (??), 29-Июл-21, 22:40 
А когда перепишут Rust на Rust'e?
Ответить | Правка | Наверх | Cообщить модератору

17. "Выпуск языка программирования Rust 1.54"  +10 +/
Сообщение от Аноним (17), 29-Июл-21, 22:43 
Он уже на расте.
Ответить | Правка | Наверх | Cообщить модератору

165. "Выпуск языка программирования Rust 1.54"  –6 +/
Сообщение от Аноним (165), 30-Июл-21, 03:10 
Дак вон оно что, Михалыч... Потому ошибки и вылазят.

> Инкрементальная компиляция была отключена в выпуске 1.52.1 из-за выявления скрытых ошибок

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

273. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (273), 30-Июл-21, 08:48 
Могу только предположить, но вероятно это происходило из-за логических ошибок в реализованных алгоритмах, а не из-за обращения к памяти после ее освобождения или выхода за границы буфера и т.п., что составляет 70-80 процентов ошибок в прогах на C/C++
Ответить | Правка | Наверх | Cообщить модератору

553. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Kuku (?), 01-Авг-21, 00:28 
Давайте не будем бла-бла-бла. Среднестатистически даже в релизах ПО 90 процентов ошибок - логические. А потом уже идут эти ваши обращения к освобожденной памяти и прочая фуета.
Интересно, как в расте борются с этой проблемой, учитывая то, насколько на нем неудобно выражать свои мысли, в отличие от того же питона, к примеру
Ответить | Правка | Наверх | Cообщить модератору

614. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (246), 02-Авг-21, 10:34 
Мне вот удобно выражать свои мысли на русском, чуть менее удобно на английском, поскольку не родной, а на китайском совсем неудобно, ведь я им не владею. А китайцу ровно наоборот.

С языками программирования та же ситуация.

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

629. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (629), 02-Авг-21, 14:02 
> А китайцу ровно наоборот.

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

Так что да. Пример очень показательный.

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

306. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от anonymous (??), 30-Июл-21, 11:09 
Есть какой-то компилятор в котором не допускали ошибок? Или какой-то язык, на котором не допускали ошибок?
Ответить | Правка | К родителю #165 | Наверх | Cообщить модератору

248. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от leap42 (ok), 30-Июл-21, 06:51 
>Он уже на расте.

Это как говорить что весь веб на JS, игнорируя весь бэкенд на PHP,Java,C#,Ruby,Go и т.д.

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

307. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от anonymous (??), 30-Июл-21, 11:10 
Что конкретно вы имели в виду?
Ответить | Правка | Наверх | Cообщить модератору

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

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

546. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от . (?), 31-Июл-21, 23:02 
А кто сказал что rustc только llvm умеет? Кроме другого бекенда написанного на C++ (gcc, он был недавно принят), уже давно поддерживается cranelift, а он целиком на Rust написан

Пускай cranelift пока не может соревноваться по скорости работы выхлопа с llvm (Для x86, основные усилия в нём брошены в сторону wasm), он уже работает, и для дебаг билдов его некоторые используют из за его высокой скорости компиляции

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

22. "Выпуск языка программирования Rust 1.54"  –8 +/
Сообщение от Кир (?), 29-Июл-21, 22:52 
> макросов, напоминающих функции (процедурные макросы и макросы, созданные при помощи макроса "macro_rules!"). От функций подобные макросы отличаются символом "!" после имени (macro!(...)) и подстановкой исходного текста макроса вместо генерирования вызова функции

Они наконец изобрели inline-функции? %D

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

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

29. "Выпуск языка программирования Rust 1.54"  –5 +/
Сообщение от Кир (?), 29-Июл-21, 22:56 
Или, слава ржавчине, они изобрели #define? Непонятненько...
Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору

32. "Выпуск языка программирования Rust 1.54"  +13 +/
Сообщение от Аноним (24), 29-Июл-21, 22:58 
Макросы C - худшие макросы ever, не надо их тут вспоминать, пожалуйста
Ответить | Правка | Наверх | Cообщить модератору

75. "Выпуск языка программирования Rust 1.54"  –5 +/
Сообщение от Хан (?), 29-Июл-21, 23:46 
Макрос это не часть языка это препроцессор компилятора и чем же макросы rust лучше чем си?
Ответить | Правка | Наверх | Cообщить модератору

86. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Аноним (46), 30-Июл-21, 00:01 
Действительно, наверное и в стандартах языков С и С++ ничего нет про макросы?

А про разницу можно легко найти в гугле.

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

88. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от Хан (?), 30-Июл-21, 00:08 
Спецификация C или C++ описывает не только сам язык, а еще например язык макросов для компилятора

А спецификация Java или C# описывает байткод, но ты же не пишешь на байткоде?

Есть технические особенности реализации того или иного ЯП которые отражены в стандарте ЯП, имеющие коственное отношение к ЯП и прямое к его компиляции или интерпритации, тобишь исполнению

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

104. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (46), 30-Июл-21, 01:05 
Кажется, что тебе нужно прочитать секцию Scope стандарта.
Ответить | Правка | Наверх | Cообщить модератору

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

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

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

90. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от Хан (?), 30-Июл-21, 00:12 
Стандартная библиотека тоже отношения не имеет к синтаксису ЯП, она лишь описывает API для взаимодействия с окружением внутри ОС, но это же не мешает ей быть в стандарте

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

105. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (46), 30-Июл-21, 01:06 
Синтаксис языка != язык.
Ответить | Правка | Наверх | Cообщить модератору

108. "Выпуск языка программирования Rust 1.54"  –4 +/
Сообщение от Хан (?), 30-Июл-21, 01:16 
Хм, ЯП может считаться то что компилируется напрямую в машинный код(неважно как статически, через jit или интерпритатор)

Макрос транслируется в C/C++ код, какое отношение он имеет к ЯП?

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

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

111. "Выпуск языка программирования Rust 1.54"  +4 +/
Сообщение от Аноним (-), 30-Июл-21, 01:19 
> Макрос это не часть языка это препроцессор компилятора и чем же макросы rust лучше чем си?


// Wrong!
#define SWAP(x, y) \
  tmp = x; \
  x = y; \
  y = tmp

// Correct!
#define SWAP(x, y) \
  do { \
    tmp = (x); \
    (x) = (y); \
    (y) = tmp; } \
  while (0)


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


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

116. "Выпуск языка программирования Rust 1.54"  –4 +/
Сообщение от Хан (?), 30-Июл-21, 01:38 
Макросы это тупо подстановка кода из макросов в код программы, иначе говоря шаблонизатор... какое нафиг AST причем здесь оно?

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

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

Ну и классическое, раз дефайн это тупо шаблонизатор подставляющих значения никакой проверки типов входящих значений в нем нет

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

126. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (-), 30-Июл-21, 02:15 
> Макросы это тупо подстановка кода из макросов в код программы, иначе говоря шаблонизатор... какое нафиг AST причем здесь оно?

"новое определение макроса бай опеннетный аноним"

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

"Папа, где море?!" (c)


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

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

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

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

На момент компиляции никаких "дефайнов" уже нет, компилятор работает с результатом препроцессора.
man cpp, man gcc -E, man что_такое_препроцессор (да хоть man gcc вводная часть).

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

133. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 30-Июл-21, 02:25 
И не трави за подстановки дефайна, ты скажи где он как машинный код в обьектном файле?
Ответить | Правка | К родителю #126 | Наверх | Cообщить модератору

617. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от anonymous (??), 02-Авг-21, 11:39 
Он не говорил, что define-ы улетают в машинный код. Он говорил, что макросы как часть AST-а языка -- это лучше чем отдельный препроцессор.
Ответить | Правка | Наверх | Cообщить модератору

117. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Хан (?), 30-Июл-21, 01:40 
Короче разберись что такое макросы, инлайн функции и обычные функции чем они отличаются, а то у тебя венегрет какой то в голове

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

138. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 02:30 
>> макросы, которые часть языка и "умеют" в AST
>> ... ни имена переменных, ни области видимости,
> какое нафиг AST причем здесь оно
> Функциональный макрос это шаблон заполнения кода внутри него до этапа компиляции
> Короче разберись что такое макросы, инлайн функции и обычные функции чем они отличаются, а то у тебя венегрет какой то в голове

Подсказка: для начала подтяни базовые (в смысле ВУЗа, а не школьных уроков информатики) знания по ЯП -- и многое перестанет быть "венегретом".

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

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

Ну и не все макросы можно вычислить, тот же printf например который работает со стандартным потоком ОС

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

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

272. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от n00by (ok), 30-Июл-21, 08:44 
Смотрите раздел Translation phases. Препроцессор это отдельная фаза трансляции, семантический анализ и трансляция (компиляция) идут несколько позже, после чего происходит связывание (линковка).
Ответить | Правка | Наверх | Cообщить модератору

234. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (246), 30-Июл-21, 05:41 
Макросы раста - это конструкции языка, а не препроцессора. Уместнее сравнение с темплейтами в плюсах.
Ответить | Правка | К родителю #75 | Наверх | Cообщить модератору

23. "Выпуск языка программирования Rust 1.54"  +6 +/
Сообщение от Аноним (24), 29-Июл-21, 22:53 
Постепенно углубляюсь в этот язык, кайфую
После C/C++ совсем сказка, море возможностей и удобств, при этом высокая производительность

Советую всем, даже кого C/C++ держит и точно не отпустит. С разбором Раста приходит большее понимание, как лучше писать код вообще.

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

28. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноньимъ (ok), 29-Июл-21, 22:56 
Лисп попробуйте, схему какуюнить, Racket например.
Много почерпнёте.
Ответить | Правка | Наверх | Cообщить модератору

35. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (40), 29-Июл-21, 23:03 
Спасибо за рекомендацию!
К сожалению, как-то так складывается, что не перевариваются скобочные языки с фп в чистом виде. А вот элементы фп в других языках - приятное дополнение к их возможностям.
Ответить | Правка | Наверх | Cообщить модератору

225. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (246), 30-Июл-21, 05:15 
Да нет в этих лиспах никакого чистого ФП. В scheme ФП, конечно, побольше, чем в CL, но по сути там столько же ФП, сколько его в современном Джаваскрипте.

За чистым ФП - в Haskell, ну или к некоторым языкам семейства ML.

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

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

403. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (547), 30-Июл-21, 18:43 
Да не надо там никакого матана. Просто он из академической среды, и потому им привычнее в терминах теории категорий рассуждать. На самом деле всё это объясняется на пальцах элементарно: http://learnyouahaskell.com/
Ответить | Правка | Наверх | Cообщить модератору

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

558. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноньимъ (ok), 01-Авг-21, 01:22 
Напоминает.
Но все-же хаскель был немного о другом. Если я верно понимаю, фишка хаскеля это корректность и верифицируемость (ещё про ленивость много шутили)

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

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

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

31. "Выпуск языка программирования Rust 1.54"  –5 +/
Сообщение от Кир (?), 29-Июл-21, 22:57 
Углубляйся. Даже, можно сказать, погружайся! Смотри только, метаном не задохнись.
Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

34. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Аноним (40), 29-Июл-21, 23:00 
Метаном пованивает, когда возвращаюсь C/C++
После Раста весьма прискорбное занятие.
Ответить | Правка | Наверх | Cообщить модератору

39. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Кир (?), 29-Июл-21, 23:05 
Это ты просто не переоделся после погружений в раст.
Ответить | Правка | Наверх | Cообщить модератору

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

47. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Кир (?), 29-Июл-21, 23:14 
А можно больше конкретики? Что именно позволяет сделать раст такого, чего нельзя (причем эффективнее) сделать на плюсах?
Ответить | Правка | Наверх | Cообщить модератору

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

61. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (59), 29-Июл-21, 23:31 
Спать пошёл, не?
Ответить | Правка | Наверх | Cообщить модератору

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

221. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 30-Июл-21, 05:10 
Он ищет истину! Там где ее нет... заблудшие растоманы такие
Ответить | Правка | К родителю #56 | Наверх | Cообщить модератору

68. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Anonnnym (?), 29-Июл-21, 23:34 
> Что именно позволяет сделать раст такого, чего нельзя (причем эффективнее) сделать на плюсах?

Ну вот представь, понадобилось тебе выделить голой памяти через new. Не знаю зачем, просто понадобилось, и ты забыл потом вызвать delete - в плюсах ты получишь ворнинг, а в расте не получишь, потому что для выделения голых байтов, тебе придется нырнуть в unsafe.

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

236. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (246), 30-Июл-21, 05:50 
Статический анализатор для unsafe кода написать не проблема.

Просто никому не надо, поскольку в расте это исключение, а в плюсах (особенно в старом коде) вокруг и рядом.

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

275. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 08:51 
Если не знаете зачем понадобилась память, то и ошибки, вероятно, нет: это одна из стратегий работы с памятью. При завершении процесса она вернётся к системе. Ошибкой это будет в цикле, когда и сборщик мусора не всякий справится.
Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

87. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от ПомидорИзДолины (?), 30-Июл-21, 00:04 
Растовские маркросы - это просто песня. После них в сторону темплейты, даже с концептами, смотреть вообще не хочется.
Ответить | Правка | К родителю #47 | Наверх | Cообщить модератору

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

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

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

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

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

549. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от . (?), 31-Июл-21, 23:41 
Ну как пример которым пользуются в любой кодовой базе на Rust (А фич у макросов намного больше) - derive макросы

Есть у тебя структура, поставил ей #[derive(Debug)] - и для неё реализован отладочный вывод в консоль (трейт Debug), то же самое с Clone, Copy, PartialEq, Eq, PartialOrd, Ord...

Такую же штуку могут реализовывать библиотеки (Это всё же макросы, а не чот встроенное и заточенное под стандартную библиотеку) - например serde имеет макросы Serialize/Deserialize, которые после добавления позволяют писать данную структуру как json/cbor/xml/bson/msgpack/... (в любой формат, для которого реализована библиотека с поддержкой serde, под protobuf правда такого нет, у него отдельный #[derive(Message)])

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

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


let value = json!({
    "code": 200,
    "success": true,
    "payload": {
        "features": [
            "serde",
            "json"
        ]
    }
});

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

483. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Кир (?), 31-Июл-21, 02:28 
Серьёзно? https://github.com/nlohmann/json

auto j2 = R"(
{
    "happy": true,
    "pi": 3.141
  }
)"_json;

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

515. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от freecoder (?), 31-Июл-21, 12:40 
> Серьёзно? https://github.com/nlohmann/json
>
auto j2 = R"( 
> {
>     "happy": true,
>     "pi": 3.141
>   }
> )"_json;

Ваш вариант - это просто строка. В случае же макросов в Rust можно DSL-синтаксис смешивать с выражениями Rust:


let full_name = "John Doe";
let age_last_year = 42;

let john = json!({
    "name": full_name,
    "age": age_last_year + 1,
    "phones": [
        format!("+44 {}", random_phone())
    ]
});


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

535. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Кир (?), 31-Июл-21, 17:16 
Ну тогда так, устроит?
 #include <iostream>
#include <nlohmann/json.hpp>
  
using json = nlohmann::json;
  
int main()
{
     // create JSON values
     json j_empty_init_list = json({});
     json j_object = { {"one", 1}, {"two", 2} };
     json j_array = {1, 2, 3, 4};
     json j_nested_object = { {"one", {1}}, {"two", {1, 2}} };
     json j_nested_array = { {{1}, "one"}, {{1, 2}, "two"} };
  
     // serialize the JSON value
     std::cout << j_empty_init_list << '\n';
     std::cout << j_object << '\n';
     std::cout << j_array << '\n';
     std::cout << j_nested_object << '\n';
     std::cout << j_nested_array << '\n';
}

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

618. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от anonymous (??), 02-Авг-21, 11:43 
> json j_object = { {"one", 1}, {"two", 2} };

Это в JSON будет {"one":1, "two":2} ?

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

619. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от freecoder (?), 02-Авг-21, 11:53 
> Ну тогда так, устроит?

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

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

238. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (246), 30-Июл-21, 06:04 
Раст переносит гарантии смартпоинтеров в компайл тайм, убирая соответствующий рантайм-оверхед. Цена за это - когнитивная нагрузка, надо вникнуть в принципы, перестроить мышление, ну и временами уговаривать компилятор, чтобы он понял, что тут все окей (поскольку полный статический анализ сделать невозможно ввиду проблемы останова).

В остальном, конечно, разницы особо нет, больше вопрос предпочтений.

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

241. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (246), 30-Июл-21, 06:15 
Кстати, в теории возможно реализовать аналог компайл-тайм модели Раста на плюсовых темплейтах, они, как-никак, Тьюринг-полные.

Это, конечном будет полный brainfuck, для компиляции которого понадобятся терабайт памяти и пара лет, но в теории :)

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

276. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 08:55 
> Раст переносит гарантии смартпоинтеров в компайл тайм, убирая соответствующий рантайм-оверхед.

А какой у современных компиляторов оверхед в unique_ptr<>?

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

404. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (547), 30-Июл-21, 18:46 
У unique_ptr никакого, а вот у shared_ptr есть.

В Расте же compile time refcount.

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

245. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (24), 30-Июл-21, 06:23 
serde.rs
Ответить | Правка | К родителю #47 | Наверх | Cообщить модератору

303. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от red75prime (?), 30-Июл-21, 10:36 
> Что именно позволяет сделать раст такого, чего нельзя (причем эффективнее) сделать на плюсах?

Писать код без ошибок (инвалидация итераторов, exception unsafety, data races). А насчёт функциональности программ: что такого можно сделать в С++, чего нельзя (причём эффективнее) сделать на ассемблере?

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

328. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Кир (?), 30-Июл-21, 13:37 
> Писать код без ошибок

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

> что такого можно сделать в С++, чего нельзя (причём эффективнее) сделать на ассемблере?

Естественно, все что можно сделать на C++, можно сделать на ассемблере. И все что можно сделать на ржавом, можно сделать на ассемблере. Как это влияет на сравнение плюсов с ржавым?

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

412. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от n00by (ok), 30-Июл-21, 19:12 
> что такого можно сделать в С++, чего нельзя (причём
> эффективнее) сделать на ассемблере?

Вычисления во время трансляции. Из ассемблеров только fasm на это способен (я не смотрел остальные, просто угадываю).

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

480. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Кир (?), 31-Июл-21, 00:14 
Стоп, ты сейчас написал, что C++ не умеет в вычисления на этапе компиляции? Серьезно, я тебя правильно понял? То есть ты признался, что нифига не знаешь C++? Похоже, рассказы про тупость растаманов имеют под собой нехилую основу...
Ответить | Правка | Наверх | Cообщить модератору

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

453. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от freecoder (?), 30-Июл-21, 22:41 
Дело не в том, что Rust _позволяет_ сделать такого, чего нельзя на плюсах, а в том, что Rust _не позволяет_ делать, в сравнении с плюсами.
Ответить | Правка | К родителю #47 | Наверх | Cообщить модератору

179. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 30-Июл-21, 03:38 
У C++ есть два плюса Boost и Qt, ну и сишные либы ему как родные
Ответить | Правка | К родителю #41 | Наверх | Cообщить модератору

475. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (24), 31-Июл-21, 00:01 
Буст - весьма специфическая штука и нужна именно языку C++
В Расте заменяется стандартной либой и некоторыми крейтами
Интеграция с Qt есть
Ответить | Правка | Наверх | Cообщить модератору

43. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Кир (?), 29-Июл-21, 23:12 
А почему ты пишешь C/C++? Не видишь разницы? Еще один товарищ из криокамеры с томиком Ритчи 80-лохматого года издания?
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

309. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от anonymous (??), 30-Июл-21, 11:16 
Он как раз видит разницу и она не в пользу раст. Например, на раст невозможно реализовать даже вектор - придётся лезть в ансейф.
Ответить | Правка | Наверх | Cообщить модератору

476. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (24), 31-Июл-21, 00:01 
На Расте можно что угодно реализовать, а unsafe - часть Раста
Ответить | Правка | Наверх | Cообщить модератору

477. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (24), 31-Июл-21, 00:03 
Потому что у C++ все те же болячки C и уши из 80-90ых
Да, C++ лучше, особенно для прикладного применения, но все новинки не избавляют его от древних болячек, увы
Они даже побоялись аби нарушить ради увеличения производительности
Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

103. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (103), 30-Июл-21, 01:04 
Метан - он без вкуса и запаха.
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

193. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (193), 30-Июл-21, 04:08 
Это он природный без запаха, а тут после интенсивной газификации малых водоёмов.
Ответить | Правка | Наверх | Cообщить модератору

287. "Выпуск языка программирования Rust 1.54"  +3 +/
Сообщение от Аноним (287), 30-Июл-21, 09:37 
Путаете метан с сероводородом и аммиаком.
Ответить | Правка | Наверх | Cообщить модератору

38. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от Кир (?), 29-Июл-21, 23:05 
А вообще, хочешь совет? Если хочешь реально посмотреть на программирование с новой стороны, попробуй Haskell. Очень интересная, хотя и временами мозговыносящая штука.
Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

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

310. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от anonymous (??), 30-Июл-21, 11:18 
Ты забыл уточнить кое-что важное - пишешь хэлворды за бесплатно. Интересно, какой в этом смысл?
Ответить | Правка | Наверх | Cообщить модератору

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

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

127. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от adolfus (ok), 30-Июл-21, 02:18 
Спецификация этого раста существует? Строгое описание синтаксиса, ситуации неопределенного поведения, особенности функционирование в среде, автономное функционирование? Срок поддержки текущих спецификаций какой? Вот все современные компиляторы языка С спокойно и без каких-либо проблем компилируют код, написанный в начале 80-х и содержащий кучу вызовов библиотечных функций, включая лонгджампы и сложный форматный ввод/вывод. Код не менялся около сорока лет и сегодня используется без какой-либо доработки в том виде, в котором использовался с самого начала.
Аналолгично и с C++ -- код, написанный в начале 90-х и компилировавшийся semantic C++ и topspeed C++ без проблем сегодня компилируется и собирается с помощью g++. Как обстоит дело с этим у раста? Ныне написанный код скомпилируется в 2035 году? Или нужно будет искать программиста, чтобы он апедйтил исходники от версии к версии этого раста?

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

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

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

311. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от anonymous (??), 30-Июл-21, 11:21 
Я тебе сектрет открою, там указывают _протестированные_ компиляторы и их версии.
Ответить | Правка | Наверх | Cообщить модератору

620. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от anonymous (??), 02-Авг-21, 11:56 
Вообще-то если даже взять один и тот же компилятор Си (одной и той же версии) и попробовать собрать (и запустить) проект в других условиях (например, другая ОС), то уже вылезает тонна проблем. А если ещё и версию поменять, то ещё выползут. А если ещё и другой компилятор взять, то ещё выползут. Как минимум тупо разные UB создадут проблем. Я уж не говорю про такие мелочи, как -Werror делает тонну проектов не собираемых почти всегда (а без этого флага в коде копится ещё больше UB).

Но даже если забить на это, тут ещё проблема в том, что язык превращён в свалку (особенно последние С++).

Кстати говоря, не помню, чтобы в Go был стандарт, но там как раз без проблем можно собирать (и запускать) старые проекты.

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

624. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Совершенно другой аноним (?), 02-Авг-21, 12:41 
> Вообще-то если даже взять один и тот же компилятор Си (одной и
> той же версии) и попробовать собрать (и запустить) проект в других
> условиях (например, другая ОС), то уже вылезает тонна проблем.

Э.. а они точно вылезут из-за компилятора, а не, например, наличия библиотек, или настроек, сделанных при сборке самого компилятора? У нас есть самодельная прошивка, которая собирается GCC разных версий, и при сборке под Linux пришлось только добавлять -fleading-underscore, т.к. в сборке GCC она по-умолчанию выставлена для Windows, а для Linux нет.

> А если ещё и версию поменять, то ещё выползут. А если ещё и
> другой компилятор взять, то ещё выползут.

Вы точно говорите про компилятор C?

> Как минимум тупо разные UB создадут проблем. Я уж не говорю про такие мелочи, как -Werror
> делает тонну проектов не собираемых почти всегда (а без этого флага
> в коде копится ещё больше UB).

И часто Вы встречаете эти UB? Имхо, про них обычно узнают, когда что-то падает, и в итоге выясняется - да, здесь программист положился на UB, а в другой аппаратной платформе/другом компиляторе оно работает (или не работает) по-другому.

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

270. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от Брат Анон (ok), 30-Июл-21, 08:43 
Что только люди не сделают. Лишь нормальные языки не учить.Согласен переход с извращения на другое извращение -- несколько разнообразит боль.
Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

478. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (24), 31-Июл-21, 00:05 
А какие есть нормальные с производительностью уровня раста / c++?
И такие, чтоб популярные, а не ним или кристал
Ответить | Правка | Наверх | Cообщить модератору

564. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Брат Анон (ok), 01-Авг-21, 08:39 
> А какие есть нормальные с производительностью уровня раста / c++?
> И такие, чтоб популярные, а не ним или кристал

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

Что ним, что кристалл -- одинаковые поделки любителей, попытка подражания мейнстриму.

Хочешь глоток свежего воздуха? Смотри в сторону Обероно-подобных языков. Например, MultiOberon. Если хочешь зашаливающей производительности -- посмотри на тесты варианта Оберона "Vostok". Там тебе и десктоп, и JVM, и ведроид. Ты сожешь попробовать Оберон прямо сейчас в песочнице браузера. Ссылки гуглятся на раз.

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

571. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (571), 01-Авг-21, 11:06 
Обероны с GC  поэтому конкуренты не для раста а для Go и D.
Ответить | Правка | Наверх | Cообщить модератору

587. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Брат Анон (ok), 01-Авг-21, 21:04 
> Обероны с GC  поэтому конкуренты не для раста а для Go
> и D.

Кто тебе такую чушь сказал? В 60% реализаций Оберонов нет никакого GC. Оберон успешно запускают (лично я, например), на STM32F4T6. Там памяти, простите за мой французский -- с гулькин нос. Какой там GC? именно в этом и сила Оберонов -- хочешь будет тебе GC, не хочешь -- не будет. Ещё обращу твоё внимание анон: в варианте "Vostok" Оберон откровенно нагибает С++ и заставляет нервничать Си. См. тесты в блогпосте от ComDiv. Ещё раз специально для тебя повторю: на Оберонах написан под десяток операционных систем. Сколько операционных систем написано на Расте, которые испольуются в боевых самолётах, типа "Еврофайтера"? Или сколько управляющих систем на Расте используется на Ростовской атомной станции? На подстанции 110 кВ (как в Калининграде)? Или при управлении БПЛА? Ты пишешь с умным видом глупости по теме, которой совершенно не знаешь.

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

615. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (571), 02-Авг-21, 11:13 
> В 60% реализаций Оберонов нет никакого GC

Ссылку можно хоть на одну реализацию и чтобы там прямо говорилось что без GC. А то гугль наоборот больше подсовывает ссылки как оберон умеет в GC даже в ядерном коде.

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

656. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Брат Анон (ok), 04-Авг-21, 08:34 
> Ссылку можно хоть на одну реализацию и чтобы там прямо говорилось что
> без GC. А то гугль наоборот больше подсовывает ссылки как оберон
> умеет в GC даже в ядерном коде.

Достаточно на сайте Вирта почитать сообщение  о языке. Там ни слова нет о GC. Я тебе даже дам ссылку на русский перевод. Плохо ищешь.

https://github.com/Spirit-of-Oberon/ProjectOberon2013 -- виртовский Оберон, даже с эмулятором. Нет GC.

https://github.com/AntKrotov/oberon-07-compiler -- работает на ТРЁХ осях. Нет GC.

https://docs.google.com/document/d/14-KQD4UT0_Xd_s7kVHVKa6tx... -- перевод на русский язык, где GC даже не упоминается.

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

658. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (658), 04-Авг-21, 13:33 
>виртовский Оберон, даже с эмулятором. Нет GC.

Есть GC https://github.com/Spirit-of-Oberon/ProjectOberon2013/blob/m...

>работает на ТРЁХ осях. Нет GC.

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

>перевод на русский язык, где GC даже не упоминается.

Тут http://www.projectoberon.com/ в pdfках много раз упоминается.

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

659. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Брат Анон (ok), 05-Авг-21, 09:02 
>>виртовский Оберон, даже с эмулятором. Нет GC.
> Есть GC https://github.com/Spirit-of-Oberon/ProjectOberon2013/blob/m...

Хм. Что-то новенькое. Когда последний раз смотрел -- не было. Как по мне -- даже хорошо.

>>работает на ТРЁХ осях. Нет GC.
> Тут да нет, но это не полноценная реализация оберона, код на него
> легко переносим не будет, сразу потечет. И из-за отсутствия GC нет
> одного из самых любых пропагандистами оберон фич - динамической модульности. Про
> компонентное программирование тоже можно сразу забыть.

Код будет перенесён легко. Три оси это доказывают. Динамической модульности нет, да.
Но это не функция языка -- это функция системы. Наоборот, чем меньше фич в ЯЗЫКЕ -- тем легче перенос. Компонентное программирование реализуется не через язык,а через среду. BBCB тебе в помощь.
Если ты внимательно прочитал описание -- там на нормальном буржуйском языке написано, что это не коммерческий вариант. Пацанчег его запили в одну харю. Попробую запили в одну харю Аду или ржавого. Ещё раз отдельно отмечу: существует ДВА ДЕСЯТКА реализаций Оберона одиночками. Переносимость у Оберона -- кратно выше, чем в Си. Зависимость от железа -- нулевая. Именно это главная фича Оберона, а не GC или динамическая модульность.

>>перевод на русский язык, где GC даже не упоминается.
> Тут http://www.projectoberon.com/ в pdfках много раз упоминается.

Нет. Нигде не упоминается обязательность GC. См. реализацию Оберона на основе виртовского от AIXP -- там всё также нет GC.

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

665. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (665), 06-Авг-21, 11:11 
>Хм. Что-то новенькое. Когда последний раз смотрел -- не было. Как по мне -- даже хорошо.

Судя по пдфкам последний раз 8 лет назад обновленным, оно там всегда было.

>Код будет перенесён легко. Три оси это доказывают

Я про перенос кода с других реализаций оберона, а там GC и все на этой реализации тупо утекет.

>Попробую запили в одну харю Аду или ржавого.

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

>Ещё раз отдельно отмечу: существует ДВА ДЕСЯТКА реализаций Оберона одиночками.

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

>Нет. Нигде не упоминается обязательность GC.

Это очень плохо. Теперь более понятна стала для меня непопулярность оберонов. Вообще как-то раньше ставил побаловаться xds oberon,  его умения оптимизации кода тогда впечатлили.

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

650. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (246), 03-Авг-21, 08:55 
Если уж говорить о промышленных языках, на которых написано вот всякое такое, то это Ada.

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

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

657. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Брат Анон (ok), 04-Авг-21, 08:39 
> Если уж говорить о промышленных языках, на которых написано вот всякое такое,
> то это Ada.
> А оберон это для узкого круга фанатов, он слишком уж вещь в
> себе.

Нет. Ада это полукоммерческий продукт, который в ардуино ты не запихнёшь при всём желании.
Узкий круг фанатов Оберона, ещё раз для уяснения: фазированная антенная решётка основного боевого самолёта Евросоюза -- "Еврофайтер", швейцарский национальный центр управления дорожным движением. процессинговый центр "Дойчебанка", диспетчерский центр управления каскадом ГРЭС на Амазонке, подсистема резервирования телеметрии на Ростовской АЭС, управляющая программа БПЛА (в России, гуглится на раз), подсистема дорасчёта электрических параметров ПС 110 кВ "Восточная-1" Калининград, система диспетчерского управления перерабатывающих заводов в Орле(2 шт, Мираторг),символьная система расчёта проблемы дефекта массы нейтрино (объединённый центр ядерных исследований, Дубна), комплекс приборов для исследования эффекта люминисценции в биологических растворах (Новосибирск), основы преподавания программирования (клуб "Байтик", Троицк), кружок программирвоания для детей при Новосибирском государственном федеральном университете.

В каком месте это узкий круг фанатов? В каком месте тут хоть раз использована Ада? Пишешь то, о чём не имеешь ни малейшего понятия. Попробуй детям попреподавать Аду -- я на тебя посмотрю. Вот те самые детишки, что освоили Оберон -- будут программировать на нём ВСЁ, и уних не будет болеть голова от концепции владения раста (с его диким синтаксисом) и не думая о том, что такое адресная арифметика, как не поломать память, и всякие низкоуровневые вещи. Но при этом, при необходимости -- всего могут спуститься на аппаратный уровень. Один язык для всегда -- это технологическое преимущество перед всеми остальными, кто сначала учит Васик, потом Паскаль, потом С++, а когда приходят на работу -- оказывается надо было учить питон или пхп какой-нибудь. На Обероне -- для программирования железа даже ассемблер не нужен, как отдельная сущность. Собственно, как отдельной сущности -- ассемблера в Обероне и нет (в отличии от Си, который в ассемблере всё же нуждается -- в сущности, второй язык).

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

660. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Совершенно другой аноним (?), 05-Авг-21, 10:16 
> На Обероне -- для программирования железа даже ассемблер не нужен, как
> отдельная сущность. Собственно, как отдельной сущности -- ассемблера в Обероне и
> нет (в отличии от Си, который в ассемблере всё же нуждается
> -- в сущности, второй язык).

Если не сложно изложите по-подробнее - как Вы без ассемблера сможете в регистре CR0 установить соответствующий бит для перехода в защищенный режим? или загрузить регистр GDTR таблицы GDT?

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

663. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Брат Анон (ok), 06-Авг-21, 09:03 
> Если не сложно изложите по-подробнее - как Вы без ассемблера сможете в
> регистре CR0 установить соответствующий бит для перехода в защищенный режим? или
> загрузить регистр GDTR таблицы GDT?

Оберон -- это ЯВУ. Ему плевать какие есть регистры в процессоре, потому что это уже не ЯВУ. А если таки руки чешутся добраться до железа (за что в Оберонах придётся мягко говоря серьёзно держать ответ перед тимлидом за такие выкрутасы) -- для этого во всех Оберонах есть псевдомодуль SYSTEM (который позволяет творить с железом что угодно и для безопасности -- импорт этого модуля легко детектируется анализатором исходников). SYSTEM (* если прям очень сильно хочется *) может содержать ассемблер, но в сущности -- он просто не нужен.  Манипуляцию с байтами в машинной памяти берёт на себя компилятор (у которого есть высокоуровневые сущности от железа, что существенно снижает вероятность косяков, но не даёт ложную уверенность программисту, что всё будет ништяк).

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

664. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Совершенно другой аноним (?), 06-Авг-21, 10:13 
>> Если не сложно изложите по-подробнее - как Вы без ассемблера сможете в
>> регистре CR0 установить соответствующий бит для перехода в защищенный режим? или
>> загрузить регистр GDTR таблицы GDT?
> Оберон -- это ЯВУ. Ему плевать какие есть регистры в процессоре, потому
> что это уже не ЯВУ.

Ну, несмотря на то, что C до недавнего времени тоже был ЯВУ, и там для повседневной работы тоже не нужно было знать регистры, но мы вроде как про программирование железа - а там, как-раз эти регистры и есть, какие в процессоре, какие отображенные на память (иногда с хитрым поведением, когда для обнуления каких-то определённых бит надо именно эти биты записать в регистр, а иногда, которые просто обнуляются по факту чтения из данного регистра), а какие (в архитектуре 8086+) отображенные на специальное пространство ввода-вывода, к которому доступ идёт спец-командами (in/out).

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

Всё-же не совсем понятно, как Вы можете не используя ассемблер, установить в регистре CR0, бит 0, чтобы перевести процессор в защищенный режим процессора. На память этот регистр не отображается. Ну или всякие взаимодействия с отладочными регистрами DR (мы-же вся так-же про программирование железа, в том числе и настроек самого процессора).

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

671. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Брат Анон (ok), 09-Авг-21, 08:55 
> Ну, несмотря на то, что C до недавнего времени тоже был ЯВУ,...

Си никогда не был ЯВУ.

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

Поэтому Си не ЯВУ.

> Всё-же не совсем понятно, как Вы можете не используя ассемблер, установить в
> регистре CR0, бит 0, чтобы перевести процессор в защищенный режим процессора.

Откройте для себя машинные команды.


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

672. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Совершенно другой аноним (?), 09-Авг-21, 09:20 
>> Ну, несмотря на то, что C до недавнего времени тоже был ЯВУ,...
> Си никогда не был ЯВУ.

гм.. вообще-то был, до того, как пошли C++/Java.

>> и там для повседневной работы тоже не нужно было знать регистры,
> Поэтому Си не ЯВУ.

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

Как Вы из этого вывели, что C не ЯВУ? или под ЯВУ Вы понимаете что-то другое?

>> Всё-же не совсем понятно, как Вы можете не используя ассемблер, установить в
>> регистре CR0, бит 0, чтобы перевести процессор в защищенный режим процессора.
> Откройте для себя машинные команды.

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

        db 0eah
        dw 0
        dw entry

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

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

45. "Выпуск языка программирования Rust 1.54"  +3 +/
Сообщение от Anonnnym (?), 29-Июл-21, 23:13 
> управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора

lockfree без GC, или при чем тут упоминание параллелизма?

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

92. "Выпуск языка программирования Rust 1.54"  –14 +/
Сообщение от Хан (?), 30-Июл-21, 00:27 
Есть там GC, сказки растоманов про некую магию избавлющую от всех проблем это полная туфта
Ответить | Правка | Наверх | Cообщить модератору

120. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Aukamo (ok), 30-Июл-21, 01:51 
Приведите ссылку на строку(и) кода, благо Rust на Github есть, показывающего что в расте есть GC. Очень интересно посмотреть. Под GC имеется в виду именно runtime\времени исполнения.
Ответить | Правка | Наверх | Cообщить модератору

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

162. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Aukamo (ok), 30-Июл-21, 03:08 
> Магия?

Да: https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html

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

172. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Хан (?), 30-Июл-21, 03:24 
Ахахаха вот это да сильно... выдавать за ноухау подобие умных указателей C++ !!! Это фиаско братан
Ответить | Правка | Наверх | Cообщить модератору

237. "Выпуск языка программирования Rust 1.54"  +5 +/
Сообщение от Аноним (246), 30-Июл-21, 05:57 
На плюсах с умными указателями и RAII в смысле управления памятью и получится примерно Rust.
Принципиальных отличий два (и они тесно взаимосвязаны). Первое - это (почти) нулевой оверхед, поскольку проверки в Расте делаются в компайл-тайм (да, в это сложно поверить, видя впервые, надо вникать :). Второе - невозможность нарушения RAII заложена в дизайн языка, просто не скомпилируется.
Ответить | Правка | Наверх | Cообщить модератору

396. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Sem (??), 30-Июл-21, 18:28 
Поздравляю с разморозкой.
Лучше бы доку по расту почитал, чем время тратить на такие комментарии.
Ответить | Правка | К родителю #172 | Наверх | Cообщить модератору

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

261. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Aukamo (ok), 30-Июл-21, 08:09 
Cемейство: Box, Rc, Arc, Cell и т.д. можно отнести к умным указателям, имеющим runtime overhead. Я уже говорил что говоря о GC имеется именно runtime а не механизм чистки. В основном, всё держится на механизме владения, и там никакого overhead-а нету, + ZST https://doc.rust-lang.org/nomicon/vec-zsts.html (о таком раньше вообще не слышал, если кто знает - дайте ссылку, интересно). Если что-то надо подчистить раньше чем это сделает компилятор - есть функция `drop`.
Ответить | Правка | Наверх | Cообщить модератору

281. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от n00by (ok), 30-Июл-21, 09:11 
> + ZST https://doc.rust-lang.org/nomicon/vec-zsts.html
> (о таком раньше вообще не слышал, если кто знает - дайте
> ссылку, интересно).

А для чего нужны эти типы нулевого размера? Какую задачу решают?

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

300. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (299), 30-Июл-21, 10:11 
Задач несколько, самая простая - это типизация без оберток.
Почитать можно тут
https://www.hardmo.de/article/2021-03-14-zst-proof-types.md#...
https://ferrous-systems.com/blog/zero-sized-references/#diff...
Ответить | Правка | Наверх | Cообщить модератору

315. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от n00by (ok), 30-Июл-21, 12:13 
> Задач несколько, самая простая - это типизация без оберток.
> Почитать можно тут
> https://www.hardmo.de/article/2021-03-14-zst-proof-types.md#...
> https://ferrous-systems.com/blog/zero-sized-references/#diff...

Спасибо, во втором случае увидел практический смысл.

В примере имеется два блока памяти, из которых выделяются элементы. Тут есть нюансы:
1. Информация о принадлежности элемента конкретному блоку содержится в адресе элемента.
2. Для задачи "вернуть элемент куда следует" явная обработка вышеуказанной информации не является необходимой.
3. Информация доступна во время исполнения. ZST (по определению) такое не обеспечивает. Насколько понимаю, инстанциируется (я слышал, что темплейты в С++ это жесть, но они это позволяют без ZST) два экземпляра деалокатора.

Наверное, я что-то упустил?

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

330. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (299), 30-Июл-21, 13:38 
Если честно, то я с ZST знаком теоретически, на практике в моих задачах они просто не были нужны. Но насколько я понимаю вся фишка что проверки типов идут на этапе компиляции, а не в рантайме и в момент компиляции подставится нужный вызов. Ну или просто не скомпилируется.
Так что сори что не смог ответить на вопросы. Нужно спросить кого-то более знающего.

Еще можно глянуть пример PhantomData как частный вариант ZST.
https://doc.rust-lang.org/stable/core/marker/struct.PhantomD...

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

339. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 14:41 
> Еще можно глянуть пример PhantomData как частный вариант ZST.
> https://doc.rust-lang.org/stable/core/marker/struct.PhantomD...

Я бы дал ссылку на
https://doc.rust-lang.org/nomicon/phantom-data.html

> PhantomData consumes no space, but simulates a field of the given type for the purpose of static analysis. This was deemed to be less error-prone than explicitly telling the type-system the kind of variance that you want, while also providing other useful things such as the information needed by drop check.

там и пример для ZST более лаконичен и поняте не-рустовцам
https://doc.rust-lang.org/nomicon/exotic-sizes.html
> On their own, Zero Sized Types (ZSTs) are, for obvious reasons, pretty useless.

...
> One of the most extreme examples of this is Sets and Maps. Given a Map<Key, Value>, it is common to implement a Set<Key> as just a thin wrapper around Map<Key, UselessJunk>. In many languages, this would necessitate allocating space for UselessJunk and doing work to store and load UselessJunk only to discard it. Proving this unnecessary would be a difficult analysis for the compiler.
> However in Rust, we can just say that Set<Key> = Map<Key, ()>. Now Rust statically knows that every load and store is useless, and no allocation has any size. The result is that the monomorphized code is basically a custom implementation of a HashSet with none of the overhead that HashMap would have to support values.

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

509. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Aukamo (ok), 31-Июл-21, 10:28 
> А для чего нужны эти типы нулевого размера? Какую задачу решают?

Rust ими активно пользуется в стандартной библиотеке, но в эту сторону я не сильно копал. Задача, на сколько я знаю, это Zero Cost Abstraction, примеры привели выше.

Самое большое впечатление составил этот проект: https://github.com/Rahix/avr-hal , это, грубо говоря, библиотека <Arduino> для Rust. Если посмотреть исходники, становится понятно то как используются ZST. По сути, ZST позволяют управлять потоком исполнения так, как и в случае если у тебя есть объект с данными, т.е. ты можешь обращаться к сущности, задавать или спрашивать некие свойства, хотя, под капотом, сама сущность не хранит никакой информации и её можно было бы заменить на 100500 #define\#if\#ifdef. Это как модуль или область видимости, но в виде объекта и со свойствами объекта. Короче, самое крутое, доведённое до предела использование ZST я, пока что, видел только в avr-hal (за счёт того что для embedded каждый байт на счету).

https://doc.rust-lang.org/stable/embedded-book/static-guaran... не помню где я видел класное описание того как в avr-hal пины\периферия в виде ZST создаются. Там, вроде как, смежный проект для cortex (вместо atmel), книгу написал как ZST можен это обиграть. Может где в issues есть ссылка, я просто, интерес к проэкту на время потерял, не хочу сейчас в нём копаться.

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

278. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от n00by (ok), 30-Июл-21, 09:06 
Умные указатели это разновидность автоматического управления памятью, как и сборка мусора. Путаница возникает, поскольку и там и там есть варианты с подсчётом ссылок.
Ответить | Правка | К родителю #173 | Наверх | Cообщить модератору

561. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (571), 01-Авг-21, 08:14 
То есть по твоему получается что C++ это тоже язык с GC? Ведь разницы у него с растом по подержке умных кказателей практически нет.
Ответить | Правка | К родителю #173 | Наверх | Cообщить модератору

347. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Anonnnym (?), 30-Июл-21, 15:06 
>> управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора
> lockfree без GC, или при чем тут упоминание параллелизма?

Судя по дискуссии, меня не совсем правильно поняли. Я не говорил о GC таком как в Java, C# или D, который прибирает за пользователем всю выделенную память. Я говорил о GC для lockfree структур.

Изначально процитированная часть (не полная) говорит о том, что в rast высокая скорость выполнения параллельных заданий достигается без использования GC и runtime. Тут я предположил 2 вещи о которых может вестись речь: выделение/освобождение памяти и lockfree структуры. Для первого сообщение в новости исключает кастомные аллокаторы, а без них мы не можем выделить памяти без блокировок, так как ходим в ядро. По этому я и спросил только про lockfree, т.к. мне не совсем понятно как можно организовать lockfree-структуру без сборщика мусора.

На пример возьмем односвязный список с 2мя полями - value и next, где next - указатель на следующий элемент, а value - значение, которое нам в примере неинтересно.

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

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

По этому для удаления элементов нужен сборщик мусора, который когда-нибудь таки дернит блокировку и по удаляет элементы (вызовет delete).

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

437. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним зеленый (?), 30-Июл-21, 20:25 
О "безопасном" параллелизме в раст пишут только по одной причине. О подмножестве состояний гонки - гонки по данным. "когда разные потоки обращаются к одной ячейке памяти без какой-либо синхронизации и как минимум один из потоков осуществляет запись."

Такое в раст запрещено правилами владения/заимствования и не скомпилируется. Остальные гонки (логические) конечно приведут к дедлокам.

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

507. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 31-Июл-21, 09:17 
> О "безопасном" параллелизме в раст пишут только по одной причине. О подмножестве
> состояний гонки - гонки по данным. "когда разные потоки обращаются к
> одной ячейке памяти без какой-либо синхронизации и как минимум один из
> потоков осуществляет запись."

Если один _писатель_, то где там гонка? Запись одной ячейки атомарна. Скорее всего, вместо записи имелась ввиду модификация.

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

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"  +/
Сообщение от Кир (?), 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"  +/
Сообщение от Аноним (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 (?), 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ообщить модератору

52. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от Аноним (52), 29-Июл-21, 23:23 
Какой язык выбрать новичку для изучения, чтобы потом грести бабло лопатой? rust, haskell, js, vlang, crystal, zig, java? Как я понимаю большие деньги можно заработать в кровавом энтерпрайзе, а они любят джавку, поэтому выбирать и не приходится. Только java?
Ответить | Правка | Наверх | Cообщить модератору

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

62. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Хан (?), 29-Июл-21, 23:32 
Бред сказал... тип ну например он выбрал веб и тут... бац!!!
PHP
Python
Ruby
Бац
Java
C#
Бац бац
Go

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

64. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноньимъ (ok), 29-Июл-21, 23:34 
> Бред сказал... тип ну например он выбрал веб и тут... бац!!!

Javascript.

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

67. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Хан (?), 29-Июл-21, 23:34 
Typescript
Бац бац
Ответить | Правка | Наверх | Cообщить модератору

69. "Выпуск языка программирования Rust 1.54"  +3 +/
Сообщение от Аноньимъ (ok), 29-Июл-21, 23:35 
Вжух! И в продакшен!
Ответить | Правка | Наверх | Cообщить модератору

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

72. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (46), 29-Июл-21, 23:42 
Веб - слишком широкое понятие. Там например есть и фронт, и бэк. Поэтому странно просто выбрать "веб". Это как выбрать "прикладное программирование". Лучше чем ничего, потому что отсекает какое-то множество языков, но всё ещё недостаточно специализировано, чтобы остановиться на паре.
Ответить | Правка | К родителю #62 | Наверх | Cообщить модератору

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

63. "Выпуск языка программирования Rust 1.54"  +3 +/
Сообщение от Аноньимъ (ok), 29-Июл-21, 23:33 
> Какой язык выбрать новичку для изучения, чтобы потом грести бабло лопатой?

Русский, английский. Язык бизнес отношений и социальных связей.

>rust, haskell, js, vlang, crystal, zig, java?

Точно не поможет.

> Как я понимаю большие деньги
> можно заработать в кровавом энтерпрайзе

Нельзя.

Какие-то особые доходы есть сейчас у "блокчейн девелоперов", криптография вот это всё.
И, чуть поскромнее в машинном обучении и ИИ.
Попробуйте поучиться контракты для эфира писать.

Когда заработаете много денег отпишитесь, дам кошелёк для доната.

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

91. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 30-Июл-21, 00:15 
У нас только в банковском ИТ секторе водятся деньги, а там Java и C#

Все остальное это или 30-50 тыщ на госконторах или кукишь в статапах из сколково

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

298. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от RomanCh (ok), 30-Июл-21, 10:08 
А "у нас" это где? Учитывая что сейчас можно удалённо работать примерно где угодно и деньги там отличаются на порядок. И это вовсе не говномешалки блокчейна или стартупы с "гибким графиком" на котором вас будут гнуть во все стороны в любое время дня и ночи.

Да и по ЯП особо плотного зажима в отрасли вроде как нет. Нормальным спецам платят везде.

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

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

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

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

> ипотеку под него не возьмешь((( таки дела

Мне тут недавно банк где зарплатный проект ипотеку на 25 млн. предлагал. Такие дела.

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

444. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (547), 30-Июл-21, 21:18 
Если вбелую через ИП работать, и ИП больше, чем пара лет - никаких проблем нет.
Ответить | Правка | К родителю #389 | Наверх | Cообщить модератору

499. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от mma (?), 31-Июл-21, 06:52 
>У нас только в банковском ИТ секторе водятся деньги, а там Java и C#

Может у вас местные "царьки" бизнеса до сих пор живут по принципу рабовладельцев рассуждая "зачем босоте платить больше если все равно ни куда не денутся", но как мне кажется таких уже давно накрыл кадровый голод. Последних несколько лет толковый бизнес всех кто хочет, умеет и самое главное может у таких увел. Сейчас бьются между собой подымая планки годовых доходов. И условия все: хочешь переезд, хочешь удаленка, хочешь особый график, некоторые идут уже дальше, например "а собирайтесь как вы всей группой и поработайте в рамках рабочего расписания пару недель из крыма, сочи или турции, заодно отдохнете, вот вам билеты и гостиница"

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

>Все остальное это или 30-50 тыщ на госконторах или кукишь в статапах из сколково

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

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

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

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

366. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 30-Июл-21, 16:39 
Пых никуда не делся и все так же монопольно властвует в сети со своими то 70% то 80%
Ответить | Правка | Наверх | Cообщить модератору

632. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (630), 02-Авг-21, 15:00 
Да. Ентерпрайзу плевать на язык, он деньги делает и время экономит, поэтому использует языки с мощными фреймворками. А инты в циклах, кто быстрее, пацаны на форумах считают ...
Ответить | Правка | К родителю #65 | Наверх | Cообщить модератору

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

465. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от freecoder (?), 30-Июл-21, 23:34 
Выбирай Rust и осваивай разработку под Solana или Polkadot.
Ответить | Правка | К родителю #52 | Наверх | Cообщить модератору

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

66. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (46), 29-Июл-21, 23:34 
Бесплатно ништяков не бывает, за всё надо чем-то платить. Был бы Rust как Go - собирался бы так же быстро, как и Go.
Ответить | Правка | Наверх | Cообщить модератору

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

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

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

513. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от anonymous (??), 31-Июл-21, 12:13 
Я пользуюсь Go и всё мечтаю заиметь immutable как в Rust :(
Ответить | Правка | Наверх | Cообщить модератору

82. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (46), 29-Июл-21, 23:53 
Преимущество в одном контексте является недостатком в другом. Rust как язык мощнее Go, но если команда на 75% из джунов, то это минус. Джуны на Go напишут лучше и быстрее, чем на Rust.
Ответить | Правка | К родителю #70 | Наверх | Cообщить модератору

83. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 29-Июл-21, 23:56 
Так Go лучше получается?

И кстати да, за широкими как галактика возможностями это к C++, но это вещь в себе

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

99. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 00:38 
> Так Go лучше получается?

Го хорошо подходит для написания сетевых сервисов.
Он именно для этого и создавался.
Ну или для чего-то с интенсивным IO.

Для всего остального, уже не так интересно.

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

136. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 30-Июл-21, 02:27 
Ниша Go уже давно обозначена...

А для чего хорошо подходит Rust?

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

197. "Выпуск языка программирования Rust 1.54"  +3 +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 04:13 
Раст универсальный, тоесть для всего.

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

Поэтому видимо не очень для прототипирования, и для каких-то наколенных скриптов.

В тоже время есть патерн матчинг, и макросы, так что может быть и с этим всё окей.

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

235. "Выпуск языка программирования Rust 1.54"  +4 +/
Сообщение от Аноним (246), 30-Июл-21, 05:44 
Что лучше - лопата или экскаватор?

Правильно, зависит от задачи.

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

556. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Kuku (?), 01-Авг-21, 00:46 
Так раст - это и есть лопата, в отличие от экскаватора Го. По скорости разработки, конечно. Зато потом скорость выполнения программ будет аж в 2-3 раза выше. Это ж жуть какая производительность!! ))
Ответить | Правка | Наверх | Cообщить модератору

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

277. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (277), 30-Июл-21, 09:03 
>В чем реальное преимущество Rust над Gо?

Ты ещё С++ с PHP сравни.

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

528. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Хан (?), 31-Июл-21, 15:33 
Не могу, PHP интерпретируемый ЯП, C++ компилируемый ЯП

А вот Rust и Go можно оба компилируемые, оба с GC в исполняемом файле, оба с недоООП, оба системные

Только вот Go показал себя как годную технологию, а Rust как манямирок для идиотов вроде тебя

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

531. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 31-Июл-21, 16:04 
> А вот Rust и Go можно
> оба с GC в исполняемом файле,
> оба системные

Все продолжаешь газифицировать лужи?

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

532. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (349), 31-Июл-21, 16:17 
Про GC в расте это тролинг?
Ответить | Правка | К родителю #528 | Наверх | Cообщить модератору

557. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Kuku (?), 01-Авг-21, 00:48 
Там просто статический ГЦ. Кстати, он не всегда лучше динамического ))
Ответить | Правка | Наверх | Cообщить модератору

567. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (571), 01-Авг-21, 08:45 
Нет там ни какого статического GC. Там точно такой же контроль времени жизни и использование raii как и в C++. Отличие только в жестком контроле компилятора над ссылками и в перемещении вместо копирования по умолчанию.
Ответить | Правка | Наверх | Cообщить модератору

616. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Kuku (?), 02-Авг-21, 11:23 
Ты элементарной грамоте научись сначала, а потом уже будешь разглагольствовать о том, есть там GC или нет.
Ответить | Правка | Наверх | Cообщить модератору

622. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (571), 02-Авг-21, 12:29 
Если человеку нечего сказать по существу он резко становится громотеем. А настоящий статический GC конечно были попытки реализовать, но что-то реальное получилось только на регионах https://en.m.wikipedia.org/wiki/Region-based_memory_management и толком нигде не прижилось.  
Ответить | Правка | Наверх | Cообщить модератору

71. Скрыто модератором  –6 +/
Сообщение от Хан (?), 29-Июл-21, 23:36 
Ответить | Правка | Наверх | Cообщить модератору

76. Скрыто модератором  +3 +/
Сообщение от Ненавижу SJW (?), 29-Июл-21, 23:47 
Ответить | Правка | Наверх | Cообщить модератору

79. Скрыто модератором  –4 +/
Сообщение от Хан (?), 29-Июл-21, 23:49 
Ответить | Правка | Наверх | Cообщить модератору

95. Скрыто модератором  +2 +/
Сообщение от Rev (?), 30-Июл-21, 00:34 
Ответить | Правка | Наверх | Cообщить модератору

112. Скрыто модератором  –1 +/
Сообщение от Хан (?), 30-Июл-21, 01:19 
Ответить | Правка | Наверх | Cообщить модератору

141. Скрыто модератором  +1 +/
Сообщение от Aukamo (ok), 30-Июл-21, 02:33 
Ответить | Правка | Наверх | Cообщить модератору

146. Скрыто модератором  –2 +/
Сообщение от Хан (?), 30-Июл-21, 02:43 
Ответить | Правка | Наверх | Cообщить модератору

153. Скрыто модератором  +/
Сообщение от Aukamo (ok), 30-Июл-21, 02:53 
Ответить | Правка | Наверх | Cообщить модератору

169. Скрыто модератором  –3 +/
Сообщение от Хан (?), 30-Июл-21, 03:18 
Ответить | Правка | Наверх | Cообщить модератору

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

96. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от Аноним (96), 30-Июл-21, 00:35 
Виджетов нет, IDE нет. Софта на расте тоже не видно, так наколенные поделки качества хуже чем на питоне
Ответить | Правка | Наверх | Cообщить модератору

100. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 00:40 
> Виджетов нет, IDE нет. Софта на расте тоже не видно, так наколенные
> поделки качества хуже чем на питоне

Есть забытое искусство писать без IDE, функциональные языки позволяют это делать продуктивно.

Ну и таки, интеграция с VScode у раста отличная. Есть и Эклипс например. Чего тебе ещё собака надо?

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

156. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (156), 30-Июл-21, 03:00 
Есть забытое исскуство работать с памятью. Но это конечно другое.

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

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

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

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

C/C++ нет никаких проблем. А в современных плюсах даже не нужно забытое исскуство работы с памятью. Этих проблем там нет уже 100 лет в обед.

Так что собаки берите это ржавое и топайте в будку.

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

201. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 04:22 
>Есть забытое исскуство работать с памятью. Но это конечно другое.

Это как искусство вспахивать поле лопатой.
И не исскуство, и хорошо никогда не получалось.

>а контекстную навигацию, контекстный рефакторинг и элементарно встроенную документацию.

Для раста этого нет?

>Нафига оно тогда надо если есть нормальные языки где с этим всё впорядке.

С емасом всё в порядке, или с эклипсом?

>C/C++ нет никаких проблем.

Ну нет так нет. Главное 3 раза по 3 перед сном повторить.

>Так что собаки берите это ржавое и топайте в будку.

Злой вы, как собака.

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

353. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (349), 30-Июл-21, 16:04 
>Есть забытое исскуство работать с памятью. Но это конечно другое.

Это миф, до сих пор всплывают уязвимости в коде с возрастом больше десяти лет.

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

585. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от РЭЮЭШЬ (?), 01-Авг-21, 19:14 
Idea вполне ок с растом.
Ответить | Правка | К родителю #156 | Наверх | Cообщить модератору

107. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (103), 30-Июл-21, 01:08 
>Виджетов нет

60FPS.

>IDE нет

Qt Creator + rust-analyzer

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

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

284. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 09:26 
Скорее всего, имеется ввиду поддержка LSP. То есть QtCreator точно так же как и VSCode при просмотре исходников подгружал и выполнял код. :) https://opennet.ru/55159-rust
Ответить | Правка | Наверх | Cообщить модератору

529. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Хан (?), 31-Июл-21, 15:35 
Растоманы советуют плюсовую RAD QtCreator для разработки на расте...Теперь я слышал все
Ответить | Правка | К родителю #107 | Наверх | Cообщить модератору

533. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (349), 31-Июл-21, 16:21 
Плюсисты давно сидят в IDE написаных на яве, шарпе и даже на лиспе.
Ответить | Правка | Наверх | Cообщить модератору

109. "Выпуск языка программирования Rust 1.54"  –4 +/
Сообщение от Хан (?), 30-Июл-21, 01:18 
Нет софта нет проблем...стабильность!
Ответить | Правка | К родителю #96 | Наверх | Cообщить модератору

142. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Aukamo (ok), 30-Июл-21, 02:37 
Барин за слова не отвечает: Rust Language Server в виде Rust analyzer 100 лет как есть. Можно что на Vim что на VS Code писать с одинаковой степенью интеграции. VS Code даже дебажить через gdb может, если напрягает запуск с терминала.
Ответить | Правка | К родителю #96 | Наверх | Cообщить модератору

168. "Выпуск языка программирования Rust 1.54"  –4 +/
Сообщение от Аноним (156), 30-Июл-21, 03:17 
Барин тупит?

Где контекстный поиск? Где контекстный рефакторинг? Где интерактивная справка? Или у тебя ide это только подстветка синтаксиса.

Не удивительно что ты VSCode к IDE приплёл. Потому что кроме подсветки синтаксиса оно ничего не умеет. Или обмазывайся васянскими дырявыми тырящими всё на свете плагинами. Ни в одной серьёзной канторе тебе такое не позволят.

С language server. Тоже мне. Нахрена мне ещё сервер какой-то там пускать если у нормальных языков и так всё без проблем. Оно это только ржавое не хочет ворочаться нигде.

Но что меня обрадовало. Тут упомянули что QtCreator что-то может. А это уже заявка. Если доведут поддержку до ума это будет действительно прорыв для rust.

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

294. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (294), 30-Июл-21, 09:47 
> Барин тупит?

Да, барин тупит вместо того что бы посмотреть возможности VSCode c плагинами.
Барин не понимает, что IDE это и есть редактор кода с плагинами в большинстве своем.
По крайней мере, мне не извесно ни одного монолитного (без плагинов) IDE.

>Потому что кроме подсветки синтаксиса оно ничего не умеет.

Вот тут барин просто нагло врет.

>С language server. Тоже мне. Нахрена мне ещё сервер какой-то там пускать если у нормальных языков и так всё без проблем.

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

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

357. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (349), 30-Июл-21, 16:13 
>Где контекстный поиск? Где контекстный рефакторинг? Где интерактивная справка? Или у тебя ide это только подстветка синтаксиса.

Все это и больше, в плагине руста для иде от jetbrains. У меня например усановлен в clion и работает по моему лучше чем сам clion с С++.

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

586. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от РЭЮЭШЬ (?), 01-Авг-21, 19:15 
нечеловечески чудовищно плюсую!
Ответить | Правка | Наверх | Cообщить модератору

399. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Sem (??), 30-Июл-21, 18:37 
У меня VSCode всё это умеет. У нас разные VSCode?
Ответить | Правка | К родителю #168 | Наверх | Cообщить модератору

406. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (547), 30-Июл-21, 18:53 
> Где контекстный поиск? Где контекстный рефакторинг? Где интерактивная справка?

neovim + lsp + language server + конфигурация (neovim_rust, например). Всё есть, но требуется навык работы с вимом, да.

Если хочется прям IDE, то IntelliJ Rust есть.

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

247. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (24), 30-Июл-21, 06:41 
Вариантов для создания UI полно. Вопрос в том, зачем писать тот UI на языке, который для этого плохо подходит (Rust, C, C++, Java, etc)
Оптимальнее использовать core на Rust и что угодно иное для интерфейса

По IDE:
- rust analyzer действительно мощная штука, активно развивается.
vscode, vim, etc
- IntelliJ Rust, официальный плагин от JetBrains
Интересен своим собственным парсером, не лишен интеграции cargo check

Всё отлично с IDE.

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

326. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (316), 30-Июл-21, 13:29 
>зачем писать тот UI на языке, который для этого плохо подходит (Rust, C, C++, Java, etc)

Из перечисленных, C++ для (G)UI подходит лучше всего. Потому, что Qt, FLTK, FOX и менее известные.

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

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

97. "Выпуск языка программирования Rust 1.54"  +4 +/
Сообщение от Аноним (96), 30-Июл-21, 00:36 
https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=rust - это вот всё кто разгребать будет? Или они только и могут на других вину сваливать?
Ответить | Правка | Наверх | Cообщить модератору

98. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (96), 30-Июл-21, 00:36 
И это наминутку не в софте на расте. Это в САМОМ расте
Ответить | Правка | Наверх | Cообщить модератору

102. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 00:49 
> И это наминутку не в софте на расте. Это в САМОМ расте
>Deno is a runtime for JavaScript and TypeScript that uses V8
>Это в САМОМ расте

Чё?

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

257. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (257), 30-Июл-21, 07:54 
> И это наминутку не в софте на расте. Это в САМОМ расте

В первой же дыре код на _Си_ "A flaw was discovered in GNU libiberty within demangle_path() in rust-demangle.c". В остальном дыры в unsafe-блоках  каких-то левых crate-модулей.

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

283. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Совершенно другой аноним (?), 30-Июл-21, 09:15 
CVE-2020-36317, CVE-2020-36318, CVE-2020-36323, CVE-2021-31162, CVE-2021-28875 - CVE-2021-28879 тоже левые крейты? И как понять, какие крейты левые, а какие - одобренные к использованию?
Ответить | Правка | Наверх | Cообщить модератору

410. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (547), 30-Июл-21, 19:00 
Это всё дыры в unsafe-коде. Залатают.

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

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

450. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от пейсатель unsafe (?), 30-Июл-21, 22:14 
Ничего у вас не получится - unsafe в Расте будет всегда!

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

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

458. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (24), 30-Июл-21, 23:25 
Ну так в этом и смысл
В либах он есть, а программист чаще всего не нуждается

В любом случае, это лучше 100% unsafe

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

611. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Совершенно другой аноним (?), 02-Авг-21, 08:49 
> Ну так в этом и смысл
> В либах он есть, а программист чаще всего не нуждается

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

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

612. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Совершенно другой аноним (?), 02-Авг-21, 08:52 
> Это всё дыры в unsafe-коде. Залатают.

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

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

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

124. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (165), 30-Июл-21, 02:02 
Какой-то п0pн0рассказ...
Ответить | Правка | Наверх | Cообщить модератору

130. Скрыто модератором  –3 +/
Сообщение от Аноним (588), 30-Июл-21, 02:22 
Ответить | Правка | Наверх | Cообщить модератору

135. Скрыто модератором  –1 +/
Сообщение от Аноним (110), 30-Июл-21, 02:26 
Ответить | Правка | Наверх | Cообщить модератору

157. Скрыто модератором  +/
Сообщение от Аноним (157), 30-Июл-21, 03:01 
Ответить | Правка | Наверх | Cообщить модератору

427. Скрыто модератором  –1 +/
Сообщение от Аноним (-), 30-Июл-21, 19:50 
Ответить | Правка | Наверх | Cообщить модератору

446. Скрыто модератором  +/
Сообщение от Аноним (157), 30-Июл-21, 21:44 
Ответить | Правка | Наверх | Cообщить модератору

459. Скрыто модератором  +/
Сообщение от Аноним (24), 30-Июл-21, 23:29 
Ответить | Правка | К родителю #157 | Наверх | Cообщить модератору

467. Скрыто модератором  +/
Сообщение от Аноним (157), 30-Июл-21, 23:36 
Ответить | Правка | Наверх | Cообщить модератору

159. Скрыто модератором  –1 +/
Сообщение от Аноним (156), 30-Июл-21, 03:03 
Ответить | Правка | К родителю #135 | Наверх | Cообщить модератору

163. Скрыто модератором  +/
Сообщение от Аноним (110), 30-Июл-21, 03:09 
Ответить | Правка | Наверх | Cообщить модератору

176. Скрыто модератором  +/
Сообщение от Аноним (156), 30-Июл-21, 03:32 
Ответить | Правка | Наверх | Cообщить модератору

274. Скрыто модератором  +1 +/
Сообщение от Прорыв_запарты_фелиал (ok), 30-Июл-21, 08:51 
Ответить | Правка | К родителю #163 | Наверх | Cообщить модератору

314. Скрыто модератором  +1 +/
Сообщение от anonymous (??), 30-Июл-21, 11:45 
Ответить | Правка | Наверх | Cообщить модератору

411. Скрыто модератором  +/
Сообщение от Аноним (547), 30-Июл-21, 19:01 
Ответить | Правка | К родителю #274 | Наверх | Cообщить модератору

460. Скрыто модератором  +/
Сообщение от Аноним (24), 30-Июл-21, 23:30 
Ответить | Правка | К родителю #274 | Наверх | Cообщить модератору

604. Скрыто модератором  +/
Сообщение от Прорыв_запарты_фелиал (ok), 02-Авг-21, 02:28 
Ответить | Правка | К родителю #274 | Наверх | Cообщить модератору

445. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (445), 30-Июл-21, 21:42 
> Потому что растоманы лицемеры. Но не удалил, так
> что его можно найти и раскрыть.

А может, потому что ты - очередной опеннетный невежда?
Теоремы Райса, Геделя (или если для совсем уж школьников и первокурсников: "проблема остановки")?
Не, не слышали ...

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

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

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

145. "Выпуск языка программирования Rust 1.54"  +3 +/
Сообщение от Aukamo (ok), 30-Июл-21, 02:40 
IMHO, лучше всего начинать читать Книгу (The Book https://doc.rust-lang.org/book/) там 20 глав, они покрывают 100% всего что есть в раст и дают понять где смотреть то, чего в книге нет.
Ответить | Правка | К родителю #110 | Наверх | Cообщить модератору

408. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (547), 30-Июл-21, 18:56 
Только начинать надо сразу с главы 4 :)
Ответить | Правка | Наверх | Cообщить модератору

174. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Аноним (156), 30-Июл-21, 03:25 
Что ты написал? Hello wrold копипастом?

Молодец, возьми пирожок с полочки

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

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

352. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (352), 30-Июл-21, 16:00 
> Раньше все отнекивался ... думал, что  очередной проходняк. Но на днях решил попробовать на вкус ...И знаете, что? Мне понравилось!

Напоминает: "Я сначала как и все был уверен что это развод!... Сам был удивлен когда... Это действительно работает!!!"

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

375. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (110), 30-Июл-21, 17:26 
> Напоминает: "Я сначала как и все был уверен что это развод!... Сам был удивлен когда... Это действительно работает!!!"

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

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

430. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 19:54 
>Развод подразумевает какой-то ушерб, зачастую финансовый, но в этом случае я ничего не потерял, а наоборот, даже приобрел.

Неважно, сама суть пропоганды Раста та же, и это вызывает подсознательное неоверие. Ах да, потерянное время на изучение Раста не считается?

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

449. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (352), 30-Июл-21, 21:56 
> Неважно, сама суть пропоганды Раста та же

+1

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

462. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (24), 30-Июл-21, 23:32 
Отзыв по языку в новости о языке
ВЕЛИКАЯ ПРОПАГАНДА
Ответить | Правка | К родителю #430 | Наверх | Cообщить модератору

508. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Ф1 (?), 31-Июл-21, 10:14 
>Ах да, потерянное время на изучение Раста не считается?

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

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

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

377. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 17:27 
> Сделай Redox на все ноутбуки

Сделай Hurd на все ноутбуки.


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

545. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 31-Июл-21, 22:50 
Есть Minix, есть DFBSD из гибридномикроядерных которые уже работают... зачем нужен протухший 30 лет назад Hurd?

А у растоманов кроме Redox есть хоть что то?

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

551. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 01-Авг-21, 00:15 
>> на все ноутбуки
> Есть Minix, есть DFBSD из гибридномикроядерных которые уже работают...

Мощный пук! Респект!

> А у растоманов кроме Redox есть хоть что то?

Ты сейчас пишешь с оси конца 70х начала 80х? Или это был еще одинм мощный выброс метана?


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

595. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 01-Авг-21, 23:47 
Че там с Redox?
Ответить | Правка | Наверх | Cообщить модератору

123. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Аноним (165), 30-Июл-21, 02:01 
> Инкрементальная компиляция была отключена в выпуске 1.52.1 из-за выявления скрытых ошибок

Как так-то?! Раст же безопасный! Или раст не на расте растаманы пишут?

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

137. "Выпуск языка программирования Rust 1.54"  +7 +/
Сообщение от Второе Я (?), 30-Июл-21, 02:28 
Раст не панацея. От неосиляторов с опеннета, вот, например, - не спасает.
Ответить | Правка | Наверх | Cообщить модератору

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

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

И когда комьюнити сливается сливается весь ЯП, в этом смысл холиваров

А с растоманами даже спорить не интересно, чуть что убегают и прячутся в своем манямирке где все безопасно и ничто не течет

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

175. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (156), 30-Июл-21, 03:28 
> А с растоманами даже спорить не интересно, чуть что убегают и прячутся в своем манямирке где все безопасно и ничто не течет

Вот тут ты прав.

Там выше было интерересно. Человек спросил кто вот это будет разгребать https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=rust

И что? его сообщение скрыл модератор, сделав вид что в растомире всё нормально и безопасно.

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

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

255. "Выпуск языка программирования Rust 1.54"  +3 +/
Сообщение от Аноним (257), 30-Июл-21, 07:49 
> Там выше было интерересно. Человек спросил кто вот это будет разгребать https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=rust
> И что? его сообщение скрыл модератор, сделав вид что в растомире всё
> нормально и безопасно.

А вы сами тот список читали? Там дыры в левых проектах и в областях, не касающихся областей, в которых Rust даёт возможность поднять безопасность. В первом CVE-2021-3530 дыра в коде на языке _Си_ в не имеющей никакой связи с Rust библиотеке - "A flaw was discovered in GNU libiberty within demangle_path() in rust-demangle.c". Во втором и третьем      дыры в  левой библиотеке в логике разбора HTTP-заголовка Content-Length и расчёта размера chunk-ов. В четвёртом дыра в JavaScript-движке Deno в логике загрузки модулей.  И т.п.

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

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

265. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Аноним (80), 30-Июл-21, 08:35 
Т.е. вы тоже считаете что безопасность это просто слово, которое надо всем повторять, а не работа, которую надо делать? Безопасный язык, который на каждый чих вытягивают миллион пакетов, как какой-нибудь nodejs или php с известными уязвимостями, это просто смешно.
Ответить | Правка | Наверх | Cообщить модератору

177. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (110), 30-Июл-21, 03:33 
> Любое обсуждение ЯП это ожесточенные споры, обвинения в некомпетности, троллинг и тонны лулзов причем жоских и это нормально

Спор ради спора? А зачем? Можно и более полезными вещами заняться.

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

180. "Выпуск языка программирования Rust 1.54"  –4 +/
Сообщение от Аноним (156), 30-Июл-21, 03:39 
Тут другой вопрос. К нормальным людям. У растоманов память короткая из за наркотиков.

А вы помните когда они своего-же загнобили? Чувак там какой-то движок сайта на расте делал. Его загнобили что он не тру растоман и не по растомански пишет. Человека довели даже до того что он проект свернул послав всех.

Rust (ржавчина), как физическое явление, как процесс, токсичен и разрушителен. И такое ощущение что сообщство языка этому соответсвует.

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

182. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (110), 30-Июл-21, 03:44 
> А вы помните когда они своего-же загнобили? Чувак там какой-то движок сайта на расте делал. Его загнобили что он не тру растоман и не по растомански пишет. Человека довели даже до того что он проект свернул послав всех.

Ну справедливости ради, такое на всех языках происходит. Если ты будешь писать в Си стиле на С++, то тебя тоже никто по головке не погладит.

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

184. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Аноним (184), 30-Июл-21, 03:49 
Справедливо и ты прав. Это жутчайшая жуть писать в стиле C на C++

Тем не менее до истерики и закрытия проектов людей не доводят.

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

187. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Хан (?), 30-Июл-21, 03:57 
Писательство в Си стиле порой вынужденно если не хочешь городить абстракции для сишных либ и потом их тестить и отлаживать

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

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

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

189. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от deeaitch (ok), 30-Июл-21, 03:59 
Есть забавная история, с месяц назад. Я уже писал о том как пробовал использовать Rust в automotive. Повторятся не буду.

Но был у меня на собеседовании человек заявлявший что знает rust. Честно я думал одного взять. Для следующего поколения техники, может он поможет и подскажет то что не заметил я.

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

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

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

194. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Хан (?), 30-Июл-21, 04:11 
Лол конечно... но что с них взять?

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


Короче образование уровня Уганды и все

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

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

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

214. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от deeaitch (ok), 30-Июл-21, 04:44 
Нет, я не выдержал после того как он сказал что авторитетно может заявить что iOS это Linux и я ему могу верить потому что он специалист.

Мой мозг взорвался.

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

217. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от deeaitch (ok), 30-Июл-21, 04:49 
> Я аж заскринил это))) но ты хоть обьяснил пареньку в чем суть?

А как я мог объяснить по сути? Я даже не понимал за какую базу закрепится если там полностью инопланетяне скушали мозги. Где точка отсчёта? на основании чего эту всю кашу в голове можно разобрать? ААААААААААААААА

Зачем я про него вспомнил. Опять кошмары будут.

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

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

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

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

215. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от deeaitch (ok), 30-Июл-21, 04:44 
Такой у меня уже есть вопрос.
Ответить | Правка | Наверх | Cообщить модератору

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

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

374. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (349), 30-Июл-21, 17:18 
Если статическая внутри функции или блока кода то даже в c++ 98 отличаются так как инициалируется только если был вход в функцию, а начиная с c++ 11 еще обязаны потокобезопасно инициализироваться https://en.cppreference.com/w/cpp/language/storage_duration#...
Ответить | Правка | К родителю #213 | Наверх | Cообщить модератору

232. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноньимъ (ok), 30-Июл-21, 05:36 
Теперь поцелуйтесь.
Ответить | Правка | К родителю #206 | Наверх | Cообщить модератору

485. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от deeaitch (ok), 31-Июл-21, 02:41 
> Теперь поцелуйтесь.

Это ты к сладкой парочке Fracta1L и iPony обращайся, они по этому делу.

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

378. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от n00by (ok), 30-Июл-21, 17:30 

int main()
{
  for(int i = 1; ; ++i) {
    volatile int _[i];
    *_ = i;
  }
}

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

391. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (376), 30-Июл-21, 18:05 
> int _[i]

это на каком языке? не на си++ точно, на си++ так массивы можно только с константами объявлять

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

405. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 18:51 
>> int _[i]
> это на каком языке?

C99

> не на си++ точно, на си++ так массивы
> можно только с константами объявлять

Пффф. Ломать не строить! man alloca.

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

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

421. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 19:38 
> А ничего что alloca в куче выделяет память, а не в стеке?

ОПИСАНИЕ
       Функция  alloca()  выделяет  size  байтов  памяти  в  стековом  кадре вызывающего. Это временное
       хранилище данных автоматически освобождается после возврата из функции, вызвавшей alloca().

https://www.opennet.ru/man.shtml?topic=alloca&category=3&rus...

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

418. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (376), 30-Июл-21, 19:25 
alloca не выделит памяти больше, чем возможно
Ответить | Правка | К родителю #405 | Наверх | Cообщить модератору

423. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 30-Июл-21, 19:43 
> alloca не выделит памяти больше, чем возможно

Заблуждаетесь. Например, RPM5 в Rosa Tresh падал как раз из-за alloca() при установке пакетов с количеством фалов больше определённого.

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

486. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от deeaitch (ok), 31-Июл-21, 02:42 
>
 
> int main()
> {
>   for(int i = 1; ; ++i) {
>     volatile int _[i];
>     *_ = i;
>   }
> }
>

А сказать чего хотел? Или мы тут играем в телепатов как компилятор rust который на этапе компиляции предугадывает сколько я данных из файла в массив загружу? По крайней мере так любят утверждать некоторые фанаты.

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

500. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от n00by (ok), 31-Июл-21, 07:39 
>[оверквотинг удален]
>> {
>>   for(int i = 1; ; ++i) {
>>     volatile int _[i];
>>     *_ = i;
>>   }
>> }
>>
> А сказать чего хотел? Или мы тут играем в телепатов как компилятор
> rust который на этапе компиляции предугадывает сколько я данных из файла
> в массив загружу? По крайней мере так любят утверждать некоторые фанаты.

Скопирую контекст из сообщений,