Re[17]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 18:04
Оценка:
Здравствуйте, FR, Вы писали:

FR>Это ни проблема языка, ни C# ни java, ни помогут в решении подобных проблем, если фирме выгоднее выпускать глючные програмы, чем доводить их до ума, то они и будут выпускатся. И вообще очень часто вместо вылета программа написанная на языке с GC неправильно работает после критической ошибки.


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

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

В итоге даже опер-сорс-продукты вроде Януса, разрабатываемые очень разноскильной публикой, работают намного устойчевее чем коммерческие продукты, хотя денег и сил на их обезбаживание практически не тратится. А 90% тормозов и багов вылезающих в Янусе являются проявлением используемых в нем анменеджед-контролов вроде редактора или броузера.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 18:04
Оценка:
Здравствуйте, FR, Вы писали:

FR>На java (C#) значит выпускаются только безглючные программы?


Ну, объем глюков меньше в разы. И критичных просто мизер. В общем, при сравнимом скиле программистов разница на порядки.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 18:04
Оценка: -2
Здравствуйте, FR, Вы писали:

FR>А я ни разу ни видел на C++ программу которая посылает систему в такой swap что приходится снимать задачу из-за того что GC не хватило памяти


Ну, к примеру, тормоза при загрузке в Янусе связаны с использованием MS Access, который написан на С++.

А вообще я знаю море продуктов написанных на плюсах и ждрущих память очень неплохо. Да и не видел как дотнентый софт так уж "посылал в своп". Занимает памяти он больше (если она есть), но такова стратегия работы ЖЦ. Да и какой смысл экономить если на борту сотни мег неиспользуемой памяти?

То что у дотнетных процессов при создании занимается сразу по нескольку мег памяти — это ровным счетом ничего не значит. То что мы наблюдаем — это не реальная память, а виртуальная и так называемый ворксет. Можешь провести вот такой простенький эксперемент:
using System;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
    class Class1
    {
        [DllImport("kernel32.dll")]
        public static extern bool SetProcessWorkingSetSize(IntPtr handle,
        int minimumWorkingSetSize, int maximumWorkingSetSize);

        static void Main(string[] args)
        {
            Console.WriteLine("Before");
            Console.ReadLine();

            SetProcessWorkingSetSize(
                System.Diagnostics.Process.GetCurrentProcess().Handle,
                -1, -1);

            byte[] array = new byte[1000];

            Console.WriteLine("After");
            Console.ReadLine();
        }
    }
}

после второго нажатия объем памяти приложения станет около 540 кил.

Приблизительно тоже самое делает Виндовс при минимизации окна приложения.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 18:04
Оценка:
Здравствуйте, FR, Вы писали:

FR>Ну и что я видел несколько лет назад как люди с JBuilder мучались, судя по звукам он у них каждые полчаса дох


Вот это явная неправда. Я не разу не видел, чтобы JBuilder вылетал. Он тормозил при отрисовке, так как весь гуи был написан на Свинге, но это проблема технологии. Возми, к примеру, Эклипс или ИДЕЮ. Они и шустры и стабильны.

Кстати, новая среда для C++ BuilderX написана на Яве правда я не знаю каков процент кода борланда, а коков потыренный. Но это уже не важно. Важна сама тенденция.

FR>И вообще не надо представлять тут языки с GC как панацею, не так далеко они и ушли в плане безглючности от плюсов или дельфи.


Очень далеко! Неимоврено, бы сказал. Причем ЖЦ тут в общем-то и не причем. Вернее причем, но это процентов 10. Остальное дизайн языков и заслуга рантаймов.

Например, создаем ГУИевое приложение, добавляем на форму две кнопки и в их обработчиках пишем:
        int _a;
        int _b;

        private void button1_Click(object sender, EventArgs e)
        {
            _a = 0;
            _b = 123 / _a;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Form1 frm = null;
            frm.Left++;
        }


запускаем не под отладчиком (хоть в релизе) и жмем на кнопки... Вылетает окошко с сообщением об ошибке. Жмем на продолжить и приложение как ни в чем нибывало работает дальше. Причем это во общем-то мелочи. Главное, что впринципе невозоможно не используя анменеджед- или ансэйф-код попртить память и получить многочасовую (а то и многонедельную) отладку.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 18:04
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здесь все ошибки со времён голого С. Я не говрю, что в С++ ошибок меньше, я говорю, Java/.Net не абсолютно безопасная среда.


А, ну, да. Ты конечно строки и массивы никогда в стэке не занимал. А код для виндовс пишется без пременения МФЦ и АТЛ на сквозь пропитанных этим делом...
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 18:04
Оценка:
Здравствуйте, adontz, Вы писали:

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


VD>>Точно на С то тоже ламеры пишут. Ну, найди бокрепорт любого С++-ного софта сравним количество мемориликов и неинициализированных переменных с Янусом.


A>А где гарантия что багрепорты будут одинакового качества?


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

