LINUX.ORG.RU
ФорумTalks

Целились в C++, а попали в Аду?

 ,


0

5

Сначала было это: https://www.adacore.com/press/adacore-joins-rust-foundation-as-silver-member

Теперь вот: https://www.adacore.com/press/adacore-announces-gnat-pro-for-rust

Адакопец? Хотя она и без Rust’а себя НЕ ОЧЕНЬ хорошо чувствовала. В РФ так вообще вакансий по Аде я с 2015 года не видел.

★★★★★

В РФ так вообще вакансий по Аде я с 2015 года не видел.

А кто будет откликаться на вакансию «Программист Ада»?

AlexVR ★★★★★
()

Недавно решил посмотреть как себя чувствует Rust в ядре. Как я понял (могу ошибаться):

1) Rust прибит к большой std, стандартной/стабильной возможности изменить это нету

2) Запилить тесты в кернелспейс не получилось

3) Ничего кроме drm/asahi сделано не было

Действительно ли все так?

MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)
Ответ на: комментарий от AlexVR

Таким нехитрым образом мы выясняли, что всех сатанистов пересажали ещё в 2015-ом.

Ivan_qrt ★★★★★
()

Добавили Раст в свою IDE? Ну так там ещё C и C++ есть, и что?

Адакопец? Хотя она и без Rust’а себя НЕ ОЧЕНЬ хорошо чувствовала.

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

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

Действительно ли все так?

Вроде как даже ещё хуже. ЕМНИП этим занималось полтора сатаниста, которые сейчас потеряли к этому интерес.

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

А кто будет откликаться на вакансию «Программист Ада»?

Есть у меня коллега по имени Ада, например. Так что не всё так плохо.

ya-betmen ★★★★★
()
Ответ на: комментарий от PPP328

Этим начал заниматься Miguel Ojeda, он все еще участвует в проекте, во всяком случае виден в списках рассылки.

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

Я посмотрел его гит,
Для linux:

  • В июне он поправил опции компилятора rust для ведра
  • В апреле вместе с Asahi Lina что-то поправил в плане fallback methods.

Не очень активно для «проталкивателя» rust в ядро.

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

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

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

Адакопец

Случился ещё при союзе

upcFrost ★★★★★
()

НЕ ОЧЕНЬ хорошо чувствовала

На уровне фарси, итальянского и гуджарати, вполне неплохо чувствовала себя

buddhist ★★★★★
()
Ответ на: комментарий от MOPKOBKA
  1. Rust прибит к большой std, стандартной/стабильной возможности изменить это нету

Неа, std в ядро никто не тянул и тянуть не будет, и это не возможно.

В ядре используется core (и то не вся) и модифицированный клон alloc (обрубок, который потом когда-то будет влит обратно в стандартный).

Пожалуй это наиболее полезная часть работы от впихивания ржавого в ядро для Embedded-разработчиков.

При программировании микроконтроллеров на ржавом std то же не используют.

  1. Запилить тесты в кернелспейс не получилось

Ой да ладно. Что и как ты собрался тестить?

  1. Ничего кроме drm/asahi сделано не было

Ржавый как бы в ядре и как бы и не в ядре.

В Mainline приняли огрызок от первоначальной работы, а далее по чайной ложке в каждый релиз принимают. Народ по десяток попыток делает на каждый чих.

Как следствие только «рисёч-проекты» и светятся, то прототип для мака, то NVMe перепишут, то что-то там «супер нужное» для андройдика. И всё по верх отдельной ветки ядра с гордым названием «Rust for Linux».

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

Вот пусть и дальше в рисëч ветке.

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

Неа, std в ядро никто не тянул и тянуть не будет, и это не возможно.

Как без nightly не тянуть его? Пишут что невозможно.

Ой да ладно. Что и как ты собрался тестить?

KUnit почему то существует?

Ржавый как бы в ядре и как бы и не в ядре.

Ну да, в ядре drm/asahi нету, но я не вижу десятка попыток, есть их список?

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

Неа, std в ядро никто не тянул и тянуть не будет, и это не возможно.

А в чем смысл технологии, которую можно использовать на 15% от мощности? Я не настоящий сварщик, маску на стройке нашел, но беглый гуглинг показал, что в std кроме платформоспецифичных вещей (которым в ядре не место) еще куча всего:

  • Все типы контейнеров, от фиксированных массивов (!) и векторов до слайсов
  • Стандартные типы фиксированного размера (i32 и проч)
  • unsafe Указатели
  • Сравнения строк
  • Операции с типом «время»
  • Кейворды типа static, enum, break.

