The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

В ядре Linux выявлена ошибка, приводящая к нарушению работы ..., opennews (??), 27-Ноя-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


35. "В ядре Linux выявлена ошибка, приводящая к нарушению работы ..."  +15 +/
Сообщение от имя_ (?), 27-Ноя-19, 11:41 
"благодаря раст я понял насколько красив c++" (c)
Ответить | Правка | Наверх | Cообщить модератору

41. "В ядре Linux выявлена ошибка, приводящая к нарушению работы ..."  –2 +/
Сообщение от Anonymoustus (ok), 27-Ноя-19, 12:08 
И хрустоедов опустил красиво.
Ответить | Правка | Наверх | Cообщить модератору

55. "В ядре Linux выявлена ошибка, приводящая к нарушению работы ..."  –3 +/
Сообщение от Orduemail (ok), 27-Ноя-19, 13:05 
Я не вижу каким образом он опустил. Я вот тоже оценил C++ только после знакомства с rust'ом. И это не мешает мне быть фаном раста. И я не вижу в чём опускание? В том, что это намёк на тупизну заурядного растофила, который может понять С++, только через призму rust'а, потому что rust освоить проще чем C++? Ну, может быть и так, но я это вижу скорее как камень в огород C++, который настолько беспорядочно развивался, и такое количество идиотов привлёк, что найти стоящую инфу по нему, не будучи специалистом в C++ практически невозможно.
Ответить | Правка | Наверх | Cообщить модератору

75. "В ядре Linux выявлена ошибка, приводящая к нарушению работы ..."  –1 +/
Сообщение от Crazy Alex (ok), 27-Ноя-19, 16:31 
Ты это серьёзно, насчёт инфы? Книги Саттера, C++ Core Guidelines и https://isocpp.org/faq покрывают фактически всё.

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

Ответить | Правка | Наверх | Cообщить модератору

91. "В ядре Linux выявлена ошибка, приводящая к нарушению работы ..."  +1 +/
Сообщение от Аноним (91), 27-Ноя-19, 20:19 
Раст как раз помагает это все понять, в самой что интераетивной форме, заодно прикрывая твою задницу каждый раз, когда ты лоханулся. Изворачивать мозги не требуется
Ответить | Правка | Наверх | Cообщить модератору

94. "В ядре Linux выявлена ошибка, приводящая к нарушению работы ..."  +7 +/
Сообщение от Orduemail (ok), 27-Ноя-19, 21:13 
> Ты это серьёзно, насчёт инфы?

Да.

> Книги Саттера, C++ Core Guidelines и https://isocpp.org/faq
> покрывают фактически всё.

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

> Насчёт "раст освоить проще" я, кстати, категорически не согласен - он хочет,
> чтобы разработчик как-то очень специфически свернул мозги,

TL;DR Самый простой способ освоить C++, это освоить раст, а потом потратить пару вечеров на то, чтобы пролистать Страуструпа.

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

А, я чуть не забыл про реддит. Там офигенное сообщество растоманов, туда можно придти с куском кода, на который ругается борроучекер, и тебе объяснят почему он прав, что именно ты сделал не так, уточнят у тебя, что ты хочешь сделать, и предложат способы как это можно сделать. В этих условиях, надо быть либо слабоумным, либо элементарно не хотеть осваивать раст, для того, чтобы не освоить его за 3 месяца, до уровня пониманя того, зачем и когда нужен unsafe и как его использовать, чтобы не обжечься.

И я отмечу, все эти ресурсы несложно найти, возможно для этого даже гугл не нужен, можно до любого добраться в несколько переходов с rust-lang.org.

> в то время как
> плюсы совершенно спокойно ложатся на существующие привычки почти из любого распространённого
> языка.

В том-то и проблема. Каждый приходит со своими идиотскими привычками, и начинает рассказывать что его привычки лучше всего, что именно так и надо писать на C++. И среди всех этих рассказов практически невозможно найти те, чьи авторы реально попытались сломать свои старые привычки, заточенные под C/asm/Lisp/..., и выработать новые, которые лучше подходят для С++. То есть, если ты заранее знаешь, какие привычки лучше подходят, то найти изложение этих привычек несложно. Но если ты не знаешь, то ты не можешь отличить хорошие привычки от плохих. Единственный способ -- это несколько лет практики, когда ты перелопатишь всю ту бочку дерьма, которое предлагают доморощенные C++-гуру, и выберешь оттуда искомую каплю мёда.

