Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Attributes, и их применение 
:(
    Опции темы
drkot
Дата 24.7.2014, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(PointerToNil @  23.7.2014,  22:42 Найти цитируемый пост)
аргументация

это не убеждение, это обоснование

Цитата(PointerToNil @  23.7.2014,  22:42 Найти цитируемый пост)
какая именно задача?

задача о том, где целесообразно использовать атрибуты в рамках Object Pascal.

PointerToNil, forum это "обсуждение" при переводе на русский. Это не "вопрос - ответ" в стиле "Stack Overflow". В ходе обсуждения идет обмен мнениями, и совсем не обязательно решается "сколько гвоздей нужно вбить на один погонный метр забора". Также обсуждение не предполагает обязательного принятия некоторой точки зрения всеми участниками и даже не предполагает изменение чьей бы то ни было точки зрения.
Цитата(PointerToNil @  23.7.2014,  22:42 Найти цитируемый пост)
нападения другой стороны

на вас кто то напал? Вас склоняют к принятию чьего то там мнения?
Или Вас просто попросили "аргументировать" свою точку зрения?

Моя позиция достаточно развернуто изложена, если в ней что то не понятно, или требуется пример кода, то надо так и писать.
А пока что Ваша позиция 
Цитата(PointerToNil @  23.7.2014,  02:04 Найти цитируемый пост)
убеждать кого-то в чем-то не вижу смысла

Собственно если это так, то не понятно зачем продолжать на ней настаивать? Она понятна, и не требует дальнейшего "убеждения". Не видите смысла - не делайте.

Цитата(PointerToNil @  23.7.2014,  22:42 Найти цитируемый пост)
даже в дотнете

знаете, мне это напомнило фразу из одного старого кинофильма, времен моей наивной молодости. Там она звучала "... - даже у Даля нет". Не знаю скажет это Вам о чем то или нет... 

Цитата(PointerToNil @  23.7.2014,  22:42 Найти цитируемый пост)
чаще эту фичу сначала задействуют библиотеко-компоненто-фреймворко-писатели

а почему? какая там специфика? 
Цитата(PointerToNil @  23.7.2014,  22:42 Найти цитируемый пост)
им её удобство и полезность более очевидна

раз она очевидна, то может ее (полезность) можно как то сформулировать? Скажем в рамках 20-30 слов хотя бы, чтоб очевидность стала очевидна и простым смертным?

PS: PointerToNil, Вы разницу между классом и директивой компилятора уловили?

PPS: не отправляйте тему в "религиозный войны" там одни маняки... там конструктива точно не будет...


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
drkot
Дата 24.7.2014, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(Illusion Dolphin @  23.7.2014,  10:24 Найти цитируемый пост)
вроде с# using attributes и взг

вот иду по первой ссылке и вижу
Код

[System.Runtime.InteropServices.DllImport("user32.dll")]
extern static void SampleMethod();

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

[Author("H. Ackerman", version = 1.1)]
[Author("M. Knott", version = 1.2)]
class SampleClass
{
    // H. Ackerman's code goes here... 
    // M. Knott's code goes here...
}

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

Хочу нормальный пример! 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
PointerToNil
Дата 24.7.2014, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: 3
Всего: 6



ну, ок, вот вам кусок кода из демонстрашки по EF 4.1
по этому описанию класса будет автоматически создана таблица в БД, каждому свойству будет соответствовать поле в ней
атрибутами можно указать: 
1) различия в наименовании классов/свойств и соответствующих им таблиц/полей БД
2) задать или конкретизировать тип (для строк - длину)
3) указать, что поле будет являться Primary Key, задать порядок колонок и т.д. и т.п.
4) указать, что свойство не соответствует никакому полю в БД
задавать атрибуты не обязательно, если устраивают соглашения мэппинга по умолчанию 
Код

    [Table("Authors", Schema = "guest")]
    public class Alias
    {
        [Key, Column(Order = 0)]
        public int AuthorKey { get; set; }
        [Required]
        public string Name { get; set; }
        [MaxLength(30), MinLength(5)]
        public string UserName { get; set; }
        public string Email { get; set; }
        public string Bio { get; set; }
        [Column("DateStarted", Order = 1, TypeName = "date")]
        public DateTime CreateDate { get; set; }
        public byte[] Avatar { get; set; }
        public ICollection<Tweet> Tweets { get; set; }
        [Timestamp]
        public byte[] RowVersion { get; set; }
        [NotMapped]
        public string AliasPlusName
        { get { return Name + "(" + UserName + ")"; } }
     }
