Re[9]: преимущества неуправляемого С++
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.08.04 23:36
Оценка:
Здравствуйте, adontz, Вы писали:

A>То есть статья IT Сжизнью ничего общего не имеет. Так и запишем.


Цитату, плиз, где он написал о сложности работы с ресурсами в дотнете.

Ну, и он тут не далеко. Можно спросить его мнение лично.
A>IT Изучал.Во всяком случае он так утверждает.


AVK>>Расскажи о своей практике.


A>Файлы открывать надо? Всё, этого достаточно.


Цитату, плиз.

A>Мегабайт 50.


Да? И у тебя такая система есть?

Весь компилятор С++ занимает на порядок меньше кода.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: преимущества неуправляемого С++
От: mdw  
Дата: 14.08.04 00:16
Оценка:
Здравствуйте, S.Yu.Gubanov,

почикано излишнее цитирование — Odi$$ey

А драйвера всех видов и мастей, это тоже не Windows? Произвольно за/выгружаемые, написанные разными производителями, не имевшие представления друг о друге, работающие в многоуровневой связке (например файловая система: от драйвера накопителя и до самых до верхов)

Простите но Ваша убежденность в необходимости сборщика мусора, немного похожа на релегиозную
Re[9]: преимущества неуправляемого С++
От: mdw  
Дата: 14.08.04 00:28
Оценка:
Здравствуйте, mdw, Вы писали:

почикано излишнее цитирование — Odi$$ey

mdw>Простите но Ваша убежденность в необходимости сборщика мусора, немного похожа на релИгиозную
Re[10]: преимущества неуправляемого С++
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.08.04 00:50
Оценка:
Здравствуйте, VladD2, Вы писали:

A>>Это от бескультурия.

VD>Точно. И у тебя оново коенечно небыло.

Было. Ноя быстро переучился.

A>> Удачно подобрав умный указатель словить утечку памяти довольно сложно.

VD>А не удачно?

А их по сути всего триа auto_ptr, shared_ptr и com_ptr. перепутать их довольно сложно

VD>А у всех так. Вон только ЛиСаус (так и тяне сказать Брюс ) имеет 20-30 (гы сам разбор смешен) и не имеет ни единой утечки. Причем никогда их не ловил.


Я вообще не понял что ты хотел сказать

D>Любая обертка — это труд и правило которое нужно соблюдать.


using тоже правило.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[10]: преимущества неуправляемого С++
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.08.04 00:51
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А ты еще потри все библиотечки, генерируемые файлы и т.п. А посчитай только рабчие файлы.


Влад, я не дурак.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[10]: преимущества неуправляемого С++
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.08.04 00:53
Оценка:
Здравствуйте, VladD2, Вы писали:

A>>То есть статья IT Сжизнью ничего общего не имеет. Так и запишем.

VD>Цитату, плиз, где он написал о сложности работы с ресурсами в дотнете.

Я говорю не о сложности (где ты это углядел?) а о необходимости заплатки using.

A>>Файлы открывать надо? Всё, этого достаточно.

VD>Цитату, плиз.

Цитату на что? На то что в серьёзной программе естьработа с файлами?

VD>Да? И у тебя такая система есть?

VD>Весь компилятор С++ занимает на порядок меньше кода.

Настоящие ирокезы работают без IDE?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[10]: преимущества неуправляемого С++
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.04 01:11
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Тут не в объеме исходников дело и не в ГЦ, а в том как со строками обращаются. Дык вот если строки плодит только лексер, а парсер их только использует и не создает новых то тормозов не будет.


Дык, а плодить лишних сущностей еще какой-то Кам говорил.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: преимущества неуправляемого С++
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.04 01:11
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


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

WH>Я однажды компилятор видел короче засасывается весь исходник в одну строку далие над этой строкой начинают измываться пока до байткода не доведет... Расказывать про скорость с которой это работало и про то как оно об ошибках сообщало я не буду... Но самое смешное что это работало


Честно говря я даже не знаю как это возможно. Древние компиляторы делали несколько прохдов (чтений исходников). Далалось это из-за нехвтки памяти. Это сйчас можно мегабайтный исходник заглотить и не чавкнуть. А тогда... Вот они тормозили копитально. Но как можно по строчке компилировать? Это только для разных командных интепретаторов возможно.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: преимущества неуправляемого С++
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.04 01:11
Оценка:
AVK>Да, действительно, using поздняя конструкция, однако ее достоинств это никак не умаляет и заплаткой она не является.

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

AVK>Тому свидетельство появление юзинга в VB.NET в 2.0 в практически таком же виде.


Помойму он имеет версию 8.0. Они не сбрасывали версии с шестой студии.

AVK>Что достаточно? Я вот проектик сейчас пишу, там уже наверное мег 15 кода, если не больше. Там и файлов дофига, а еще больше работы с БД, ресурсы которой тоже неуправляемые. И вот странно — что то я проблем с незакрытым файлом или соединением с БД не припомню. Совсем. Ни одного случая. Так что ты там говорил о практике?


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