Больше проблем с памятью или ресурсами небыло. И это при том, что порой глядя на код думашь, что он вообще работать не должен (настолько он коряв).
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 26.12.04 18:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Больше проблем с памятью или ресурсами небыло. И это при том, что порой глядя на код думашь, что он вообще работать не должен (настолько он коряв).


Зато были проблемы с неуникодностью Scintilla, с IE неосвобождающим память... Узкое у тебя видение проблемы.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[23]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 26.12.04 18:48
Оценка:
Здравствуйте, VladD2, Вы писали:

A>>Здесь все ошибки со времён голого С. Я не говрю, что в С++ ошибок меньше, я говорю, Java/.Net не абсолютно безопасная среда.


VD>А, ну, да. Ты конечно строки и массивы никогда в стэке не занимал.

Занимал.

VD>А код для виндовс пишется без пременения МФЦ и АТЛ на сквозь пропитанных этим делом...

Нет MFC И ATL используются довольно часто, но они довольно хорошо уже отлажены.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[18]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 26.12.04 18:54
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Кое-кто переходит. Слава богу МС уже немало кода переводит на менеджед-остнову. Другие тоже надеюсь со времением перейдут.


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

A>>А знаешь как ECC Registred память работает? Если считалось ошибочное значение, то оно считывается заново. Может это просто тенденция IT, которая лично тебе чужда?


VD>А какое отношение ECC имеет к вылетающему софту?


Один и тот же способ проблемы решения сбоев.

VD>А ведь софт который сбоит крайне редко все же есть. У того же МС есть MSSQL который я вообще не видел чтобы сбол. Значит неглючный софт таки писать можно и дело только в цене? Так какого хрена не применить средство понижающее цену и повышающее качество, чтобы уменьшить вылеты до незаметных глазу размеров?


Потому что у этого средства помимо удешевления есть и недостатки.

VD>Славо богу похоже с Вордом проблема скоро решится. ИнДизайн еще видимо лет 5 будет глючить.


Зато он есть и на Маках. Тебе не говорили, что PC-версия не является основной? Ведь если кто-то портирует Янус под МОНО, тебе будет плевать на эту версию — Win-Версию отладить важнее. Так что In-Design не показатель.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[34]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 19:32
Оценка:
Здравствуйте, Alxndr, Вы писали:

A>Влад, пара вопросов:

A>1) Ты видишь в этой тенденции что-то плохое? На ОО-дизайне разве свет клином сошелся?(задаю этот вопрос и плачу, поскольку сам горячий сторонник ОО-дизайна )

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

Ну, а что касается дизайна. Если бы отсуствие ОО-дизайна компенсировалось бы наличием функционального дизайна или какого-бы то нибыло другого, то еще пол беды, но вместо ОО-дизайно зачастую присуствуют хакерские оптимизации и "закладывание" на разные аспекты реализации.

A>2) Что значит "мифические" парадигмы? За этими словами есть что-то кроме твоей личной неприязни?


Это значит, что С++ как следует поддерживает только две парадигмы — ООП и структурное программирование. Функциональную парадигму он поддерживает хуже чем C# или какй-нибудь Питон. Если только считать поддержкой ФП такие вещи как рекурсивные шаблоны с ручной специализацией. Но это изврат для метапрограммирования. Код так не попишешь. А парадигмы вроде АОП и т.п. ему просто не знакомы.

A>3) Влад, а разве люди всерьез подсевшие на диезы, не начинают с большой радостью рассуждать о весьма конкретных парадигмах программирования, отличных от объектно-ориентированного? Например, о компоненто-ориентированном программировании?


По-моему, компонентный подход — это не парадигма как таковая. Это просто доведенный до ума ООП.

Да и вопрос в чем... Я могу на шарпе писать и в функциональном стиле (чуть менее убого чем на С++, но все же убого). Я могу изобразить кое что из АОП. Я могу создавать компоненты, но я ни разу не слышал чтобы кто-то говорил о том, что главное в Шарпе — это возможность писать в разных стилях.

Наоборот я вижу, что авторы языка предосталяя некоторые возможности все же акцентировали именно ОО-возможности и всячески избегают разных хаков. Собственно этот постулат вынесен в первые строки целей языка в его спецификации:

* C# is intended to be a simple, modern, general-purpose, object-oriented programming language.


Это же я вижу и в развитии языка. Дженерики и анонимные методы прекрасно вписываются в концеции ООП.

Я вижу только две серьезные проблемы в этом языке:
1. Отсуствие средств подключения реализации (нечто вроде минсинов или упрощенного множественного наследования).
2. Отсуствие средств метапрограммирования.

Обе проблемы закрываются R#-ом. Так что...
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[31]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 19:32
Оценка:
Здравствуйте, Alxndr, Вы писали:

A>Не вижу преимуществ С применительно к данному случаю


Дык если С++ испоьзовать как С, то конечно разницы нет. А елси начать использовать ООП и выкрутасы на шаблонах, то объем сжираемой памяти точно увеличится. Тут уже нужно скорее говорить о стиле С.

