|
|
|
Железный канал: «C, С++» |
|
|
Diff 708 EGP
Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003 |
|
Не обязательно. Например, я сейчас работаю в чисто сишном проекте.
_________________ Конец света в конце тоннеля |
|
|
БулерМэн 420 EGP
Рейтинг канала: 4(58) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
Не знаком с данной аббревиатурой, если не затруднит - расшифруйте.
|
|
|
Diff 708 EGP
Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003 |
|
Standart Template Library, основная библиотека языка C++. Все что начинается с std:: - это оно.
добавлено спустя 1 минуту:
http://ru.cppreference.com/w/cpp/container
_________________ Конец света в конце тоннеля
Последний раз редактировалось: Diff (20:31 18-09-2015), всего редактировалось 1 раз |
|
|
Grebomet 1460 EGP
Рейтинг канала: 8(753) Репутация: 261 Сообщения: 4765 Откуда: Питербурх Зарегистрирован: 06.01.2003 |
|
Булермэн, а давай чуть с другого конца зайдем: каковы твои цели и задачи?
Ты хочешь програмать научиться, чтобы, так сказать, сменить нишу и стать высокооплачиваемым офисным кодилом программистом?
Или тебе приходится халтурку делать по приказу начальства, хотя ты не программист?
Просто какие-то странные у тебя вопросы. Если ты самообразовываешься, то язык Си - не лучший выбор для обучения программированию под виндовс. Он сейчас разве что для програмания микроконтроллеров и ардуинок хорош.
А если у тебя халтурка, то опять же, какие-то странные условия: голый си и абстрактные какие-то задачи (которые решаются одной строчкой на языках более высокого уровня).
Исповедайся нам, облегчи душу.
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
Diff 708 EGP
Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003 |
|
Grebomet : |
язык Си - не лучший выбор для обучения программированию под виндовс. Он сейчас разве что для програмания микроконтроллеров и ардуинок хорош.
|
Есть еще область в которой ему замену не придумали. Ядро этого вашего линупса и все что рядом с ним находится. У меня вот сейчас в репе 25 метров исходников на нем самом и это не ардуинки .
Впрочем, вряд ли тут такой случай.
добавлено спустя 2 минуты:
Но вообще Гребомет прав - если ты "изучал C++" и при этом не знаешь что такое STL, ты что-то делаешь драматически неправильно.
_________________ Конец света в конце тоннеля
Последний раз редактировалось: Diff (20:59 18-09-2015), всего редактировалось 1 раз |
|
|
Grebomet 1460 EGP
Рейтинг канала: 8(753) Репутация: 261 Сообщения: 4765 Откуда: Питербурх Зарегистрирован: 06.01.2003 |
|
Diff : |
Ядро этого вашего линупса и все что рядом с ним находится.
|
Судя по, тут никаких линупсов нет и в помине.
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
БулерМэн 420 EGP
Рейтинг канала: 4(58) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
Grebomet : |
Он сейчас разве что для програмания микроконтроллеров и ардуинок хорош.
|
Судя по данному посту - тут есть линупсы. В частности RaspbianOS.
Diff : |
ты "изучал C++" и при этом не знаешь что такое STL
|
Я не изучал С++ и не стесняюсь этого
|
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Grebomet : |
язык Си - не лучший выбор для обучения программированию под виндовс.
|
НЕ все так просто.
Языки тоже, как и оси заточены под определенные задачи, но взаимозаменяемы.
Я для себя уже давно определил такую ленейку симейства Ц:
Си - сервера и фоновые приложения или демоны, где важна скорость работы и размер бинарника.
Кресты - для приложений, работающих с графикой, где используются сложные расчеты, но также важна скорость. При этом сам STL стараюсь не использовать там, где без него действительно можно обойтись (да, дело в голове видимо ).
Решетка - для прочих поделок на коленке.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (23:28 18-09-2015), всего редактировалось 1 раз |
|
|
Diff 708 EGP
Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003 |
|
БулерМэн : |
Судя по данному посту - тут есть линупсы. В частности RaspbianOS.
|
Разработка модулей ядра и "тут где-то есть линупсы" - это не совсем одно и то же.
БулерМэн : |
Я не изучал С++ и не стесняюсь этого
|
Ты тут недавно рисовал диаграмму того, как ты изучал языки. С++ там был.
Да, я злой и память у меня хорошая.
ТехноМаг : |
ри этом сам STL стараюсь не использовать там, где без него действительно можно обойтись
|
В результате тот код, который ты привел выше и в котором, по твоему мнению, есть всего одна неприятная бага - в мультитреде превращается в сыплющий коредампами кусок говна.
А STL-реализация - сюрприз - потокобезопасна. И это не последний сюрприз для любителя велосипедов.
_________________ Конец света в конце тоннеля |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Diff : |
коредампами кусок говна.
|
это Си, причем gcc style.
Плюс там важно оттого, как ты список создал. Если компилить под крестами, то оглашать новую ноду можно исключительно через malloc, иначе будет коредампы на free. И да, это однопоточная мутня С другой стороны, в тз не указано, что нужна мультипоточность.
Был задан конкретный вопрос - был дан конретны ответ. Все остальное от лукавого.
добавлено спустя 3 минуты:
Diff : |
В результате тот код
|
Сказал-же, где без него ДЕЙСТВИТЕЛЬНО можно обойтись.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (00:41 19-09-2015), всего редактировалось 3 раз(а) |
|
|
БулерМэн 420 EGP
Рейтинг канала: 4(58) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
Diff : |
Ты тут недавно рисовал диаграмму того, как ты изучал языки. С++ там был.
Да, я злой и память у меня хорошая.
|
Вы видимо упустили тот момент, когда я упомянул "с остальными языками можно ознакомиться для общего развития"
С языком С++ скорее ознакомился, нежели изучал.
Что-то я сомневаюсь, что вам хочется в подробностях знать на сколько хорошо я изучал каждый из приведенных на схеме
Cкрытый текст (кликните здесь для просмотра)
Нежнее нужно относиться к собеседнику, еще нежнее
|
Diff : |
Разработка модулей ядра
|
Я разве говорил про модули ядра? Не поверите, модулями не балуюсь
Последний раз редактировалось: БулерМэн (01:11 19-09-2015), всего редактировалось 3 раз(а) |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
БулерМэн : |
модулями не балуюсь
|
А что употребляете, если не секрет?
- Драйверы?
- миниобразы?
- библиоткеи?
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей." |
|
|
Diff 708 EGP
Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003 |
|
ТехноМаг : |
Был задан конкретный вопрос - был дан конретны ответ. Все остальное от лукавого.
|
Конкретный вопрос был - где взять надежный работающий код. А не велосипед с ограниченной областью применения.
ТехноМаг : |
Сказал-же, где без него ДЕЙСТВИТЕЛЬНО можно обойтись.
|
А меня такая постановка вопроса вводит в ступор. Зачем сознательно отказываться от возможностей используемого инструмента? Основных его возможностей? Я стираю белье в стиральной машине, но не включаю ее в сеть когда без этого можно обойтись. И кручу барабан руками. А чтобы удобнее было крутить, я в задней части прорезал дырку и приварил кусок арматуры...
Примерно так это выглядит. Я не говорю уже о том, что для каждого конкретного случая можно подобрать стандартный контейнер который будет работать на порядок быстрее твоего двусвязного списка. И даже не спрашиваю, а действительно ли твоя квалификация столь высока, что ты безошибочно можешь сказать где можно обойтись, а где нельзя - не вступив в очередную "неприятную багу".
Не забывай, твой код использовать не только тебе.
БулерМэн : |
Я разве говорил про модули ядра? Не поверите, модулями не балуюсь
|
А зачем тогда упомянул линукс в контексте написания непременно на си?
_________________ Конец света в конце тоннеля |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Diff : |
где взять надежный работающий код
|
БулерМэн : |
Может быть у кого-то завалялся пример в виде кода.
|
я надеюсь про ключевые слова тут все в курсе?
Diff : |
Зачем сознательно отказываться от возможностей используемого инструмента?
|
Хмм... давай задам вопрос в виде простой задачи.
У тебя есть: молоток, пневматический молоток, дрель и, допустим, фомка. Твоя задача забить гвоздь, диаметром 0.5 мм. Какой инструмент ты выберешь?
Лучше конечно взять пневмат, ибо там направляющие есть, которые не позволят забить гвоздь криво, но для его работы придется подтаскивать компрессор, давать компрессору питание и прочее.
С другой стороны есть обычный молоток, который будет работать ровно так, как ты умеешь им пользоваться, но для работы которого требуется только он сам и гвоздь.
Теперь к нашему диалогу: STL очень хороший инструмент, я не оспариваю, и полностью поддерживаю его использование, но не надо им пользоваться везде. Если в поставленной задачи нет 100500 однотипных классов, если программа должна делать небольшое и заранее известное кол-во операций, не надо его использовать.
Diff : |
не вступив в очередную "неприятную багу".
|
STL от этого не защищает. Если алгоритм итоговой программы думался/писался передней левой пяткой, то хорошего из-этого все равно не выйдет.
И давай уже закроем эту тему. Она не к месту, ибо было сказано, что таки "старый добрый", где STL`а нету в принципе.
И немного примеров, дабы не казаться голословным:
На примере того-же списка с хранением информации о длине списка:
Код: |
size_type size() const
{
return _size;
}
|
STL
Код: |
/** Returns the number of elements in the %list. */
size_type
size() const
{ return std::distance(begin(), end()); }
|
Т.е. вместо сложности O(1) мы получаем O(N). Иногда это бывает критично.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (13:18 19-09-2015), всего редактировалось 1 раз |
|
|
Diff 708 EGP
Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003 |
|
ТехноМаг : |
я надеюсь про ключевые слова тут все в курсе?
|
Да. И про твое умение выдирать из контекста теперь тоже.
ТехноМаг : |
давай задам вопрос в виде простой задачи.
|
Задай лучше в виде задачи из предметной области. Без молотков, микроскопов, запорожцев, мерседесов и прочих атрибутов прикладной демагогии.
ТехноМаг : |
если программа должна делать небольшое и заранее известное кол-во операций, не надо его использовать.
|
Да еп твою мать. ПОЧЕМУ не надо? ЧЕМ именно хуже использовать list, map или vector вместо бажного рукописного списка?
ТехноМаг : |
STL от этого не защищает. Если алгоритм итоговой программы думался/писался передней левой пяткой
|
Не съезжай. Речь про базовые типы. От багов в реализации которых она защщищает.
ТехноМаг : |
ибо было сказано, что таки "старый добрый"
|
Не было такого сказано. Автор похоже сам не знает, на чем пишет.
И да, пример готовой реализации тех же списков на си я привел. Потокобезопасной и без неприятных багов.
добавлено спустя 1 минуту:
ТехноМаг : |
вместо сложности O(1) мы получаем O(N).
|
Diff : |
для каждого конкретного случая можно подобрать стандартный контейнер который будет работать на порядок быстрее твоего двусвязного списка
|
Можно подобрать и такой, который будет работать медленнее. Но зачем?
_________________ Конец света в конце тоннеля
Последний раз редактировалось: Diff (13:35 19-09-2015), всего редактировалось 1 раз |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Diff : |
Да. И про твое умение выдирать из контекста теперь тоже.
|
где?
Вот давай без этого.
Сойдемся на том, что в STL есть свои минусы. И замнем, иначе это затянется.
Используешь STL повсеместно? Пожалуйста, никто тебе слова не скажет. Но не надо мне доказывать, что STL панацея. Это ни так. Есть задачи, где это годно и хорошо, а есть задачи, где лучше понаписать строк на 10 больше, да подебажить минут на 10 дольше, но в результате получить выигрыш как в размере бинарника, так и затрат на вычисления CPU. Мое мнение, которое я не собираюсь менять я уже озвучил несколько постов выше. Для каждой конкретной задачи нужно выбирать конкретные инструменты, исходя из постановки задачи и того, что в итоге должно получится.
Теперь по моему "велосипеду".
Товарищ БулерМен задал вопрос:
БулерМэн : |
Где найти готовый код выполняющий следующие операции?
в) удаление элемента списка по его адресу
г) удаление элемента списка по указанным данным
д) вернуть адрес элемента совпадающего по указанным данным
Написать самому - можете предложить
добавлено спустя 3 минуты:
Может быть у кого-то завалялся пример в виде кода.
|
Первый вопрос, как ты и сказал - просил готовый, рабочий код. Тут я согласен.
Но чуть подумав, он попросил уже пример кода.
Я в свою очередь, сделав заключение, что человек активно изучает сабжевый язык, родил ему простой пример, вложив элементарную багу с выборкой последнего элемента списка. В чем я был не прав?
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей." |
|
|
AnrDaemon 860 EGP
Рейтинг канала: 8(787) Репутация: 37 Сообщения: 12301
Зарегистрирован: 17.10.2004 |
|
Маг, если тебе надо постоянно иметь размер списка, ты напишешь враппер, который будет его считать при добавлении-удалении, получив сложность O(1) обратно.
_________________ Люблю свободный полёт... :) |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Угу, при этом обойдусь без вызова той функции, заменив банальным size++ size--
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей." |
|
|
Dima_Sharihin 70 EGP
Репутация: 5 Сообщения: 155
Зарегистрирован: 19.12.2011 |
|
ТехноМаг : |
Т.е. вместо сложности O(1) мы получаем O(N). Иногда это бывает критично.
|
GCC 5 хранит размер вектора отдельно. Теперь и STL std::vector<T>::size выполняется за O(1)
А вообще если сильно хочется убежать от STL, то как рай для диссидентов есть Qt, который есть "фреймворк в себе", и реализует почти все сам
|
|
|
БулерМэн 420 EGP
Рейтинг канала: 4(58) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
ТехноМаг : |
заменив банальным size++ size--
|
Я тебя понял, спасибо. Да, кстати использую C99, дабы исключить сомнения читателей
|
|
|
|
|
|
Железный канал: «C, С++» |
|