|
|
| Master of Puppets |
| Posted: Mar 8 2010, 00:23 |
 |
|

Eye of the Vision
        Group: Moderator
Member No.: 2067
Joined: August 29, 2006

|
Привет!
В общем тут такое дело, программа пишется на языке C и возникла необходимость использовать некоторые классические структуры данных (очередь, например). Я начал было писать ее ручками, но как-то заело ощущение, что трачу драгоценное время на изобретение колеса, вместо того чтоб решать основную задачу. Нет ли какой-нибудь более-менее общепринятой библиотеки наподобие STL, но для C? Заранее спасибо.
-------------------- Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams! ⠠⠵ |
 |
| 1nsidE |
| Posted: Mar 8 2010, 18:54 |
 |
|
Word Thrower
  Group: Member
Member No.: 3409
Joined: June 30, 2009

|
более менее общепринятая это Стандартная библиотека C Специальных библиотек для работы со структурами данных для си как-то не видел...да и както непонятно что они должно делать?какбы свои типы создавать нельзя,структуры определить не сложно,а функ -и писать для работы со структурами,какбы эээ....не будет универсально чтоле. |
 |
| Master of Puppets |
| Posted: Mar 8 2010, 22:32 |
 |
|

Eye of the Vision
        Group: Moderator
Member No.: 2067
Joined: August 29, 2006

|
| QUOTE (In the immortal words of 1nsidE, since Mar 8 2010, 18:54...) | более менее общепринятая это Стандартная библиотека C Специальных библиотек для работы со структурами данных для си как-то не видел...да и както непонятно что они должно делать?какбы свои типы создавать нельзя,структуры определить не сложно,а функ -и писать для работы со структурами,какбы эээ....не будет универсально чтоле. |
1. Делать они должны то же самое, что и остальные подобные библиотеки - предоставлять набор стандартных структур данных, в которых пользователь мог бы хранить что пожелает. И создать подобный generic-контейнер средствами C в принципе не так сложно - можно определить его с помощью препроцессора (как здесь, например) либо просто держать void-указатель на хранимые данные. 2. Кто сказал, что свои типы создавать нельзя? Когда пишешь struct - ты не создаешь тип? 3. Для работы со своими элементами контейнеры могут использовать указатели на пользовательские функции, так что с универсальностью проблем не возникнет
-------------------- Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams! ⠠⠵ |
 |
| 1nsidE |
| Posted: Mar 8 2010, 22:43 |
 |
|
Word Thrower
  Group: Member
Member No.: 3409
Joined: June 30, 2009

|
| QUOTE | | Делать они должны то же самое, что и остальные подобные библиотеки - предоставлять набор стандартных структур данных, в которых пользователь мог бы хранить что пожелает. |
да это и так понятно....
| QUOTE | | можно определить его с помощью препроцессора (как здесь, например) |
омг
| QUOTE | | 2. Кто сказал, что свои типы создавать нельзя? Когда пишешь struct - ты не создаешь тип? |
я думал ты поймешь что я имел ввиду классы( обьекты ).
| QUOTE | | 3. Для работы со своими элементами контейнеры могут использовать указатели на пользовательские функции, так что с универсальностью проблем не возникнет |
из ряда, не мытьем так катанием,или по другому каллбэк функ -и это решение через жопу,и юзают его потому что в си( не тока в си ) лучше не сделаешь( не надо утрировать ) |
 |
| Master of Puppets |
| Posted: Mar 8 2010, 23:00 |
 |
|

Eye of the Vision
        Group: Moderator
Member No.: 2067
Joined: August 29, 2006

|
| QUOTE (In the immortal words of 1nsidE, since Mar 8 2010, 22:43) | я думал ты поймешь что я имел ввиду классы( обьекты ).
из ряда, не мытьем так катанием,или по другому каллбэк функ -и это решение через жопу,и юзают его потому что в си( не тока в си ) лучше не сделаешь( не надо утрировать ) | Ну тогда надо быть аккуратнее с терминологией ) Но опять же, кто сказал, что в Си нельзя создавать классы? Отсутсвие ключевого слова class еще ничего не означает Отсюда можно узнать много нового.
И наконец, почему это использование колбэков - "через жопу"? Это подход, вполне имеющий право на жизнь, он часто используется в проектировании софта.
-------------------- Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams! ⠠⠵ |
 |
| 1nsidE |
| Posted: Mar 8 2010, 23:21 |
 |
|
Word Thrower
  Group: Member
Member No.: 3409
Joined: June 30, 2009

|
да знаю я то в си можно создать класс,не вчера родился,тока этот язык функционального программирования,короче там классы будут через жопу )),думаю тебе это и так понятно.
а не говорю каллбек не имеет право жить,и часто юзается,но только не в ооп системах,где это реализовано например через наследование,однако есть задачи где не обойтись без каллбеков( ну или нужно делать вобще через жопу ),первое каллбек это подобие черного ящика,типа ты давай аргументы,плюс ук. на функ -ию,а я ее буду вызывать,а это уже принципы ооп,и когда ооп юзается в функциональном языке,получаетсо,что-то типа,юзать ногу место руки....,второе каллбек нарушает структурированность кода,какбы смахивает чемто на goto,есть еще причны тока с ходу их вспомнить немного сложно. |
 |
| nop |
| Posted: Mar 9 2010, 00:30 |
 |
|

