Форум программистов, компьютерный форум, киберфорум
Rust
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Заблокирован
1

Убийца Rust

09.09.2020, 15:09. Показов 1457. Ответов 24

Пока программисты C++ думаю станет ли Rust тем языком, который сможет потеснить плюсы и занять их нишу, сам Rust уже пятый год подряд становится самым любимым языком у пользователей StackOwerflow. А вот С++ уверенно входит в пятерку самых нелюбимых языков. Это доказывает, что Rust - это будущее. И будущее уже здесь.
Но как только что-то появляется в этом мире оно сразу начинает устаревать, так как ни время, ни прогресс не стоят на месте.
Rust вышел, кажется, недавно, однако, уже есть язык который метит на его место. И имя ему - Vlang. Или просто V.
Автор языка говорит о том, что его детище должно заменить такие языки, как С, C++, Go и Rust.
Доводы почему так должно случится он приводит примерно следующие:
1) Легкость языка. Сам автор вдохновлялся Go, Rust и Python. Но его язык по синтаксису больше напоминает Python.
В частности он отмечает, что в умелых руках Rust может стать отличным инструментом, но на овладение этим инструментом могут уйти годы.
Vlang же простой, благодаря чему вы довольно быстро сможете научиться на нем писать.
2) Быстрота. Автор говорит, что Vlang такой же быстрый как С. Но кто только так не говорил. Хотя на сайте Vlang есть бенчмарки.
3)Быстрота компиляции. Говорят, что миллион строк компилирует за секунду. Doom переписанный на V собирается за 0.7 секунд.
4)Безопасность. У Rust язык позаимствовал такие штуки, как Result, Option и тд. Так же много функциональщины вроде отсутствия глобального состояния, иммутабельность и тд.
5)Отсутствие сборщика мусора.
6)Компилятор размером меньше чем 2MB.
7)Транслятор из С.
8)Горячая замена кода.
9)Repl и V script.
И тд.

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

Можно объявлять тип сразу для нескольких переменных.

Go
1
2
3
fn sub(x, y int) int {
    return x - y
}
Возвращать несколько значений

Go
1
2
3
fn foo() (int, int) {
    return 2, 3
}
Возрадуйтесь те, кто пишет на Lisp: допустимо неограниченное количество аргументов для функции.
Не знаю почему раньше этого никто не делал в подобных языках.
Если в Lisp аргументы добавляются в список, то тут они, как видно, помещаются в массив.

Go
1
2
3
4
5
6
7
8
9
10
fn sum(a ...int) int {
    mut total := 0
    for x in a {
        total += x
    }
    return total
}
println(sum())    // Output: 0
println(sum(1))   //         1
println(sum(2,3)) //         5
Отсутствие затенения переменных.

Go
1
2
3
4
5
6
7
fn main() {
    a := 10
    if true {
        a := 20 // error: shadowed variable
    }
    // warning: unused variable `a`
}
Удобный синтаксис.

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mut nums := [1, 2, 3]
nums << 4
println(nums) // "[1, 2, 3, 4]"
 
// append array
nums << [5, 6, 7]
println(nums) // "[1, 2, 3, 4, 5, 6, 7]"
 
mut names := ['John']
names << 'Peter'
names << 'Sam'
// names << 10  <-- This will not compile. `names` is an array of strings.
println(names.len) // "3"
println('Alex' in names) // "false"
Математические типы и их проверка.

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
struct Abc {
    val string
}
struct Xyz {
    foo string
}
type Alphabet = Abc | Xyz
 
x := Alphabet(Abc{'test'}) // sum type
if x is Abc {
    // x is automatically castet to Abc and can be used here
    println(x)
}
Методы типов.

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
struct User {
    age int
}
 
fn (u User) can_register() bool {
    return u.age > 16
}
 
user := User{age: 10}
println(user.can_register()) // "false"
 
user2 := User{age: 20}
println(user2.can_register()) // "true"
Функции высшего порядка и лямбда функции

