Re[16]: Пописал на С++... долго думал :)
От: IT Россия linq2db.com
Дата: 03.11.05 03:10
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Иначе генерировать IL ручками становится не просто.


Да уж, мрачное зрелище. Вот лучше смотри пример HelloWorld из BLToolkit

//@ example:
//@ emit Emit
using System;
using NUnit.Framework;
using BLToolkit.Reflection.Emit;

namespace Examples.Reflection.Emit
{
    [TestFixture]
    public class HelloWorld
    {
        public interface IHello
        {
            void SayHello();
        }

        [Test]
        public void Test()
        {
            EmitHelper emit = new AssemblyBuilderHelper("HelloWorld.dll")
                .DefineType  ("Hello", typeof(object), typeof(IHello))
                .DefineMethod(typeof(IHello).GetMethod("SayHello"))
                .Emitter;

            emit
                .ldstr("Hello, World!")
                .call(typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) }))
                .ret()
                ;

            Type type = emit.Method.Type.Create();

            IHello hello = (IHello)Activator.CreateInstance(type);

            hello.SayHello();
        }
    }
}

... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Пописал на С++... долго думал :)
От: _Winnie Россия C++.freerun
Дата: 03.11.05 07:10
Оценка:
Здравствуйте, tarkil, Вы писали:

T>Здравствуйте, eao197, Вы писали:


E>>Может быть то, что принимают за синдром высшей кастовости или снобизм на самом деле попытка сохранить себя как класс "С++ программистов"?


T>А не торопишься ли ты C++ хоронить? Вроде рано. Снижение популярности имеется, но до критического порога ещё ой как далеко.


T>Ладно, фигня это всё. Лучше скажите (вопрос ко всем), видел кто-нибудь реализацию на плюсах удобных типобезопасных форматных строк в стиле .NET'овского String.Format? А то есть мысль сваять аналог самому. Удобнейшая штука ведь.


Ну, есть boost::format. Тормоз дикий, отстаёт от даже .NET String.Format.
Ждите Winnie Format Library!
Скоро-скоро!
Только разберусь с ошибками округления в scientific формате
Правильно работающая программа — просто частный случай Undefined Behavior
Re[3]: Пописал на С++... долго думал :)
От: Hydrogen  
Дата: 03.11.05 07:24
Оценка: 5 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, Hydrogen, Вы писали:


H>>Вообще говоря, в теории безомапсности компьютерных систем,

H>>AFAIK есть утверждение — "Более безопасная система менее удобна".

ГВ>А ты ничего не путаешь? AFAIK как раз наоборот: более безопасный путь использования системы должен быть более удобным.


http://www.connect.ru/article.asp?id=5543
http://www.pgpru.com/forum/viewtopic.php?p=2501&amp;sid=c609df24a159814ba561bad70fa34fff
http://school.ort.spb.ru/library/informatica/compmarket/security/proff.htm

http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/security.htm
"
Count the Cost

Security measures usually reduce convenience, especially for sophisticated users. Security can delay work and can create expensive administrative and educational overhead. Security can use significant computing resources and require dedicated hardware.
"
... << RSDN@Home 1.1.3 stable >>
Re[6]: Пописал на С++... долго думал :)
От: eugals Россия  
Дата: 03.11.05 09:03
Оценка:
Здравствуйте, tarkil, Вы писали:

T>Ладно, фигня это всё. Лучше скажите (вопрос ко всем), видел кто-нибудь реализацию на плюсах удобных типобезопасных форматных строк в стиле .NET'овского String.Format? А то есть мысль сваять аналог самому. Удобнейшая штука ведь.


ICU
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[4]: Пописал на С++... долго думал :)
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 03.11.05 14:25
Оценка:
Здравствуйте, Hydrogen, Вы писали:

H> http://www.connect.ru/article.asp?id=5543

H> http://www.pgpru.com/forum/viewtopic.php?p=2501&amp;sid=c609df24a159814ba561bad70fa34fff
H> http://school.ort.spb.ru/library/informatica/compmarket/security/proff.htm

Спасибо за линки, однако!

H> http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/security.htm

H>"
H>Count the Cost

H>Security measures usually reduce convenience, especially for sophisticated users. Security can delay work and can create expensive administrative and educational overhead. Security can use significant computing resources and require dedicated hardware.