как это сделать без атрибутов - как уже говорил, "нужно голову ломать", поэтому альтернативного примера (как обойтись без атрибутов) у меня нет
PM MAIL   Вверх
PointerToNil
Дата 24.7.2014, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: 3
Всего: 6



Цитата(drkot @  24.7.2014,  00:18 Найти цитируемый пост)
а почему? какая там специфика?
авторы библиотек заботятся о пользователях (прикладных программистах), не жалея себя, то есть готовы написать 20 дополнительных строчек кода, чтобы пользователю пришлось написать всего на 1 строчку меньше

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

Цитата
Вы разницу между классом и директивой компилятора уловили?
ок, раз вам этот вопрос так не дает покоя, придется пояснить -
я имел в виду то, что и атрибуты, и константы, и  директивы МОГУТ выполнять  одну конкретную функцию - статическую конфигурацию программы - через жесткий выбор одного из произвольных фрагментов кода (с директивами) или же одной из веток if (с константами или атрибутами)
разумеется, выполняют эту функцию варианты совершенно по разному, тем не менее, результат будет одинаковый, по крайней мере с т.з. пользователя программы
различия вам должны быть ясны, а сходство результата все-таки попробуйте понять, если не получится - спрашивайте, поясню

Это сообщение отредактировал(а) PointerToNil - 24.7.2014, 02:51
PM MAIL   Вверх
drkot
Дата 24.7.2014, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



PointerToNil,  однако, можете же конструктивно...
Пример хорош, отнести можно к сериализации. Так что пока из практического применения оставляем один пункт. Собственно как и было в начале.

Цитата(PointerToNil @  24.7.2014,  01:42 Найти цитируемый пост)
как это сделать без атрибутов

если брать идеологию RTL (все таки форум по Delphi) то реализуется все на уровне конструкторов свойств (яркий пример DataSet). Ту нужно учесть что ни с С++ ни в С# идеология "конструирования" практически отсутствует и для реализации объекта новой структуры записи создается новый класс, а в Delphi используется используется базовый класс + настройки (созданные конструктором) который создает объект под конкретную структуру. По трудо-затратам думаю оба подхода близки, как на этапе разработки, так и на этапе эксплуатации. 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
drkot
Дата 24.7.2014, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(PointerToNil @  24.7.2014,  02:12 Найти цитируемый пост)
 заботятся о пользователях

как Вы их хвалите то... небось родня?
Библиотеку предполагается использовать для многих проектов, и следовательно она должна быть организована без привязки к конкретному проекту, тоесть быть независимой и самодостаточной единицей. Все отличия только в этом. Библиотеки для одного проекта быть не может. Это тогда просто модуль.
Поэтому и не могу согласится, что там атрибуты надо, а там нет. Появление чего бы то ни было в "библиотеках" обусловлено в первую очередь политикой компании, а не технической необходимостью (причины либо понимаешь, либо нет и обсуждать этот вопрос нет смысла), а вот использование каких либо технологий "свободными" разработчиками как правило говорит об их полезности.

Цитата(PointerToNil @  24.7.2014,  02:12 Найти цитируемый пост)
я имел в виду то, что и атрибуты, и константы, и  директивы МОГУТ выполнять  одну конкретную функцию - статическую конфигурацию программы - через жесткий выбор одного из произвольных фрагментов кода (с директивами) или же одной из веток if (с константами или атрибутами)