A>Я считаю, что для некритичных с памяти/скорости приложений и/или для программистов, которые считают, что надежность в С++ немыслима без виртуальности деструктора по умолчанию и т.п. подобных фенечек, C# — лучший выбор.


C# лучший выбор для пользователя. А большинство программистов делают выбор исключительно на базе своих привычек и догм.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[37]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 19:32
Оценка: :)
Здравствуйте, Волк-Призрак, Вы писали:

ВП>Можно я ламерский вопрос задам? Что такое Flyweight?


Действительно ламерский. Но не в том смысле что стыдно этого не знать, а в том, что подобные вещи в гугле за пол минуты найти можно: Flyweight GOF.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[37]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.04 20:02
Оценка: +1
Здравствуйте, Sergey, Вы писали:

S>На жабе/шарпе

S>выбирать, конечно, не приходится, там объектов без оверхеда не бывает.

Ты наверное забыл, но в шарпе еще и структуры есть.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[23]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.04 20:02
Оценка:
Здравствуйте, adontz, Вы писали:

A>Зато были проблемы с неуникодностью Scintilla,


Написанной на C++

A> с IE неосвобождающим память...


Написанным на С или С++, точно не знаю.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[35]: Чем становится C++?
От: Павел Кузнецов  
Дата: 26.12.04 20:08
Оценка: 2 (1) +1
VladD2,

> A> 1) Ты видишь в этой тенденции что-то плохое? На ОО-дизайне разве свет клином сошелся?(задаю этот вопрос и плачу, поскольку сам горячий сторонник ОО-дизайна )


> Если бы мы говорили о каком-нибудь С, Хаскле, Клосе и т.п., то возможно ОО-дизайн действительно был бы не причем. Но в языке который авторами назван ОО <...>


Это утверждение не соответствует действительности. Авторами язык C++ назван поддерживающим много парадигм, в том числе и ООП. В частности, у Страуструпа даже статья специальная есть, Why C++ isn't just an Object-Oriented Programming Language.

> A>2) Что значит "мифические" парадигмы? За этими словами есть что-то кроме твоей личной неприязни?


> Это значит, что С++ как следует поддерживает только две парадигмы — ООП и структурное программирование.


Как минимум, прочитать статью, на которую дана ссылка чуть выше.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[23]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 20:16
Оценка:
Здравствуйте, adontz, Вы писали:

A>Зато были проблемы с неуникодностью Scintilla, с IE неосвобождающим память... Узкое у тебя видение проблемы.


Начем написаны эти продукты?
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 20:16
Оценка:
Здравствуйте, adontz, Вы писали:

VD>>А, ну, да. Ты конечно строки и массивы никогда в стэке не занимал.

A>Занимал.

Ну, значит свою лепту в буфер адеран внес. Как и я.

VD>>А код для виндовс пишется без пременения МФЦ и АТЛ на сквозь пропитанных этим делом...

A>Нет MFC И ATL используются довольно часто, но они довольно хорошо уже отлажены.

Если доведется запустить АТЛ-ьные проекты на новых АМД с включенной защитой от переполнения буферов и т.п. расскажи ощущения... посмеемся вместе.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 20:16
Оценка:
Здравствуйте, adontz, Вы писали:

A>А я вот совмневаюсь. Тот же Adobe пишет свой редактор под несколько платформ и думаю им лучше использовать такой язык, чтоб большую часть кода можно было перекомпилировать, а не писать заново.


Ява? Моно?

VD>>А какое отношение ECC имеет к вылетающему софту?


A>Один и тот же способ проблемы решения сбоев.


Ничего похожего. Отлов битой памяти и проверки четности чтения — это совсем разные вещи.

A>Потому что у этого средства помимо удешевления есть и недостатки.


В основном придуманные.

A>Зато он есть и на Маках.


А вот Маки мне фиолетовы. К тому же на Маках есть Моно и Ява.

A> Тебе не говорили, что PC-версия не является основной?


Нет. Говорили обратное. Вот уже 5 лет как Адобе основными версиями считает Виндвс-версии. И знаешь почему? Потому что основные продажи под Виндовс.

A> Ведь если кто-то портирует Янус под МОНО, тебе будет плевать на эту версию — Win-Версию отладить важнее. Так что In-Design не показатель.


Ну, вот пусть плюет на Маки.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[38]: Чем становится C++?
От: Павел Кузнецов  
Дата: 26.12.04 20:25
Оценка:
AndrewVK,

> S>На жабе/шарпе выбирать, конечно, не приходится, там объектов без оверхеда не бывает.


> Ты наверное забыл, но в шарпе еще и структуры есть.


Ага, есть. Только наследоваться от них нельзя. Кстати, интересно, а можно ли в C# передавать эти структуры в функции по ссылке, так чтобы их можно было в функциях модифицировать (соответственно, боксинг не подходит)?
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[23]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.04 20:33
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Возми, к примеру, Эклипс или ИДЕЮ. Они и шустры и стабильны.


Влад, ты не сильно удивишься, если я скажу что IDEA написана на swing?
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.