Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2010, 13:57   #21
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Цитата:
Сообщение от Levsha100 Посмотреть сообщение
Ну, а если вырубать систему нельзя?
Ну тогда мы все умрем.

Ей богу, если вырубать нельзя - писать не на С++, а на Perl, Ruby, Groovy и других скриптовых интерпретируемых языках. В любом случае изврат с компиляциями - это лишнее. Никто вам за такую работу не заплатит. Ни одному заказчику не нужны тонны кода, который реализует минимум функционала.
В Ruby и Groovy есть охренительная база для метапрограммирования. Там и обращение к полям/методам объекта по имени в качестве строки, и безопасный вызов метода. Проверка наличия метода у объекта и прочий синтаксический и семантический сахар.

Вы стремитесь сделать из С++ кашу, намешав туда кучу всяких фич, которые есть в других языках. Динамика и метапрограммирование, так же как и полноценное ООП - это не про С++.
MaTBeu вне форума Ответить с цитированием
Старый 30.07.2010, 15:27   #22
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Цитата:
так же как и полноценное ООП - это не про С++
Во, а можно насчет этого немного конкретнее? Сколько читал учебников, везде пишут С++ это объектно-ориентированный язык программирования (оно то так и есть)...только теперь интересно, а что в нем такого неполноценного?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 30.07.2010, 16:40   #23
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Как пример - Мультиметоды. Их нет в С++. Можно извратиться - получим схему с двойной диспетчеризацией. Если интересно - почитайте Александреску.

А вообще - Википедия вам в руки, там все про это написано. http://ru.wikipedia.org/wiki/Сравнен...ограммирования

Последний раз редактировалось MaTBeu; 30.07.2010 в 16:43.
MaTBeu вне форума Ответить с цитированием
Старый 02.08.2010, 16:25   #24
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
сами по себе поля никому не нужны. Нужны методы/функции/процедуры которые смогут этими полями пользоваться.
Не вижу в этом никаких проблем

Цитата:
новая функция -> новый код -> новая компиляция (Delphi не является интерпретатором) -> можно обойтись и статикой.
Совсем не обязательно новая, а условная. То есть в зависимости от условий Вам может потребоваться одна структура, а может и другая. И потом это просто экономия. Вот тот же пример с генеалогическим деревом - поля в структурах обычно требуют места независимо от того нужны ли они или нет. В нашем случае, если дата смерти неизвестна (например тип еще жив), то и поле под него необязательно. В тоже время само генеалогическое дерево не настолько уж востребованная к скорости структура. Если же я хочу работать с новым полем, то добавляю его тогда, когда уже действительно пойдет работа с ним. А зачем оно статически, если даже неизвестно будет ли им кто-нибудь пользоваться? Если хотите, то упрощенным аналогом является динамический массив - он содержит лишь те элементы, которые программист посчитает нужным, причем возникают случаи когда число элементов в разное время будет различным. Аналогичная ситуация и с полями этой структуры.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.08.2010, 17:14   #25
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Совсем не обязательно новая, а условная. То есть в зависимости от условий Вам может потребоваться одна структура, а может и другая. И потом это просто экономия. Вот тот же пример с генеалогическим деревом - поля в структурах обычно требуют места независимо от того нужны ли они или нет. В нашем случае, если дата смерти неизвестна (например тип еще жив), то и поле под него необязательно. В тоже время само генеалогическое дерево не настолько уж востребованная к скорости структура. Если же я хочу работать с новым полем, то добавляю его тогда, когда уже действительно пойдет работа с ним. А зачем оно статически, если даже неизвестно будет ли им кто-нибудь пользоваться? Если хотите, то упрощенным аналогом является динамический массив - он содержит лишь те элементы, которые программист посчитает нужным, причем возникают случаи когда число элементов в разное время будет различным. Аналогичная ситуация и с полями этой структуры.
В таком случае уже лучше пользовать полиморфизм и не парить мозги с условной компиляцией. Дело не в том, что нам может понадобится структура из набора. Дело в том, что нельзя динамически добавлять поля к структуре на этапе выполнения.

