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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2012, 21:50   #41
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Загнал в динамический массив .
Это как?
Цитата:
Разные точки зрения на задачу - один результат.
А мне как раз нужен не один результат, а несколько разных.
Например, объект служит для составления списка уникальных имен. Мне нужно несколько независимых наборов таких имен. Как реализовать без объектов?
s-andriano вне форума Ответить с цитированием
Старый 30.05.2012, 22:40   #42
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Для этого есть хеши и динамические масивы.
Уже поверьте очень мало задач где ооп незаменимо.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 31.05.2012, 07:56   #43
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Для этого есть хеши и динамические масивы.
Уже поверьте очень мало задач где ооп незаменимо.
Не понимаю, как то или другой можно использовать в предложенной задаче.

Код:
protected
  a,b,c : integer;
  d,e,f : double;
  g,h : array of MyType;
Как это сделать без объектов?
s-andriano вне форума Ответить с цитированием
Старый 31.05.2012, 08:43   #44
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Через структуру. Бросьте Вы свои объекты. Задрало честное слово. Вы заранее ставите задачу так, чтобы решить ее только с помощью ООП. Какие нафиг объекты. Решайте поставленную задачу и все. Засуньте Ваши данные в структуру. А ее в динамический массив - вот Вам большое количество объектов нужной природы. Поскольку Вы совершенно не представляете как устроено ООП изнутри (а оно написано там не с помощью ООП, внезапно, да?), сразу пресеку этот сериал - методы интерпретируются следующим образом:
Код:
процедура(структура_характеризующая_данные_Вашего_объекта[индекс_динамического_массива], прочие_параметры)
вместо
Код:
имя_объекта.метод(прочие_параметры)
А если Вас ломает от индексов, вбейте константы с именами объектов. Что-то типа:
Код:
const имя_объекта=0;
процедура(структура_характеризующая_данные_Вашего_объекта[имя_объекта], прочие_параметры)
Серьезно, просто почитайте как реализуется ООП.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 31.05.2012, 17:10   #45
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
По поводу 40-130 fps - откуда взялись эти цифры? Давайте уже тесты, доказательства, обзоры в студию! Голословничать не нужно.
Старенькое решение тестили на какой-то выставке ещё в 90-лохматых годах... И заняла она там довольно высокое место. Парень жил в соседней комнате в общежитии и создал её ещё до моего поступления. Так что я лишь видел результаты. Более свежее уже тестил я каким-то 3д-бенчмарком (уж почти 10 лет прошло с того момента) и хранить его желания не возникло... да и времени и винтов уже много сменилось. Так что, увы, прямых доказательств нет...
Цитата:
Вам кажется, что эффекты не очень улучшились, а чтобы его создать, может потребовалось написать огромный шейдер, коих, кстати, тоже библиотек готовых немало. И не надо тут говорить про говно-код и криворуки. Люди отлаживали их годами, основы движков одинаковы.
История из моей собственной практики: на третьем курсе решил потягаться с ребятками из борланда - делал курсовик по компьютерной графике... переписал основные функции (точки, круги, заливку и т.п.) на ассемблере и гонял на сравнение в паскале. Получилось, что я на половине функций обходил их на 10-20%, хотя кое-где алгоритм слабовато оптимизировал... При этом я особо не напрягался - точки ставил одним и тем же макросом для всех контурных фигур... поначалу меня это смутило, но потом я понял в чём дело: мой код был оптимизирован под один видеорежим, а у них использовался универсальный. Из-за этого мне требовалось меньше граничных условий, я всегда точно знал правильные смещения по видеопамяти и т.п.
Вроде-бы причём здесь объекты, но примерно о том и речь - объектный подход требует едва-ли не универсальности (я не говорю о тех поднятых с нуля классах, рождаемых программистом, а о стандартных наборах), тогда как адаптировать процедурный код куда как проще. Даже банальный TButton на форме обладает кучей в 95% случаев неиспользуемых свойств и методов, которые держат для оставшихся 5%.
Цитата:
Это все верно, только ООП то здесь при чем?
Ну так в библиотечном принципе те же ляпы, зачастую, что и в ООП)
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 31.05.2012, 17:18   #46
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Вроде-бы причём здесь объекты, но примерно о том и речь - объектный подход требует едва-ли не универсальности (я не говорю о тех поднятых с нуля классах, рождаемых программистом, а о стандартных наборах), тогда как адаптировать процедурный код куда как проще.
нет, не требуют, я так могу использовать обьекты под фиксированные данные.
Цитата:
мой код был оптимизирован под один видеорежим, а у них использовался универсальный.
сейчас обычно нужно делать именно универсальность, ООП тут может помочь, под такое расширение создаем один обьект, под другое иной.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 31.05.2012, 19:08   #47
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Через структуру. Бросьте Вы свои объекты. Задрало честное слово. Вы заранее ставите задачу так, чтобы решить ее только с помощью ООП.
То есть Вы согласны, что некоторые задачи без ООП решить невозможно?
Лично я придерживаюсь гораздо более мыгеого варианта: "некоторые задачи без ООП решать очень неудобно"
Цитата:
Какие нафиг объекты. Решайте поставленную задачу и все.
Каждый раз с нуля?
Я предпочитаю заранее изготовить некоторый набор инструментов и потом ими пользоваться. А не писать для каждой задачи инструментарий с нуля.
Цитата:
Засуньте Ваши данные в структуру. А ее в динамический массив - вот Вам большое количество объектов нужной природы.
И Вы называете это высокоуровневыми программированием?
Замена простых переменных элементами массива в чем-то сродно прямой адресации памяти.
Вместо цикла:
Код:
for i := 0 to MaxI-1 do
  for j := 0 to MaxJ-1 do
    a[i + MaxI*j] := ...