AVK>А что, в природе бывают парсеры такого объема?


Даже компиляторов не бывает. 50 мег на шарпе — это уже ОС.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: преимущества неуправляемого С++
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.04 01:11
Оценка:
Здравствуйте, adontz, Вы писали:

A>Вопрос не в том как относится к чему-то IT, вопрос в тмо есть недостаток (пусть и не большой) или нету.


Не. Вопрос в том напрягает он или нет. Так вот не напрягает. Он тебе и говорит — чистая теория не подтверждающаяся на практике.


A>А что это? Это очень хорошая заплатка, но именно заплатка. Эта конструкция создана под внутреннее устройство GC и никакой логики не несёт.


Эта конструкция вообще к ЖЦ отношение не имеет. Она как раз позволяет автоматически контролировать все что вгодно кроме памяти.

A>Или несёт? Ведь в Си++ пишут

A>
A>for (int i = 0; i < 3; ++i)
A> {
A>  somestream mystream;
A>  mystream << "text"
A> }
A>

A>А в C# нужен using иначе на второй итерации можно получить облом.

Когда мне нужо было писать много файлов (сотни) я сделал два вот таких хэлпера:
public static string ReadFile(string fileName)
{
    using (StreamReader reader = new StreamReader(
                     fileName, Encoding.Unicode))
    {
        return reader.ReadToEnd();
    }
}

public static void WriteFile(string fileName, string code)
{
    using (StreamWriter writer = new StreamWriter(
                                                 fileName, false, Encoding.Unicode, code.Length))
                {
        writer.Write(code);
    }
}


И далее чтение файлов вглядит как атомарная операция при которой не мыслимо не закрыть что-то:
...
if (!File.Exists(fileName) || code != ReadFile(fileName))
{
    WriteFile(fileName, code);
    return true;
}


Благадаря особенностям ЖЦ такой подход еще и поднимает скорость.

С 90% ресурсов можно ралотать так же. Ну, а с 10 прийдется поработать по плотнее. Но все равно сложностей особых нет.

Не за гормаи Лонгхорн с его выньФС. В нем вместо файлов будут объекты (дотнытные) и контролировать файлы как таковый зачастую просто не прийдется. С БД и ГДИ проблем нет уже сейчас. Так что все ОК, и ты просто не проникся.

A>Я говорил о возможности ошибки, а не о наличии.


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

Я как м ты избегал исключений, делал обертки и т.п. Но вкусив Шарпа я понял, что 80% времени тратил на борьбу с ветренными мельницами.

A> Твой богатый опыт и знания могут даже незаметно для тебя, на интуитивном уровне, помогать избегать ошибок.


Так и есть. Есть куча ламеров которые просто не пользутся юсингами. Но поймать незакрытый файл очень просто. А вот проход по памяти или лик памяти порой очень сложно.

К сожалению приколы есть и в шарпе. Вот недавно в Янусе отловили багу которую повесил я. Дело втом, что я не отключался от событий при чтении данных (каждый раз подписываясь на них). В итоге количество обработчиков росло со временем и в конце концов приводило к тормозам (в 1.1. делегаты тормозят при больших количествах подключенных вызовов). Но эта была единственная серьезная оишибка связанная с забычивостью. На С++ таки трясся над подобными моментами.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: преимущества неуправляемого С++
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.08.04 01:21
Оценка:
Здравствуйте, VladD2, Вы писали:


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


Вот-вот! вот об этом я и хочу сказать!

Влад, я опять с тобой согласен! Может я болею чем-то?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[10]: преимущества неуправляемого С++
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.04 02:04
Оценка: +5
Здравствуйте, mdw, Вы писали:

mdw>>Простите но Ваша убежденность в необходимости сборщика мусора, немного похожа на релИгиозную


То есть тебе показалось мало оверквотинга в первом посте и ты решил увеличить его вдвое?
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: преимущества неуправляемого С++
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.04 02:04
Оценка:
Здравствуйте, adontz, Вы писали:

A>Я говорю не о сложности (где ты это углядел?) а о необходимости заплатки using.


Вот история:

A>>Человек которые не привык вовремя освобождать память с лёгкость забудет закрыть файл... и привет Никакой GC не спасёт от идиотского "The process cannot access the file "test.txt" because it is being used by another process." на пустом месте.
AVK>Рома, теоретизирования хорошо когда нет практики. А вот когда она есть, она показывает — таких проблем не возникает.

То есть статья IT Сжизнью ничего общего не имеет. Так и запишем.


A>Цитату на что? На то что в серьёзной программе естьработа с файлами?


Например, этого:

A>>using не от хорошей жизни появился. Вспомни первый Framework. Там код практически без using был написан за счёт try/finally. Выходил какой-то ужас.


VD>>Да? И у тебя такая система есть?

VD>>Весь компилятор С++ занимает на порядок меньше кода.

A>Настоящие ирокезы работают без IDE?