H>"

+1 Как раз иллюстрация к тезису "с чего начинать": если начинать с незащищённой системы — то да, действительно, разграничение доступа принесёт дополнительные неудобства.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[24]: offtopic: расставим все точки в слове "Linux"
От: drx США  
Дата: 03.11.05 17:46
Оценка: 1 (1)
Здравствуйте, VladD2, Вы писали:

VD> Тоже самое было во всех ОС кроме Виндовс. Тот же Линукс получил ГУИ далеко не сразу


давайте соблюдать точность в высказываниях

Заглянем в книжечку Линус Торвальдс, Девид Даймонд "Just For Fun":

Обратим внимание, когда исходники linux стали публичными:

Эту дату я хорошо помню: 17 сентября 1991 года.
Не думаю, чтобы ту версию проверяло больше одного-двух человек. Для
этого нужно было возиться с установкой специального компилятора, выделить
пустой раздел, чтобы использовать его для загрузки, откомпилировать мое ядро
и запустить оболочку. А кроме запуска оболочки, делать было особенно нечего.
Можно было распечатать исходники -- всего 10 000 строк, т.е. меньше ста
страниц, если печатать мелким шрифтом.


далее:

Дело приняло новый оборот, когда я понял, что
Linux не просто игрушечная операционная система -- на нее всерьез стало
полагаться множество людей. Вначале многие ставили себе Linux, просто чтобы
поковыряться в ней, а вот когда ее стали использовать как настоящую
операционную систему, я понял, что несу ответственность, если что-то
случится. Или по крайней мере начал это понимать. (Я и сейчас чувствую такую
ответственность.) За 1992 год Linux превратилась из увлекательной игры в
важную составляющую жизни людей, стала источником их доходов, средством
ведения коммерции.
Скачок произошел весной 1992-го -- примерно через год после того, как я
занялся программой эмуляции терминала
, -- когда под Linux заработала первая
версия оконной системы X Window
. Это значило, что операционка может
поддерживать графический интерфейс пользователя и что пользователи могут
работать в нескольких окнах одновременно благодаря проекту X Window,
зародившемуся в Массачусетском технологическом институте. Это было
существенное новшество. Помню, за год до его внедрения я шутил на эту тему с
Ларсом: говорил, мол, когда-нибудь мы сможем запустить X Window, и все
заработает. Я совершенно не ожидал, что это произойдет так быстро. Хакер по
имени Орест Збровски сумел перенести X Window под Linux.



VD> и очень долгое время вообще являлся эксперементальной ОС (в начале вообще дипломным проектом).


From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Subject: Re: LINUX устарела
Date: 29 Jan 92 23:14:26 GMT
Organization: University of Helsinki


...
В сообщении <12595@star.cs.vu.nl> ast@cs.vu.nl (Энди Таненбаум)
пишет:
...
>Как большинство из вас знает, для меня MINIX --
>хобби, которым я занимаюсь по вечерам, когда мне
>надоедает писать книжки, а по CNN не показывают
>никаких войн, революций или парламентских
>слушаний. Моя основная работа -- преподавание и
>исследования в области операционных систем.

Re 1: Для вас minix хобби -- но ведь minix приносит доход, a linux
раздается бесплатно. Теперь по поводу хобби. Поместите minix в свободный
доступ, и одна из моих главных претензий к ней отпадет. Linux для меня в
большой степени хобби (серьезное хобби, самого высшего сорта). Я не беру за
нее денег, и она даже не является частью моей учебной работы. Я сделал ее в
свободное время на собственной машине.


Удачи!
Re[17]: Пописал на С++... долго думал :)
От: vdimas Россия  
Дата: 03.11.05 20:27
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, vdimas, Вы писали:


V>>Пиши этот код в *.С — файлах, зачем тебе С++. Если у тебя такие задачи, то тебе будет еще проще писать их на С, там меньшая строгость по использованию указателей, и все enum совместимы м/у собой, что позволяет неплохо создавать свои удобные подмножества чужих API, так как и объединять различные API без кучи типизированных оболочек, как в С++.


