Форум программистов, компьютерный форум, киберфорум
Rust
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.92/49: Рейтинг темы: голосов - 49, средняя оценка - 4.92
Администратор
Эксперт .NET
8869 / 4253 / 743
Регистрация: 17.04.2012
Сообщений: 9,075
Записей в блоге: 14
1

[Rust] Обсуждение возможностей и предстоящей роли языка Rust

12.02.2015, 04:38. Просмотров 9096. Ответов 121
Метки нет (Все метки)

Psilon, чем он тебя так привлек? И почему именно "убийца плюсов"?
Если напишешь развернутый ответ, обещаю вынести в отдельную тему и погонять компилятор пару часов дабы вступить в полемику
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2015, 04:38
Ответы с готовыми решениями:

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

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

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

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

121
Master of Orion
Эксперт .NET
6078 / 4934 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.02.2015, 12:02 2
tezaurismosis, Пересказывать чужие статьи - моветон, поэтому просто приложу ссылки:
http://habrahabr.ru/company/yandex/blog/235789/
http://habrahabr.ru/post/135712/
http://habrahabr.ru/post/237199/
http://habrahabr.ru/post/243315/
http://habrahabr.ru/post/244537/
http://habrahabr.ru/post/191916/
http://habrahabr.ru/post/239067/
http://habrahabr.ru/post/240617/
http://habrahabr.ru/post/239151/


Где-то видел ролик минут на 30 с хорошим описанием, но пока найти не могу...
2
Администратор
Эксперт .NET
8869 / 4253 / 743
Регистрация: 17.04.2012
Сообщений: 9,075
Записей в блоге: 14
12.02.2015, 15:14  [ТС] 3
 Комментарий модератора 
Эта тема выделена из другой темы: Насколько актуален сегодня C#
Здесь обсуждается абстрактная область, задачи которой Rust должен решать и послужит ли
он заменой языка C++.