И еще тонна всего остального. https://doc.rust-lang.org/std/

Как без этого вообще в ведре что-то писать? Как минимум нужны фиксированные типы, поинтеры и массивы.

PPP328 ★★★★★
()
Последнее исправление: PPP328 (всего исправлений: 1)
Ответ на: комментарий от MOPKOBKA

но я не вижу десятка попыток, есть их список

С какой попытки был принят раст? А так можно глянуть в гите как много работы в раст-директории ведётся. И сравнить с тем, что есть в рассылке. Аля такое:

https://lore.kernel.org/rust-for-linux/51b43b27-42f6-9b23-4175-6f9b17870524@amd.com/T/#t

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

Ничего непонятно. А где описание того, что в core? Всё что ниже на странице - такой же список как в std странице. Структурированием документации занимались люди недалекие.

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

Я все же не увидел десятка попыток, или ты имеешь виду патчи? Ну да, несколько десятков патчей по разным мелочам наберется. Я думал драйверов или модулей десяток есть уже.

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

Я соглашусь, довольно непонятно. В других языках, подобные вещи находятся в самом языке, а не в std, и не нужно например искать к чему относится string literal.

MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от AlexVR

1. Как на расте писать под платформы с нестандартным размером типов? 20 бит машинное слово к примеру?

2. Или если sizeof(char) == sizeof(int)?

Не смог загуглить, возможно ты знаешь.

MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)
Ответ на: комментарий от AlexVR

Это всё равно не отвечает на вопрос, что конкретно доступно. Типы? Функции? Нет ни линка и списка.

HashMap and HashSet are not available due to a lack of a secure random number generator.

Простите, от этого я взоржамшы в голосину. Что, настолько фанатизм не дает покоя, что нет fallback на какой-нибудь FNV хэш? Зачем им вообще рандом для хэша? Хэш реализуется через хэш функцию, которая должна давать детерминированные выходы при одинаковых входах.

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

Всё можно сделать, только качественно - долго

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

А где описание того, что в core?

Нет ни линка и списка.

А теперь открой две страницы одновременно и сравни. Где Box, io, println и т.д.?

Ты прочитал, хоть одну статью про Embedded+Rust?

Хочешь разобраться:

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

А теперь открой две страницы одновременно и сравни.

Невероятное удобство. Мне чтобы понять четкий список ассоциаций модуль-сущность надо теперь скачивать страницы и травить на них diff?

Ты прочитал, хоть одну статью про Embedded+Rust?

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

So, this RFC proposes that all major changes are breaking, but not all breaking changes are major.

Мне плевать на синтаксис, он и так инопланетный, мне плевать на то, кто владеет компилятором и какой там процент транс-персон. Как руководитель отдела я хочу завтра проснуться и не заводить задачу «почини компиляцию, а то CI/CD обновился и теперь ничего не работает (дубль №455)».

В теории Rust нужен не тем, кто пишет на С, а тем, кто пишет на С++. Но от С++ Rust отстает на десять параллельных вселенных. Начиная с того, что чтобы написать реализацию двусвязного списка надо святотатствовать и использовать unsafe и заканчивая отсутствием кастомного аллокатора для контейнеров.

