Re[5]: Пописал на С++... долго думал :)
От: Stoune  
Дата: 10.11.05 01:00
Оценка:
Здравствуйте, VladD2, Вы писали:

Ш>>Нда? Это какой же язык программирования может определить, что ты вместо 12345 написал 2200 (или наоборот)?


VD>Как видишь, есть языки которые умадряются привести альтернативное решение.


Вот для этого придумали Python, чтобы вещи можно было сделать только одним способом
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[3]: Предагаю мир!
От: pvgoran Россия  
Дата: 10.11.05 05:20
Оценка: +1 -1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Что меня огорчает — фанатическая нетерпимость некоторых к другому мнению. В общем, увы, советское воспитание легко не исчезает.


Я бы попросил Вас воздерживаться от подобных высказываний. Ибо оскорбительно/некультурно...
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[3]: Jazelle
От: srggal Украина  
Дата: 10.11.05 09:04
Оценка:
Здравствуйте, SilverCloud, Вы писали:

S>>Дык в целях расширения кругозора, моего естественно, дайте линк на железку реализующую аппаратную JVM ( если так можно выразаиться )


SC>сабж


Премного благодарен Вам.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[18]: Пописал на С++... долго думал :)
От: Pavel Dvorkin Россия  
Дата: 11.11.05 05:38
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Pavel Dvorkin,


>> Просто я хочу отметить, что мы получим класс, который реально своим внутренним состоянием не управляет


ПК>Не согласен. "Внутренним состоянием" данного класса является гарантия, что на каждый вызов LoadLibrary, сделанный через этот класс, последует FreeLibrary. "Общих" гарантий относительно использования LoadLibrary/FreeLibrary во всей программе класс не дает.


"Внутренним состоянием" данного класса — согласен. Но вот то, что он общих гарантий не дает — и плохо. Иными словами, он своей задачи, которую я хотел бы решить (полностью управлять загрузкой/выгрузкой) — не решает. И этим меня не устраивает, почему я его писать и не буду. А то, что он внутренне непротиворечив — не спорю.

Как было написано в одном приказе по некоторому учреждении — "Гвозди в стенку забивать только через меня или зама". Вот это он и не позволит, увы.
With best regards
Pavel Dvorkin
Re[19]: Пописал на С++... долго думал :)
От: Павел Кузнецов  
Дата: 11.11.05 05:55
Оценка:
Pavel Dvorkin,

> "Внутренним состоянием" данного класса — согласен. Но вот то, что он общих гарантий не дает — и плохо. Иными словами, он своей задачи, которую я хотел бы решить (полностью управлять загрузкой/выгрузкой) — не решает. И этим меня не устраивает, почему я его писать и не буду. А то, что он внутренне непротиворечив — не спорю.

>
> Как было написано в одном приказе по некоторому учреждении — "Гвозди в стенку забивать только через меня или зама". Вот это он и не позволит, увы.

Отчего же? Можно поставить триггер на VCS, запрещающий "случайно" submit (прошу прощения, никак не могу вспомнить подходящее русское слово) код, содержащий LoadLibrary/FreeLibrary где-либо, кроме файла с определением соответствующего класса.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re: Пописал на С++... долго думал :)
От: Joker6413  
Дата: 11.11.05 08:04
Оценка: +3
Здравствуйте, VladD2, Вы писали:

Препроцессор C++ ругали все и всегда, если бы ты поизучал литературу, то знал бы от этом. А так, в любом языке есть куча возможностей как прострелить себе ногу.
Re[20]: Пописал на С++... долго думал :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.11.05 09:18
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Отчего же? Можно поставить триггер на VCS, запрещающий "случайно" submit (прошу прощения, никак не могу вспомнить подходящее русское слово) код, содержащий LoadLibrary/FreeLibrary где-либо, кроме файла с определением соответствующего класса.


Придерусь к техническ4им моментам — ИМХО запрещать коммит на основании каких то правил не есть верная мысль. Мы это в свое время уже проходили — создает массу проблем разработчикам. VCS должна решать только свою задачу, а именно контроль версий. Все остальное должно работать параллельно. Т.е. в данном случае правильным было бы запускать проверку после коммита, а по ее результатам присваивать статус проверенной ревизии.
... << RSDN@Home 1.2.0 alpha rev. 619>>
AVK Blog
Re[21]: Пописал на С++... долго думал :)
От: Павел Кузнецов  
Дата: 11.11.05 15:40
Оценка:
AndrewVK,

> ПК>Отчего же? Можно поставить триггер на VCS, запрещающий "случайно" submit (прошу прощения, никак не могу вспомнить подходящее русское слово) код, содержащий LoadLibrary/FreeLibrary где-либо, кроме файла с определением соответствующего класса.


> Придерусь к техническ4им моментам — ИМХО запрещать коммит на основании каких то правил не есть верная мысль.


Не запрещать, а напоминать о правилах (см. выделенное выше и ниже). Т.е. запрещать делать подобное неявно. В случае, если разработчик настаивает (включил соответствующую опцию при submit), то разрешается, но, как ты написал ниже, ревизии присваивается соответствующий статус. Точно такой же подход принят в Team System.