Писать?
Код:
for a[MaxI*MaxJ+1] := 0 to MaxI-1 do
  for a[MaxI*MaxJ+2] := 0 to MaxJ-1 do
    a[i + MaxI*j] := ...
Цитата:
Поскольку Вы совершенно не представляете как устроено ООП изнутри (а оно написано там не с помощью ООП, внезапно, да?), сразу пресеку этот сериал - методы интерпретируются следующим образом:
Код:
процедура(структура_характеризующая_данные_Вашего_объекта[индекс_динамического_массива], прочие_параметры)
вместо
Код:
имя_объекта.метод(прочие_параметры)
А если Вас ломает от индексов, вбейте константы с именами объектов. Что-то типа:
Код:
const имя_объекта=0;
процедура(структура_характеризующая_данные_Вашего_объекта[имя_объекта], прочие_параметры)
Серьезно, просто почитайте как реализуется ООП.
У меня складывается впечатление, что именно Вы не представляете как устроено ООП изнутри.
То, что Вы предлагаете впихнуть в код процедуры объекта, в ООП делается либо на стадии компиляции, либо на стадии загрузки программы, либо на стадии создания объекта. Попытка перенести эти действия в код подпрограмм аналогичных методам объекта заведомо приведет к существенному снижению эффективности работы программы: вместо полезной работы они будут тратить время на выяснение, к какой именно из динамически распределенных структур нужно обращаться.
Опять же, нужно таскать с собой код, осуществляющий такое выяснение.
В общем, получается эмуляция ООП с существенным снижением уровня, лишним геморроем для программиста и существенным снижением производительности.

Последний раз редактировалось s-andriano; 31.05.2012 в 19:17.
s-andriano вне форума Ответить с цитированием
Старый 01.06.2012, 07:26   #48
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
То есть Вы согласны, что некоторые задачи без ООП решить невозможно?
Лично я придерживаюсь гораздо более мыгеого варианта: "некоторые задачи без ООП решать очень неудобно"
Я согласен с тем, что нельзя передергивать что я сказал. Вы изначально ставите задачу в терминах ООП. Описывайте задачу без них. Вот что я имел ввиду. Касательно того, что Вы подумали - я уже писал ранее.

Цитата:
Каждый раз с нуля?
Что за бред? Откуда такой вывод? На основании чего он был сделан? Сплошная женская логика.
Цитата:
Я предпочитаю заранее изготовить некоторый набор инструментов и потом ими пользоваться. А не писать для каждой задачи инструментарий с нуля.
Ну да процедурное программирование же не позволяет писать отдельные юниты, библиотеки кода, дллки и все прочее. Это же все ООП .

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

Последний раз редактировалось Utkin; 01.06.2012 в 07:52.
Utkin вне форума Ответить с цитированием
Старый 01.06.2012, 08:35   #49
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
У меня складывается впечатление, что именно Вы не представляете как устроено ООП изнутри
Включите любой дизассемблер: объект складывается из области данных и области кода (деление условное). Доступ к объекту идёт по смещению в озу. С тем же успехом это можно разнести в разные области памяти и использовать не менее эффективно. Тут больше вопрос не функциональности, а оптимизации...

Цитата:
Пусть программисты пишушие на ассемблере кинут в меня камнем если динамические массивы это низкоуровневое программирование
Как-то они до этого не дотягивают))
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 01.06.2012, 09:09   #50
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Писать?
Опять бред. На основании чего Вы делаете такой вывод? Просто потроллить?

Цитата:
То, что Вы предлагаете впихнуть в код процедуры объекта, в ООП делается либо на стадии компиляции, либо на стадии загрузки программы, либо на стадии создания объекта. Попытка перенести эти действия в код подпрограмм аналогичных методам объекта заведомо приведет к существенному снижению эффективности работы программы: вместо полезной работы они будут тратить время на выяснение, к какой именно из динамически распределенных структур нужно обращаться.
Опять абсолютно голословное утверждение. Кто будет что выяснять? Все уже выяснено и как раз на этапе компиляции. Далее мой код в любом случае будет быстрей - потому что у меня нет RTTI, а в Дельфи его вводит в любом случае, нужно ли оно экземпляру класса или нет. Внезапно да?
В общем итоги беседы уже ясны - Вы недостаточно подкованы. Далее чтобы не разжигать флейм предлагаю перенести обсуждение в личку .

Цитата:
объект складывается из области данных и области кода (деление условное).
Это я и пытался до него донести. Плюс еще специальные таблицы для адресации всяких там виртуальных и динамических методов. И деление это не условное, а самое что ни на есть настоящее. Область кода - методы содержатся в классе. Объекты это и есть структуры данных, характеризующие состояние объекта. И при создании нового объекта копируются только поля, но не код. Код методов вызывается из описаний составленных в классе и как правило содержится в памяти только один раз независимо от числа экземпляров данного класса.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 01.06.2012 в 09:23.
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не будет ли ошибкой использовать инвок для случаев, когда он не требуется? gramp C# (си шарп) 4 18.04.2012 20:41
Когда нужно присваивать.. Writeln(Sum:8:4) ? Erlotaza Общие вопросы Delphi 1 09.03.2012 11:25
Try, throw, catch; нужно ли знать ООП PHP для изучения исключений? alex455 PHP 1 01.08.2011 13:46
masm32 подменяет JZ на JE тогда, когда это совсем не нужно notHaker Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 12.07.2011 17:57
сортировка, когда невозможно использовать свойства таблицы IndexFieldName Римма БД в Delphi 5 07.09.2007 10:56