LINUX.ORG.RU

Односвязные списки в Си

 ,


2

7

Всем привет) Давеча на меня наехал препод по программированию, мол: «почему ты никогда не используешь код который даю я, а все время пишешь свое. Лучше меня ты не напишешь.» В аудитории я промолчал.

Давал он код библиотеки для работы с односвязными списками. Я его полистал и понял что это говно.

Вот оно -> https://github.com/maksspace/unn/tree/master/prepod

Моя критика:

  1. Большинство функции не нужны ибо поля структур открыты
  2. Бессмысленное зануление указателя и проверка на ноль почти в каждой функции
  3. Поле данных в нодах списка, это не void*, а просто структура, по этому придется каждый раз исправлять библиотеку чтобы работать в другими типами данных
  4. Нет возможности использовать кастомный аллокатор памяти

Вот мой вариант: https://github.com/maksspace/slistlib

Дайте критику по обоим вариантам)



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

Ответ на: комментарий от znenyegvkby

Off-topic

http://bookre.org/reader?file=1334378&pg=27

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

А потом еще разок в книге, для полного закрепления материала...

znenyegvkby
()
Ответ на: комментарий от maksspaces

просто преподавание на уровне плинтуса, по некоторым предметам

maksspaces
() автор топика
Ответ на: комментарий от qulinxao

так и думал. в итоге, такой список потребует больше операций, в С (не С++) потребует сложной поддержки со стороны программиста, а из преимуществ — всего лишь экономия на спичках дешёвой памяти. лет 15 назад, когда плашка оперативы на 512МБ считалось большой, было, м.б., актуально, сейчас - один вред от такой оптимизации.

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

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

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

В C, насколько я помню, выбор небольшой. Если не брать совсем крайние случаи с вызовом abort-а при нехватке памяти, то имеем либо

slist* slist_new()
с возвратом NULL и выставлением errno (хотя errno, вероятно, будет выставлен в результате неудачного malloc-а), либо:
int slist_new(slist **result)
с возвратом -1 и выставлением errno в случае ошибки.

В этом плане у ТС с slist_new все было нормально. Гораздо более вменяемо, чем у его преподавателя.

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

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

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

зы тсу:https://psoberoi.github.io/stepanov-civilization/canon.html#programming

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

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

Какие нахрен ещё «особено кэшмисы» у тебя профессия мисс.

стоит всёж интенсивней профессией заниматься

Естественно, эксперт который делал квадратные массивы на m[j] через малокопомойку, при этом обделавшись всяко занимается профессией.

зы тсу:https://psoberoi.github.io/stepanov-civilization/canon.html#programming

Этим дерьмом ты можешь только подтереться.

anonymous
()
Ответ на: комментарий от forCe

Вообщем, это просто помойная смесь из new/delete и си кода. компилится все в visual studio c++ 2010 express

maksspaces
() автор топика
Ответ на: комментарий от next_time

что такое «сложная поддержка со стороны программиста»? если так рассуждать, то зачем напрягать мозг? можно сразу писать на пистоне или жабе. ресурсов не жалко, так какая баня, как там всё реализовано? свободу быдлокодерам! только потом говнокод сжирает гигабайты и гигагерцы и все удивляются, почему всё так тормозит.

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

мозг, некривые руки, тестирование. остальное - сопливое нытьё неосиляторов о том, как нелегка жизнь. для неосиляторов создали кучу песочниц на любой вкус и цвет. там за ними ГЦ гомнецо прибирает и виртуальная машина не даёт им обосраться так, чтобы система упала. а в С подразумевается, что человек понимает, что он делает.

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

мозг, некривые руки, тестирование.

с чем из этого не так у разработчков OpenSSL? с чем из этого не так у разработчиков Линукс? на ЛОРе в новостях половина багов — про сишный (не плюсовый) код.

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

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

с чем из этого не так у разработчков OpenSSL?

Ну вернее только то, что этих «разработчиков» нашли на помойке. Там ошибка в логике - в жабке была бы так же ошибка, только без дыры. Но без дыры она могла быть в и сишке, просто об этом не позаботились, а на жабке это никто писать не будет, ибо это просто не работало бы.

с чем из этого не так у разработчиков Линукс?

И что же там не так?

на ЛОРе в новостях половина багов — про сишный (не плюсовый) ко

Все основные подсистемы на сишке, естественно пастят баги про сишку. Что написано на жабке? Помойка в говноконторах о которых никто ничего не знает и в паблик это не торчит? С логикой уровня помойки?

У нас есть операционки на крестах? Нету. У нас есть cppssl? Нету. В чём смысл твоего высера?

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

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

так-то да

при этом имеет минимальное кол-во багов, при максимальной сложности и минимальном контроле, проверке и прочем.

пруф?

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

вероятно. но для десктопа — нет. и это печально.

Маловероятно.

есть https://en.wikipedia.org/wiki/Botan_(programming_library)

Ну ничего не мешает тебе её юзать и проблем не знать.

https://github.com/etcimon/botan/issues/7 - ну как бы могут пацаны. Иного я и не ожидал.

Так что cppssl нет - есть убогая пародия от школьников, но она никому не нужна, если она работает как говно.

https://en.wikipedia.org/wiki/Java_Secure_Socket_Extension

Я говорю не про ssl, а вообще - на жабке ничего не написано, кроме «интерпрайза» деревенского, которого никто не видел, а жабисты даже боятся о нём заговорить, ибо это дерьмо дерьма.

Когда вы уже научитесь отличать api от либы. Никаких признаков существования реализации JSSE я не обнаружил. Где пруфец, что это не билтин-биндинг на уровне жвм? А скорее всего, на 99% это так.

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

пруф?

Пруф чего? У меня нет статистики по всякой дырявой прикладухе, ибо она падает каждые 5минут и её никто не ведёт. Да и нет альтернативы, с которой можно сравнить. Любая гуйня, шланг, браузёрка, игрулька и что там ещё пишут на крестах - падает регулярно. Хотя не должна, но падает. Больше ничего на крестах не пишут.

Тем более вон ты выкатили cppssl - я то же могу впиндюрить в сишку bounds checking, ексепшены и прочую херню, кукарекая, что у меня есть альтернатива openssl -насрать, что работает она в 50раз медленнее. Хотя естественно я могу впендюрить это и с производительностью openssl, но в openssl это не осилят.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.