Разумеется, Ваш полет мысли был оценен. И не зря была проведена параллель между паровозом и его чертежом. Но либо Вы не смогли внятно сформулировать мысль, либо она ушла слишком далеко в глубины абстракции и не доступна для моего понимания.
Так если бы вы сравнили атрибут и директиву-константу, то концептуальная логика была бы выдержана. Но Вы сравнили директиву ветвления с явно линейным механизмом, а это уже как сравнивать "теплое с мягким"... 
При этом атрибуты являются частью класса (RTTI), и не оказывают никакого управляющего воздействия. Они лишь могут быть использованы для чего-то там... если кто-то захочет реализовать (или подключить) соответствующий механизм. Директивы же не являются частью исполняемого кода или других структур программы, они оказывают прямое управляющее воздействие на исходную структуру кода (но не на его исполнение).
Поэтому, независимо от того, догадался ли или нет о той истине которую Вы хотели донести, вижу грубые нарушения логики в данном сравнении, на что и было указано.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
PointerToNil
Дата 24.7.2014, 03:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: 3
Всего: 6



Цитата(drkot @  24.7.2014,  02:19 Найти цитируемый пост)
По трудо-затратам думаю оба подхода близки, как на этапе разработки, так и на этапе эксплуатации.
возможно. допустим, это выльется в код вроде
Код

MapTable(Alias, "Authors", "guest");
MapField(AuthorKey, "AuthorKey", ftInt, fkKey, 0);
MapField(Name, "Name", ftString, fkDefault, -1, 5, 30);
// и т.д...
но 1) это будет КОД в каком-то методе ОТДЕЛЬНО от объявления класса, а атрибуты как раз позволяют собрать всё ДЕКЛАРАТИВНОЕ в одном месте и более наглядно представить
2) удобство просто пропустить (не задавать) атрибут, если он не нужен, вряд ли удастся как-то воспроизвести
Цитата(drkot @  24.7.2014,  02:53 Найти цитируемый пост)
использование каких либо технологий "свободными" разработчиками как правило говорит об их полезности.
тогда вам нужно поинтересоваться использованием аннотаций в джаве (annotations - там они так называются) - например, в hibernate и других открытых проектах (конкретных ссылок, увы, нет)
Цитата(drkot @  24.7.2014,  02:53 Найти цитируемый пост)
не зря была проведена параллель между паровозом и его чертежом.
этого совсем не понял  smile 
в чертеже паровоза на порядки проще и быстрее что-либо изменить, чем в самом паровозе, но ни там, ни там нельзя, скажем, просто взять и увеличить котел в 2 раза
тогда как в программе достаточно написать "const BoilerVolume = 200" вместо "... = 100" - и вуаля (это пример именно статической конфигурации) 
и хотя с директивами это сделать так же просто - "const BoilerVolume = {$IFDEF BIG_BOILER}200{$ELSE}100{$ENDIF}", программные IF-ы все-таки гибче директивных, не находите?
(в этой гибкости атрибуты и константы похожи, а преимущества атрибутов над константами я уже описывал)
Цитата(drkot @  24.7.2014,  02:53 Найти цитируемый пост)
вижу грубые нарушения логики в данном сравнении
а нельзя ли цитату с нарушением логики?  smile 
PM MAIL   Вверх
Illusion Dolphin
Дата 24.7.2014, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Также не забывайте, что атрибуты используются не сферические в вакууме, а обычно в связке с другими технологиями. Например, код выше было бы интереснее добавить вот так (это пример, не EF):
Код

   [Table("Authors", Schema = "guest")]
    public class Alias
    {
        [Key, Column(Order = 0)]
        public int AuthorKey { get; set; }
        ...
        [RelatedColumn("ChangedEntityId")]
        public virtual RelatedEntity Entity {get; set;}
     }

И тут интересно даже то, что Entity является virtual, что значит когда я буду стучаться к этому свойству (его я не устанавливаю) - ORM достанет эту энтити само учитывая поле ChangedEntityId. И тут это как бы не сериализация, а доступ к данным. Для того чтобы это работало надо ещё иметь Emit (вот этого не хватает тоже в делфи). 