FR>А си просто хуже подходит для этих задач. Например я подобные вещи пишу на C++ используя вовсю шаблоны и практически не используя классы (в смысле ООП, как АТД используются), получается и более высокоуровнево и быстрее чем си за счет агресивного инлайнинга и специализаций. Так что думаю не стоит загонять C++ только в свои рамки.


опять повторю про EC++, очень рекомендую.
Re[14]: Пописал на С++... долго думал :)
От: Pavel Dvorkin Россия  
Дата: 08.11.05 07:27
Оценка:
Здравствуйте, srggal, Вы писали:

Забыл ответить

PD>>Нет, не пойдет в качестве аргумента. Этот экземпляр класса я сам создал в моей программе, если я дважды его экземпляр удалять буду — я и виноват. А вот хендлами оперирую, увы, не только я, и это мне совсем неподконтрольно.


S>А CreateFile — не Вы делаете в своей программе ?


CreateFile — я. Но тут вот такой нюанс

Если дважды сделать CreateFile с одним и тем же файлом — получишь 2 разных хендла. Здесь проблем нет.

А вот если дважды вызвать LoadLibrary для одной и той же библиотеки, то получишь один и тот же HMODULE, только счетчик использований увеличится до 2 и потребуется сделать 2 вызова FreeLibrary. Это же относится к ивентам, семафорам и т.д.

А теперь представь себе class CModule. Конструктор делает LoadLibrary, деструктор — FreeLibrary, все в порядке. А тут вдруг из какого-то другого места (из прилинкованного кода статической библиотеки третьей фирмы) кто-то возьмет да и сделает LoadLibrary минуя, естественно, твой CModule. Потом ты вызовешь деструктор CModule и будешь думать, что библиотека выгружена, а она сидит себе в памяти...
With best regards
Pavel Dvorkin
Re[15]: Пописал на С++... долго думал :)
От: WolfHound  
Дата: 08.11.05 08:21
Оценка: +3
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А теперь представь себе class CModule. Конструктор делает LoadLibrary, деструктор — FreeLibrary, все в порядке. А тут вдруг из какого-то другого места (из прилинкованного кода статической библиотеки третьей фирмы) кто-то возьмет да и сделает LoadLibrary минуя, естественно, твой CModule. Потом ты вызовешь деструктор CModule и будешь думать, что библиотека выгружена, а она сидит себе в памяти...

А в чем проблема? Если библиотека нужна другому модулю то пусть себе сидит. Ведь не просто так же она сидит.
Гораздо хуже если она будет выгружена пока она еще комуто нужна.

А если тебе нужен полный контроль над кодом то нефиг библиотеки третьих фирм использовать.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[16]: Пописал на С++... долго думал :)
От: vdimas Россия  
Дата: 08.11.05 14:00
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Обнуления чего? Да и зачем? Пусть размером комманд занимается тот код который пишет сборку.

WH>А сейчас приходится делать таких монстриков

WH>И так для всех комманд IL.


Да сколько там этих команд-то

WH>Иначе генерировать IL ручками становится не просто.

WH>Хотя даже такие монстрики не решают проблему условных и безусловных переходов.
WH>Для того чтобы это решить видимо нужно городить свою систему комманд по которой потом строить IL.

+1

И это справедливо не только для .Net VM
Посмотри на аналогичное у IT в RFD, не совсем явно выражено, но близко. Еще тут http://iiop-net.sourceforge.net/ так же не совсем явно выраженные намерения (при организации кодогенерации), но сути не меняет.
Re[13]: Пописал на С++... долго думал :)
От: vdimas Россия  
Дата: 08.11.05 14:05
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, vdimas, Вы писали:


V>>Обычное дело в системе команд — наиболее частоиспользуемые вещи должны иметь наиболее короткую кодировку.


IT>Я вовсе не против того, чтобы частоиспользуемые вещи были более короткими. Я против того, чтобы в данном случае называть их "выразительными и удобными". MSIL невыразителен и неудобен. Он делался для компиляторов, а не для человеков.


Если абстрагироваться от Ldloc_0 (_1, _2, _S) и прочей аналогичной разновидности чуть более высокоуровневым генератором — то вполне.

IT>ЗЫ. Выразительным и удобным для своего времени был дековский ассемблер.


+1
Re[17]: Пописал на С++... долго думал :)
От: WolfHound  
Дата: 08.11.05 15:04
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Да сколько там этих команд-то