А IDE интегрирована в компилятор? Да и в студии тоже 50 метров вряд ли наберется.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: преимущества неуправляемого С++
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.04 02:04
Оценка:
Здравствуйте, adontz, Вы писали:

A>using тоже правило.


Да. Но их на порядок меньше. Хотя о чем это я? На два-три порядка.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: преимущества неуправляемого С++
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.04 02:11
Оценка:
Здравствуйте, adontz, Вы писали:

A>Вот-вот! вот об этом я и хочу сказать!


A>Влад, я опять с тобой согласен! Может я болею чем-то?


Поверь про простоту программирования я тебе тоже не вру.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: преимущества неуправляемого С++
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.08.04 02:11
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Да. Но их на порядок меньше. Хотя о чем это я? На два-три порядка.


Влад, если в C# 2 правила, то 3 порядка больше означает, что в Си++ 2000 правил. Ты не переборщил, не увлёкся? ИМХО правил 25 от силы наберётся.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[11]: преимущества неуправляемого С++
От: mdw  
Дата: 14.08.04 08:01
Оценка:
Здравствуйте, VladD2, Вы писали:

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


mdw>>>Простите но Ваша убежденность в необходимости сборщика мусора, немного похожа на релИгиозную


VD>То есть тебе показалось мало оверквотинга в первом посте и ты решил увеличить его вдвое?


Виноват.
В любом случае, спасибо за релевантный и вежливый коментарий.
А что движок позволяет редактировать собственные сообщения?
Re[13]: преимущества неуправляемого С++
От: WolfHound  
Дата: 14.08.04 08:07
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Честно говря я даже не знаю как это возможно.

Как!? Я бы объяснил да это правилами запрещено...
... << RSDN@Home 1.1.4 rev. 142 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[11]: преимущества неуправляемого С++
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.08.04 08:26
Оценка:
Здравствуйте, adontz, Вы писали:

AVK>>Имеет. Однако IT свою статью писал когда только экспериментировал с дотнетом и еще свежи были плюсовые воспоминания. Спроси у него сейчас, вполне возможно что он относится к данному недостатку GC уже не так критически.


A>Вопрос не в том как относится к чему-то IT, вопрос в тмо есть недостаток (пусть и не большой) или нету.


Недостатки есть у всего. Но по твоим словам этот недостаток нивелирует преимущества GC, а это совсем не так.

AVK>>Да, действительно, using поздняя конструкция, однако ее достоинств это никак не умаляет и заплаткой она не является.


A>А что это? Это очень хорошая заплатка, но именно заплатка. Эта конструкция создана под внутреннее устройство GC и никакой логики не несёт. Или несёт?


При чем тут несет/не несет? Это просто сокращенная запись try..finally..Dispose(). Чтобы писать меньше. Обычно такие вещи называют syntactic sugar, а не заплатка.

AVK>>Что достаточно? Я вот проектик сейчас пишу, там уже наверное мег 15 кода, если не больше. Там и файлов дофига, а еще больше работы с БД, ресурсы которой тоже неуправляемые. И вот странно — что то я проблем с незакрытым файлом или соединением с БД не припомню. Совсем. Ни одного случая. Так что ты там говорил о практике?


A>Я говорил о возможности ошибки, а не о наличии.


Нет уж, вот твои слова:

AVK>Не надо путать управляемые ресурсы, с которыми GC работает, и неуправляемые.

A>Однако на практике их путать приходится


Так что ты говорил о наличии

A> Твой богатый опыт и знания могут даже незаметно для тебя, на интуитивном уровне, помогать избегать ошибок.


Этот проект делаю не один я, а команда программистов разной квалификации. Проблем нет ни у кого.
... << RSDN@Home 1.1.4 beta 2 rev. 157>>
AVK Blog
Re[11]: преимущества неуправляемого С++
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.08.04 08:26
Оценка: +1
Здравствуйте, VladD2, Вы писали:


AVK>>Да, действительно, using поздняя конструкция, однако ее достоинств это никак не умаляет и заплаткой она не является.


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


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

AVK>>Тому свидетельство появление юзинга в VB.NET в 2.0 в практически таком же виде.


VD>Помойму он имеет версию 8.0. Они не сбрасывали версии с шестой студии.


Неважно.

AVK>>Что достаточно? Я вот проектик сейчас пишу, там уже наверное мег 15 кода, если не больше. Там и файлов дофига, а еще больше работы с БД, ресурсы которой тоже неуправляемые. И вот странно — что то я проблем с незакрытым файлом или соединением с БД не припомню. Совсем. Ни одного случая. Так что ты там говорил о практике?


VD>Дык БД вообще пулится.


Это не отменяет необходимости закрывать соединения явно.

AVK>>А что, в природе бывают парсеры такого объема?


VD>Даже компиляторов не бывает. 50 мег на шарпе — это уже ОС.


Зато как звучит
... << RSDN@Home 1.1.4 beta 2 rev. 157>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.