Продолжим как могут ещё использоваться атрибуты - пример из тренинга. Допустим мы сделали библиотеку для "обработки" методов в приложении и хотим его распространять. А чтобы пользователю было легко его использовать добавим атрибуты: CacheAttribute + ProfileAttribute. И теперь радостные пользователи будут это использовать так:

Код

[Cache(2000)]
[Profile("c:\1.txt")]
public string MyMethod1(string value);


Т.е. добавив атрибут метод начинает работать с кэшированием и ещё результаты выполнения сохранять в файл. Очень удобно, с учётом, что всё остальное работает как работало, и атрибутами я просто помечаю то, что надо мне закэшировать либо отладить, вроде как выглядит очень удобно (реализацию подмены методов и профилирования оставляю за кадром). 

Дальше кастомная подсветка. Допустим, у нас имеется фрэймворк который работает как-то с файлами. И есть методы:
LoadFile("/dir/file.dat");
Как бы было классно написать дополнение для IDE которое подсвечивало зелёным и подчёркивало если файл есть и класным - файла нету - ошибочка. И тогда было было бы так:
Код

public void LoadFile([AppFile]string fileName)

AppFileAttribute будет использоваться аддоном IDE для подсвечивания ошибок - очень удобно. 

Цитата

[System.Runtime.InteropServices.DllImport("user32.dll")]
extern static void SampleMethod();
сразу понимаю, да... маркетологи давно забили всех программистов... скоро предложат красить код и выделять его разными шрифтами, чтобы задавать функциональность. Например синие это функции, а зеленые это процедуры...

Зря иронизируете. Дополнительно это может выглядеть так:
Цитата

   [ DllImport("user32.dll", EntryPoint = "CharLower", CharSet = CharSet::Ansi) ]
   static String CharLower([In, Out] String);

И тут атрибутами указывается:
1) Библиотеку, откуда метод (в делфи без атрибутов обходятся)
2) EntryPoint (то же)
3) CharSet - вот тут уже в делфи нету - можно указать как конвертировать кодировки, удобно, блин
4) InAttribute, OutAttribute - я думаю понятно, к чему это, но в делфи можно и без этого обойтись - это ясно. 

Дальше пример с enum (не знаю, работает ли в делфи, но так используют другие языки):
Код

type
   TDay = ([Display("Monday")]Mon=1, [Display("ResourceNameForTue")]Tue, Wed, Thu, Fri, Sat, Sun); 


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


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
drkot
Дата 24.7.2014, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(PointerToNil @  24.7.2014,  03:32 Найти цитируемый пост)
а нельзя ли цитату

конечно же зя. она опять прозвучала тремя строками выше
Цитата(PointerToNil @  24.7.2014,  03:32 Найти цитируемый пост)
 программные IF-ы все-таки гибче директивных

опять Вы сравниваете чертеж с паровозом на предмет что из них лучше... нельзя сравнивать различные по сути технологии даже если они похожи визуально.

Цитата(PointerToNil @  24.7.2014,  03:32 Найти цитируемый пост)
но 1) это будет КОД в каком-то методе ОТДЕЛЬНО от объявления класса,

Вы мыслите как сишник, а в Delphi это будет выглядеть примерно так
Код

  object ADOTable1: TADOTable
    TableName = 'zaqwsxcde'
    Left = 104
    Top = 64
    object ADOTable1qwerty: TStringField
      DisplayWidth = 25
      FieldName = 'qwerty'
      KeyFields = 'asdfgh'
      Size = 30
    end
    object ADOTable1asdfgh: TIntegerField
      FieldName = 'asdfgh'
    end
  end

единственное что это описатель объекта, а не класса. Но идеологически такой подход был принят еще в первой версии. 
Не смотря на синтаксические различия этот механизм очень близок к технологии атрибутов по сути.