Go
1
2
3
4
5
6
7
fn run(value int, op fn(int) int) int {
    return op(value)
}
 
double_fn := fn(n int) int {
        return n + n
    }
Интерфейсы
Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Dog {}
struct Cat {}
 
fn (d Dog) speak() string {
    return 'woof'
}
 
fn (c Cat) speak() string {
    return 'meow'
}
 
interface Speaker {
    speak() string
}
Дженерики

Go
1
2
3
4
5
6
7
struct Repo<T> {
    db DB
}
 
fn new_repo<T>(db DB) Repo<T> {
    return Repo<T>{db: db}
}
Option/Result

Go
1
2
3
4
5
6
7
8
9
fn (r Repo) find_user_by_id(id int) ?User {
    for user in r.users {
        if user.id == id {
            // V automatically wraps this into an option type
            return user
        }
    }
    return error('User $id not found')
}
И так далее.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2020, 15:09
Ответы с готовыми решениями:

[Rust] Обсуждение возможностей и предстоящей роли языка Rust
Psilon, чем он тебя так привлек? И почему именно &quot;убийца плюсов&quot;? Если напишешь развернутый ответ,...

[Rust] Как привязывать WinAPI-функции к коду на Rust?
Может кто-нить дать код, КАК привязывать вин апишные функции к растовскому коду (на примере...

[Rust] Расскажите о своём опыте программирования на Rust
Доброе утро! Расскажите, пожалуйста, о своём опыте программирования на Rust. Можно в сравнении с...

Rust+assembler
Как связать язык rust и ассемблер не используя ассемблерные вставки(неудобно использовать их в...

__________________
24
3293 / 2355 / 425
Регистрация: 28.04.2012
Сообщений: 7,854
09.09.2020, 22:21 2
Цитата Сообщение от sodda Посмотреть сообщение
Не знаю почему раньше этого никто не делал в подобных языках.
В Си есть varargs, в Java есть varargs, в Go есть varargs. Да где их только нету.

Вообще, это либо шутка, либо развод на деньги.
0
draw
1256 / 1108 / 304
Регистрация: 13.04.2015
Сообщений: 3,124
09.09.2020, 22:36 3
Цитата Сообщение от korvin_ Посмотреть сообщение
Да где их только нету.
Даже в Бейсике есть ParamArray
0
Заблокирован
09.09.2020, 22:48  [ТС] 4
Цитата Сообщение от korvin_ Посмотреть сообщение
В Си есть varargs, в Java есть varargs, в Go есть varargs. Да где их только нету.
В каком СИ они есть? В Plain С я их не видел никогда. А в C++ даже лямбда функции только недавно появились.

Добавлено через 2 минуты
korvin_, что конкретно? Мне все 100500 страниц читать?
Сколько я ЛОР не читал, там одно балабольство и ничего более.

Добавлено через 44 секунды
Цитата Сообщение от I can Посмотреть сообщение
Даже в Бейсике есть ParamArray
С какого врмени?
0
Фрилансер
575 / 381 / 116
Регистрация: 06.01.2017
Сообщений: 4,081
09.09.2020, 22:49 5
Цитата Сообщение от sodda Посмотреть сообщение
Rust вышел, кажется, недавно, однако, уже есть язык который метит на его место. И имя ему - Vlang. Или просто
впервые слышу))

ну дам ссылку для таких как я

https://github.com/vlang/v

продают хорошо)
0
draw
1256 / 1108 / 304
Регистрация: 13.04.2015
Сообщений: 3,124
09.09.2020, 22:55 6
Цитата Сообщение от sodda Посмотреть сообщение
С какого врмени?
С 1998 года.
0
Заблокирован
09.09.2020, 22:59  [ТС] 7
Цитата Сообщение от FateOri Посмотреть сообщение
продают хорошо)
Ну да. Выглядит красиво. Я себе скачал и попробовал.

