Re[4]: Руссинович говорит - хватит
От: gyraboo  
Дата: 20.09.22 20:13
Оценка:
Здравствуйте, Dair, Вы писали:

D>Ну вот мне привычно было до недавнего времени использовать С++ как язык, общий для бизнес-логики мобильных приложений, а это iOS с Swift и ObjC, куда С++ компилируется нативно, и Андроид с его Джава-машиной и чудовищным (но работающим) JNI.


JNI у вас работает? А как вы deal with exceptions?
Re[5]: std::println
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 20.09.22 20:28
Оценка:
Здравствуйте, so5team, Вы писали:

S>Может вы думаете, что вот эти две строчки эквивалентны друг другу?

S>
S>std::cout << "Hello, World\n";
S>std::cout << "Hello, World" << std::endl;
S>


Если после первой строки вызвать flush, то она будет явно лучше второй.
Re[4]: Руссинович говорит - хватит
От: ksandro Мухосранск  
Дата: 20.09.22 20:39
Оценка: 6 (2) +1
Здравствуйте, gyraboo, Вы писали:

G>Елки-палки, да скажите уже однозначно и обоснованно, стоит ли изучать Rust и начинать на нём новые системные проекты, или это очередной пшик, и лучше Лазаря, усиленного ординарной сишкой, пока ничего не придумали? Сколько можно философствовать? Требую истину, в готовом и удобоваримом виде!


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

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

На язык однозначно стоит взглянуть, там есть несколько довольно интересных концепций, которых не увидишь в основных популярных языках. Далее, если вдруг возникло ощущение, что это лучший язык программирования в мире, то поздравляю, ты один из фанатов Раст, в этом случае все вопросы снимаются, ты сам всем будешь предлагать все писать на Расте.
Если же такого ощущения не возникло, то ИМХО с детальным изучением Раста лучше повременить.Все таки он еще не стал мейнстрим языком, и не факт что станет.
Re[4]: Руссинович говорит - хватит
От: vsb Казахстан  
Дата: 20.09.22 20:42
Оценка: +2
Здравствуйте, Dair, Вы писали:

D>>>А этот Руст бинарно совместим с С++-библиотеками?

F>>1. Зачем?

D>Ну вот мне привычно было до недавнего времени использовать С++ как язык, общий для бизнес-логики мобильных приложений, а это iOS с Swift и ObjC, куда С++ компилируется нативно, и Андроид с его Джава-машиной и чудовищным (но работающим) JNI. Будет Раст работать через JNI?


JNI это сишный интероп, а не С++.
Re[5]: Руссинович говорит - хватит
От: vsb Казахстан  
Дата: 20.09.22 20:44
Оценка: +1
Здравствуйте, ksandro, Вы писали:

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


В линуксе 6.1 официальная поддержка раста. Между прочим С++ в ядро Линус так и не позволил затащить.
Re[5]: std::println
От: B0FEE664  
Дата: 20.09.22 21:05
Оценка:
Здравствуйте, so5team, Вы писали:

BFE>>Из мотивации никак не следует, что \n следует добавлять, и уж никак не обосновано, что \n следует добавить таким противоестественным способом. Ну зачем?!


S>Может вы думаете, что вот эти две строчки эквивалентны друг другу?

S>
S>std::cout << "Hello, World\n";
S>std::cout << "Hello, World" << std::endl;
S>


Я думаю, что так вообще не стоит писать, так как не известно, что уже выведено в строку.
Вот нормальный стиль:
S>
S>std::cout << '\n' << "Hello, World";
S>std::cout << '\n' << "Hello, World" << std::flush;
S>

и да, я в курсе, что косный unix стиль, всё больше проникает всюду мешая прогрессу. Вот, уже до С++ добрались.
И каждый день — без права на ошибку...
Re: Руссинович говорит - хватит
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 21.09.22 03:17
Оценка: -1 :)
Здравствуйте, vsb, Вы писали:

vsb>Прислушайтесь!

К чему? К тому, что уровень подготовки программистов упал и они не могут справиться с С++? Слишком сложно? Индусы не справляются? Изнеженные выпускники не могут писать и осваивать или Руссиновч закончил пару проектов после чего решил что Rust это серебряная пуля?
Sic luceat lux!
Re[6]: std::println
От: so5team https://stiffstream.com
Дата: 21.09.22 04:40
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>не известно, что уже выведено в строку.


Вы не знаете, что в вашей программе уже выведено? Ну, OK.

BFE>Вот нормальный стиль:

S>>
S>>std::cout << '\n' << "Hello, World";
S>>std::cout << '\n' << "Hello, World" << std::flush;
S>>