Цитата(PointerToNil @  24.7.2014,  03:32 Найти цитируемый пост)
аннотаций в джаве

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

Что больше никто не использует атрибуты в Delphi?


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
drkot
Дата 24.7.2014, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(Illusion Dolphin @  24.7.2014,  12:44 Найти цитируемый пост)
ORM достанет эту энтити само учитывая поле ChangedEntityId

Вы только забыли привести пол километра кода который реализует данный механизм.
Цитата(Illusion Dolphin @  24.7.2014,  12:44 Найти цитируемый пост)
надо ещё иметь Emit

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

Цитата(Illusion Dolphin @  24.7.2014,  12:44 Найти цитируемый пост)
Т.е. добавив атрибут метод начинает работать

А что ООП уже не круто? Как же? Ведь пару лет назад специально ввели статические классы чтобы подтянуть к ним свободные функции, которые особо упрямые программисты не хотели включать в обычные классы. Где логика?

Хотя само применение интересно. Только не понятно как MyMethod1 отреагирует на появление атрибутов, если в нем не предусмотрена такая реакция изначально.
Цитата(Illusion Dolphin @  24.7.2014,  12:44 Найти цитируемый пост)
Зря иронизируете.

просто не могу понять зачем пятое колесо? Зачем заменять (делать альтернативу) уже имеющемуся механизму, причем весьма эффективному. 
Цитата(Illusion Dolphin @  24.7.2014,  12:44 Найти цитируемый пост)
3) CharSet - вот тут уже в делфи нету - можно указать как конвертировать кодировки, удобно, блин

Ну да... попытка подпереть мега баг языка кривым костылем... Конечно этого нет в Delphi! Работа со строками там интегрирована на уровне языка и проблем с конвертацией в априори не существует.
Цитата(Illusion Dolphin @  24.7.2014,  12:44 Найти цитируемый пост)
в делфи можно и без этого обойтись - это ясно

разумеется, зачем городить костыль, когда задача решена еще при проектировании...
Цитата(Illusion Dolphin @  24.7.2014,  12:44 Найти цитируемый пост)
Дальше пример с enum (не знаю, работает ли в делфи

как ни странно но оно работало и до этого и еще 20 лет назад... Интересно наблюдать как происходит процесс "пере открытия" давно известных истин и механизмов. 
Плохо только что Delphi для большинства начинается и заканчивается на Form1.ButtonClick()...

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



--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
PointerToNil
Дата 24.7.2014, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: 3
Всего: 6



это будет немного оффтопик, но радует, что вопросов по теме ко мне больше нет  smile 
мучайте теперь иллюзорного дельфина (ему - респект, btw)
итак,
Цитата(drkot @  24.7.2014,  13:58 Найти цитируемый пост)
опять Вы сравниваете чертеж с паровозом на предмет что из них лучше... нельзя сравнивать различные по сути технологии даже если они похожи визуально
аналогия эта сюда ну вообще никаким боком не лезет, а фраза с "нельзя" неверна по сути

и директивы, и константы, и атрибуты мной рассматривались 1) как инструмент программиста, используемый им в исходном коде программы (и абсолютно одинаковым образом - путем набора и редактирования текста) и 2) в контексте решения одного конкретного типа задач (и одинаково успешно эти задачи решающие, хоть и по-разному и с разными показателями удобства для программиста и числа необходимых символов текста)
возможно, вам показалось, что различие между ними фундаментально: константы и атрибуты в каком-то виде оказываются в скомпилированной программе (их явные следы там можно обнаружить), а директивы как бы бесследно исчезают в процессе компиляции, так?
но и это неверно и какого-то фундаментального отличия (как между чертежом и паровозом) между ними нет: и те, и другие, и третьи влияют как на статический результат компиляции, бинарник (именно в нем хранится статическая конфигурация во всех трех вариантах), так, естественно, и на поведение получившейся программы, причем именно по её поведению отличий в выполнении ими конкретной задачи (статического конфигурирования) найти не удастся (если всё сделано правильно и если поведение программы изучать не с помощью дебаггера и т.п., т.е. не лезть в бинарный код)

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