Блин, глянь на Common Lisp. Пятая ссылка в ddg по запросу "Common Lisp" -- это "Practical Common Lisp", книга которая разбирает CL на примерах, решая вполне практичные задачи лисповым способом. Достаточно прочитать эту книгу за пару вечеров, и ты уже понимаешь как надо писать на CL. Да, ты не знаешь что такое meta-object protocol, и не можешь ещё запиливать свои ООП системы поверх CLOS. Ну и чё? Это уже технические детали которые ты освоишь тогда, когда тебе приспичит написать бинды к qt, которые позволят жонглировать кутишными классами как first-class объектами языка, не создавая ненужных прослоек между lisp'ом и C++. Это дело техники, а философию программирования на lisp'е ты уже освоил за два дня.

С растом это занимает больше, но путь не менее прямолинеен, просто он длинее. С C++ нет никакого пути, точнее есть пути, но у тебя нет gps-навигатора, который позволит тебе найти эти пути.

> Единственное, что надо - понять, что есть данные (и у
> них есть владелец), а есть указатели и ссылки на них, и
> что это разные вещи.

Ой, это вообще не проблема. Эти вещи осваиваются максимум за неделю чтения любой книжки по C или C++. Глянь, я C осваивал полгода в школе, у нас парень читал курс сетевых технологий, и полгода он посвятил С. А года через два я купил какую-то книжку по С++, и освоил весь синтаксис и все абстракции C++ за пару недель. Ни в синтаксисе ни в семантике C++ нет ничего сложного, книжки C++ за 21 день для чайников не врут: всё это реально можно освоить за 21 день, даже если две недели прокрастинировать.

Но здесь обратная ситуация с CL. В CL можно философию lisp'а за два дня усвоить, и потратить потом пару лет на то, чтобы освоить всё остальное, читая документацию. С С++ ты освоишь неважные технические детали за неделю, но философию будешь осваивать потом по кусочкам годами. Я в течение 15 лет знал, что такое наследование в C++, что такое темплит, и как написать иерархию из всяких там Person и Employee да ещё и параметризовать её. И все эти 15 лет я не мог понять, что мне с этим знанием делать и как их применять для решения реальных проблем, все эти возможности были полезны как третья нога, без них на С было проще и понятнее. Попытки писать что-то на C++ упирались в то, что я по тысяче раз менял одни и те же куски кода, потому что так как я задумал их было невозможным дописать. То что-то критичное вдруг отказывалось инлайниться, из-за того что приходилось отказаться от const в заголовке функции, то ещё какая хрень. Попытки задавать вопросы в интернетах разбивались об умников, которые больше стремились объяснить мне, что я ничего не понимаю в C++, чем объяснить мне что мне делать в моей ситуации. А если они и объясняли, то всенепременно скатываясь в какой-нибудь холивар-междусобойчик, типа C с классами -- это сакс, или что Александреску надо распять на одном из крестов С++. И пойди потом разберись, кого из этих отморозков слушать, а кого игнорить.

Не то, чтобы я все эти 15 лет только тем и занимался, что писал куски кода на C++ и компилял их в асм, чтобы посмотреть, что получается, но несколько таких забегов я сделал. И если в результате этих ковыряний и получалось что-нибудь похожее на то, что я хочу, то это получалось через огромное количество усилий, а что хуже, я не видел способа воспроизвести результат на другой задаче меньшим количеством усилий: я не видел чтобы у меня копился какой-то опыт, который бы упрощал жизнь.

Когда же я увидел rust, его borrow-checker за три месяца объяснил мне как надо, посредством битья по рукам за каждую попытку сделать так, как не надо. Да, технически это выглядело примерно так же: я писал кусок кода, и потом многократно вносил в него изменения, чтобы посмотреть что получится. Но с borrow-checker'ом каждая итерация занимала существенно меньше времени, потому что borrow-checker, как правило, на ранних этапах сообщает что я спорол чушь. Он не дожидается, когда я напишу полтысячи строк кода, чтобы потом я вдруг выяснил, что какой-то код, на инлайн которого я надеялся, не инлайнится, и задним числом очевидно почему, и очевидно что ничего с этим не сделать, но поскольку я в этот код передаю огромную структуру по значению, то без инлайна тут плохо. И уйти от передачи по значению не удастся, потому что там какие-нибудь требования стандарта к декларации операторов мешают. Через месяц возни с rust'ом я рылся не только в коде std, но и в коде gfx-rs, и это не представляло никаких особенных неудобств, особенно если сравнить с моими давнишними попытками порыться в libstdc++ -- там такой взрыв синтаксиса, размазанный далеко за края экрана, утонувший в темплитах, с минимумом документации, с совершенно идиотским делением на заголовки и сорцы: в заголовках декларации, в сорцах всё остальное, но есть нюанс: однострочники и некоторые другие inline функции/методы живут в заголовках. То есть это даже читать последовательно невозможно, приходится переключатся между файлами туда сюда, и между разными местами одного файла.