2TC
Хотя можно сделать полем класса stl-евский map или multimap - и добавлять к нему записи. Однако обращение будет доступно только через специальную функцию. Реализация кривая - но вам я думаю подойдет. Если у вас такое непреодолимое желание использовать С++, вместо языков, которые к этому приспособлены - дерзайте.
MaTBeu вне форума Ответить с цитированием
Старый 03.08.2010, 06:43   #26
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
Дело в том, что нельзя динамически добавлять поля к структуре на этапе выполнения.
Почему? Что в этом плохого? Единственная загвоздка все это правильно организовать. Приведите мне способ использования полиморфизма как аналога такого сякого, какого я хочу . Просто не совсем пойму как это сделать красиво.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 03.08.2010 в 06:58.
Utkin вне форума Ответить с цитированием
Старый 03.08.2010, 07:30   #27
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Ага, может еще расстояние до звезд миллиметрами мерять?
Кстати, как ни странно, меряют. Расстояние до Солнца (звезда) измеряется именно в миллиметрах !
А насчёт твоего "почему" - язык С объектноориентированный. Незачем в сам язык вводить конструкции, которые могут никогда и никому не понадобиться. Для этого есть библиотеки и классы. Вытворяй с ними чё хочешь. Хочешь Лисп - на тебе библиотеку лисп. Хочешь Пролог - на тебе пролог!
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 03.08.2010, 08:37   #28
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
А насчёт твоего "почему" - язык С объектноориентированный.
Разве не с++? Пусть объектный, но это вроде вполне укладывается в рамки объектов. Все является объектом. Числа, переменные, объекты и т.д. Следовательно структура данных тоже объект. А следовательно никаких коллизий/препятствий не возникает. Далее у с++ есть серьезные проблемы при взаимодействии указателей и объектов - есть возможность перешагнуть через область видимости и получить данные конкретного объекта. Это вроде как считается нормой.

Цитата:
Незачем в сам язык вводить конструкции, которые могут никогда и никому не понадобиться.
Так можно сказать про любое средство. Я вот в Дельфи указателями не пользуюсь, так для чего они туда были включены? Исключить их оттуда немедленно. А не пользуются такими конструкциями, потому что их там нет. Вот в Лиспе есть пары, парами там и пользуются и это несмотря на наличие и других типов. Просто отмазка.

Цитата:
Для этого есть библиотеки и классы. Вытворяй с ними чё хочешь. Хочешь Лисп - на тебе библиотеку лисп. Хочешь Пролог - на тебе пролог!
Это и так ясно, но я имел ввиду почему?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 03.08.2010 в 08:58.
Utkin вне форума Ответить с цитированием
Старый 03.08.2010, 09:07   #29
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

1. Основная идея С++ - основную работу делать на этапе компиляции. Именно поэтому там шаблоны, а не Generic классы. С динамическими методами на этапе компиляции ничего не сделаешь, а, соответственно, это нарушает принципы языка.
2. Будет проблема с сохранением объектов таких классов в файл. Одним куском уже не запишешь. В файл нужно записывать какие члены есть, каких нет,... Куча проблем.
Если всё это сделать в плюсах, то получится полускриптовый язык с совершенно другой идеологией, т.е. это уже будет не С++.
pu4koff вне форума Ответить с цитированием
Старый 03.08.2010, 09:13   #30
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
1. Основная идея С++ - основную работу делать на этапе компиляции. Именно поэтому там шаблоны, а не Generic классы. С динамическими методами на этапе компиляции ничего не сделаешь, а, соответственно, это нарушает принципы языка.
Ок, это понял.

Цитата:
2. Будет проблема с сохранением объектов таких классов в файл. Одним куском уже не запишешь. В файл нужно записывать какие члены есть, каких нет,... Куча проблем.
Ну, можно написать либу, которая будет это делать в специальном формате. То есть программера уже не заботит чего там и сколько - две операции чтение и запись.

Цитата:
Если всё это сделать в плюсах, то получится полускриптовый язык с совершенно другой идеологией, т.е. это уже будет не С++.
Ну не знаю, а препроцессор чем занимается? А макросы? Он же и так по сути полускриптовый...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Единый путь к файлу Ozerich PHP 2 01.06.2009 22:15
Единый исполняемый файл phobos Общие вопросы .NET 9 25.05.2009 19:32
подмена данных в программе linkod Фриланс 9 12.03.2009 11:12
Использование различных способов организации данных tosnopunker Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2007 15:31