Это сообщение отредактировал(а) PointerToNil - 24.7.2014, 16:33
PM MAIL   Вверх
drkot
Дата 24.7.2014, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(PointerToNil @  24.7.2014,  16:20 Найти цитируемый пост)
числа необходимых символов текста

Еще один шедевр... эффективность и удобство не измеряется в количестве символов, как и скорость разработки не зависит от скорости печатания символов.
 
Цитата(PointerToNil @  24.7.2014,  16:20 Найти цитируемый пост)
константы и атрибуты в каком-то виде оказываются в скомпилированной программе

как ни странно совершенно разном виде. Константы уходят в сегмент данных как есть, а атрибуты становятся частью сегмента кода и реализуются через конструкторы только в период исполнения в виде внутренних объектов RTTI.
Цитата(PointerToNil @  24.7.2014,  16:20 Найти цитируемый пост)
явные следы там можно обнаружить

наверно не следы, а собственно "их", а то как то странно наследили и делись куда то.
Цитата(PointerToNil @  24.7.2014,  16:20 Найти цитируемый пост)
директивы как бы бесследно исчезают

если говорить о директивах ветвления, то исчезают не они, куски исполняемого кода (обращаю внимание что именно исчезают или появляются), а директивы управляющие меняют принципы "генерации" кода.
Вы вдумайтесь, в ту фразу от которой не можете успокоиться и не плодите глупости. 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
PointerToNil
Дата 24.7.2014, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: 3
Всего: 6



Цитата(drkot @  24.7.2014,  18:39 Найти цитируемый пост)
эффективность и удобство не измеряется в количестве символов, как и скорость разработки не зависит от скорости печатания символов.
учимся читать:
"с разными показателями (удобства для программиста) и (числа необходимых символов текста)"
союз "и" в данном контексте разделяет два разных "показателя" - для ясности выделил скобками
по остальному - это же очевидные вещи, зачем их было писать - ума не приложу
видимо, вода, добавленная, чтобы личностные придирки ("не можете успокоиться", "не плодите глупости") не выглядели слишком резко?

Вы лучше вдумайтесь в эту фразу: МОЖНО сравнивать различные по сути технологии.
PM MAIL   Вверх
drkot
Дата 24.7.2014, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(PointerToNil @  24.7.2014,  18:55 Найти цитируемый пост)
 (числа необходимых символов текста)

опишите этот показатель, будьте добры... мне помнится в 80х зарплата программиста измерялась в строках (точнее количестве операторов) Вы на это намекаете? Или использование переменных 1-2х буквенной длинны эффективнее чем 6-8? 
А лучше не скобки расставляйте, а в смысл написанного вникните, может дойдет. А то в голове крутится одно, а на бумаге совсем другое ;)

Лично для PointerToNil, анекдот: Когда шахтер благодарит, то кажется что он посылает на х..., а когда интеллигент посылает на х... кажется что он благодарит. 

Цитата(PointerToNil @  24.7.2014,  18:55 Найти цитируемый пост)
МОЖНО сравнивать различные по сути технологии.

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

PointerToNil, Вы бы лучше по делу написали, про атрибуты.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
PointerToNil
Дата 24.7.2014, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: 3
Всего: 6



Цитата(drkot @  24.7.2014,  19:17 Найти цитируемый пост)
опишите этот показатель, будьте добры
описывать тут нечего, но на всякий случай:
данные различных исследований совпали в том, что число допускаемых средним программистом ошибок на 1000 строк кода очень мало зависит от языка программирования, то есть чем длиннее код (при той же его функциональности или при большей - неважно), тем больше в нем ошибок
Цитата(drkot @  24.7.2014,  19:17 Найти цитируемый пост)
Вы бы лучше по делу написали, про атрибуты. 
ок, и что же вам до сих пор еще не понятно в атрибутах?


PM MAIL   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.