> Мы это в свое время уже проходили — создает массу проблем разработчикам. VCS должна решать только свою задачу, а именно контроль версий. Все остальное должно работать параллельно. Т.е. в данном случае правильным было бы запускать проверку после коммита, а по ее результатам присваивать статус проверенной ревизии.


ОК. Давай называть SCM system, а не VCS. Так легче? Должна/не должна, правильно/неправильно -- это вопросы открытые, и в такой постановке мне мало интересные, а вот если в Perforce включены некоторые триггеры, хоть как-то проверяющие корректность файлов being submitted, жить становится заметно легче всем, кто потом эти файлы оттуда получает.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: Пописал на С++... долго думал :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.05 16:14
Оценка: -1
Здравствуйте, Joker6413, Вы писали:

J>Препроцессор C++ ругали все и всегда, если бы ты поизучал литературу, то знал бы от этом.


Воспринимаю фразу "если бы ты поизучал литературу, то знал бы от этом" как хмаство и дешовые понты.

J>А так, в любом языке есть куча возможностей как прострелить себе ногу.


Ага. И качество языка оределеяется их количеством. Надо отсылать к литературе по вопросу количества граблей в С++?
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Пописал на С++... долго думал :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.11.05 15:40
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Не запрещать, а напоминать о правилах (см. выделенное выше и ниже).Т.е. запрещать делать подобное неявно.


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

ПК> В случае, если разработчик настаивает (включил соответствующую опцию при submit), то разрешается,


Разработчик почти наверняка включит такую опцию.

ПК> но, как ты написал ниже, ревизии присваивается соответствующий статус. Точно такой же подход принят в Team System.


В TS именно что есть несколько разновидностей статуса ревизии.

ПК>ОК. Давай называть SCM system, а не VCS. Так легче?


Дело не в названии, дело в том чтобы одно не ешало другому.

ПК> Должна/не должна, правильно/неправильно -- это вопросы открытые, и в такой постановке мне мало интересные, а вот если в Perforce включены некоторые триггеры, хоть как-то проверяющие корректность файлов being submitted, жить становится заметно легче всем, кто потом эти файлы оттуда получает.


Не знаю — у нас была ситуация обратная. Когда на коммит были завязаны всякие танцы с бубнами, процедура превращалась в долгий и нудный процесс. В результате коммитили чуть ли не раз в неделю, когда был полностью завершен очередной этап.
... << RSDN@Home 1.2.0 alpha rev. 619 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[28]: Пописал на С++... долго думал :)
От: Schade Россия  
Дата: 14.11.05 15:53
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>BinaryReader же позоляет читать память как душе угодно, но при этом не заниматься реинтерпретацией типов и не допуская порчи памяти к которой может привести реинтерпетация. Погляди BinaryReader Рефлектором или в Роторе.


Откровенно говоря, выглядит грустно:
public virtual int ReadInt32()
{
      if (this.m_isMemoryStream)
      {
            MemoryStream stream1 = this.m_stream as MemoryStream;
            return stream1.InternalReadInt32();
      }
      this.FillBuffer(4);
      return (((this.m_buffer[0] | (this.m_buffer[1] << 8)) | (this.m_buffer[2] << 0x10)) | (this.m_buffer[3] << 0x18));
}

Для чтения больших объемов, пожалуй, непригодно.
Разве только JIT способен понять, о чем речь и превратить это все в ту же реинтерпретацию памяти, что вызывает сомнения.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[29]: Пописал на С++... долго думал :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.11.05 22:58
Оценка:
Здравствуйте, Schade, Вы писали:

S>Для чтения больших объемов, пожалуй, непригодно.


А ты попробуй.

S>Разве только JIT способен понять, о чем речь и превратить это все в ту же реинтерпретацию памяти, что вызывает сомнения.


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

Правда, я думаю, что на данном этапе развития упрвляемых рантаймов такие мощьные оптимизации еще не доступны. Однако они несомненно станут доступны в будущем. Да и на сегодня скорость очень и очень приличная.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Пописал на С++... долго думал :)
От: Pavel Dvorkin Россия  
Дата: 16.11.05 10:46
Оценка: :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Отчего же? Можно поставить триггер на VCS, запрещающий "случайно" submit (прошу прощения, никак не могу вспомнить подходящее русское слово) код, содержащий LoadLibrary/FreeLibrary где-либо, кроме файла с определением соответствующего класса.


Ничего из этого путного не выйдет. Потому как LoadLibrary может вызываться из какой-нибудь другой DLL, третьей фирмы или же даже от MS. Представь себе, что она уже вызвана, а я еще в классе загрузку ни разу не делал. Я считаю, что ее нет, реально она есть...
With best regards
Pavel Dvorkin
Re[4]: Предагаю мир!
От: Pavel Dvorkin Россия  
Дата: 16.11.05 10:48
Оценка:
Здравствуйте, pvgoran, Вы писали:

P>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Что меня огорчает — фанатическая нетерпимость некоторых к другому мнению. В общем, увы, советское воспитание легко не исчезает.