Цитата Сообщение от I can Посмотреть сообщение
С 1998 года.
Ну может. В Rust, например, нет. В чистом Си я тоже не видел.
0
3293 / 2355 / 425
Регистрация: 28.04.2012
Сообщений: 7,854
09.09.2020, 23:00 8
Цитата Сообщение от sodda Посмотреть сообщение
В каком СИ они есть?
В стандартном.
0
Заблокирован
09.09.2020, 23:01  [ТС] 9
Цитата Сообщение от korvin_ Посмотреть сообщение
В стандартном.
А стандарт какого года?
0
3293 / 2355 / 425
Регистрация: 28.04.2012
Сообщений: 7,854
09.09.2020, 23:05 10
Цитата Сообщение от sodda Посмотреть сообщение
Сколько я ЛОР не читал, там одно балабольство и ничего более.
Ну ты-то читать не умеешь, это понятно.

Добавлено через 2 минуты
Цитата Сообщение от sodda Посмотреть сообщение
А стандарт какого года?
99-го
0
Заблокирован
09.09.2020, 23:07  [ТС] 11
Цитата Сообщение от korvin_ Посмотреть сообщение
Ну ты-то читать не умеешь, это понятно.
Дружище, я уже лет десять с linux и BSD и за это время ни разу не попадал на ЛОР с какими-то вопросами.
Все что я видел на ЛОР, случайно на него наткнувшись, - это простое мерение писюнами и флуд.
Я даже не могу представить за чем он вообще существует.
0
draw
1256 / 1108 / 304
Регистрация: 13.04.2015
Сообщений: 3,124
09.09.2020, 23:08 12
Цитата Сообщение от sodda Посмотреть сообщение
Ну может
Убийца Rust
0
Заблокирован
09.09.2020, 23:08  [ТС] 13
Цитата Сообщение от korvin_ Посмотреть сообщение
99-го
Я хз. Я не встречал. Знаю что те же дженерики только в 11 стандарте появились.
0
3293 / 2355 / 425
Регистрация: 28.04.2012
Сообщений: 7,854
09.09.2020, 23:08 14
Цитата Сообщение от sodda Посмотреть сообщение
А в C++ даже лямбда функции только недавно появились.
В 2011-м — это недавно? Окай… А кроме C++ лямбд нигде не было?
0
Заблокирован
09.09.2020, 23:09  [ТС] 15
I can, рад за пользователей Бейсик)
0
3293 / 2355 / 425
Регистрация: 28.04.2012
Сообщений: 7,854
09.09.2020, 23:12 16
Цитата Сообщение от sodda Посмотреть сообщение
Дружище, я уже лет десять с linux и BSD и за это время ни разу не попадал на ЛОР с какими-то вопросами.
За 10 лет читать не научился? Ай, беда. =(

Добавлено через 34 секунды
Цитата Сообщение от sodda Посмотреть сообщение
Я хз. Я не встречал. Знаю что те же дженерики только в 11 стандарте появились.
Ты даже C и C++ не отличаешь? И при чём тут дженерики?

Добавлено через 2 минуты
Цитата Сообщение от sodda Посмотреть сообщение
Я не встречал.
Офигенный критерий.
0
Заблокирован
09.09.2020, 23:17  [ТС] 17
Цитата Сообщение от korvin_ Посмотреть сообщение
В 2011-м — это недавно? Окай… А кроме C++ лямбд нигде не было?
Недавно конечно. Учитывая, что стандарты могут точечно дополняться.
C++ важен тем, что пока он держит эту нишу. Стало быть это главный конкурент и с ним надо сравнивать.
Я как-то наткнулся на видео где парень, который есздит в том числе и на конференции по стандартизации языка, рассказывал, что Rust сильно бустанул развитие С++, так как запахло жаренным. Тогда стразу кинулись принимать изменения и дополнять стандарт теми шутками, которые не могли принять в стандарт десятилетиями.

Добавлено через 55 секунд
Цитата Сообщение от korvin_ Посмотреть сообщение
За 10 лет читать не научился? Ай, беда. =(
А ты завсегдатай этой помойки как я понял)
Так что я оттуда должен был узнать?

Добавлено через 2 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
За 10 лет читать не научился? Ай, беда. =(
Ну книг я точно за свою жизнь прочитал раза в два больше тебя)
0
3293 / 2355 / 425
Регистрация: 28.04.2012
Сообщений: 7,854
09.09.2020, 23:23 18
Цитата Сообщение от sodda Посмотреть сообщение
он держит эту нишу
Какую нишу?

Цитата Сообщение от sodda Посмотреть сообщение
Я как-то наткнулся на видео где парень, который есздит в том числе и на конференции по стандартизации языка, рассказывал, что Rust сильно бустанул развитие С++, так как запахло жаренным. Тогда стразу кинулись принимать изменения и дополнять стандарт теми шутками, которые не могли принять в стандарт десятилетиями.
Ссылку ты, конечно же, не найдёшь?

Цитата Сообщение от sodda Посмотреть сообщение
Так что я оттуда должен был узнать?
Хотя бы это.

Добавлено через 1 минуту
Цитата Сообщение от sodda Посмотреть сообщение
Ну книг я точно за свою жизнь прочитал раза в два больше тебя)
1) Откуда ты знаешь сколько и каких книг я прочитал? Не, если ты все издания Донцовой прочитал, спорить не буду, ты — больше.
2) Что за детсадовское писькомерство? Ты выше писал, что тебе это не нравится на ЛОРе, а тут же сам опускаешься до него.
0
Заблокирован
10.09.2020, 00:27  [ТС] 19
Цитата Сообщение от korvin_ Посмотреть сообщение
Какую нишу?
Нишу системного языка общего назначения.