Т.е. про разницу в выводе без flush-а и с flush-ем вы в курсе. OK еще раз.
Тогда следующий вопрос: правильно ли я понимаю, что ваш нормальный стиль вот такой:
print("\nThe result is: {}", result);
std::cout.flush();

?
Re[4]: Руссинович говорит - хватит
От: flаt  
Дата: 21.09.22 04:41
Оценка:
Здравствуйте, Dair, Вы писали:

D>Ну вот мне привычно было до недавнего времени использовать С++ как язык, общий для бизнес-логики мобильных приложений, а это iOS с Swift и ObjC, куда С++ компилируется нативно, и Андроид с его Джава-машиной и чудовищным (но работающим) JNI. Будет Раст работать через JNI?


JNI это extern "C". Естественно, все языки, умеющие в C ABI, будут работать сJNI.
Re[6]: std::println
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 21.09.22 05:41
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Я думаю, что так вообще не стоит писать, так как не известно, что уже выведено в строку.


Известно, ждём что-то с новой строки.

BFE>Вот нормальный стиль:

S>>
S>>std::cout << '\n' << "Hello, World";
S>>std::cout << '\n' << "Hello, World" << std::flush;
S>>


Тогда уже надо вспомнить старофортрановский стиль стандартного вывода ("carriage control ASA codes"), где каждая операция вывода должна была начинаться с одиночного символа:

   Control character    Effect              Possible implementation
   -----------------    ----------------    -----------------------
        Space           Normal behaviour    CR/LF/printing
          0             Double spacing      CR/LF/LF/printing
          +             Overwrite mode      CR/printing
          1             Next page           m*LF/CR/LF/n*LF/printing/CR/LF


или его современный эквивалент:

write(*, fmt="(1x,a,i0)", advance="no") "loop #", i

BFE>и да, я в курсе, что косный unix стиль, всё больше проникает всюду мешая прогрессу. Вот, уже до С++ добрались.


Что сразу unix-то?
The God is real, unless declared integer.
Re: Руссинович говорит - хватит
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 21.09.22 06:46
Оценка: -4 :))
Здравствуйте, vsb, Вы писали:

vsb>

Говоря о языках, пора прекратить начинать любые новые проекты на C/C++ и использовать Rust для тех сценариев, где требуется язык, отличный от GC. Ради безопасности и надежности. отрасль должна объявить эти языки устаревшими.


vsb>Прислушайтесь!


Я не знаю кто такой Руссинович, он для меня не авторитет. Авторитеты для меня это Ричард Столлман, Бьерн Страуструп, Мартин Фаулер и далее по списку.

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

Но в тоже время котировались языки одной компании, такие как C#, в некотором смысле даже Java и многие другие. Теперь санкции против России наглядно показывают, что не стоит гнаться за технологиями, которые могут забанить.

Дело уже не просто в техническом превосходстве C/C++, это вопрос выживания. Причём именно кроссплатформенные программы на C/C++ имеют наибольшие шансы прожить десятки лет чтобы там не мутили it-гиганты.

https://www.youtube.com/watch?v=FGB0Q-5qe9k
Re[5]: Руссинович говорит - хватит
От: Dair Россия https://dair.spb.ru
Дата: 21.09.22 06:58
Оценка:
Здравствуйте, gyraboo, Вы писали:

D>>Ну вот мне привычно было до недавнего времени использовать С++ как язык, общий для бизнес-логики мобильных приложений, а это iOS с Swift и ObjC, куда С++ компилируется нативно, и Андроид с его Джава-машиной и чудовищным (но работающим) JNI.

G>JNI у вас работает?

Работало, чего б не работать. Впрочем, я последний андроид-проект сдал и закрыл в 2019 году.

G> А как вы deal with exceptions?


Мы их catch на нативном уровне.
Re[5]: Руссинович говорит - хватит
От: Dair Россия https://dair.spb.ru
Дата: 21.09.22 06:59
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>JNI это сишный интероп, а не С++.


Окей, а мячик сбросьте так раст работать будет?
Re[7]: std::println
От: B0FEE664  
Дата: 21.09.22 09:13
Оценка: -2
Здравствуйте, so5team, Вы писали:

S>Вы не знаете, что в вашей программе уже выведено? Ну, OK.

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

S>Тогда следующий вопрос: правильно ли я понимаю, что ваш нормальный стиль вот такой:

S>
S>print("\nThe result is: {}", result);
S>std::cout.flush();
S>