216.
Если несчитать короткие версии то 185.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: Jazelle
От: SilverCloud Россия http://rodonist.wordpress.com
Дата: 08.11.05 18:00
Оценка: 24 (1)
S>Дык в целях расширения кругозора, моего естественно, дайте линк на железку реализующую аппаратную JVM ( если так можно выразаиться )

сабж
Re[16]: Пописал на С++... долго думал :)
От: vdimas Россия  
Дата: 09.11.05 07:38
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Дык, речь и идет о том, что расширенный набор команд могли бы порождать райтеры пишушие код в поток.


Похоже, они оставили эту фичу как домашнее задание, а IL-генератор тупо эммитит подаваемые опкоды, что от него и требуется.
Re[18]: Пописал на С++... долго думал :)
От: FR  
Дата: 09.11.05 10:14
Оценка:
Здравствуйте, vdimas, Вы писали:

FR>>А си просто хуже подходит для этих задач. Например я подобные вещи пишу на C++ используя вовсю шаблоны и практически не используя классы (в смысле ООП, как АТД используются), получается и более высокоуровнево и быстрее чем си за счет агресивного инлайнинга и специализаций. Так что думаю не стоит загонять C++ только в свои рамки.


V>опять повторю про EC++, очень рекомендую.


Не вижу смысла использовать урезанный вариант, когда могу нормально работать с полноценным.
Re[18]: Пописал на С++... долго думал :)
От: vdimas Россия  
Дата: 09.11.05 10:30
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, vdimas, Вы писали:


V>>Да сколько там этих команд-то

WH>216.
WH>Если несчитать короткие версии то 185.

если так же объединить разновидности по ширине операнда (смысл операции тот же), то там чуть больше 90 получается.
Re[16]: Пописал на С++... долго думал :)
От: Pavel Dvorkin Россия  
Дата: 09.11.05 10:41
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>А в чем проблема? Если библиотека нужна другому модулю то пусть себе сидит. Ведь не просто так же она сидит.

WH>Гораздо хуже если она будет выгружена пока она еще комуто нужна.

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

WH>А если тебе нужен полный контроль над кодом то нефиг библиотеки третьих фирм использовать.


Хороший совет . Например, я динамически подгружу некоторую библиотеку от Микрософт, а она что-то еще вздумает загрузить. Или, скажем, библиотека третьей фирмы, не будучи уверен, что я загрузил comctl32.dll (мог ведь и не загрузить!), на всякий случай ее загрузит (вызовет InitCommonControls), да еще и неявно. Как тут быть ?
With best regards
Pavel Dvorkin
Re[17]: Пописал на С++... долго думал :)
От: Павел Кузнецов  
Дата: 09.11.05 13:47
Оценка: +4
Pavel Dvorkin,

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


Не согласен. "Внутренним состоянием" данного класса является гарантия, что на каждый вызов LoadLibrary, сделанный через этот класс, последует FreeLibrary. "Общих" гарантий относительно использования LoadLibrary/FreeLibrary во всей программе класс не дает.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[7]: Пописал на С++... долго думал :)
От: Stoune  
Дата: 10.11.05 01:00
Оценка:
Здравствуйте, eugals, Вы писали:

E>Здравствуйте, tarkil, Вы писали:


T>>Ладно, фигня это всё. Лучше скажите (вопрос ко всем), видел кто-нибудь реализацию на плюсах удобных типобезопасных форматных строк в стиле .NET'овского String.Format? А то есть мысль сваять аналог самому. Удобнейшая штука ведь.


E>ICU


Мощная штука, кстати уже к регекспу из буста прикрутили, а к ксерксу уже давно. Вот только что меня раздражает в С++ что в каждой библиотеке свои порядки(именование, сообщение об ошыбках) в результате чтобы свести всё это в одну работающую програму нужно нетривиальное мастерство и иногда большая куча кода для всяких враперов, фасадов чем сама включеная библиотека.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[3]: Jazelle
От: Stoune  
Дата: 10.11.05 01:00
Оценка:
Здравствуйте, SilverCloud, Вы писали:

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


SC>сабж


Это конечно хорошо, но ещё б рыночную долю этого продукта бы узнать?
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.