Итого самый простой способ освоить C++, это освоить раст, а потом потратить несколько вечеров на то, чтобы полистать Страуструпа. После этого для того, чтобы кодить на С++ на хорошем профессиональном уровне будет не хватать лишь технических деталей, которые на 95% можно извлечь из документации, а остальное задавая вопросы гуглу.

Ответить | Правка | К родителю #75 | Наверх | Cообщить модератору

102. "В ядре Linux выявлена ошибка, приводящая к нарушению работы ..."  +/
Сообщение от Anonymoustus (ok), 27-Ноя-19, 23:14 
> Итого самый простой способ освоить C++, это освоить раст, а потом потратить
> несколько вечеров на то, чтобы полистать Страуструпа. После этого для того,
> чтобы кодить на С++ на хорошем профессиональном уровне будет не хватать
> лишь технических деталей, которые на 95% можно извлечь из документации, а
> остальное задавая вопросы гуглу.

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

Ответить | Правка | Наверх | Cообщить модератору

107. "В ядре Linux выявлена ошибка, приводящая к нарушению работы ..."  +/
Сообщение от Crazy Alex (ok), 28-Ноя-19, 00:28 
Ох и простыня :-)

Не, сейчас правда всё проще. Берёшь guidelines (от Саттера и Страуструпа, которые точно знают, что такое правильный плюсовый код) и молотишь по ним. Для желающих - там же объяснено "почему так".  Всё.

Ну, или на первый запрос "C++ what to read" получаешь совершенно осмысленный список саттеровских и подобных книг.

Кстати, стандартный (и почти всегда правильный) ответ на вопрос насчёт инлайнов будет "не морочь голову, оно тебе не надо".

А мозги свернуть - потому что вся borrow-концепция уникальна для раста и контринтуитивна, да ещё и вусмерть перепутана всё с тем же различием "ссылка/значение". Начиная с первого примера из учебника про строку - как только ты понимаешь, что можно скопировать строку, а взять ссылку/указатель все примеры резко начинают выглядеть бредовыми с плюсовой точки зрения. Так что я сильно сомневаюсь, что взятые из раста привычки приведут к чему-то осмысленному в плюсах.

Ответить | Правка | К родителю #94 | Наверх | Cообщить модератору

118. "В ядре Linux выявлена ошибка, приводящая к нарушению работы ..."  +/
Сообщение от Orduemail (ok), 28-Ноя-19, 10:45 
> Начиная с первого примера из учебника про строку - как
> только ты понимаешь, что можно скопировать строку, а взять ссылку/указатель все
> примеры резко начинают выглядеть бредовыми с плюсовой точки зрения.

Это первые примеры из учебника. Их задача не столько передать строку наилучшим образом в данном случае, их задача продемонстрировать разные способы это сделать. Их задача показать разницу между передачей по ссылке и по значению. И это нужная штука в случае rust'а, даже если читатель уже знает про эту разницу, потому что в rust'е передача по значению, по-дефолту, move передача, она оставляет переменную из которой берётся значение неинициализированной. В расте передача по значению чуть другая, чем в большинстве других языков, поэтому нет ничего бредового в том, чтобы эту разницу показать в одном из первых примеров.

Чтобы понять зачем нужны эти все разные способы -- move, copy, по-ссылке -- надо почитать чуть дальше первых примеров. Кстати в C++ тоже есть все эти три способа, просто в C++ дефолты другие.

Ответить | Правка | Наверх | Cообщить модератору

114. "В ядре Linux выявлена ошибка, приводящая к нарушению работы ..."  +2 +/
Сообщение от Урри (?), 28-Ноя-19, 02:51 
Бро, прими мое искреннюю поддержку; ты не зря такую простыню наваял.

Я более 20 лет плюсовик, я был плюсовиком еще тогда, когда это не было модным и когда большинство отечественных программеров о нем не слышали. Я прочитал (и понял) александреску от корки до корки.
Но сейчас я в основном сишник и лиспер. Ибо в гробу я видел эти плюсы с их полным отсутствием философии языка, но кучей никому не нужных, кроме выеживающейся своим знанием 1000+1 пункта стандарта хипстоты, плюшек. Лучший код в продакшене - это либо базовый с++, либо (если структура проекта не сильно сложная) с.

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

Ответить | Правка | К родителю #94 | Наверх | Cообщить модератору

57. "В ядре Linux выявлена ошибка, приводящая к нарушению работы ..."  +/
Сообщение от Аноним (57), 27-Ноя-19, 13:07 
>"благодаря раст я понял насколько красив c++" (c)

наоборот

Ответить | Правка | К родителю #35 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру