LINUX.ORG.RU

На Rust запилили Coroutine, Go можно выкидывать?

 ,


3

5

Мониторю гитхаб тренды по расту, вот такое поделие обнаружилось https://github.com/zonyitoo/coio-rs С растом слабо знаком, особо не разбирался, но как я понимаю «Work-stealing coroutine scheduling» тоже самое как и в goroutine?

★★★★★

Последнее исправление: foror (всего исправлений: 1)

Ответ на: комментарий от anonymous

Особенно учитывая, что та же Java удобнее в разы и имеет в разы больше библиотек. А от синтаксиса Go глаза кровью истекают.

anonymous
()
Ответ на: комментарий от anonymous

АХАХАХАХА

Мусье знает более быстрый язык с GC или просто пришел позавтракать?

anonymous
()
Ответ на: комментарий от anonymous

Java удобнее в разы

Паблик статик файнал Борщ борщ нью Борщ, пожалуйста.

имеет в разы больше библиотек.

Java обрастала ими десятилетия, дайте Go время.

anonymous
()
Ответ на: комментарий от Freyr69

Зачем в XXI веке кому-то нужен язык без gc?

тем кто пишет рилтайм системы? Rust разве не для этого создавался?

umren ★★★★★
()
Ответ на: комментарий от umren

тем кто пишет рилтайм системы? Rust разве не для этого создавался?

Шо, неужто где-то на официальном сайте написано «Rust is a programming language designed for developing realtime systems»?

ovk48 ★★★
()
Ответ на: комментарий от umren

кто пишет рилтайм системы?

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

http://liu.diva-portal.org/smash/get/diva2:20899/FULLTEXT01.pdf

Freyr69 ★★★
()
Ответ на: комментарий от Freyr69

Кто пишет? линки на репозиторий пожалуйста

по ссылке какой то теоретический документ, в реальности никто не пишет хард рилтайм на гц

umren ★★★★★
()
Ответ на: комментарий от Freyr69

Ну хз, я думал, он создавался для серво

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

umren ★★★★★
()

Go можно выкидывать, вместе с растом.

comp00 ★★★★
()
Ответ на: комментарий от Freyr69

Вообще риалтайм системы вполне пишут на языках со сборщиком мусора.

Что подразумевается под риалтайм системой? Системы реального времени? Ну может быть.

А как вы будете писать софтину для VR, где GPU и так надрывается делая 4К с 90fps, т.е. у неё 12 мс на цикл, а вы хотите несколько этих циклов вырвать на GC? И что в итоге получится, объяснять?

foror ★★★★★
() автор топика
Ответ на: комментарий от foror

несколько этих циклов вырвать на GC?

https://twitter.com/id_aa_carmack/status/337731353472819202\

Альзо речь шла про системы реального времени вообще, а их еще как пишут на языках с gc.

Freyr69 ★★★
()
Последнее исправление: Freyr69 (всего исправлений: 1)

Енивей, что сейчас читать по Rust надо, кроме Rust-by-examples, которая периодически ломает свои примеры? Есть какая внятная книга, чтоб примеры хотя б работали, хотя б следующие пол года.

anonymous
()
Ответ на: комментарий от tailgunner

Это анонiмус же.

Да, сразу как-то не распознал. Ведь в теме ничего нет про JS или лиспы.

DarkEld3r ★★★★★
()
Ответ на: комментарий от anonymous

Енивей, что сейчас читать по Rust надо, кроме Rust-by-examples, которая периодически ломает свои примеры? Есть какая внятная книга, чтоб примеры хотя б работали, хотя б следующие пол года.

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

ozkriff
()
Ответ на: комментарий от anonymous

Нет, и эта информация общедоступна.

Ну это неправда. Гугл начали применять Go у себя - это сразу даёт большой плюс к популярности. Да чего там говорить, даже «сделано в гугле» - уже этого могло бы хватить.

DarkEld3r ★★★★★
()

Вот, вроде бы, сентябрь уже начался, а идиотии и какахокидательства в обсуждениях стало только больше :( .

ozkriff
()
Ответ на: комментарий от ozkriff

Ну так люди повозвращались из отпусков, все верно.

anonymous
()
Ответ на: комментарий от anonymous

Енивей, что сейчас читать по Rust надо, кроме Rust-by-examples

Про официальный мануал ты, наверное, в курсе? Rust by Example я бы советовал читать позже, тогда и поломки пугать не будут.

Вот ещё неплохое чтиво (Learning Rust With Entirely Too Many Linked Lists). По нему, в принципе, язык и изучать можно.

Ну и в последнюю очередь Rustonomicon (как раз допишут).

DarkEld3r ★★★★★
()
Ответ на: комментарий от Freyr69

Альзо речь шла про системы реального времени вообще, а их еще как пишут на языках с gc.

Изначально речь шла о

Зачем в XXI веке кому-то нужен язык без gc?

Так что вот - писать сурьезные игры и подобные по требованиям к быстродействию штуки. А Кармак и правда очень любит пытать детей лиспами и вбрасывать всякое)