Psilon, тему выделил, осталось теперь попробовать язык в действии.
Сразу хочу уточнить, ибо с OCaml'ом не связывался - почему такой интересный выбор языка для основы был сделан? Первый компилятор был на нём написан и заимствованы многие элементы синтаксиса - это стремление выйти на бой с плюсами в отдалении от них (в отличие от D) или "производственная необходимость" (сделать функциональный язык в основе равноправным с императивными конструкциями, а не "пудрой на поверхности" как в C#)?
Как ты считаешь?
0
Master of Orion
Эксперт .NET
6078 / 4934 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.02.2015, 15:15 4
tezaurismosis, афайк раст изначально планировался быть языком с большим количеством ФП фич, при этом он должен быть ООП (ибо энтерпрайз ничего другого не переваривает), поэтому логично было взять объектно-функциональный язык
0
Администратор
Эксперт .NET
8869 / 4253 / 743
Регистрация: 17.04.2012
Сообщений: 9,075
Записей в блоге: 14
12.02.2015, 15:59  [ТС] 5
Нехилый такой бинарник
1
Миниатюры
[Rust] Обсуждение возможностей и предстоящей роли языка Rust  
Администратор
Эксперт .NET
8869 / 4253 / 743
Регистрация: 17.04.2012
Сообщений: 9,075
Записей в блоге: 14
12.02.2015, 17:04  [ТС] 6
Ага, нашёл: (http://doc.rust-lang.org/book/hello-world.html)
Rust is an ahead-of-time compiled language, which means that you can compile a program, give it to someone else, and they don't need to have Rust installed.
что радует и объясняет размер бинарника.

Добавлено через 57 минут
Интересная вещь - в Rust if является выражением и возвращает значение, так что возможна такая наркомания
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
// Rust
fn main() {
    let x: i32 = 5;
    let y = if x == 5 {
        println!("x is five");
        10
    }
    else {
        println!("x is'nt five");
        15
    };
    println!("{}", y);
}
Нечто похожее можно написать в C#, но это совсем другая история
C#
1
2
3
4
5
6
7
8
9
10
11
12
int x = 5;
int y = ((Func<int, int>)((n) => {
    if (n == 5) {
        Console.WriteLine("x is five");
        return 10;
    }
    else {
        Console.WriteLine("x is'nt five");
        return 15;
    }
}))(x);
Console.WriteLine(y);
0
Master of Orion
Эксперт .NET
6078 / 4934 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.02.2015, 17:29 7
tezaurismosis, это типично для всех функциональных языков, и некоторых ООП (например Ruby):
Ruby
1
2
3
4
5
6
7
def Foo
    puts "Hello"
    i = 10
    "world"
end
 
puts Foo()
http://ideone.com/2DGjzG

называется "всё есть функция". А любая функция, как известно, возвращает значение. Та, что не возвращает, называется процедурой (в терминах паскаля) или "грязной" (в терминах хаскелля) и в ФП используется по минимуму, а с точки зрения математики вообще не существует
0
Администратор
Эксперт .NET
8869 / 4253 / 743
Регистрация: 17.04.2012
Сообщений: 9,075
Записей в блоге: 14
12.02.2015, 17:33  [ТС] 8
Psilon, агась, видел в Scheme. Там последнее значение является возвращаемым
Lisp
1
2
3
4
5
6
7
(define (prime? n)
    (let loop ((n n) (div 2))
        (if (= 0 (modulo n div))
            #f
            (if (< div (sqrt n))
                (loop n (+ div 1))
                #t))))
И прочие весёлости вроде передачи функции как аргумента без всяких примочек типа C#-ских делегатов.
А я то ждал D на новый лад, но это зря.
0
Master of Orion
Эксперт .NET
6078 / 4934 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.02.2015, 17:36 9
tezaurismosis, теперь мои восторги более понятны?

И если не секрет, чем компилируешь? А то я окромя связки notepad++ и компиля ничего не придумал, подсветка тоже хромает, без IntelliSense как без рук, и прочие невзгоды
0
Администратор
Эксперт .NET
8869 / 4253 / 743
Регистрация: 17.04.2012
Сообщений: 9,075
Записей в блоге: 14
12.02.2015, 17:48  [ТС] 10
Psilon, тебе не понравится мой вариант
Сижу на openSuse, установил подсветку для vim, компилирую из консольки.
Сейчас порылся, даже об автодополнении толковом пока говорить рано.
0
Master of Orion
Эксперт .NET
6078 / 4934 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.02.2015, 17:52 11
tezaurismosis, да я понимаю. Ждем реализацию IntelliR IDEA
0
553 / 145 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
12.02.2015, 17:58 12
Цитата Сообщение от tezaurismosis Посмотреть сообщение
И почему именно "убийца плюсов"?
Не. Плюсы Rust не убьёт.
0
Администратор
Эксперт .NET
8869 / 4253 / 743
Регистрация: 17.04.2012
Сообщений: 9,075
Записей в блоге: 14
12.02.2015, 18:03  [ТС] 13
Psilon, кстати, установил плагин на IntelliJ IDEA, но пока это по сути очень тяжеловесный редактор кода с подсветкой, не более. Можно создать проект, но толку мало от этого - компилировать всё равно самому. Но что я хочу от версии 0.0.4
Было бы неплохо иметь IDE для Rust, хотя бы такую как Dev-C++ или Geany, уж не до жиру...

Добавлено через 1 минуту
Dennis Ritchie, зря я оставил эту строчку. Тема не рассчитывалась на холивары, только обсуждение самого языка Rust, не более.
0
Master of Orion
Эксперт .NET
6078 / 4934 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.02.2015, 18:32 14
tezaurismosis, будет релиз языка, будет и IDE, у меня хорошее предчувствие по его поводу

Dennis Ritchie, посмотрим. На джаву тоже в свое время смотрели как на "говнокод для кофеварок"
0
Администратор
Эксперт .NET
8869 / 4253 / 743
Регистрация: 17.04.2012
Сообщений: 9,075
Записей в блоге: 14
12.02.2015, 18:36  [ТС] 15
Psilon, будем ждать.
0
553 / 145 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
13.02.2015, 08:50 16
Цитата Сообщение от Psilon Посмотреть сообщение
Dennis Ritchie, посмотрим.
Psilon, я не понимаю одного, как функциональный язык может заменить императивный.
Ведь в Rust'e больше развита функциональная сторона?
А зачем восклицательный знак в функции println!()?
0
Администратор
Эксперт .NET
8869 / 4253 / 743
Регистрация: 17.04.2012
Сообщений: 9,075
Записей в блоге: 14
13.02.2015, 09:03  [ТС] 17
Dennis Ritchie, Rust не функциональный язык, он лишь реализует много вещей из разных парадигм, в т.ч. функциональной.

Воскл. знаком в конце отмечают макросы.
0
553 / 145 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
13.02.2015, 09:19 18
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Rust не функциональный язык, он лишь реализует много вещей из разных парадигм, в т.ч. функциональной.
Ну какая-нибудь парадигма в нём должна быть развита лучше других?
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Воскл. знаком в конце отмечают макросы.
tezaurismosis, а пример привести можете? Какую-нибудь простенькую программу.
0
Администратор
Эксперт .NET
8869 / 4253 / 743
Регистрация: 17.04.2012
Сообщений: 9,075
Записей в блоге: 14
13.02.2015, 09:40  [ТС] 19
Dennis Ritchie, его характеризуют как мультипарадигменный язык, на мой беглый взгляд он больше императивный язык, чем функциональный, но из-за того, что в нем тонна разгых фич, можно написать код, по которому будут создаваться другие ощущения.

По поводу макросов пока скажу, что они похожи на сишные, но намного шире (поддерживают даже расширения синтаксиса). Попробую написать программу- пример, как доберусь до дома, я в автобусе, пишу с телефона
0
553 / 145 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
13.02.2015, 09:46 20
Цитата Сообщение от tezaurismosis Посмотреть сообщение
По поводу макросов пока скажу, что они похожи на сишные, но намного шире (поддерживают даже расширения синтаксиса).
Не могу до сих пор понять: полезны ли макросы вообще? В D, например, препроцессор вообще убрали, а в Rust макросы расширили. Не знаю даже, что и думать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2015, 09:46

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

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

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

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

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


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

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

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