Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
egorychWhite Owlесли тебе так уж хочется жить с одной функцией, ну перейди в объектную модель. Не пользуйся POD переменными.на С? можно примерчик? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. На самом деле это очень удобно использовать и очень несложно надстраивать. Из известных библиотек на этом принципе основаны Photon и IUP. Первое насквозь коммерческое (но писать под него сплошное удовольствие) а второе тут: http://iup.sourceforge.net/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 19:20 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
White OwlНа самом деле это очень удобно использовать и очень несложно надстраивать. Из известных библиотек на этом принципе основаны Photon и IUP. Первое насквозь коммерческое (но писать под него сплошное удовольствие) а второе тут: http://iup.sourceforge.net/ Ну бдсм тоже для кого-то сплошное удовольствие )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 19:30 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlНа самом деле это очень удобно использовать и очень несложно надстраивать. Из известных библиотек на этом принципе основаны Photon и IUP. Первое насквозь коммерческое (но писать под него сплошное удовольствие) а второе тут: http://iup.sourceforge.net/ Ну бдсм тоже для кого-то сплошное удовольствие ))Да, да... мы уже знаем что ты не умеешь писать на Си. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 19:58 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
White OwlДа, да... мы уже знаем что ты не умеешь писать на Си. Че это вдруг не умею? Умею. И даже пишу, когда нет возможности использовать С++ (на данный момент это только драйвера). Просто не вижу смысла писать на С с момента появления в С++ некоторого набора фич, которые позволяют писать код принципиально качественнее и быстрее. А конкретнее - смарт-указатели и исключения. То, что в С в принципе невозможно реализовать и то, что сокращает и упрощает код в десятки раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 20:19 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
White OwlНа самом деле это очень удобно использовать и очень несложно надстраивать.ты серьёзно? то есть, вместо Код: plaintext 1. 2. ты предлагаешь наплодить доп.структур и чудовищный switch? При том, что структуры тоже необходимо как то называть. Трудно не согласиться с Анатолием )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 22:14 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
С мне напоминает бюрократическое государство. Где у государства есть полная инфа про граждан, но оно все равно на каждый чих требует от них всевозможные справки, которые оно же и выдает. У некоторых граждан это создает иллюзию порядка и того что от этих справок что-то зависит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 22:48 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlДа, да... мы уже знаем что ты не умеешь писать на Си. Че это вдруг не умею? Умею. И даже пишу, когда нет возможности использовать С++ (на данный момент это только драйвера). Просто не вижу смысла писать на С с момента появления в С++ некоторого набора фич, которые позволяют писать код принципиально качественнее и быстрее. А конкретнее - смарт-указатели и исключения. То, что в С в принципе невозможно реализовать и то, что сокращает и упрощает код в десятки раз.Ну ты ж меня обвиняешь постоянно в неумении использовать С++... Вот наши неумения - явления одного порядка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 22:52 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
White OwlНу ты ж меня обвиняешь постоянно в неумении использовать С++... Вот наши неумения - явления одного порядка. Отличие в том что мое мнение объективно основано на ваших ответах в темам по С++. А ваше основано на обиде на мое мнение )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 23:06 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
egorychWhite OwlНа самом деле это очень удобно использовать и очень несложно надстраивать.ты серьёзно?Да. Я серьезно. По существу все GUI библиотеки под Си используют один из двух подходов. Либо заводят множество функций на каждый тип объекта (glib, gtk), либо идут по пути создания структур с типом структуры в качестве первого члена и switch по ним (iup, photon). Попробовав оба, лично я предпочитаю второй (структуры и switch). Больше гибкости и намного проще в поддержке. egorychты предлагаешь наплодить доп.структур и чудовищный switch? При том, что структуры тоже необходимо как то называть.Посмотри на С++. Когда ты создаешь библиотеку классов, ты занимаешься тем-же самым. На практике, если мы зададимся целью написать аналогичные библиотеки решающие одну и ту-же задачу (на Си и С++), то количество структур будет точно равняться количеству классов. И switch будет совсем не чудовищный. При наследовании этот switch будет решать всего одно условие: это структура ребенок или нет? Если нет, то напрямую вызывать родительский метод. Да, это будет слегка медленнее чем подход с классами, потому что мы в рантайме будем определять какая именно это структура и какой из перегруженных методов надо вызывать, а с классами эти вопросы решатся еще на этапе компиляции. Зато подход со структурами и switch позволяет добавлять и изменять "классы" прямо во время рантайма. Можно переопределять скины прямо во время работы. Плагины писать - не просто легко, а очень легко. egorychТрудно не согласиться с Анатолием ))С ним легко не согласится. Достаточно просто на практике попробовать все парадигмы и увидеть их сильные и слабые стороны. А у Анатолия, к сожалению, нету широты взгляда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 23:17 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
White Owlнету широты взгляда Сказал человек который считает что исключения зло )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 23:20 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskymayton, Разница большая. У printf есть неустранимый недостаток - там нужно указывать тип аргумента даже если компилятору он известен и для вывода значения не нужно ничего больше знать. Код: plaintext 1. 2. Я лично никак не могу запомнить какой формат у size_t. Каждый раз гадаю. Хотя по большому счету он там не нужен вообще. Та да. Пока С99 не добавил %z/%t, приходилось дефайнами разруливать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 00:25 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
White Owl, >>Да, я серьёзно сознайся, ты специально делаешь вид, что наследование и перегрузка - это одно и то же, правда? ))) речь ведь шла о перегрузке функций вообще, и о перегрузке операторов, в частности ))) >>Зато подход со структурами и switch позволяет добавлять и изменять "классы" прямо во время рантайма. Можно переопределять скины прямо во время работы ну да, шаблоны "Стратегия" и "Состояние", в плюсах их реализация выглядит красивее, потому что в нём есть встроенные средства для решения подобных вопросов, а в С приходится извращаться, как ты это не называй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 00:47 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
White OwlДостаточно просто на практике попробовать все парадигмы и увидеть их сильные и слабые стороны.достаточно, действительно. Мой опыт мне говорит, что для объектной парадигмы лучше подходят языки, поддерживающие объектную парадигму ))) P.S. А то и Турбо-бэйсик можно языком системного программирования назвать, там ведь был доступ к прерываниям и прямой доступ в память ;-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 00:54 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
egorychWhite Owl, >>Да, я серьёзно сознайся, ты специально делаешь вид, что наследование и перегрузка - это одно и то же, правда? ))) речь ведь шла о перегрузке функций вообще, и о перегрузке операторов, в частности )))Нет, это конечно не одно и то же, но это очень родственные вещи. Любая перегрузка функций это по существу наследование от некоего общего предка, не всегда явно обозначенного. Понимание этого факта позволяет делать перегруженные функции практически в любом языке, а не только в тех которые явно имеют синтаксис перегрузки. А что касается перегруженных операторов... Да, это в Си сделать не получится. egorych>>Зато подход со структурами и switch позволяет добавлять и изменять "классы" прямо во время рантайма. Можно переопределять скины прямо во время работы ну да, шаблоны "Стратегия" и "Состояние", в плюсах их реализация выглядит красивее, потому что в нём есть встроенные средства для решения подобных вопросов, а в С приходится извращаться, как ты это не называй.Расширенный синтаксис многое может сделать "красивее". Но дело то в том, что часто можно решить задачу и на более кратком синтаксисе. Получится не менее надежно и удобно, а красота это дело вкуса :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 01:17 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
White Owl, >>Понимание этого факта позволяет делать перегруженные функции практически в любом языке, а не только в тех которые явно имеют синтаксис перегрузки. примерчик бы... твой пример про наследование не решает главной проблемы: отсутствия однотипных имён, о которых говорил MasterZiv, тебе всё одно придётся явно называть структуры, и вместо одной головной боли ты предлагаешь добавить сразу 7 ))) >>Расширенный синтаксис многое может сделать "красивее". Но дело то в том, что часто можно решить задачу и на более кратком синтаксисе. Получится не менее надежно и удобно, а красота это дело вкуса :) не согласен, не получится "не менее надёжно и удобно". Не в "красоте" ведь дело. Если мне не надо изобретать из раза в раз таблицу виртуальных функций, то я, во первых, не ошибусь в её реализации, и, во вторых, мой код не будет загромождён ненужными рутинными подробностями, которые отлично может написать за меня компилятор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 01:34 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
egorychWhite OwlДостаточно просто на практике попробовать все парадигмы и увидеть их сильные и слабые стороны.достаточно, действительно. Мой опыт мне говорит, что для объектной парадигмы лучше подходят языки, поддерживающие объектную парадигму ))) Неверно. Опыт тебе должен говорить: Использовать объектную парадигму легче на языках поддерживающих объектный синтаксис. А так, объектную парадигму можно применить практически к любому языку. Так же как и любую другую парадигму, к любому языку. В одних случаях это будет легче, в других сложнее, но .... парадигма это парадигма. egorychP.S. А то и Турбо-бэйсик можно языком системного программирования назвать, там ведь был доступ к прерываниям и прямой доступ в память ;-))Это надо понимать что ты не видел системных программ написанных на Quick BASIC (который брат-близнец TB, но от Микрософта)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 01:36 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
White OwlЛюбая перегрузка функций это по существу наследование от некоего общего предка, не всегда явно обозначенного. Понимание этого факта позволяет делать перегруженные функции практически в любом языке, а не только в тех которые явно имеют синтаксис перегрузки. А можно пример? Вот код на С++: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Это перегрузка функции print двумя типами аргумента. Как с помощью понимания того что перегрузка это "наследование от некоего общего предка" сделать такую перегруженную функцию не на любом языке, а хотя бы на С? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 01:49 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
MasterZivSashaMercuryкак вы предлагает сделать аналогичное на Си ? Код: plaintext 1. 2. И таких XXXFromYYYY потом появляется с 10 штук, так что потом ещё приходится добавлять и XXXFromYYYYWithZZZ :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 02:05 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Я плохо понял что предлагает сделать White Owl, возможно когда увижу ответ по примеру BS/Анатолия пойму. Но как я понял предполагается добавление искусственных структур, и локальное усложнение программы. Потому вот такой вопрос. Да, локально у нас что-то усложняется, но в цельной программе, насколько это будет органично ? Отличаются ли способ Си, и перегрузка на С++ по части быстродействия ? Предполагаю, что на С++будет тратится время на выбор функций из всех возможных. На Си такого вроде-бы не должно возникать. Может быть ещё что-то не так. И вот такой вопрос. Какие минусы при использовании перегрузки функций ? Сколько функций максимум можно перегружать одним именем ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 02:12 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
White Owl, >>Неверно. Опыт тебе должен говорить: Использовать объектную парадигму легче на языках поддерживающих объектный синтаксис.ну, это софистика уже пошла. >>А так, объектную парадигму можно применить практически к любому языку. эмулировать можно, где то лучше, где то хуже. Можно даже назвать это "я пишу в объектном стиле", а я это называю: "я умею строить вон какие крутые костыли" >>Это надо понимать что ты не видел системных программ написанных на Quick BASIC я и игры на бэйсике видел, не об этом ведь речь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 02:15 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercury, >>Предполагаю, что на С++будет тратится время на выбор функций из всех возможных. с какой стати? внутреннее имя у каждой из этих функций - разное ведь. Об этом заботится компилятор, а не программист. В этом удобство то заключается. >>Сколько функций максимум можно перегружать одним именем ? до тех пор, пока не иссякнет фантазия в изобретении разных сигнатур для этого имени, то есть, теоретически, бесконечно )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 02:19 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryОтличаются ли способ Си, и перегрузка на С++ по части быстродействия ? Предполагаю, что на С++будет тратится время на выбор функций из всех возможных Не отличается. Не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 02:20 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНе отличается. Не будет. Точнее, тот костыль, который приведет White Owl, он конечно будет отличаться от С++ по скорости. В худшую сторону )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 02:22 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
egorychWhite Owl, >>Понимание этого факта позволяет делать перегруженные функции практически в любом языке, а не только в тех которые явно имеют синтаксис перегрузки. примерчик бы... твой пример про наследование не решает главной проблемы: отсутствия однотипных имён, о которых говорил MasterZiv, тебе всё одно придётся явно называть структуры, и вместо одной головной боли ты предлагаешь добавить сразу 7 ))) Почему не решает? Очень даже решает. Просто расширь пример из 17283801 до полноценного наследования, добавь в нужные структуры указатели на функции и получишь почти полную копию С++. Посмотри на IUP хотя бы. Там есть практически один единственный тип данных IupHandle*. Конкретные объекты создаются через IupFrame(), IupButton(), IupMenu(), etc. А дальше опять одна единственная функция IupSetAttribute(IupHandle*, ....); И вся палитра виджетов покрывается этим набором. egorych>>Расширенный синтаксис многое может сделать "красивее". Но дело то в том, что часто можно решить задачу и на более кратком синтаксисе. Получится не менее надежно и удобно, а красота это дело вкуса :) не согласен, не получится "не менее надёжно и удобно". Не в "красоте" ведь дело. Если мне не надо изобретать из раза в раз таблицу виртуальных функций, то я, во первых, не ошибусь в её реализации, и, во вторых, мой код не будет загромождён ненужными рутинными подробностями, которые отлично может написать за меня компилятор.Тоже не совсем верно. Ты будешь делать таблицу функций только на "своем" уровне. Не забывай про наследование. Да, в С++ за тебя это компилятор сделает, а в Си надо будет в конструкторе самостоятельно наполнить эту таблицу. Но это единственная сложность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 02:23 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlЛюбая перегрузка функций это по существу наследование от некоего общего предка, не всегда явно обозначенного. Понимание этого факта позволяет делать перегруженные функции практически в любом языке, а не только в тех которые явно имеют синтаксис перегрузки. А можно пример? Вот код на С++: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Это перегрузка функции print двумя типами аргумента. Как с помощью понимания того что перегрузка это "наследование от некоего общего предка" сделать такую перегруженную функцию не на любом языке, а хотя бы на С? 17283801 В данном случае общий предок это "некая переменная". Ну вот и сделай себе абстрактную переменную. Это будет конечно чуть сложнее чем с POD типами, но не намного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 02:27 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38883291&tid=2018439]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 190ms |

| 0 / 0 |