Wise Dreamer
     Group: Elite Member
Member No.: 3143
Joined: July 2, 2008

|
процедурного  А вообще goto очень хорошая вещь...
Насчет библиотеки, впервые слышу, надо покопать. Интересно почему прога пишется именно на С?
-------------------- - Но это же противоречит здравому смыслу - А что такое здравый смысл? - спросил Путешественник во Времени. |
 |
| Master of Puppets |
| Posted: Mar 9 2010, 00:36 |
 |
|

Eye of the Vision
        Group: Moderator
Member No.: 2067
Joined: August 29, 2006

|
| QUOTE (In the immortal words of nop, since Mar 9 2010, 00:30) | процедурного  А вообще goto очень хорошая вещь...
Насчет библиотеки, впервые слышу, надо покопать. Интересно почему прога пишется именно на С? | Для тренировки - хочу научиться писать на C, мало ли что, может пригодиться.
-------------------- Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams! ⠠⠵ |
 |
| 1nsidE |
| Posted: Mar 9 2010, 01:27 |
 |
|
Word Thrower
  Group: Member
Member No.: 3409
Joined: June 30, 2009

|
| QUOTE | | да знаю я то в си можно создать класс | может показаться что я противоречу самому себе,однако я иммел ввиду ооп кодинг в си,который я не отрицал 
единственая задача в которой goto реально нужен,так это выход из вложенных циклов,про другие я не знаю. |
 |
| knightmare |
| Posted: Mar 9 2010, 02:03 |
 |
|

Wise Dreamer
     Group: Elite Member
Member No.: 1572
Joined: October 31, 2005

|
| QUOTE (In the immortal words of Master of Puppets, since Mar 9 2010, 00:36) | | Для тренировки - хочу научиться писать на C, мало ли что, может пригодиться. | ну так и пиши, реализовывай эти структуры данных и алгоритмы
-------------------- армия - эта крута, армейский спецназ - эта ваще крута
Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio |
 |
| AvDav |
| Posted: Mar 9 2010, 04:49 |
 |
|
Incomer
 Group: Member
Member No.: 1824
Joined: May 14, 2006

|
Первый результат поиска в гугле, меня привел сюда http://home.gna.org/gdsl/, весьма многообещающая библиотека. Хотя если цель - набрать С-стайл икспиреинс, то лучше писать самому, первые блины возможно выйдут комом. |
 |
| nop |
| Posted: Mar 9 2010, 14:06 |
 |
|

Wise Dreamer
     Group: Elite Member
Member No.: 3143
Joined: July 2, 2008

|
| QUOTE | | единственая задача в которой goto реально нужен,так это выход из вложенных циклов,про другие я не знаю. |
Так я об этом и говорю Очень эффективный метод, а на "красоту" кода нах не влияет! (для меня даже красивее)
| QUOTE | | Для тренировки - хочу научиться писать на C, мало ли что, может пригодиться. |
| QUOTE | | ну так и пиши, реализовывай эти структуры данных и алгоритмы smile.gif |
-------------------- - Но это же противоречит здравому смыслу - А что такое здравый смысл? - спросил Путешественник во Времени. |
 |
| Master of Puppets |
| Posted: Mar 9 2010, 14:36 |
 |
|

Eye of the Vision
        Group: Moderator
Member No.: 2067
Joined: August 29, 2006

|
| QUOTE (In the immortal words of nop, since Mar 9 2010, 14:06) | Так я об этом и говорю Очень эффективный метод, а на "красоту" кода нах не влияет! (для меня даже красивее) | Если вложенные циклы достигли такого уровня вложенности, что для выхода из них нужен goto, то по программе плачет рефакторинг 
| QUOTE | If you need more than 3 levels of indentation, you're screwed anyway, and should fix your program
|
-------------------- Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams! ⠠⠵ |
 |
| Master of Puppets |
| Posted: Mar 9 2010, 14:37 |
 |
|

Eye of the Vision
        Group: Moderator
Member No.: 2067
Joined: August 29, 2006

|
| QUOTE (In the immortal words of AvDav, since Mar 9 2010, 04:49) | | Первый результат поиска в гугле, меня привел сюда http://home.gna.org/gdsl/, весьма многообещающая библиотека. Хотя если цель - набрать С-стайл икспиреинс, то лучше писать самому, первые блины возможно выйдут комом. | Спасибо за ссылку! Посмотрел их исходники, почерпнул полезную информацию.
-------------------- Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams! ⠠⠵ |
 |
| nop |
| Posted: Mar 9 2010, 17:04 |
 |
|

Wise Dreamer
     Group: Elite Member
Member No.: 3143
Joined: July 2, 2008

|
| QUOTE (In the immortal words of Master of Puppets, since Mar 9 2010, 15:36...) | Если вложенные циклы достигли такого уровня вложенности, что для выхода из них нужен goto, то по программе плачет рефакторинг 
|
Не обьязательно, чтоб уровень был больше...Но учитывая способности оптимизации кода сегодняшних копмиляторов, можно сказать что Goto не нужен. Хотя сам я очень люблю ее 
| QUOTE | If you need more than 3 levels of indentation, you're screwed anyway, and should fix your program
|
Ага, если не используется например 4х мерный массив...
-------------------- - Но это же противоречит здравому смыслу - А что такое здравый смысл? - спросил Путешественник во Времени. |
 |
|