ozkriff
()
Ответ на: комментарий от ozkriff

немогли зделать всё как в Crusis++!?

«идиотии и какахокидательства в обсуждениях стало только больше» (c)

Да как в том же Go, например, там оно выглядит аккуратнее.

anonymous
()
Ответ на: комментарий от anonymous

Go для инженеров.

Да-да, все хипстеры так говорят.

Мне кажется, или слово «хипстер» окончательно потеряло остатки какого-то определенного значения и используется просто как ругательство?

ozkriff
()
Ответ на: комментарий от anonymous

Все есть в доках и примерах.

Так по ним я не вижу, что бы «аккуратней» выглядело. Плюс-минус одна хрень, только в go вместо нормальных алгебраических типов используется костыль с несколькими возвращаемыми значениями.

месиво

Получил значение, развернул, используешь. Result - если ошибка, Option - если просто опциональное значение. Где месиво, сэр?

ozkriff
()
Ответ на: комментарий от anonymous

Да как в том же Go, например, там оно выглядит аккуратнее.

Не уверен, что более явное игнорирование ошибок (чем unwrap, по сути, является) так уж плохо.

DarkEld3r ★★★★★
()
Ответ на: комментарий от anonymous

Да. гораздо проще чем месиво из Result, Option, unwrap и т.п.

Не проще, да и это разные вещи. Хотя сравнить на примере было бы интересно, вместо отсылки к докам. Так-то я тоже могу посоветовать почитать что-то про обработку ошибок в расте.

DarkEld3r ★★★★★
()
Ответ на: комментарий от Deleted

Прост ты тупой, наверное((((99999

Обычно именно глупые люди пытаются мерятся тем немногим, что у них есть.

anonymous
()
Ответ на: комментарий от ozkriff

Получил значение, развернул, используешь. Result - если ошибка, Option - если просто опциональное значение. Где месиво, сэр?

Напиши аналог:

client, err := listener.Accept()
if client == nil {
    fmt.Printf("couldn't accept: " + err.String())
    continue
}
...
anonymous
()
Ответ на: комментарий от anonymous

Напиши аналог

На

match listener.accept() {
    Ok(connection) => ...,
    Err(e) => println!("Couldn't accept: {}", e),
}

Или, если не важна сама ошибка, вот:

if let Ok(connection) = listener.accept() {
    ...
} else {
    println!("err");
}

http://is.gd/4Nc4KD

ozkriff
()
Ответ на: комментарий от anonymous

Можно конкретнее, чем не устроил вариант с match? По мне, так оно более читабельное, чем твоя if-лапша.

Manhunt ★★★★★
()
Ответ на: комментарий от DarkEld3r

Напиши аналог:

А вот это аналог, только не полный - не хватает переменной, которые в Go сразу есть.

anonymous
()
Ответ на: комментарий от anonymous

не хватает переменной, которые в Go сразу есть.

Какой переменной? Ты про client/err? Ну так в расте алгебраические типы и надо матчить. Если нужно проверить только один вариант - можно использовать if let. Если несколько, то лучше и удобнее через match. В данном случае, лучше как раз match ведь с клиентом нам что-то потом всё равно надо делать.

Ну и тебя не смущает в Go то, что ты отдельно проверяешь первый результат (client == nil) и отдельно ошибку используешь? В расте как раз ненужные проверки отсутствуют.

DarkEld3r ★★★★★
()
Ответ на: комментарий от anonymous

Лапшой будет пачка вложенных match, если продолжить так же обрабатывать ошибки.

На этот случай есть map, map_err и т.д. Лапши не будет, если её специально не писать.

DarkEld3r ★★★★★
()
Ответ на: комментарий от DarkEld3r

Ну так в расте алгебраические типы и надо матчить

А если дальше ошибка может быть, и потом еще и еще? Пачка вложенных match будет?

Ну и тебя не смущает в Go то, что ты отдельно проверяешь первый результат (client == nil) и отдельно ошибку используешь? В расте как раз ненужные проверки отсутствуют.

А ты уверен, что в итоге код на rust быстрее будет? Если нет - то все эти размышления ни о чем.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.