S>?
Нет. Во-первых: использование форматированной строки имеет смысл, если предполагается перевод вывода на другие естественные языки, что из кода никак не следует. Во-вторых: форматирование вывода и сам вывод — это две разные операции, поэтому имеет смысл их разнести. (std::formatter — правильный шаг в данном направлении). В-третьих: смешивать потоки с вызовами функций ввода-вывода — так себе идея.
И каждый день — без права на ошибку...
Re[7]: std::println
От: B0FEE664  
Дата: 21.09.22 09:28
Оценка:
Здравствуйте, netch80, Вы писали:

BFE>>Я думаю, что так вообще не стоит писать, так как не известно, что уже выведено в строку.

N>Известно, ждём что-то с новой строки.
Смелое допущение. Откуда это известно?

echo -n "asdf" > c.txt
cat c.txt


BFE>>и да, я в курсе, что косный unix стиль, всё больше проникает всюду мешая прогрессу. Вот, уже до С++ добрались.

N>Что сразу unix-то?

А вот я не знаю, чего оттуда всё в язык тащат: сначала примитивы синхронизации (не удобные для прикладных уровней), потом вот — перевод строки в конце вывода (см. определение линии в POSIX)
И каждый день — без права на ошибку...
Re[5]: Руссинович говорит - хватит
От: Mr.Delphist  
Дата: 21.09.22 10:05
Оценка:
Здравствуйте, flаt, Вы писали:

F> и линкер у них таки есть: lld. Он почти допилен, его собираются сделать дефолтным для Rust.


Вот тогда и поговорим (ц)
Re[8]: std::println
От: so5team https://stiffstream.com
Дата: 21.09.22 10:09
Оценка:
Здравствуйте, B0FEE664, Вы писали:

S>>Вы не знаете, что в вашей программе уже выведено? Ну, OK.

BFE>Откуда это можно знать в многопоточной программе?
BFE>И почему только в одной программе? На терминал можно выводить из нескольких...



Если вы думаете, что в многопоточной программе (не говоря уже о ситуации, когда в консоль может писать сразу несколько приложений) вот эта вот перестраховка:

std::cout << '\n' << "Hello, World" << std::flush;


вас от чего-то защищает или что-то вам гарантирует, то у меня для вас плохие новости...

S>>Тогда следующий вопрос: правильно ли я понимаю, что ваш нормальный стиль вот такой:

S>>
S>>print("\nThe result is: {}", result);
S>>std::cout.flush();
S>>

S>>?
BFE>Нет. Во-первых: использование форматированной строки имеет смысл, если предполагается перевод вывода на другие естественные языки, что из кода никак не следует.

Во-первых, это минимальный пример, из которого не следует делать далеко идущие выводы.

BFE>Во-вторых: форматирование вывода и сам вывод — это две разные операции, поэтому имеет смысл их разнести. (std::formatter — правильный шаг в данном направлении).


А могли бы вы переписать показанный мной минималистичный пример так, как вас бы это устроило?

BFE>В-третьих: смешивать потоки с вызовами функций ввода-вывода — так себе идея.


Э... Здесь вообще ничего не понятно.
Re[6]: Руссинович говорит - хватит
От: vsb Казахстан  
Дата: 21.09.22 10:57
Оценка: 4 (1)
Здравствуйте, Dair, Вы писали:

vsb>>JNI это сишный интероп, а не С++.


D>Окей, а мячик сбросьте так раст работать будет?


Будет, конечно, уж у языка, претендующего на системный, с сишным интеропом-то всё хорошо. Тут вопрос в качестве обёрток, для JNI есть официальные С и С++ хедеры с макросами и всяким, которые призваны немного упрощать всё это дело. Для Rust от сообщества тоже что-то гуглится, но про качество — хз. Но если самому не в ломы написать нужные декларации, проблем точно не будет. Да там в принципе этих обёрток немного, если память не изменяет, буквально несколько десятков функций. Не, я бы на Rust для JNI писал бы без беспокойства, тут проблем не ожидается.
Отредактировано 21.09.2022 10:58 vsb . Предыдущая версия . Еще …
Отредактировано 21.09.2022 10:57 vsb . Предыдущая версия .
Re[2]: Руссинович говорит - хватит
От: BlackEric http://black-eric.lj.ru
Дата: 21.09.22 12:01
Оценка: 1 (1) +1
Здравствуйте, SаNNy, Вы писали:

SNN>В свое время Рихтер то же писал про C#.


И таки шарп вытеснил плюсы из написания бизнес логики.
https://github.com/BlackEric001
Re[4]: Руссинович говорит - хватит
От: σ  
Дата: 21.09.22 15:04
Оценка: +1 :)
N>Это же тест на зрелость языка, когда его инструментарий пишется на нём самом.

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