Цитата Сообщение от korvin_ Посмотреть сообщение
Ссылку ты, конечно же, не найдёшь?
где-то тут. таймкод не помню.


Цитата Сообщение от korvin_ Посмотреть сообщение
Хотя бы это.
И что там? Вилами по воде. У нас любят все обгадить.
Тем более я нигде не говорил, что все так и есть, как обещает создатель.
Создатель, кстати, наш мужик какой-то. От этого у горе программистов рвет одно место.
Я лишь предложил познакомится с интересным, на мой взгляд, языком.
И вообще разговор за другое был. Конкретно про это.
Цитата Сообщение от korvin_ Посмотреть сообщение
Вообще, это либо шутка, либо развод на деньги.
Цитата Сообщение от korvin_ Посмотреть сообщение
Откуда ты знаешь сколько и каких книг я прочитал?
Я ясновидящий.

Цитата Сообщение от korvin_ Посмотреть сообщение
Ты выше писал, что тебе это не нравится на ЛОРе, а тут же сам опускаешься до него.
Создаю для тебя привычные условия, чтоб ты стресс не получил)

Добавлено через 40 минут
Цитата Сообщение от korvin_ Посмотреть сообщение
Ты даже C и C++ не отличаешь? И при чём тут дженерики?
Это отличит любой школьник: C++ - это шляпа, а С - хороший язык.
0
Модератор
Эксперт Python
28543 / 15412 / 3046
Регистрация: 12.02.2012
Сообщений: 25,265
Записей в блоге: 4
10.09.2020, 13:04 20
Друзья! Не надо ссориться!
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2020, 13:04

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

[Rust] Time
Подскажите как узнать время в Rust. //Rust extern crate time; fn main() { let now =...

Примитивный чат на Rust
решил попробовать написать примитивный чат на Rust. получился приблизительно следующий код: use...

Rust ошибка E0623
при компиляции появляется ошибка E0623 в документации этот номер пропущен. в чём может быть...

Есть ли у rust будущее?
Вот вчера общался с 1 товарищем на тему перспектив С++, он меня убеждает что язык скоро будет...

Frontend Для RUST
Нужна помощь! Есть класс Participant, в этом классе есть функция new. impl Participant { ///...

Rust не хватает функциональности?
Rust вобрал в себя немало из функциональных языков, но ему, по-моему мнению, все же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.