P>Я бы попросил Вас воздерживаться от подобных высказываний. Ибо оскорбительно/некультурно...


OK, готов воздержаться. Насчет некультурнсти, правда, не согласен, а если это ты считаешь оскорбительным — извини.
With best regards
Pavel Dvorkin
Re[21]: Пописал на С++... долго думал :)
От: Павел Кузнецов  
Дата: 17.11.05 03:38
Оценка: +1
Pavel Dvorkin,

> ПК> Отчего же? Можно поставить триггер на VCS, запрещающий "случайно" submit (прошу прощения, никак не могу вспомнить подходящее русское слово) код, содержащий LoadLibrary/FreeLibrary где-либо, кроме файла с определением соответствующего класса.


> Ничего из этого путного не выйдет. Потому как LoadLibrary может вызываться из какой-нибудь другой DLL, третьей фирмы или же даже от MS. Представь себе, что она уже вызвана, а я еще в классе загрузку ни разу не делал. Я считаю, что ее нет, реально она есть...


Я не понимаю, в чем, собственно, проблема? Классы-обертки предназначены для того, чтобы было легче писать корректный код. Как и прочие средства, они не гарантируют корректность вашего кода, и уж подавно не могут обеспечить правильность кода чужого.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[22]: Пописал на С++... долго думал :)
От: Pavel Dvorkin Россия  
Дата: 17.11.05 05:42
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Я не понимаю, в чем, собственно, проблема? Классы-обертки предназначены для того, чтобы было легче писать корректный код. Как и прочие средства, они не гарантируют корректность вашего кода, и уж подавно не могут обеспечить правильность кода чужого.


Да никакой проблемы и нет вовсе. Просто ИМХО класс-обертка должна управлять тем объектом, который она оборачивает. Например, класс string полностью управляет своим ASCIIZ буфером — изменить его состояние помимо интерфейса класса нельзя. здесь же объект может изменять свое состояние помимо этого класса. Вот и все, что я хотел сказать.

class CModule{
public:
BOOL Load(...) {...}
BOOL Unload(...) {...}
BOOL IsLoaded(...) {...}
};

IsLoaded может лишь ответить на вопрос — было ли количество Load для данного модуля больше, чем Unload. На вопрос : есть ли модуль в моем адресном простанстве или нет — IsLoaded корректно ответить не может.
With best regards
Pavel Dvorkin
Re[23]: Пописал на С++... долго думал :)
От: Павел Кузнецов  
Дата: 17.11.05 05:54
Оценка:
Pavel Dvorkin,

> ПК> Я не понимаю, в чем, собственно, проблема? Классы-обертки предназначены для того, чтобы было легче писать корректный код. Как и прочие средства, они не гарантируют корректность вашего кода, и уж подавно не могут обеспечить правильность кода чужого.


> Да никакой проблемы и нет вовсе. Просто ИМХО класс-обертка должна управлять тем объектом, который она оборачивает.


Смотря, что понимать под "управлять". Если речь идет о гарантиях неизменности объекта мимо интерфейса класса-обертки, то я не вижу, откуда это следует, почему это должно быть так. Более того, обычно для объектов, "управляющих" внешними по отношению к программе сущностями, это не так: файлы, сокеты, соединения с базами данных и т.п.

> Например, класс string полностью управляет своим ASCIIZ буфером — изменить его состояние помимо интерфейса класса нельзя. здесь же объект может изменять свое состояние помимо этого класса. Вот и все, что я хотел сказать.


Почему состояние "управляемого" объекта отождествляется с состоянием объекта класса-обертки? А содержимое файла является состоянием объекта, представляющего файл с точки зрения программы? Имхо, ответ отрицательный в обоих случаях.

> class CModule{

> public:
> BOOL Load(...) {...}
> BOOL Unload(...) {...}
> BOOL IsLoaded(...) {...}
> };
>
> IsLoaded может лишь ответить на вопрос — было ли количество Load для данного модуля больше, чем Unload. На вопрос : есть ли модуль в моем адресном простанстве или нет — IsLoaded корректно ответить не может.

А почему он должен отвечать на этот вопрос? Может, это означает, что функция с подобной семантикой лишняя в интерфейсе данного класса?
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[24]: Пописал на С++... долго думал :)
От: Pavel Dvorkin Россия  
Дата: 17.11.05 07:08
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Смотря, что понимать под "управлять". Если речь идет о гарантиях неизменности объекта мимо интерфейса класса-обертки, то я не вижу, откуда это следует, почему это должно быть так. Более того, обычно для объектов, "управляющих" внешними по отношению к программе сущностями, это не так: файлы, сокеты, соединения с базами данных и т.п.


ПК>А почему он должен отвечать на этот вопрос? Может, это означает, что функция с подобной семантикой лишняя в интерфейсе данного класса?


Я думаю, дискууссию стоит прекратить. Я вполне согласен с твоей точкой зрения — в рамках твоей парадигмы ты совершенно прав. В рамках иной парадигмы (полный контроль) — ИМХО прав я. Вопрос, таким образом, сводится к тому, какая парадигма правильная . А это от задачи зависит.
With best regards
Pavel Dvorkin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.