Кроме того, если в С и С++ давно вычесали все «детские» проблемы типа «мьютекс не лочится» или «А is not thread-safe», то Rust продолжает ходить по этим граблям, получая баги типа «safe area is unsafe» и «static bound modifier is ignored» (https://github.com/rust-lang/rust/issues/114801). Сейчас открыто 8900+ ишуёв в репозитории. Кажется, что он полон багов, нет?

В случае, если уже существует какое-то АПИ, с которым надо взаимодействовать то Rust - это просто какой-то boilerplate-generator, который надо кому-то писать:

http://way-cooler.org/blog/2019/04/29/rewriting-way-cooler-in-c.html

Currently there is 11 THOUSAND lines of Rust in wlroots-rs. All of this code is just wrapper code, it doesn’t do anything but memory management. This isn’t just repeated code either, I defined a very complicated and ugly macro to try to make it easier. This wrapper code doesn’t cover even half of the API surface of wlroots.

Собственно, фраза из статьи шикарно описывает состояние всех текущих проектов на Rust:

Smithay is very incomplete. Very, very incomplete compared to wlroots. It is no where near usable and the current trajectory doesn’t look like it will be usable very soon either. Наверное разрабы пишут биндинги вместо кода или переписывают подлежащие библиотеки, потому что не смогли описать биндинги к некоторым функциям.

https://itnext.io/dont-rewrite-your-project-in-rust-or-at-all-81b5be97ff58?gi=dada93f0dd06

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

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

проснусь

Растоманы намекают, что не надо приходить в сознание.

token_polyak ★★★★
()
Последнее исправление: token_polyak (всего исправлений: 3)
Ответ на: комментарий от PPP328

Начиная с того, что чтобы написать реализацию двусвязного списка

Рекомендуют писать через массивы и индексы, вместо malloc будет Vec<ListItem> вместо указателей индексы.

Теперь вместо указателей безопасные индексы, конечно можно указать не тот элемент, или вообще выйти за пределы массива, но там и boundchecking есть.

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

Рекомендуют писать через массивы и индексы, вместо malloc будет Vec вместо указателей индексы.

Я в курсе. Вот вы, как программист, понимаете, насколько это идиотское решение?

Вот представьте ситуацию - у вас есть JSON, который (внезапно) внутри себя есть дерево на двусвязных списках - есть влево/вправо, есть вверх/вниз. А теперь смотрите, у вас 100 элементов, вам надо быстро обработать значения внутри. Что вы делаете? Правильно, раздаете тредам по одному значению, в итоге параллелите обработку. Каждый тред делает что хочет с указателем на объект, поскольку такой объект никак не привязан к родителю намертво. Мало тоо, чтобы добавить в родителя по результатам обработки какой-то новый объект вам надо только залочить next последнего объекта, после чего сменить указатель на новый объект, связав их крест-накрест. Всё.

Представили?

А теперь то же самое, но на массивах: та же параллель, все обращаются по индексу.

И тут у нас развилка, оба варианта ведут в говно:

  1. Массив immutable. Мы не можем добавить в родителя элемент, можем только создать новый массив детей. Ой, да там же у нас 100 потоков, каждый может создать новый массив, но в котором не будет других добавленных потомков. Лажа, рассинхрон, однопоток. Не говоря уже о потреблении памяти.

  2. Массив mutable. Начнем с того, что любой растоман будет насиловать вас раскаленным ломом, если вы при нем скажете слово «direct access pointer». Но даже, если вы, правдами и неправдами используете РЕаллокацию этого массива - то в случае, если место на арене кончилось - то вам выдадут другой поинтер на массив. Что значит, что все объекты, что лежали в прошлом и указатели на которые выданы в потоки сменили свою позицию в памяти. Потоки теперь лезут в after free зоны и оперируют там. И решить это нельзя.

Есть максимально костыльные методы из разряда делать новый список объектов, которые создали потоки, а потом их объединять с родителем после того как закончилась обработка самого последнего. Это называется сам себе насрал в спеки языка - сам себе героически решаешь проблемы.

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

Невероятное удобство.

Какое ещё удобство. core - это ОС-независимая часть std. Что ещё надо тут понимать? core - можно использовать хоть на микроконтроллере хоть на хостовой машинке. std без примитивов от ОС не заюзать. Можешь добавить кучу, тогда core+alloc дают больше компонентов из std.

А пока твои ответы на core/std больше похожи на: «тут какие-то буковки и тут какие-то буковки, и они очень похожи.»

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

Хочешь понять, изучи и воспользуйся. Без написания реального кода, этот язык не понять уж точно. Как минимум, на нём в разы быстрее создать прототип консольной утилиты или сетевого сервиса, чем на Си/С++.

Как руководитель отдела…

Как руководитель отдела, ты должен понимать кто в твоей команде и насколько разбирается в том или ином ЯП. Да и сам должен развиваться, изучая на практике (как завещал великий Мартин Роберт).

В теории Rust нужен не тем, кто пишет на С, а тем, кто пишет на С++.

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

Начиная с того, что чтобы написать реализацию двусвязного списка надо святотатствовать и использовать unsafe

Это для тебя удивительно? Игра с сырыми указателями - unsafe. Использование полоумных указателей для списков/графов - тупая идея по определению.

Сейчас открыто 8900+ ишуёв в репозитории. Кажется, что он полон багов, нет?

Эффект Github-а. По каждой фигне по тикету. Плюс:

  • новички лепят глупые вопросы в тикеты,
  • большая часть «фитч» ещё в unstable.

В случае, если уже существует какое-то АПИ, с которым надо взаимодействовать то Rust - это просто какой-то boilerplate-generator, который надо кому-то писать:

А в коком-то другом ЯП это не так? Кроме этого какой АПИ ты имеешь в виду? Сишные либы - одно, json-rpc - другое.

wlroots-rs

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

Между unsafe обёрткой и идеоматичной может быть пропасть. А малый опыт может завести в тупик.

gtk-rs - получился на четвёрочку. Ещё есть куда развиваться.

nix-rust - пример нестабильной библиотеки, но в которой нарабатываются опыт красивой обвязки.

В какие-то моменты даже проще написать отдельные функции на Си (слава богу сборочная система Cargo это позволяет делать легко). Но на выходе получишь красивый rust API.

В какие-то моменты вспоминаешь SOLID и прочую ересь. И отделяешь не стабильные библиотеки.

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

Но в любом случае опыт написания реальных программ на Rust очень полезен.

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

Какое ещё удобство. core - это ОС-независимая часть std. Что ещё надо тут понимать?

Так, погодите. Я задал конкретный вопрос - что входит в std и что в core? Вот собрался я для STM32 попробовать rust - что мне будет доступно? Я открыл страницу std, открыл страницу core. Там 80% спискоты внизу страницы совпадает. Это что означает? Что оно есть и там и там? Зачем? Или это такой оригинальный способ сказать что доступно при core + std? Тогда где посмотреть что конкретно в std?

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

Нет. Как руководитель я должен смотреть куда дует ветер, может мне стоит выгнать всех сишников и нанять растаманов.

По каждой фигне по тикету.

Из 8000 всего 3600 мейнтейнеры пометили как BUG.

Кроме этого какой АПИ ты имеешь в виду?

Бинарное, конечно. Про JRPC любому очевидно, что там вообще плевать как коннектиться, там разрыв. Ниже я привел пример почему с сишной интеграцией всё плохо.

большая часть «фитч» ещё в unstable.

Языку 8 лет! Это не те времена когда не было нормального интернета или сообществ и надо было вырабатывать какой-то специальнеый комитет на зарплате. 8 лет и большая часть фич в unstable!

В какие-то моменты даже проще написать отдельные функции на Си

Это означает, что язык и инструменты, что он предоставляет - говно. Мы не живем в мире розовых пони где все подстраиваются дабы не обидеть дитачку и меняют апи чтобы раст мог с ними интегрироваться. Если язык хочет свою нишу - он должен легко уметь интегрироваться с API, которое уже существует с минимальным оверхедом. Тут, судя по примеру из статьи надо чуть ли не докторскую по Rust защитить и нанять толпу обезьян, чтобы они писали врапперы.

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

Можно остановится на том что все элементы будут одного размера, хотя в C/C++ они могут быть разного.

MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от MOPKOBKA

Потому и на четвёрочку. В GTK наследования более чем достаточно. Но создать свой полноценный «класс» в gtk-rs можно. Ещё бы уменьшить объём дополнительного кода. Кода написать надо будет меньше чем в Си, но больше чем в Vala.

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

Так, погодите. Я задал конкретный вопрос - что входит в std и что в core?

https://github.com/rust-lang/rust/blob/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/lib.rs#L421

core - это часть стандартной библиотеки, которая для удобства пользователя слита в std. Когда пишешь под обычную ОС, тебе не надо думать, что определено в core, что в std. Всё берёшь из std.

Вот собрался я для STM32 попробовать rust - что мне будет доступно?

Очевидно, что core.

Нет. Как руководитель я должен смотреть куда дует ветер, может мне стоит выгнать всех сишников и нанять растаманов.

Только перед этим, будь любезен изучи все ПЛЮСЫ и минусы X (заменить на нужно, что ветром принесло).

AlexVR ★★★★★
()
Последнее исправление: AlexVR (всего исправлений: 1)
Ответ на: комментарий от AlexVR

https://github.com/rust-lang/rust/blob/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/lib.rs#L421

Без обид, но это глупо. Я понимаю, что вы пытаетесь ответить на конкретный вопрос, но завтра что-то обновится и мне надо будет снова лезть в исходники компилятора чтобы посмотреть что доступно и как этим пользоваться?

изучи все ПЛЮСЫ

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

PPP328 ★★★★★
()
Последнее исправление: PPP328 (всего исправлений: 1)
Ответ на: комментарий от no-such-file

«Junior Ada, Middle Ada, Senior Ada»

«Старший инженер-программист — ведущий разработчик Ада»

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

Но от С++ Rust отстает на десять параллельных вселенных. Начиная с того, что чтобы написать реализацию двусвязного списка надо святотатствовать и использовать unsafe
святотатствовать
использовать unsafe

Ты в std посмотри, там этого святотатства хватает. Наверное, святотатство только в твоей голове заключается 😁

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

Наверное, святотатство только в твоей голове заключается 😁

Начнем с того что личные оскорбления тут не приветствуется. А закончим тем, что главная политика Rust - using of unsafe is highly discouraged. В идеале в user-коде unsafe быть не должно. Разработчики и проталкиватели языка настолько на этом помешаны, что на полном серьёзе предлагают писать списки на массивах. Разгадка проста - без safeness раст превращается в анально огороженный С++ с ужасным синтаксисом и без стабильного апи

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

Идиотское решение - это смешивать семантику владения привязанную к указателям и их умным аналогам, со структурами данных и прикладным алгоритмом; самоссылающиеся структуры данных на указателях уже давно антипаттерн(и не только в расте) и по скорости работы ( на современных процах), и по корректности, безопасности алгоритма. А для многопоточной возни с json-ми можно вспомнить что кроме вектора, есть ещё хэшмапы, btreemap-ы, и ещё какие-нибудь мапы и их комбинации ( да даже пресловутые двухсвязные списки есть если что). Для микроконтроллеров, конечно, отдельная история, но таки в пользу раста

zurg
()
Последнее исправление: zurg (всего исправлений: 1)
Ответ на: комментарий от PPP328

Языку 8 лет

Справедливости ради, Страуструп начал работу над C++ в 1979г., а первая официальная версия появилась в 1985г. , и полноценного компилятора С++ не было, а вместо него был какой-то препроцессор, генерящий код на С, и всё это собиралось компилятором С.

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

Вот уж не С/С++ бы заикаться про ужасность синтаксиса, он у них на уровне перла, у раста да, внешняя эстетичность кода хромает (меня это самого по началу отпугнуло) что характерно, именно там где он похож на С++, но реальная читаемость намного выше

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

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

zurg
()
Последнее исправление: zurg (всего исправлений: 1)
Ответ на: комментарий от zurg

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

А пруфы есть? Или только вскукареки растоманов, пытающихся оправдаться?

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

Я специально упомянул, что сейчас не 70-80е, есть интернет через который можно в любой точке мира нанять человека или поднять толпу опенсорсеров чинить твои ошибки.

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

она в последнее время вроде как подвоскресла

Какой-то универский препод написал систему опакечивания alire, что-то типа Cargo. А какие ещё «подвоскресло» появились? Стандарт 2022г.? Никакой революции там нет, ввели мелкие фичи. А ещё они проводят какую-то миграцию, и в новых версиях комьюнити (по крайней мере то, что я смотрел) перестал работать фреймворк юнит-тестирования, типа, ждите, пока починим.

теперь вот дилемма - раст или ада.

Если так вопрос звучит, то конечно, Раст. Просто сделай опрос тут на ЛОР, кто знает Раст и кто Аду (но не просто хелло-ворлд, а на уровне всё, что хочу реализовать - реализую, с минимальной гуглёжкой. Ну или посмотри на количество вопросов на SO. Для раста гораздо проще найти помощь.

seiken ★★★★★
()
Последнее исправление: seiken (всего исправлений: 1)
Ответ на: комментарий от PPP328

Ну так этот аргумент работает в обе стороны. Если бы в 80х был веб из 21го века, авторов заспамили бы тикетами, которые они разгребали бы ещё 10 лет. А C++ до 90х был маргинальщиной. Те же игры начала 90х - сишка. А Кен Томпсон, работавший со Страуструпом в одной конторе, говорил о C++ как о ужасной мешанине разрозненных фич.

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

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

seiken ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)