The OpenNET Project / Index page

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



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

Оглавление

Фреймворк для написания защищённых драйверов для ядра Linux ..., opennews (?), 01-Сен-19, (0) [смотреть все]

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


123. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  –5 +/
Сообщение от Аноним (11), 01-Сен-19, 16:59 
Забавно, что есть искренние защитники языка, в котором нельзя банально стринги сложить без прямого использования функции 💩
Да, толковой альтернативы C не было в 90-ые. Но, люди, на дворе почти 2020-ые.
Ответить | Правка | Наверх | Cообщить модератору

125. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  +4 +/
Сообщение от Адекват (ok), 01-Сен-19, 17:22 
> Забавно, что есть искренние защитники языка, в котором нельзя банально стринги сложить
> без прямого использования функции 💩
> Да, толковой альтернативы C не было в 90-ые. Но, люди, на дворе
> почти 2020-ые.

Я си изучаю месяц и уже пришел к выводу, что это не баг а фича. В СИ - все есть ячейка памяти. Если чего-то нет - можно написать свою функцию. Да поначалу дико, что нет explode как в php, но потом выясняется, что все-таки есть (не помню название), а потом - что оно не нужно, ведь можно функцию самому написать. Кстати что значит сложить стринги ? Я вот их не ношу, по этому не в теме.
По сабжу - если "стринг" это строка, то в си это массив, со своими элементами и как нужно сложить два массива - если элементы типа int, то что нужно - сложить a[0]+b[0].....a[n]+b[n] или дописать один массив в конец другого ?

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

126. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  +/
Сообщение от Аноним (126), 01-Сен-19, 18:00 
>Я си изучаю месяц

щас иксперд нам всё расскажет... и как стринги он не носит

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

127. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  +/
Сообщение от Аноним (11), 01-Сен-19, 18:34 
В C++ строки ВНЕЗАПНО тоже всего лишь массив чаров, но там средства языка позволяют адекватно реализовать std::string, чего нет и никогда не будет в C:
std::string str1 = "one", str2 = "two";
std::string str3 = str1 + str2; // "onetwo"
Добро пожаловать в мир нормальных языков!

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

> Если чего-то нет - можно написать свою функцию.

Круто! Давай писать всё с нуля, к черту многолетние либы. Да к черту и функции, которые в других языках есть в стандартной либе, ведь можно свою написать! :)

(надеюсь это был троллинг, тогда лайкос за него)

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

128. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  +2 +/
Сообщение от Dmitry (??), 01-Сен-19, 19:08 
Мне больше нравятся паскалевские строки, когда нулевой элемент строки и есть сама длина строки.
С ними гораздо проще выполнять любые действия. Не нужно перебирать по одному байту, в поиске "\0"
Никаких выходов за пределы строки и утечек памяти.
Единственное неудобство - ограничение такой строки в 255 символов.
Но с другой стороны. Загляните в код любого драйвера. Где вы там видели строки больше 100-200 символов ?
Ответить | Правка | Наверх | Cообщить модератору

129. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  +/
Сообщение от Аноним (126), 01-Сен-19, 19:12 
в плюсах, как бы, объект string также содержит длину строки и ничего не перебирается, и ноль в конце есть для совместимости с системными функциями.
Ответить | Правка | Наверх | Cообщить модератору

241. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  +/
Сообщение от Anonimous (?), 03-Сен-19, 14:38 
В современном Паскале особых ограничений нет (до High(SizeInt)).
Ответить | Правка | К родителю #128 | Наверх | Cообщить модератору

166. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  +1 +/
Сообщение от pripolz (?), 02-Сен-19, 08:50 
По поводу сложения std::string - это не рекомендованных практика, т.к. несет в себе потерю производительности во столько раз, сколько раз там "+".

"А + Б + Ц" несет в себе 3 разных сложения с выделением памяти и т.д.

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

172. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  +/
Сообщение от Совершенно другой аноним (?), 02-Сен-19, 10:12 
Вы не правы. В C++ строки это отдельный тип (реализованный через объект, который внутри может быть хранить строки по форме, похожей на паскалевские строки с хранением длины строки отдельно и строки - отдельно). В C, на самом деле, отдельного строкового типа - нет, есть массив, и есть частный, договорной случай ASCIIZ строк - типа, а давайте, то, что ограничивается 0 и будем считать строкой. Со всеми вытекающими последствиями. В C Вам никто не мешает реализовать свой вариант строк, удобный именно Вам, ну или использовать какую-нибудь библиотеку, в которой это уже реализовано до Вас и для Вас.
Ответить | Правка | К родителю #127 | Наверх | Cообщить модератору

181. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  +1 +/
Сообщение от Аноним (99), 02-Сен-19, 11:09 
> В C++ строки ВНЕЗАПНО тоже всего лишь массив чаров, но там средства
> языка позволяют адекватно реализовать std::string, чего нет и никогда не будет
> в C:
> std::string str1 = "one", str2 = "two";
> std::string str3 = str1 + str2; // "onetwo"
> Добро пожаловать в мир нормальных языков!

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

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

184. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  +/
Сообщение от Ordu (ok), 02-Сен-19, 11:23 
> std::string str1 = "one", str2 = "two";
> std::string str3 = str1 + str2; // "onetwo"
> Добро пожаловать в мир нормальных языков!

Но так же никто не делает на практике. Выделять память под третью строку, чтобы просуммировать две предыдущие? Как правило есть предвыделенный буфер, который перевыделяется. Часто этим предвыделенным буфером является первая из суммируемых строк. Если нет, то это часто форматный вывод в динамически выделяемый буфер. Что в C++, что в rust'е.

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

150. "Фреймворк для написания защищённых драйверов для ядра Linux ..."  +2 +/
Сообщение от vitalif (ok), 02-Сен-19, 01:59 
Блин ну сложение строк это конечно просто самая нужная функция в ядре - куда уж без неё
Ответить | Правка | К родителю #123 | Наверх | Cообщить модератору

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

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




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

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