Чем становится C++?
От: uw  
Дата: 20.12.04 21:24
Оценка: 7 (2)

C++ is becoming a freak language that's parading its disfigurements in front of mildly disgusted but curiously fascinated audience.


Цитата вырезана из этой заметки
Мнение её автора может не совпадать с моим, но подумать есть о чем...


21.12.04 22:14: Перенесено из 'C/C++'
Re: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 20.12.04 21:32
Оценка: +3
Здравствуйте, uw, Вы писали:

Пока одни ругают Си++, другие на нём пишут и зарабатывают этим деньги.
Я не злой — пусть ругают...
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Чем становится C++?
От: uw  
Дата: 20.12.04 22:23
Оценка: +2
Здравствуйте, adontz, Вы писали:

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


A>Пока одни ругают Си++, другие на нём пишут и зарабатывают этим деньги.

A>Я не злой — пусть ругают...

Чего только люди не делают, зарабатывая этим деньги. А другие (не менее, а то и более добрые, а подчас являющиеся по совместительству теми другими, которые "другие" в процитированном сообщении) иногда этот процесс критикуют/ругают и иногда даже не для того, чтобы это явление искоренить, а как раз наоборот.
Re[3]: Чем становится C++?
От: Шахтер Интернет  
Дата: 21.12.04 00:29
Оценка:
Здравствуйте, uw, Вы писали:

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


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


A>>Пока одни ругают Си++, другие на нём пишут и зарабатывают этим деньги.

A>>Я не злой — пусть ругают...

uw>Чего только люди не делают, зарабатывая этим деньги. А другие (не менее, а то и более добрые, а подчас являющиеся по совместительству теми другими, которые "другие" в процитированном сообщении) иногда этот процесс критикуют/ругают и иногда даже не для того, чтобы это явление искоренить, а как раз наоборот.


Хотелось бы не общих слов, а конкретных примеров. А насчет трудностей парсинга -- чушь. В C++ не парсить трудно, а делать следующую фазу компиляции. Правила перегрузки, вывода аргументов шаблонов, рекурсивная инстантинация, неявные преобразования и.т.д.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[4]: Чем становится C++?
От: uw  
Дата: 21.12.04 01:19
Оценка: +1 -1
Здравствуйте, Шахтер, Вы писали:

Ш>Хотелось бы не общих слов, а конкретных примеров. А насчет трудностей парсинга -- чушь. В C++ не парсить трудно, а делать следующую фазу компиляции. Правила перегрузки, вывода аргументов шаблонов, рекурсивная инстантинация, неявные преобразования и.т.д.


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

Тем не менее трудность парсинга без сомнения один из основных минусов C++. Лично я не видел ни одного open-source парсера С++ (написанного на C++) и поддерживающего хотя бы парсинг на уровне сравнимом с наиболее адекватными компиляторами. До следующей фазы компиляции у их разработчиков руки просто не дошли. Основные усилия ушли на парсинг. В OpenC++ парсер рукописный recursive descent + backtracking, для Elsa был специально написан смешанный generalised lr / lr генератор парсеров, FOG парсит суперсет грамматики C++, а затем уже устраняет неоднозначности.
Вся эта работа была проделана ими зря !?

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

Самая главная проблема C++ — это нестройность всей концепции языка. В основе языка несколько фундаментальных правил и тысячи и тысячи исключений из этих правил. Я думаю язык бы серьезно выиграл даже от того, что появилось бы некое более чистое и красивое подмножество.
Re[5]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 21.12.04 01:27
Оценка: -4 :)
Здравствуйте, uw, Вы писали:

uw>А что касается всего тобой перечисленного самое трудное это увязать правила перегрузки и неявные преобразования, без которых можно и нужно было бы обойтись, равно как и от других артефактов оставшихся либо по наследству от C, либо превнесенных по ходу разработки.


Перегрузка это артефакт? Ну-ну....

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


Оно уже есть! Welcome to C# Developers!
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[5]: Чем становится C++?
От: Шахтер Интернет  
Дата: 21.12.04 01:35
Оценка: 9 (2) +4 -1
Здравствуйте, uw, Вы писали:

uw>Здравствуйте, Шахтер, Вы писали:


Ш>>Хотелось бы не общих слов, а конкретных примеров. А насчет трудностей парсинга -- чушь. В C++ не парсить трудно, а делать следующую фазу компиляции. Правила перегрузки, вывода аргументов шаблонов, рекурсивная инстантинация, неявные преобразования и.т.д.


uw>Про трудность парсинга я ничего не говорил. Ссылку на заметку я привел просто для того, чтобы указать первоисточник. На мой взгляд цитата весьма точно характеризует современное состояние и ближайшее будущее C++, как языка программирования, а не как инструмента промышленной разработки.


??? Я не понял, ты хочешь сказать, что С++ не применяется в промышленных разработках? А я на чем пишу?

uw>Тем не менее трудность парсинга без сомнения один из основных минусов C++. Лично я не видел ни одного open-source парсера С++ (написанного на C++) и поддерживающего хотя бы парсинг на уровне сравнимом с наиболее адекватными компиляторами. До следующей фазы компиляции у их разработчиков руки просто не дошли. Основные усилия ушли на парсинг. В OpenC++ парсер рукописный recursive descent + backtracking, для Elsa был специально написан смешанный generalised lr / lr генератор парсеров, FOG парсит суперсет грамматики C++, а затем уже устраняет неоднозначности.

uw>Вся эта работа была проделана ими зря !?

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

uw>А что касается всего тобой перечисленного самое трудное это увязать правила перегрузки и неявные преобразования, без которых можно и нужно было бы обойтись, равно как и от других артефактов оставшихся либо по наследству от C, либо превнесенных по ходу разработки.


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

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


НЕ вижу нестройности. То что появилось в С++ -- это не академические упражнения. Сила С++ в том, что он идет от сути вещей, а не от высосанных из пальца концепций.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[5]: Чем становится C++?
От: Шахтер Интернет  
Дата: 21.12.04 01:42
Оценка: 1 (1) +3 :)
Здравствуйте, uw, Вы писали:

Добавлю ещё немного. Ты не замечал, что код, написанный на шарпе пестрит явными преобразованиями типа? Почему, спрашивается? А потому, что чудес на свете не бывает. Невозможно спорить с сутью вещей. Природа всё равно победит. Всё, чего можно добиться, вводя разного рода ограничение, так это только того, что программисты будут не о задаче думать, а о том, как эти дурацкие ограничения обойти.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[6]: Чем становится C++?
От: uw  
Дата: 21.12.04 01:49
Оценка: +1
Здравствуйте, adontz, Вы писали:

A>Перегрузка это артефакт? Ну-ну....

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

A>Оно уже есть! Welcome to C# Developers!

Это не оно, это что-то совсем другое. Позволю себе процитировать авторитетное мнение Tim Sweeney с которым я абсолютно согласен:

Unfortunately, there isn't a clear successor to C++ lined up. Java and C# had their chance and it became clear that, while they simplify some aspects of development, they don't put us on the wholly new effort/reward curve the industry needs to be on.

В частности все "фичи" C# скорее относятся к runtime-environment, чем к языку. Скорее нужно обобщить и улучшить compile-time возможности языка, попутно выкинув из него все маргинальные элементы и основательно переработав синтаксис.
Re[7]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 21.12.04 01:58
Оценка:
Здравствуйте, uw, Вы писали:

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


A>>Перегрузка это артефакт? Ну-ну....

uw>Неявные преобразования, битовые поля — артефакты.

Про неявные преобразования уже Шахтёр ответил. А битовые поля.... Извини, но современный язык должен позволять взаимодействовать с окружающей средой.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[7]: Чем становится C++?
От: Шахтер Интернет  
Дата: 21.12.04 02:03
Оценка:
Здравствуйте, uw, Вы писали:

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


A>>Перегрузка это артефакт? Ну-ну....

uw>Неявные преобразования, битовые поля — артефакты.

Вот простейший пример.

int array[100];
int *p=...; // указывает на элемент array

size_t index=p-array; // в это строчке -- неявное преобразование


Если отменить неявные преобразования, то их придётся писать явно, как в этом и миллионе подобных случаев. Ни надёжности, ни читабельности это не прибавит, читабельности и лаконичности скорее отнимет. Оно надо?
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[6]: Чем становится C++?
От: Зверёк Харьковский  
Дата: 21.12.04 03:25
Оценка: +1
Здравствуйте, Шахтер, Вы писали:

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


Ш>НЕ вижу нестройности. То что появилось в С++ -- это не академические упражнения. Сила С++ в том, что он идет от сути вещей, а не от высосанных из пальца концепций.


На эту тему, имхо, великолепно высказался
Автор: Pavel Dvorkin
Дата: 02.11.04
один наш коллега.
сам слушаю и вам рекомендую: 12 — Крыша едет
FAQ — це мiй ай-кью!
Re[7]: Чем становится C++?
От: Шахтер Интернет  
Дата: 21.12.04 03:31
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Здравствуйте, Шахтер, Вы писали:


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


Ш>>НЕ вижу нестройности. То что появилось в С++ -- это не академические упражнения. Сила С++ в том, что он идет от сути вещей, а не от высосанных из пальца концепций.


ЗХ>На эту тему, имхо, великолепно высказался
Автор: Pavel Dvorkin
Дата: 02.11.04
один наш коллега.


Ага, точно. Я ему три балла поставил.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[8]: Чем становится C++?
От: Зверёк Харьковский  
Дата: 21.12.04 04:33
Оценка: +1
Здравствуйте, Шахтер, Вы писали:

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


Ш>>>НЕ вижу нестройности. То что появилось в С++ -- это не академические упражнения. Сила С++ в том, что он идет от сути вещей, а не от высосанных из пальца концепций.


ЗХ>>На эту тему, имхо, великолепно высказался
Автор: Pavel Dvorkin
Дата: 02.11.04
один наш коллега.


Ш>Ага, точно. Я ему три балла поставил.


Имху, топики такой эпической силы надо гдей-то сохранять. В статьях или факах...
Я, кстати, уже предлагал сделать коммунальный сборник цитат. Это никого не вдохновило. Пришлось ограничиться локальным rsdn-citata.txt
сам слушаю и вам рекомендую: Ундервуд — ФЕДЮНЧИК, ПОСМОТРИ "ТИТАНИК"
FAQ — це мiй ай-кью!
Re[7]: Чем становится C++?
От: mefrill Россия  
Дата: 21.12.04 06:38
Оценка: +1
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Здравствуйте, Шахтер, Вы писали:


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


Ш>>НЕ вижу нестройности. То что появилось в С++ -- это не академические упражнения. Сила С++ в том, что он идет от сути вещей, а не от высосанных из пальца концепций.


ЗХ>На эту тему, имхо, великолепно высказался
Автор: Pavel Dvorkin
Дата: 02.11.04
один наш коллега.


"Кабинетная" и "практическая" мудрости у меня ассоциируются с эволюционным и механистичным в природе. любая, даже самая стройная, придуманая человеком модель, в принципе всегда имеет жесткие соединения, это свойство человеческого ума. А, в процессе эволюции, выживает и вырастает гибкость. При всей кажущейся нестройности и противоречии нашим умственным построениям. Это еще раз доказывает, что познать Истину умом невозможно .
Re: Чем становится C++?
От: MaximE Великобритания  
Дата: 21.12.04 07:28
Оценка: +1 :)
uw wrote:

>

> C++ is becoming a freak language that's parading its disfigurements in front of mildly disgusted but curiously fascinated audience.

>
> Цитата вырезана из этой заметки
> Мнение её автора может не совпадать с моим, но подумать есть о чем...

Мне больше понравилось

Talk to me dirty! Tell me more about name resolution!




--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9 delta
Re: Чем становится C++?
От: Vamp Россия  
Дата: 21.12.04 09:41
Оценка:
Вот с чем соглашусь — это с ужасающим отсутствием поддержки средства для код-анализа. Задачу "найти все места в проекте, откуда вызывается не-константная функция member для класса class (предполагая, что практически в любом классе имеется пара const — не const версий memeber)" на платформе SUN решить так и не удалось, несмотря на все усилия.
Да здравствует мыло душистое и веревка пушистая.
Re: Чем становится C++?
От: Tom Россия http://www.RSDN.ru
Дата: 21.12.04 11:08
Оценка: 31 (2) +4 -1 :))) :))) :))) :))
Здравствуйте, uw, Вы писали:

uw>

uw>C++ is becoming a freak language that's parading its disfigurements in front of mildly disgusted but curiously fascinated audience.


uw>Цитата вырезана из этой заметки

uw>Мнение её автора может не совпадать с моим, но подумать есть о чем...

Чем больше будут ругать С++, тем меньше новичков будет на нём писать, и тем больше новичков будет писать на .NET, Java, и тем больше будет моя ЗП в связи с грядущим голодом С++ программистов.
Народная мудрось
всем все никому ничего(с).
Re[2]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.04 00:10
Оценка:
Здравствуйте, adontz, Вы писали:

A>Пока одни ругают Си++, другие на нём пишут и зарабатывают этим деньги.

A>Я не злой — пусть ругают...

Странный агрумент. Типа на других языках не пишут? Или за это деньги не платят?
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.04 00:10
Оценка: +1 -1
Здравствуйте, Шахтер, Вы писали:

Ш>А насчет трудностей парсинга -- чушь. В C++ не парсить трудно, а делать следующую фазу компиляции. Правила перегрузки, вывода аргументов шаблонов, рекурсивная инстантинация, неявные преобразования и.т.д.


Это тоже чушь. Трудно обрабатывать огромные объемы (причем как при парсинге, так и при семантическоой стадии). А те вызваны отсуствием модульности и особенностями препроцессора (в остном #include-ом).
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.04 00:10
Оценка:
Здравствуйте, uw, Вы писали:

uw>Лично я не видел ни одного open-source парсера С++ (написанного на C++) и поддерживающего хотя бы парсинг на уровне сравнимом с наиболее адекватными компиляторами.


А качество ОпенС++ ты хорошо изучил?

uw> До следующей фазы компиляции у их разработчиков руки просто не дошли. Основные усилия ушли на парсинг. В OpenC++ парсер рукописный recursive descent + backtracking,


Кстати, R# парсится почти так же, только вместо дебильного ручного парсинга мы взяли коку с возможностью ручного заглядывания вперд (вместо открутки).

uw> для Elsa


А можно ссылку?

uw>был специально написан смешанный generalised lr / lr генератор парсеров, FOG парсит суперсет грамматики C++, а затем уже устраняет неоднозначности.


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

uw>Вся эта работа была проделана ими зря !?


Возможно умнее было бы взять Antlr или CocoR. Правда парсить С++ на Шарпе, Яве или Обероне было бы просто унизительно.

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


+10

uw> равно как и от других артефактов оставшихся либо по наследству от C, либо превнесенных по ходу разработки.


+20

Именно поэтому я счел, что ОпенС++ хотя и отражает моим задачам, но не подходит. Ведь гнилая основа в итоге не может привести к проблемам.

uw>Самая главная проблема C++ — это нестройность всей концепции языка.


Я бы сказал, слишком большому количеству компромисов портящих язык.

uw> В основе языка несколько фундаментальных правил и тысячи и тысячи исключений из этих правил.


+1 Да уж. Я бы только назвал бы это не исключениями, а подробностями. Чтобы объяснить примитивную вещь вроде процесса вызва конструктора нужно рассказать столько интересного...

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


Согласен. Я вот таким считаю C#. Этот язык мне как раз и нравится, за концептуальную стройность. Минимум компромисов и лишних особенностей.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.04 00:10
Оценка:
Здравствуйте, adontz, Вы писали:

A>Оно уже есть! Welcome to C# Developers!


Тут трудно не согласиться. Но только после того как доделаем R#.

Так что вэлкам ту РШарп волд!
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.04 00:10
Оценка:
Здравствуйте, uw, Вы писали:

uw>В частности все "фичи" C# скорее относятся к runtime-environment, чем к языку.


Мягко говоря — это не так.

uw> Скорее нужно обобщить и улучшить compile-time возможности языка,


Вот тут согласен если под "compile-time возможности" понимать некую подсистему метапрограммирования.

uw> попутно выкинув из него все маргинальные элементы


Можно их список?

uw> и основательно переработав синтаксис.


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

A>Про неявные преобразования уже Шахтёр ответил.


Фигово ответил.

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


Кстати, я тоже не вижу каких-то недостатков в битовых полях. Иногда вещь очень удобная. Хотя и заменимая с помощью разных BitArray-ев и ООП. В общем, если с битами возиться не часто, то битовые поля не очень нужы. Но хуже от них не было бы.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.04 00:10
Оценка: -1
Здравствуйте, Шахтер, Вы писали:

Ш>Вот простейший пример.

Ш>
Ш>int array[100];
Ш>int *p=...; // указывает на элемент array
Ш>size_t index=p-array; // в это строчке -- неявное преобразование
Ш>


Ш>Если отменить неявные преобразования, ...

... и ввести в язык полноценное понятие массива как объекта первого класса...

Ш>то их придётся писать явно, как в этом и миллионе подобных случаев. Ни надёжности, ни читабельности это не прибавит, читабельности и лаконичности скорее отнимет. Оно надо?


... то к указателям вообще не прийдется притрагиваться в 99% случаев. Читабельность кода при этом улучшается во много раз.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.04 00:10
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>На эту тему, имхо, великолепно высказался
Автор: Pavel Dvorkin
Дата: 02.11.04
один наш коллега.


Особенно вот эта часть:

Безусловно, Java и C# намного элегантнее, но чтобы их
придумать, надо было пройти тернистый путь C++ , набить все шишки и
получить бесценный опыт.

... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.12.04 01:06
Оценка: 3 (1) +1
Здравствуйте, VladD2, Вы писали:

A>>Пока одни ругают Си++, другие на нём пишут и зарабатывают этим деньги.

A>>Я не злой — пусть ругают...
VD>Странный агрумент. Типа на других языках не пишут? Или за это деньги не платят?

Типа утверждать что все кто пишет на Си++ грубоко ошибаются в своём выборе, это на самом деле глубоко ошибаться самому.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[9]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.12.04 01:14
Оценка:
Здравствуйте, VladD2, Вы писали:

A>>Про неявные преобразования уже Шахтёр ответил.

VD>Фигово ответил.

ОК, вот тебе мой ответ.

class A
 {
 };

class B : public A
 {
 }


B * pb = new B;

A * pa = pb; // пытаются заменить на A * pa = (A *)pb;, что ИМХО никому не нужно

delete pb; // а то сейчас опять про меморилик вспомнят :)


Насчёт необходимости перегрузки функций/операторов объяснять или согласишься что она нужна?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[10]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.04 02:46
Оценка:
Здравствуйте, adontz, Вы писали:

A>ОК, вот тебе мой ответ.


A>
A>class A
A> {
A> };

A>class B : public A
A> {
A> }


A>B * pb = new B;

A>A * pa = pb; // пытаются заменить на A * pa = (A *)pb;, что ИМХО никому не нужно

A>delete pb; // а то сейчас опять про меморилик вспомнят :)
A>


A>Насчёт необходимости перегрузки функций/операторов объяснять или согласишься что она нужна?


Извини, но это тоже фиговый ответ. Приведение к базовому типу — это всегда безопасная операция, если язык спроектирован без компромисов. В подобных случаях ты и в том же C# обойдешся без явного приведения. Тут проблема в другом. Она в том, что С++ плюет на безопасность ради экономии 4 байт на объект. Ведь по хорошему такой код не должен был бы скомпилироваться без наличия виртуального деструктора.

А вот случай продемонстрированный Шахтером опасен именно сам. И подобные приведения по хорошому не только явно делать нельзя, но и вообще можно разрешать тольков специальном опасном контексте.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.04 02:46
Оценка:
Здравствуйте, adontz, Вы писали:

A>Типа утверждать что все кто пишет на Си++ грубоко ошибаются в своём выборе, это на самом деле глубоко ошибаться самому.


Думащь отвечать вопросом на вопрос — это нормально?
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.04 03:37
Оценка: 8 (1) :)
Здравствуйте, Tom, Вы писали:

Tom>Чем больше будут ругать С++, тем меньше новичков будет на нём писать, и тем больше новичков будет писать на .NET, Java, и тем больше будет моя ЗП в связи с грядущим голодом С++ программистов.


Вся зарплата уйдет Лисп-программистам.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Чем становится C++?
От: Дарней Россия  
Дата: 22.12.04 06:09
Оценка:
Здравствуйте, uw, Вы писали:


I talked to John Lykos at one of the conferences, and he told me that he would pay big bucks for a tool that would be able to tell what header files must be included in a given file.



Когда я занимался портированием прог, я мечтал о таком инструменте каждый день
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[11]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 22.12.04 08:36
Оценка: +4 -1
Здравствуйте, VladD2, Вы писали:

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


Это по какому это хорошему мне запрещается создавать неполиморфные иерархии без виртуального деструктора?
Вот спасибо...
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[12]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 22.12.04 09:05
Оценка:
Здравствуйте, jazzer, Вы писали:

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


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


J>Это по какому это хорошему мне запрещается создавать неполиморфные иерархии без виртуального деструктора?

J>Вот спасибо...

За минус спасибо, конечно, а аргументы будут?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[13]: Чем становится C++?
От: Дарней Россия  
Дата: 22.12.04 09:20
Оценка: +2 -1
Здравствуйте, jazzer, Вы писали:

J>За минус спасибо, конечно, а аргументы будут?


class A
 {
 };

class B : public A
 {
 }


B * pb = new B;

A * pa = pb; // пытаются заменить на A * pa = (A *)pb;, что ИМХО никому не нужно

delete pb; // а то сейчас опять про меморилик вспомнят :)


В один "прекрасный" день кто-нибудь другой (или ты сам) напишет delete pa; вместо delete pb;
В данном случае это маловероятно, конечно. А вот если создание объекта и его удаление будут разнесены в разные места проги — запросто.
Wish you happy debugging
Только не надо кричать "да я! да я никогда!" и бить себя пяткой в грудь. Все когда-нибудь ошибаются...
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[2]: Чем становится C++?
От: Quintanar Россия  
Дата: 22.12.04 09:45
Оценка: +2 :))) :)
Здравствуйте, Tom, Вы писали:

Tom>Чем больше будут ругать С++, тем меньше новичков будет на нём писать, и тем больше новичков будет писать на .NET, Java, и тем больше будет моя ЗП в связи с грядущим голодом С++ программистов.


Страшно подумать, какие деньги зашибают программисты на Cobol.
Re[14]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 22.12.04 10:13
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>В один "прекрасный" день кто-нибудь другой (или ты сам) напишет delete pa; вместо delete pb;

Д>В данном случае это маловероятно, конечно. А вот если создание объекта и его удаление будут разнесены в разные места проги — запросто.
Д>Wish you happy debugging ;)
Д>Только не надо кричать "да я! да я никогда!" и бить себя пяткой в грудь. Все когда-нибудь ошибаются... :xz:

Прошу прощения, но это аргумент из серии "Давайте запретим пользоваться указателями, потому что рано или поздно кто-нть поломает память, потому что все когда-нибудь ошибаются".

Я действительно никогда не писал ничего не удалял таким образом.
Единственный случай, когда ко мне приходит указатель на базовый класс, который я должен удалить — это когда этот указатель вернулся из фабрики полиморфных объектов, но в таком случае все и так полиморфное.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[15]: Чем становится C++?
От: Дарней Россия  
Дата: 22.12.04 10:25
Оценка: +1 -2
Здравствуйте, jazzer, Вы писали:

J>Прошу прощения, но это аргумент из серии "Давайте запретим пользоваться указателями, потому что рано или поздно кто-нть поломает память, потому что все когда-нибудь ошибаются".


Ты всё правильно понял

J>Я действительно никогда не писал ничего не удалял таким образом.


Если ты работаешь один, и работаешь постоянно над одним или несколькими проектами — тогда на это можно полагаться. Иначе — ошибки такого рода обязательно возникнут.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[15]: Чем становится C++?
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.12.04 10:37
Оценка: +2 -2
Здравствуйте, jazzer, Вы писали:
J>Прошу прощения, но это аргумент из серии "Давайте запретим пользоваться указателями, потому что рано или поздно кто-нть поломает память, потому что все когда-нибудь ошибаются".
А что, есть какие-то возражения против этого аргумента? Пока что среды, запретившие пользоваться указателями, демонстрируют сплошные преимущества и никаких недостатков.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[16]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 22.12.04 10:45
Оценка: +1 -1
Здравствуйте, Дарней, Вы писали:

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


J>>Прошу прощения, но это аргумент из серии "Давайте запретим пользоваться указателями, потому что рано или поздно кто-нть поломает память, потому что все когда-нибудь ошибаются".


Д>Ты всё правильно понял ;)


J>>Я действительно никогда не писал ничего не удалял таким образом.


Д>Если ты работаешь один, и работаешь постоянно над одним или несколькими проектами — тогда на это можно полагаться. Иначе — ошибки такого рода обязательно возникнут.


Последние лет 8 я работаю только в команде.
Такие вещи в реальной жизни случаются очень редко.
Потому что действительно, если ты разрабатываешь проект и глубоко его знаешь, ты знаешь, где у тебя какие указатели, где память выделяется и где и как ее можно уничтожать. Т.е. здесь проблемы нет.
Если же, наоборот, тебя бросают в горячий проект быстро сделать какой-либо фикс в существующем коде, то вероятность того, что тебе потребуется при таком фиксе удалить пришедший извне указатель при условии того, что в функции, которую ты меняешь, этот указатель не удаляется — 1%. И если мне вдруг (?) взбредет в голову, что я в функции должен удалить указатель — уж на этот случай я приложу все усилия для выяснения происхождения этого указателя. А то ведь так можно и удалить статическую или стековую переменную, не то что деструктор не проверить...
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[17]: Чем становится C++?
От: Дарней Россия  
Дата: 22.12.04 11:05
Оценка:
Здравствуйте, jazzer, Вы писали:

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


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

J>Если же, наоборот, тебя бросают в горячий проект быстро сделать какой-либо фикс в существующем коде, то вероятность того, что тебе потребуется при таком фиксе удалить пришедший извне указатель при условии того, что в функции, которую ты меняешь, этот указатель не удаляется — 1%.


Это очень даже немаленький процент.

J>А то ведь так можно и удалить статическую или стековую переменную, не то что деструктор не проверить...


Если в функции болтается неконстантный указатель на стековую переменную, который пришел откуда-то из другого места — то автора сего опуса надо долго и больно бить по голове.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[18]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 22.12.04 11:39
Оценка: +2
Здравствуйте, Дарней, Вы писали:

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


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


Д>См. вторую часть условия... хотя там надо было написать "или", а не "и".


да, конечно же, или

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


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

J>>Если же, наоборот, тебя бросают в горячий проект быстро сделать какой-либо фикс в существующем коде, то вероятность того, что тебе потребуется при таком фиксе удалить пришедший извне указатель при условии того, что в функции, которую ты меняешь, этот указатель не удаляется — 1%.


Д>Это очень даже немаленький процент.

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

J>>А то ведь так можно и удалить статическую или стековую переменную, не то что деструктор не проверить...


Д>Если в функции болтается неконстантный указатель на стековую переменную, который пришел откуда-то из другого места — то автора сего опуса надо долго и больно бить по голове.


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

Таким образом, эта ошибка возможна только в результате КРАЙНЕЙ безалаберности разработчика, который просто стреляет во все, что движется.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[19]: Чем становится C++?
От: Дарней Россия  
Дата: 22.12.04 12:42
Оценка:
Здравствуйте, jazzer, Вы писали:

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


В спешке и не про такое забудешь.

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


Скорее — наоборот. "Некто" передаст указатель на твой базовый класс в функцию, которая по каким-то причинам полиморфно уничтожает объекты — и все, кирдык.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[20]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 22.12.04 15:00
Оценка:
Здравствуйте, Дарней, Вы писали:

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


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


Д>В спешке и не про такое забудешь.


Э-э-э...
Без комментариев

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


Д>Скорее — наоборот. "Некто" передаст указатель на твой базовый класс в функцию, которая по каким-то причинам полиморфно уничтожает объекты — и все, кирдык.


Ну да, особенно если эта функция называется как-нибудь безобидно, типа dump_to_cerr
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Чем становится C++?
От: AVC Россия  
Дата: 22.12.04 15:30
Оценка:
Здравствуйте, uw, Вы писали:

uw>

uw>C++ is becoming a freak language that's parading its disfigurements in front of mildly disgusted but curiously fascinated audience.

uw>Цитата вырезана из этой заметки
uw>Мнение её автора может не совпадать с моим, но подумать есть о чем...


Кажется, что сам создатель Си++ уже смеется над своим любимым детищем.
Вот цитата из его первоапрельской шутки
http://www.research.att.com/~bs/whitespace98.pdf


Basic Whitespace Overloading

Here, I describe the more innovative and powerful mechanism for overloading whitespace. Consider x*y.
In programming languages (e.g. Fortran, Pascal, and C++), this is the conventional notation for
multiplying two values. However, mathematicians and physicists traditionally do not use the operator *.
Instead they use simple juxtaposition to indicate multiplication. That is, for variables x and y of suitable
types,

x y

means multiply x by y.
This is simply achieved by overloading the space operator for double-precision floating-point values:

double operator (double d1, double d2) { return d1*d2; }

Or — more explicitly — equivalently

double operator ' '(double d1, double d2) { return d1*d2; }

Given one of these definitions, a physicist can use his (or her) conventional notation rather than the
notation that has become conventional among computer scientists:

double f(double x, double y, double z)
{
return a + x y pow z; // using also a user-defined operator pow
}

Clearly, the space operator has (by default) a precedence lower than pow and higher than +. The
mechanism for assigning precedence to user-defined operators is described in detail in the companion
article.

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

Хоар
Re[2]: Чем становится C++?
От: alexb2  
Дата: 22.12.04 16:44
Оценка: +1 :)
Д>Здравствуйте, uw, Вы писали:


Д>

Д>I talked to John Lykos at one of the conferences, and he told me that he would pay big bucks for a tool that would be able to tell what header files must be included in a given file.

Д>

Д>Когда я занимался портированием прог, я мечтал о таком инструменте каждый день

ага, и сразу модульности можно сказать ДАЗВИДАНЬЯ
Re[14]: Чем становится C++?
От: Шахтер Интернет  
Дата: 22.12.04 16:55
Оценка: 1 (1) +4 :)
Здравствуйте, Дарней, Вы писали:

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


J>>За минус спасибо, конечно, а аргументы будут?


Д>
Д>class A
Д> {
Д> };

Д>class B : public A
Д> {
Д> }


Д>B * pb = new B;

Д>A * pa = pb; // пытаются заменить на A * pa = (A *)pb;, что ИМХО никому не нужно

Д>delete pb; // а то сейчас опять про меморилик вспомнят :)
Д>


Д>В один "прекрасный" день кто-нибудь другой (или ты сам) напишет delete pa; вместо delete pb;

Д>В данном случае это маловероятно, конечно. А вот если создание объекта и его удаление будут разнесены в разные места проги — запросто.
Д>Wish you happy debugging
Д>Только не надо кричать "да я! да я никогда!" и бить себя пяткой в грудь. Все когда-нибудь ошибаются...

Вопрос не в том, ошибаются ли люди или нет, а как часто. Проблема, упомянутая выше, надуманая. Так же как и многие другие "проблемы", возникающие при использовании указателей.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[12]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.12.04 21:16
Оценка:
Здравствуйте, jazzer, Вы писали:

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


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


J>Это по какому это хорошему мне запрещается создавать неполиморфные иерархии без виртуального деструктора?

J>Вот спасибо...

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

J>Прошу прощения, но это аргумент из серии "Давайте запретим пользоваться указателями, потому что рано или поздно кто-нть поломает память, потому что все когда-нибудь ошибаются".


Очень дельное предложение. Если и не запретить, то ограничить точно нужно. И желательно надежно ограничить, а не на уровне паттерна.

J>Я действительно никогда не писал ничего не удалял таким образом.

J>Единственный случай, когда ко мне приходит указатель на базовый класс, который я должен удалить — это когда этот указатель вернулся из фабрики полиморфных объектов,

Долеко не единственный. Ты видимо просто повезло и ты редко встречался с подобными вещами.

J> но в таком случае все и так полиморфное.


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

S>А что, есть какие-то возражения против этого аргумента? Пока что среды, запретившие пользоваться указателями, демонстрируют сплошные преимущества и никаких недостатков.


Скажем так, не запрещающие, а ограничивающие. В такой формулировке — полностью согласен.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Чем становится C++?
От: alexeiz  
Дата: 22.12.04 22:26
Оценка:
Здравствуйте, Дарней, Вы писали:

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


J>>За минус спасибо, конечно, а аргументы будут?


Д>
Д>class A
Д> {
Д> };

Д>class B : public A
Д> {
Д> }


Д>B * pb = new B;

Д>A * pa = pb; // пытаются заменить на A * pa = (A *)pb;, что ИМХО никому не нужно

Д>delete pb; // а то сейчас опять про меморилик вспомнят :)
Д>


Д>В один "прекрасный" день кто-нибудь другой (или ты сам) напишет delete pa; вместо delete pb;

Д>В данном случае это маловероятно, конечно. А вот если создание объекта и его удаление будут разнесены в разные места проги — запросто.
Д>Wish you happy debugging
Д>Только не надо кричать "да я! да я никогда!" и бить себя пяткой в грудь. Все когда-нибудь ошибаются...

Ошибка произошла гораздо раньше в строке "class B : public A". Квалифицированный программист должен задать себе пару вопросов перед тем, как сделать подобное:
1) класс A непредназначен для полиморфного использования, хочу ли я от него унаследовать?
2) решит ли мою задачу агрегирование или на худший случай закрытое наследование?

Ошибка данного типа не является ошибкой из серии "ах, опять оплошал!" Она не допускается случайно. Наоборот, это сознательное действие, объяснимое только отсутствием необходимой квалификации.

PS.:
удивительный факт:
shared_ptr< A > a( new B() );
отработает нормально даже при отсутствии виртуального деструктора.
Re[21]: Чем становится C++?
От: Дарней Россия  
Дата: 23.12.04 05:05
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Э-э-э...

J>Без комментариев

А какие там комментарии. В исходниках FileZilla было место, где один указатель на объект освобождается два раза в разных местах. Не уверен, что сейчас это исправлено. А ты говоришь — тип деструктора каждый раз проверять
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[3]: Чем становится C++?
От: Дарней Россия  
Дата: 23.12.04 05:07
Оценка:
Здравствуйте, alexb2, Вы писали:

A>ага, и сразу модульности можно сказать ДАЗВИДАНЬЯ


Что за бред?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[22]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 23.12.04 08:03
Оценка: +4
Здравствуйте, Дарней, Вы писали:

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


J>>Э-э-э...

J>>Без комментариев

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


Честно говоря, я не знаю, что такое FileZilla и что же там была за спешка такая, что народ пишет такую лажу.
Подозреваю, что это опенсорсный проект, если это так — то неудивительно, потому что половина опенсорсного софта, который я видел, написана какими-то студентами-недоучками от излишка свободного времени.
Естественно, что ни о какой культуре программирования в таком случае речи нет.
И естественно, что для них же лучше использовать какие-нть инструменты попроще, типа java или C#.

Спешка — это не аргумент для написания непродуманного кода.

Я никогда не говорил, что на С++ писать очень просто.
Тем не менее, я продолжаю утверждать, что все проблемы, которые, как утверждается, похоронят С++, упираются просто в недостаток квалификации программиста.

Каждый язык подразумевает какие-то идиомы, которые программист должен знать.
В С++ надо следить за указателями, в java надо использовать стринг-буферы, а не строки, и т.д.
Да, идиомы С++ сложнее, чем в java, ну и что с того?
И те, и другие вполне подвластны человеку с высшим образованием.

Если человек знает язык и его идиомы — для него никаких проблем на этом языке писать и избегать всех этих "страшных и неразрешимых проблем" не составит.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[23]: Чем становится C++?
От: Дарней Россия  
Дата: 23.12.04 09:01
Оценка: 19 (1)
Здравствуйте, jazzer, Вы писали:

J>Подозреваю, что это опенсорсный проект, если это так — то неудивительно, потому что половина опенсорсного софта, который я видел, написана какими-то студентами-недоучками от излишка свободного времени.


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

J>Спешка — это не аргумент для написания непродуманного кода.


А увеличение срока разработки в разы из-за "продумывания кода" — это не аргумент для заказчика.

J>Тем не менее, я продолжаю утверждать, что все проблемы, которые, как утверждается, похоронят С++, упираются просто в недостаток квалификации программиста.


Квалификация программиста нужна не для борьбы с граблями языка, а для анализа предметной области и проектирования системы. Если язык этому мешает — надо искать другой язык. Точка.
Правильно тут было сказано — или ты делаешь полиморфную иерархию, или не-полиморфную. Значит — или ты делаешь виртуальный деструктор, или делаешь наследование закрытым (еще лучше — агрегируешь объект). Уродцы наподобие открытого наследования без виртуального дестркутора не должны иметь права на существование.

J>И те, и другие вполне подвластны человеку с высшим образованием.


Научиться говорить на китайском языке тоже вполне доступно человеку с высшим образованием. Другой вопрос — а нужно ли оно ему?

J>Если человек знает язык и его идиомы — для него никаких проблем на этом языке писать и избегать всех этих "страшных и неразрешимых проблем" не составит.


Давай попробуем уточнить. Вот ты сам как считаешь — ты знаешь все идиомы, нужные для работы с C++?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[24]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 23.12.04 09:56
Оценка: 8 (1) +2
Здравствуйте, Дарней, Вы писали:

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


J>>Подозреваю, что это опенсорсный проект, если это так — то неудивительно, потому что половина опенсорсного софта, который я видел, написана какими-то студентами-недоучками от излишка свободного времени.


Д>Он и правда опен-сорсный, но это еще ни о чем не говорит. Закрытый код ничем не лучше, а зачастую еще и намного хуже. Достаточно посмотреть на список уязвимостей современного софта.


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

Д>Я не видел еще ни одной действительно сложной программы на С++, которая была бы хорошо спроектирована и реализована.


что ты называешь "действительно сложным"?

J>>Спешка — это не аргумент для написания непродуманного кода.


Д>А увеличение срока разработки в разы из-за "продумывания кода" — это не аргумент для заказчика.


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

J>>Тем не менее, я продолжаю утверждать, что все проблемы, которые, как утверждается, похоронят С++, упираются просто в недостаток квалификации программиста.


Д>Квалификация программиста нужна не для борьбы с граблями языка, а для анализа предметной области и проектирования системы. Если язык этому мешает — надо искать другой язык. Точка.


Мне язык не мешает. И большинству тут присутствующих — тоже.
Те, кому мешает, ушли в java/C# — ради бога, я далек от религиозных войн и не перестану из-за этого с ними здороваться.

Д>Правильно тут было сказано — или ты делаешь полиморфную иерархию, или не-полиморфную. Значит — или ты делаешь виртуальный деструктор, или делаешь наследование закрытым (еще лучше — агрегируешь объект). Уродцы наподобие открытого наследования без виртуального дестркутора не должны иметь права на существование.


Не согласен. С++, как тут было сказано много раз, поддерживает множество парадигм программирования. И на ООП с динамической типизацией, вируальностями и фабриками свет клином не сошелся. Посмотри на STL — там сплошь наследование без виртуальностей.

J>>И те, и другие вполне подвластны человеку с высшим образованием.


Д>Научиться говорить на китайском языке тоже вполне доступно человеку с высшим образованием. Другой вопрос — а нужно ли оно ему?


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

J>>Если человек знает язык и его идиомы — для него никаких проблем на этом языке писать и избегать всех этих "страшных и неразрешимых проблем" не составит.


Д>Давай попробуем уточнить. Вот ты сам как считаешь — ты знаешь все идиомы, нужные для работы с C++?


Нельзя объять необъятное.
Я знаю достаточно идиом, чтобы быстро и легко писать безопасный код.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[24]: Чем становится C++?
От: Sergey Россия  
Дата: 23.12.04 10:04
Оценка: +2
Hello, Дарней!
You wrote on Thu, 23 Dec 2004 09:01:57 GMT:

Д> Квалификация программиста нужна не для борьбы с граблями языка, а для

Д> анализа предметной области и проектирования системы. Если язык этому
Д> мешает — надо искать другой язык. Точка. Правильно тут было сказано -
Д> или ты делаешь полиморфную иерархию, или не-полиморфную.

Полиморфизм разный бывает. Например, может понадобится, чтобы объекты
SheetDrawer наследовались от Rectange просто для того, чтобы их коллекцию
можно было скормить функции, умеющей как-то упорядочивать прямоугольники.
При этом храняться они в программе именно как SheetDrawer'ы и удалять их как
Rectange'ы никто и никогда не собирается.

Д> Значит — или ты делаешь виртуальный деструктор, или делаешь наследование

Д> закрытым (еще лучше — агрегируешь объект). Уродцы наподобие открытого
Д> наследования без виртуального дестркутора не должны иметь права на
Д> существование.

Эти "уродцы" очень нужны в одном вполне конкретном случае — для повторного
использования имлементации какой-либо функциональности. Закрытое
наследование тут не годится, агрегация — куча ручной работы, если интерфейс
базового класса объемен. Виртуальный деструктор — напрасный перерасход
памяти. Вполне приемлемым решением является protected деструктор в базовом
классе. И не надо навешивать ярлыки и клеймить что попало.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[25]: Чем становится C++?
От: Дарней Россия  
Дата: 23.12.04 10:30
Оценка: +3
Здравствуйте, jazzer, Вы писали:

J>Для опенсорсного проекта нужен очень грамотный ПМ, который сможет разбираться во всех присылаемых патчах и коммитах, отсеивать некачественное, по возможности исправлять, и т.д.


Для закрытого проекта он нужен ничуть не меньше. Чтобы общаться с заказчиком, который никогда не знает сам, что ему нужно. Чтобы перепроектировать программу, когда заказчику вместо кофемолки вдруг понадобится газонокосилка. Чтобы объяснять разработчикам, что объяснения типа "но у меня же это работает!" еще не доказывают, что гнилой код не надо переписывать.

J>что ты называешь "действительно сложным"?


Программу, которая не является очередной системой для автоматизации какого-нибудь третьего заборостроительного завода.

J>Еще раз. Случаи внесения изменений, когда требуется "продумывать код", возникают один раз из ста.


Еще раз. В программы не только вносят изменения, их перед этим еще и пишут с нуля.

J>Мне язык не мешает. И большинству тут присутствующих — тоже.


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

J>Не согласен. С++, как тут было сказано много раз, поддерживает множество парадигм программирования. И на ООП с динамической типизацией, вируальностями и фабриками свет клином не сошелся. Посмотри на STL — там сплошь наследование без виртуальностей.


где, например?

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


Я подозревал, что в конце концов наше обсуждение выродится в утверждения вида "а если не понимаешь С++, то вообще ты сам дурак"
Очень неприятно, что так и произошло.

J>Я знаю достаточно идиом, чтобы быстро и легко писать безопасный код.


Все так думают, пока не приходит пора копнуть на пару метров от того места, где они привыкли копать.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[25]: Чем становится C++?
От: Дарней Россия  
Дата: 23.12.04 10:34
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Виртуальный деструктор — напрасный перерасход памяти.


Как ты думаешь — сколько процентов памяти ты сэкономишь в типичном проекте таким образом?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[26]: Чем становится C++?
От: Sergey Россия  
Дата: 23.12.04 10:44
Оценка: +1
Hello, Дарней!
You wrote on Thu, 23 Dec 2004 10:34:10 GMT:

S>> Виртуальный деструктор — напрасный перерасход памяти.


Д> Как ты думаешь — сколько процентов памяти ты сэкономишь в типичном

Д> проекте таким образом?

Я не в курсе, что такое типичный проект — как-то ни разу не писал код для
типичных проектов, все сплошь какая-то конкретика попадается. В одном
конкретном случае таким образом около 5% памяти набегало. По быстродействию
трудно без профилирования оценить, но инициализация таблиц виртуальных
функций (которые часто нафиг не нужны) тоже не бесплатная.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[27]: Чем становится C++?
От: Дарней Россия  
Дата: 23.12.04 10:53
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Я не в курсе, что такое типичный проект — как-то ни разу не писал код для

S>типичных проектов, все сплошь какая-то конкретика попадается. В одном
S>конкретном случае таким образом около 5% памяти набегало. По быстродействию
S>трудно без профилирования оценить, но инициализация таблиц виртуальных
S>функций (которые часто нафиг не нужны) тоже не бесплатная.

5% от чего? От общего объема съеденной процессом памяти?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[17]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.12.04 11:04
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Последние лет 8 я работаю только в команде.

J>Такие вещи в реальной жизни случаются очень редко.

Вот тебе описание изменений свежевышедшего subversion

User-visible-changes:
— Client:
* fixed: 'svn switch' interruption can break working copy (issue #1826)
* fixed: 'svn switch' memleak over ra_dav (issue #2106)
* fixed: 'svn blame' algorithm bug (r11527)
* fixed: invoke external diff/diff3 with local-style paths (r11689)
* fixed: 'svn status' handling of missing subdirs (r11936)
* fixed: 'svn ls -v' encoding bug (r11740)
* fixed: 'svn ls "file with space"' bug (r12273, r12393)
* fixed: 'svn merge' should URI-encode copyfrom URLs (issue #1905)
* fixed: 'svn merge' deletion output formatting (r12100, r12111, r12114)
* fixed: 'svnversion --version .' crash (r11438)
* fixed: UNC paths on Cygwin (issue #2108)
* fixed: win98 iconv bug -- uninitialized variable (issue #2091)
* improved 'svn status' performance:
— do fewer check_path calls (r11592)
— 'svn status file' shouldn't recursively lock tree (r11439, r11669)
* translation updates for localized client messages.

— Server:
* fixed: 'svnadmin load' race condition (r12327)
* fixed: fsfs memleak in commit finalization (r11706)
* fixed: fsfs memleak in inefficient directory removal (r11701)
* fixed: fsfs commits use insert-only perms on db/revs/ (r11665)
* fixed: fsfs creates lockfile at creation time, not at 1st commit (r12172)
* fixed: svndumpfilter mislabeling output as version 3 (issue #2142)
* fixed: 'svnserve -h' encoding bug (part of issue #1997)
* fixed: prevent cross-repository copies (r12003)
* fixed: increase log-region max size in default DB_CONFIG (issue #2159)

— Both:
* fixed: 'svn switch' quietly corrupting working copy (issue #2124)
* fixed: canonicalize paths sent by ra_svn/svnserve (issue #2119)
* fixed: memleak into UTF8 translation routines (r11689)

Developer-visible-changes:
* add support for BerkeleyDB 4.3
* add support for any apr/apr-util 1.X
* disallow incompatible SWIG versions (r12450)
* fixed: slight API/ABI incompatibility between 1.0.9 and 1.1.x (r12102)
* fixed: perl bindings pool usage & object refcounts (r11451, r11630)
* fixed: perl bindings pool usage and potential memleak (r12397)
* fixed: javahl crash trying to fetch nonexistent property (r12184)
* fixed: javahl build can fail due to missing dirs (issue #2032)
* fixed: RPM build breakage (issue #2111)
* fixed: i18n issues for windows installer (r11685)
* allow build system to update single .po file (r11763)


Притом у меня есть основания полагать что люди, пишушие его, имеют очень неплохой уровень.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[28]: Чем становится C++?
От: Sergey Россия  
Дата: 23.12.04 11:06
Оценка:
Hello, Дарней!
You wrote on Thu, 23 Dec 2004 10:53:20 GMT:

S>> Я не в курсе, что такое типичный проект — как-то ни разу не писал код

S>> для типичных проектов, все сплошь какая-то конкретика попадается. В
S>> одном конкретном случае таким образом около 5% памяти набегало. По
S>> быстродействию трудно без профилирования оценить, но инициализация
S>> таблиц виртуальных функций (которые часто нафиг не нужны) тоже не
S>> бесплатная.

Д> 5% от чего? От общего объема съеденной процессом памяти?


От выделенной в хипе памяти. А какая разница, сколько процентов? Главное,
что на такую совершенно бесполезную в данном конкретном случае вещь, как
возможность удалять MyCoolSomethingDrawer через указатель на Rectangle, не
тратится ни байта памяти и ни такта процессора.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[9]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.12.04 11:15
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Я, кстати, уже предлагал сделать коммунальный сборник цитат. Это никого не вдохновило. Пришлось ограничиться локальным rsdn-citata.txt


СОздай топик в обсуждении сайта. Если там появится достаточно материала нет никаких проблем оформить ввиде статьи.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[29]: Чем становится C++?
От: Дарней Россия  
Дата: 23.12.04 11:19
Оценка:
Здравствуйте, Sergey, Вы писали:

S>От выделенной в хипе памяти. А какая разница, сколько процентов? Главное,

S>что на такую совершенно бесполезную в данном конкретном случае вещь, как
S>возможность удалять MyCoolSomethingDrawer через указатель на Rectangle, не
S>тратится ни байта памяти и ни такта процессора.

Это значит, что по сравнению с общии затратами памяти эта цифра будет еще меньше.
А разница в том, что вместо глупой и ненужной возни с деструкторами можно было заняться оптимизацией алгоритмов и сэкономить не 5, а 30 процентов, например.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[26]: Чем становится C++?
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 23.12.04 11:24
Оценка:
Здравствуйте, Дарней, Вы писали:


S>>Виртуальный деструктор — напрасный перерасход памяти.


Д>Как ты думаешь — сколько процентов памяти ты сэкономишь в типичном проекте таким образом?


Как ты думаешь, насколько важны эти проценты памяти для embedded-систем?

Да почему же все, кто ругает С++ за невиртуальные по умолчанию деструторы, за битовые поля, отсутсвие солидной рантайм-поддержки и пр. забывают о том, что проекты бывают не только для десктопа с установленным Windows?
Re[30]: Чем становится C++?
От: Sergey Россия  
Дата: 23.12.04 11:27
Оценка: 1 (1)
Hello, Дарней!
You wrote on Thu, 23 Dec 2004 11:19:48 GMT:

S>> От выделенной в хипе памяти. А какая разница, сколько процентов?

S>> Главное, что на такую совершенно бесполезную в данном конкретном случае
S>> вещь, как возможность удалять MyCoolSomethingDrawer через указатель на
S>> Rectangle, не тратится ни байта памяти и ни такта процессора.

Д> Это значит, что по сравнению с общии затратами памяти эта цифра будет

Д> еще меньше.

Ну и что? Ну будет 4.5%, а не 5, какая разница?

Д> А разница в том, что вместо глупой и ненужной возни с деструкторами


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

Д> можно было заняться оптимизацией алгоритмов и сэкономить не 5, а 30

Д> процентов, например.

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

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[27]: Чем становится C++?
От: Sergey Россия  
Дата: 23.12.04 11:35
Оценка: +1
Hello, Alxndr!
You wrote on Thu, 23 Dec 2004 11:24:48 GMT:

Д>> Как ты думаешь — сколько процентов памяти ты сэкономишь в типичном

Д>> проекте таким образом?

A> Как ты думаешь, насколько важны эти проценты памяти для embedded-систем?


A> Да почему же все, кто ругает С++ за невиртуальные по умолчанию

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

У меня там, кстати, совсем не embedded, а вовсе даже под винду. Только вот у
винды память тоже ой как быстро кончается — 2.5 Гб еще выделишь, а вот уже
2.8 — фигушки. Особенно приятно, когда работает себе программа, работает,
часа три к ряду работает, а потом раз — Облом Петрович, нема памяти больше.
А все из-за того, что кто-то соломку на километр вокруг себя разложил, чтоб,
значит, падать при случае совсем не больно было.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[10]: Чем становится C++?
От: Зверёк Харьковский  
Дата: 23.12.04 11:37
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ЗХ>>Я, кстати, уже предлагал сделать коммунальный сборник цитат. Это никого не вдохновило. Пришлось ограничиться локальным rsdn-citata.txt


AVK>СОздай топик в обсуждении сайта. Если там появится достаточно материала нет никаких проблем оформить ввиде статьи.


Вариант. Но у меня их (цитатей) уже многовато для одного сообщения — поскольку есть несколько очень объемистых.
Буду думать.
сам слушаю и вам рекомендую: в тишине сижу
FAQ — це мiй ай-кью!
Re[27]: Чем становится C++?
От: Дарней Россия  
Дата: 23.12.04 11:41
Оценка:
Здравствуйте, Alxndr, Вы писали:

A>Да почему же все, кто ругает С++ за невиртуальные по умолчанию деструторы, за битовые поля, отсутсвие солидной рантайм-поддержки и пр. забывают о том, что проекты бывают не только для десктопа с установленным Windows?


Потому что embedded — это далеко не мэйнстрим. Там и на ассемблере часто пишут — так что, всем на ассемблер что ли возвращаться?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[31]: Чем становится C++?
От: Дарней Россия  
Дата: 23.12.04 11:42
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Невозможно. Все соптимизировано так, что дальше некуда. Любая попытка

S>сэкономить пару байт на объект приведет к неприлично большим потерям по
S>быстродействию и наоборот.

Значит, нужно думать, как экономить на количестве объектов. Хотя это тоже от задачи зависит.
Да и вообще, вычислительные задачи — это достаточно редкое явление.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[18]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 23.12.04 11:55
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

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


J>>Последние лет 8 я работаю только в команде.

J>>Такие вещи в реальной жизни случаются очень редко.

AVK>Вот тебе описание изменений свежевышедшего subversion

AVK>

User-visible-changes:
AVK>— Client:
AVK>* fixed: 'svn switch' memleak over ra_dav (issue #2106)
AVK>* fixed: win98 iconv bug -- uninitialized variable (issue #2091)
AVK>* fixed: fsfs memleak in commit finalization (r11706)
AVK>* fixed: fsfs memleak in inefficient directory removal (r11701)
AVK>* fixed: memleak into UTF8 translation routines (r11689)


AVK>Притом у меня есть основания полагать что люди, пишушие его, имеют очень неплохой уровень.


И? Какое это отношение имеет к обсуждаемой проблеме?
По-моему, ты перечислил меморилики. Или я не так понял?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[11]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.12.04 11:57
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

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

ЗХ>Вариант. Но у меня их (цитатей) уже многовато для одного сообщения — поскольку есть несколько очень объемистых.

Зачем для одного. В корневом сообщении опишешь свою затею, а каждая цитата по одному сообщению внутри ветки.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[26]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 23.12.04 12:01
Оценка: 11 (2) +2 :)
Здравствуйте, Дарней, Вы писали:

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


J>>Для опенсорсного проекта нужен очень грамотный ПМ, который сможет разбираться во всех присылаемых патчах и коммитах, отсеивать некачественное, по возможности исправлять, и т.д.


Д>Для закрытого проекта он нужен ничуть не меньше. Чтобы общаться с заказчиком, который никогда не знает сам, что ему нужно. Чтобы перепроектировать программу, когда заказчику вместо кофемолки вдруг понадобится газонокосилка. Чтобы объяснять разработчикам, что объяснения типа "но у меня же это работает!" еще не доказывают, что гнилой код не надо переписывать.


Во-первых, эта проблема лежит не в плоскости языка.
Надо набирать нормальных разработчиков и устраивать взаимный code review.
ПМ должен заниматься управлением, общением с заказчиком, а не залезанием в код, который пишут его программисты.
Кстати, аргумент "а на java можно набирать кого угодно, потому что язык проще" не работает: мои знакомые ПМы имеют много проблем с такими программистами на java, которые умудряются писать на этому суперязыке редкостную ахинею. Да, прога не падает в корку по access violation, но зато она тормозит, жрет море памяти и вылетает по NullPointerException.

J>>что ты называешь "действительно сложным"?


Д>Программу, которая не является очередной системой для автоматизации какого-нибудь третьего заборостроительного завода.


Ты считаешь проектирование систему автоматизации простой задачей? Ну-ну
То, что задача типовая, не является ее упрощением, если ты пишешь ее с нуля.
А вот спроектировать нечто универсальное типа 1С или SAP R/3 — даже ты такую задачу простой не назовешь.

J>>Еще раз. Случаи внесения изменений, когда требуется "продумывать код", возникают один раз из ста.


Д>Еще раз. В программы не только вносят изменения, их перед этим еще и пишут с нуля.


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

J>>Мне язык не мешает. И большинству тут присутствующих — тоже.


Д>Достаточно заглянуть в форум по С++, чтобы убедиться, что большинству он таки мешает.

Хорошо, сойдемся на том, что я — исключение, и именно мне он и не мешает.

Д>А если заглянуть в код какого-нибудь проекта, так и вовсе волосы дыбом встают. Порой просто диву даешься, как же оно вообще работает. Если твой проект не такой — значит, это очень редкое исключение.

Есть море сишного кода, вообще без классов и ГЦ, на котором построены сложнейшие системы.
А в сишном коде еще тяжелее разбираться — и ничего, все живы пока.
Если помните, вц6 шла под лозунгом "we use it to write it" (за точность цитаты не ручаюсь, но смысл в том, что студия написана на С/С++).

J>>Не согласен. С++, как тут было сказано много раз, поддерживает множество парадигм программирования. И на ООП с динамической типизацией, вируальностями и фабриками свет клином не сошелся. Посмотри на STL — там сплошь наследование без виртуальностей.


Д>где, например?

например, функторы, биндеры, итераторы.
Вообще, виртуальные деструкторы встречаются только в RTTI, исключениях и потоках.

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


Д>Я подозревал, что в конце концов наше обсуждение выродится в утверждения вида "а если не понимаешь С++, то вообще ты сам дурак"

Д>Очень неприятно, что так и произошло.
Как-то ты неправильно читаешь между строк. Я такого не говорил и в виду не имел.
Я имел в виду лишь то, что сказал.
Если я УЖЕ что-то знаю, то вести разговор со МНОЙ о том, как МНЕ это сложно изучить — бессмысленно, потому что я УЖЕ обладаю этими знаниями, а не собираюсь их получить, а ты пытаешься меня от этого отговорить.
Если же речь о том, что неофиту сложнее изучить С++, чем java — для этого есть соседняя ветка, но на всякий случай скажу, что я с этим утверждением согласен — сложнее.

J>>Я знаю достаточно идиом, чтобы быстро и легко писать безопасный код.


Д>Все так думают, пока не приходит пора копнуть на пару метров от того места, где они привыкли копать.


Ну, значит, я знаю, где копать, чтобы не напороться на высоковольтный кабель.
Тоже скилл полезный.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[32]: Чем становится C++?
От: Sergey Россия  
Дата: 23.12.04 12:07
Оценка: +1 -1
Hello, Дарней!
You wrote on Thu, 23 Dec 2004 11:42:59 GMT:

S>> Невозможно. Все соптимизировано так, что дальше некуда. Любая попытка

S>> сэкономить пару байт на объект приведет к неприлично большим потерям по
S>> быстродействию и наоборот.

Д> Значит, нужно думать, как экономить на количестве объектов.


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

Д> Хотя это тоже от задачи зависит. Да и вообще, вычислительные задачи -

Д> это достаточно редкое явление.
Это не вычислительная задача — просто отображалка некоего графа. Или,
например, очень большой таблицы (а вот ее я сдуру написал без объектов).
Кстати, отображалку таблиц пришлось писать всего лишь из-за того, что IE 4.5
(давно дело было) HTML-таблицу размером всего-то 1000x1000 ячеек открывал
около получаса, выжирая около гига памяти. Зато все насквозь объектно и
полиморфно. Потом, правда, это дело пофиксили без особого ущерба для
объектности
Да даже в текстовом редакторе, который упоминается в "паттернах" GOF (там,
насколько я помню, по объекту на символ текста), и то имеет смысл избегать
лишний раз использования виртуальных функций. Тем более там, где эта
виртуальность нафиг не упала.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[28]: Чем становится C++?
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 23.12.04 12:24
Оценка: 1 (1) +3
Здравствуйте, Дарней, Вы писали:

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


A>>Да почему же все, кто ругает С++ за невиртуальные по умолчанию деструторы, за битовые поля, отсутсвие солидной рантайм-поддержки и пр. забывают о том, что проекты бывают не только для десктопа с установленным Windows?


Д>Потому что embedded — это далеко не мэйнстрим.


Ок, то есть ты предлагаешь мне, который пишет под embedded, использовать везде виртуальные деструкторы только потому, что в своем мейнстриме ты можешь чего-то там напортачить?

В том-то и дело, что если под мейнстримом ты понимаешь дестоп с виндами да плюс некритичные к ресупсам приложнения, то писать можно на чем угодно: VB, C#, Delphi и пр.

С++ — язык с нулевыми издержками, "чем не пользуюсь, за то не плачу". Это один из ИМХО основных принципов языка, существенно отличающих его от вышеперечисленных мной, в результате чего его можно использовать везде и на всем. Ты предлагаешь от этого принципа отписаться. Вместо этого я предлагаю тебе пользоваться языковыми средствами для того, чтобы соорудить себе такие ограничения в дизайне, которые ты считаешь нужными.

Д>Там и на ассемблере часто пишут — так что, всем на ассемблер что ли возвращаться?


Не перегибай .
Re[18]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 23.12.04 14:50
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

J>>Последние лет 8 я работаю только в команде.

J>>Такие вещи в реальной жизни случаются очень редко.
AVK>Вот тебе описание изменений свежевышедшего subversion

[skip]

AVK>Притом у меня есть основания полагать что люди, пишушие его, имеют очень неплохой уровень.


SVN написан на pure C (около 800 файлов). Только COM и Java-binding содержат чуть-чуть C++ (~20 файлов). Статистика по версии 1.0.9.

Да, классы они эмулируют, но это — чистейший C, со всеми, свойственными ему проблемами.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[32]: Чем становится C++?
От: Шахтер Интернет  
Дата: 23.12.04 15:28
Оценка: 1 (1) +2 -2
Здравствуйте, Дарней, Вы писали:

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


S>>Невозможно. Все соптимизировано так, что дальше некуда. Любая попытка

S>>сэкономить пару байт на объект приведет к неприлично большим потерям по
S>>быстродействию и наоборот.

Д>Значит, нужно думать, как экономить на количестве объектов. Хотя это тоже от задачи зависит.

Д>Да и вообще, вычислительные задачи — это достаточно редкое явление.

Дорогой мой, разносчиков пиццы гораздо больше, чем программистов. Если ты занимаешься натягиванием формочек на базы данных, то это вовсе не значит, что ничего другого в мире программирования нет.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[33]: Чем становится C++?
От: Дарней Россия  
Дата: 24.12.04 04:58
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш> Если ты занимаешься натягиванием формочек на базы данных, то это вовсе не значит, что ничего другого в мире программирования нет.


Этим я давно уже не занимаюсь, продвинутый ты наш.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[33]: Чем становится C++?
От: Дарней Россия  
Дата: 24.12.04 05:01
Оценка: 34 (2) +1 :))
Здравствуйте, Sergey, Вы писали:

S>Кстати, отображалку таблиц пришлось писать всего лишь из-за того, что IE 4.5

S>(давно дело было) HTML-таблицу размером всего-то 1000x1000 ячеек открывал
S>около получаса, выжирая около гига памяти. Зато все насквозь объектно и
S>полиморфно. Потом, правда, это дело пофиксили без особого ущерба для
S>объектности

А ты никогда не задумывался, каким образом они это сделали?
Если бы вместо борьбы с виртуальными деструкторами ты читал книгу "банды четырех" повнимательнее, то нашел бы там паттерн Flyweight, который позволил бы уменьшить издержки памяти не на 5%, а в разы.
Но это, конечно же, не наш путь
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[29]: Чем становится C++?
От: Дарней Россия  
Дата: 24.12.04 05:22
Оценка: +1 :)
Здравствуйте, Alxndr, Вы писали:

A>Ок, то есть ты предлагаешь мне, который пишет под embedded, использовать везде виртуальные деструкторы только потому, что в своем мейнстриме ты можешь чего-то там напортачить?


Я просто говорю о том, что если ты пишешь в какой-то узкой нише — значит, тебе не подойдут приемы, принятые в более общей области программирования. Поэтому пиши себе как хочешь, портачь, исправляй, и снова пиши. Главное — что заказчик готов за это платить
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[27]: Чем становится C++?
От: Дарней Россия  
Дата: 24.12.04 05:26
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Надо набирать нормальных разработчиков и устраивать взаимный code review.


"нормальный разработчик" — это понятие растяжимое, а применение C++ увеличивает порог этого понятия многократно. Чтобы писать на C++, нужно иметь знаний намного больше, чем чтобы писать на Яве. И знания эти на 99% не имеют никакого отношения к основной задаче разработчика — решать проблемы заказчика.

J>ПМ должен заниматься управлением, общением с заказчиком, а не залезанием в код, который пишут его программисты.


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

J>Кстати, аргумент "а на java можно набирать кого угодно, потому что язык проще" не работает: мои знакомые ПМы имеют много проблем с такими программистами на java, которые умудряются писать на этому суперязыке редкостную ахинею. Да, прога не падает в корку по access violation, но зато она тормозит, жрет море памяти и вылетает по NullPointerException.


Ты думаешь, на С++ они бы что-то лучшее написали? Чрезмерно экономить на зарплатах тоже не стоит, хотя использование Явы и подталкивает к этому некоторых начальников

J>То, что задача типовая, не является ее упрощением, если ты пишешь ее с нуля.


Ну если не учитывать опыт других людей — тогда верно, не является

J>А вот спроектировать нечто универсальное типа 1С или SAP R/3 — даже ты такую задачу простой не назовешь.


Как и написание любого другого универсального движка.

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


Разработка программы — не одномоментный процесс, и во время разработки внести такой баг можно с немаленькой вероятностью. Где тут подмена?

J>ОК. Я не считаю, что для программ, написанных с нуля, время проектирования для разных языков различается в разы. А при грамотном проектировании реализация будет очевидной и предсказуемой по срокам.


Вероятно, ты просто не имел возможности сравнить.

J>Есть море сишного кода, вообще без классов и ГЦ, на котором построены сложнейшие системы.


Угу. всего то несколько лет отладки... зато все-таки работает!

J>например, функторы, биндеры, итераторы.


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

J>Если я УЖЕ что-то знаю, то вести разговор со МНОЙ о том, как МНЕ это сложно изучить — бессмысленно, потому что я УЖЕ обладаю этими знаниями, а не собираюсь их получить, а ты пытаешься меня от этого отговорить.


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

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

J>Тоже скилл полезный.

см. выше
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[33]: Чем становится C++?
От: Трурль  
Дата: 24.12.04 06:29
Оценка: +1
Здравствуйте, Sergey, Вы писали:

S>Кстати, отображалку таблиц пришлось писать всего лишь из-за того, что IE 4.5

S>(давно дело было) HTML-таблицу размером всего-то 1000x1000 ячеек открывал
S>около получаса, выжирая около гига памяти.

А нафига может понадобиться HTML-таблица 1000x1000 ячеек
Re[34]: Чем становится C++?
От: Sergey Россия  
Дата: 24.12.04 07:48
Оценка:
Hello, Трурль!
You wrote on Fri, 24 Dec 2004 06:29:56 GMT:

S>> Кстати, отображалку таблиц пришлось писать всего лишь из-за того, что

S>> IE 4.5 (давно дело было) HTML-таблицу размером всего-то 1000x1000 ячеек
S>> открывал около получаса, выжирая около гига памяти.

Т> А нафига может понадобиться HTML-таблица 1000x1000 ячеек


Confusion Matrix такая. Размер зависит от входных данных. Задача была
переделать все так, чтоб программа при ее показе не сильно тормозила и не
падала.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[34]: Чем становится C++?
От: Sergey Россия  
Дата: 24.12.04 07:57
Оценка: +1
Hello, Дарней!
You wrote on Fri, 24 Dec 2004 05:01:51 GMT:

S>> Кстати, отображалку таблиц пришлось писать всего лишь из-за того, что

S>> IE 4.5 (давно дело было) HTML-таблицу размером всего-то 1000x1000 ячеек
S>> открывал около получаса, выжирая около гига памяти. Зато все насквозь
S>> объектно и полиморфно. Потом, правда, это дело пофиксили без особого
S>> ущерба для объектности

Д> А ты никогда не задумывался, каким образом они это сделали?

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

Д> Если бы вместо борьбы с виртуальными деструкторами

Да я с ними не борюсь — просто не использую, если не нужны.

Д> ты читал книгу "банды четырех" повнимательнее, то нашел бы там паттерн

Д> Flyweight, который позволил бы уменьшить издержки памяти не на 5%, а в
Д> разы.

В моих случаях — не позволил бы.

Д> Но это, конечно же, не наш путь

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

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[35]: Чем становится C++?
От: Дарней Россия  
Дата: 24.12.04 08:03
Оценка: -1
Здравствуйте, Sergey, Вы писали:

S>В моих случаях — не позволил бы.


Чем же таким особенным отличается твой случай?

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

S>ненужных виртуальных деструкторов. Разницы по памяти никакой, по скорости —
S>Flyweight однозначно проигрывает.

Разница по памяти не "никакая", а в разы. Хотя конечно зависит от радиуса кривизны.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[28]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 24.12.04 08:38
Оценка: +2
Здравствуйте, Дарней, Вы писали:

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


J>>Надо набирать нормальных разработчиков и устраивать взаимный code review.


Д>"нормальный разработчик" — это понятие растяжимое, а применение C++ увеличивает порог этого понятия многократно. Чтобы писать на C++, нужно иметь знаний намного больше, чем чтобы писать на Яве. И знания эти на 99% не имеют никакого отношения к основной задаче разработчика — решать проблемы заказчика.


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

J>>ПМ должен заниматься управлением, общением с заказчиком, а не залезанием в код, который пишут его программисты.


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

Ты. Потому что я это писал про опен-сорсные проекты.
А ты потом возразил, что в закрытых нужно делать то же самое, с чем я не согласился.
Или это не так?

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

"эту работу" — это какую?
если code review — с этим вполне способны справиться программисты за соседними столами.
если дизайн до кодирования — да, нужен более опытный человек (один или несколько — зависит от проекта), назовем его старшим разработчиком.
если общее управление и общение с заказчиком — ПМ.
Причем тут язык программирования — убей, не пойму.

J>>Кстати, аргумент "а на java можно набирать кого угодно, потому что язык проще" не работает: мои знакомые ПМы имеют много проблем с такими программистами на java, которые умудряются писать на этому суперязыке редкостную ахинею. Да, прога не падает в корку по access violation, но зато она тормозит, жрет море памяти и вылетает по NullPointerException.


Д>Ты думаешь, на С++ они бы что-то лучшее написали? :) Чрезмерно экономить на зарплатах тоже не стоит, хотя использование Явы и подталкивает к этому некоторых начальников ;)

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

J>>То, что задача типовая, не является ее упрощением, если ты пишешь ее с нуля.


Д>Ну если не учитывать опыт других людей — тогда верно, не является :)

Опыт автоматизации заборостроительного совсем не обязательно поможет при автоматизации сваезабивательного. :)

J>>А вот спроектировать нечто универсальное типа 1С или SAP R/3 — даже ты такую задачу простой не назовешь.


Д>Как и написание любого другого универсального движка.

Видишь, как мы хорошо друг друга понимаем :)

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


Д>Разработка программы — не одномоментный процесс, и во время разработки внести такой баг можно с немаленькой вероятностью. Где тут подмена?


Разработка программы — это и не непрерывный процесс.
Согласись, удалить можно только то, что уже есть :)
Т.е. человек вначале должен спроектировать классы и их взаимодействие, а сюда входит и выбор стратегии владения.
Далее, тот, кто реализует эти классы и стратегию владения, знает о ней, посему ошибку может внести по очень большой глупости.
Далее, тот, кто реализует логику внутри, должен руководствоваться какими-то соображениями, чтобы решить, что в данном месте ему нужно удалить объект. Из чего он может исходить, кроме как из уже известной политики владения?
Далее, тот, кто вносит изменения в уже написанный код, действует по аналогии, т.е. если в коде удаляется объект, он его тоже удалит, если не удаляется — он его удалять не будет. А если и решит, что удалять надо или, наоборот, нужно убрать удаление, он в своем решении будет исходить опять же из известной политики владения, иначе можно легко посадить обсуждаемый баг или создать утечку.

J>>ОК. Я не считаю, что для программ, написанных с нуля, время проектирования для разных языков различается в разы. А при грамотном проектировании реализация будет очевидной и предсказуемой по срокам.


Д>Вероятно, ты просто не имел возможности сравнить.

Все может быть.

J>>Есть море сишного кода, вообще без классов и ГЦ, на котором построены сложнейшие системы.


Д>Угу. всего то несколько лет отладки... зато все-таки работает! :))

Ты утверждаешь, что для java-приложений не бывает нескольких лет отладки?
Мой опыт говорит об обратном.

J>>например, функторы, биндеры, итераторы.


Д>приведение к базовому типу по указателю для них и не предусматривается логикой их использования.


Не так. Не предусматривается динамическое создание и удаление через указатель на базовый класс.
В остальном — легко. Приведение к указателю или ссылке на базовый тип — постоянно используемая операция.
возьмем иерархию прямо из Стандарта (24.3.3):
   struct bidirectional_iterator_tag: public forward_iterator_tag {};
   struct random_access_iterator_tag: public bidirectional_iterator_tag {};

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

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

Вот уж поистине странное утверждение. А как же принцип Лисков? Разве итератор с произвольным доступом не может использоваться как двунаправленный или однонаправленный?
Или, может быть, функторы не являются унарными или бинарными функциями?
Если нет, тогда в чем проблема объявления из Стандарта (20.3.1, 20.3.2):
template <class Arg1, class Arg2, class Result>
struct binary_function {
   typedef Arg1 first_argument_type;
   typedef Arg2 second_argument_type;
   typedef Result result_type;
};

template <class T> struct plus : binary_function<T,T,T> {
   T operator()(const T& x, const T& y) const;
};


J>>Если я УЖЕ что-то знаю, то вести разговор со МНОЙ о том, как МНЕ это сложно изучить — бессмысленно, потому что я УЖЕ обладаю этими знаниями, а не собираюсь их получить, а ты пытаешься меня от этого отговорить.


Д>А я например НЕ уверен в том, что я УЖЕ знаю "китайский язык". И жизнь не устает подбрасывать мне доказательства — наподобие статической локальной переменной, которая вдруг обрушивает программу при ее инициализации. Ну кто бы мог подумать! А на первый взгляд — никаких граблей тут быть не может :)

Д>Число людей, которые действительно хорошо знают эту область в нашей стране, измеряется десятками, и уверенность в том, что "я все уже знаю" — это всего лишь следствие ограниченного кругозора.

Все знать невозможно ни в одной области.
Вот ты как ответишь на вопрос о том, знаешь ли ты русский язык?
Скорее всего, ты ответишь, что знаешь, и этот твой ответ не будет означать, что ты знаешь его полностью и досконально или хотя бы на уровне доктора наук по филологии.
Когда ты говоришь, что знаешь русский, ты подразумеваешь, что 99% случаев употребления тобой русского языка не вызывает проблем ни у тебя, ни у воспринимающей стороны. При этом ты знаешь, где в инете лежат словари и разъяснения правил русского языка, и в оставшемся проценте случаев не постесняешься заглянуть в них.

Так что если тебя коробит, когда я говорою, что знаю С++, можешь слово "знаю" заменить на "знаю достаточно для того, чтобы не испытывать трудностей при его использовании в 99% случаев".

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

J>>Тоже скилл полезный.

Д>см. выше

см. выше :)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[36]: Чем становится C++?
От: Sergey Россия  
Дата: 24.12.04 08:54
Оценка: +2
Hello, Дарней!
You wrote on Fri, 24 Dec 2004 08:03:56 GMT:

S>> В моих случаях — не позволил бы.


Д> Чем же таким особенным отличается твой случай?


Да тем, что память зря и так не тратиться. У объекта есть две координаты,
ширина, высота, указатель (или индекс) на текст, цвет фона. Эти данные
по-любому придется хранить в памяти, поскольку вычислять их долго. А дальше
выбираем — либо используем статический полиморфизм, без виртуальных функций
и их оверхеда по памяти, либо развлекаемся с flyweight. На жабе/шарпе
выбирать, конечно, не приходится, там объектов без оверхеда не бывает. Есть,
конечно, еще один вариант — писать все в сишном стиле, без объектов вовсе

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

S>> ненужных виртуальных деструкторов. Разницы по памяти никакой, по
S>> скорости — Flyweight однозначно проигрывает.

Д> Разница по памяти не "никакая", а в разы.

Ты просто не понимаешь, что волшебства не бывает.

Д> Хотя конечно зависит от радиуса кривизны.

Еще как.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[37]: Чем становится C++?
От: Дарней Россия  
Дата: 24.12.04 09:32
Оценка:
Здравствуйте, Sergey, Вы писали:

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

S>ширина, высота, указатель (или индекс) на текст, цвет фона. Эти данные
S>по-любому придется хранить в памяти, поскольку вычислять их долго.

Хранить их можно либо в большом наборе объектов, имея при этом кроме полезных данных еще и накладные расходы, вызванные менеджером памяти. Которые, в данном случае, составят немаленький процент. Плюс к этому, конечно, фрагментация памяти.
А можно — в массиве, поверх которого работает FlyWeight.

S>Ты просто не понимаешь, что волшебства не бывает.


Это ты просто не понимаешь, о чем вообще речь шла в книге.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[30]: Чем становится C++?
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 24.12.04 09:33
Оценка: -1 :)
Здравствуйте, Дарней, Вы писали:

Д>Я просто говорю о том, что если ты пишешь в какой-то узкой нише ...


А я говорю о том, что приложения для десктопа с виндоуз и являются узкой нишей для С++.
Советую перечитать D&E на предмет того, для каких задач проектировался этот язык.
Re[38]: Чем становится C++?
От: Sergey Россия  
Дата: 24.12.04 09:49
Оценка: +3
Hello, Дарней!
You wrote on Fri, 24 Dec 2004 09:32:22 GMT:

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

S>> координаты, ширина, высота, указатель (или индекс) на текст, цвет фона.
S>> Эти данные по-любому придется хранить в памяти, поскольку вычислять их
S>> долго.

Д> Хранить их можно либо в большом наборе объектов, имея при этом кроме

Д> полезных данных еще и накладные расходы, вызванные менеджером памяти.
Д> Которые, в данном случае, составят немаленький процент. Плюс к этому,
Д> конечно, фрагментация памяти. А можно — в массиве, поверх которого
Д> работает FlyWeight.

Это ты не подумавши сказал Какие такие накладные расходы для объектов,
лежащих в векторе? Заметь — не указателей на объекты, а именно объектов? И,
собственно, с чего спич начался — на кой черт объектам в этом случае
виртуальные деструкторы?

S>> Ты просто не понимаешь, что волшебства не бывает.


Д> Это ты просто не понимаешь, о чем вообще речь шла в книге.


Да-да, тупой я как пробка, есть такой недостаток.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[31]: Чем становится C++?
От: Sergey Россия  
Дата: 24.12.04 09:53
Оценка: :)
Hello, Alxndr!
You wrote on Fri, 24 Dec 2004 09:33:44 GMT:

Д>> Я просто говорю о том, что если ты пишешь в какой-то узкой нише ...


A> А я говорю о том, что приложения для десктопа с виндоуз и являются узкой

A> нишей для С++. Советую перечитать D&E на предмет того, для каких
A> задач проектировался этот язык.

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


With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[29]: Чем становится C++?
От: Дарней Россия  
Дата: 24.12.04 10:05
Оценка: +2 :)
Здравствуйте, jazzer, Вы писали:

JИли мы отсеем программера на С++ потому, что у него знаний больше?

Потому что он больше денег требует При этом, при одинаковой производительности труда. (нет, я говорю не про скорость написания кода. Я говорю про скорость приближения к результату)

J>Или это не так?


Прочитай внимательно и поймешь, что не так.

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


Дьявол, как всегда, в деталях. В данном случае — в цене.

J>Опыт автоматизации заборостроительного совсем не обязательно поможет при автоматизации сваезабивательного.


Значит, хреновый это опыт.

J>Видишь, как мы хорошо друг друга понимаем




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


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

J>Ты утверждаешь, что для java-приложений не бывает нескольких лет отладки?


оптимизации — возможно. отладки — крайне маловероятно.

J>Вот оно и есть — приведение к ссылке на базовый тип. Очевидно, с тем же успехом можно было бы применить и указатель на базовый тип.


Ключевое слово здесь — "ссылка". А за указатель в таком месте надо нещадно бить по рукам.

J>Когда ты говоришь, что знаешь русский, ты подразумеваешь, что 99% случаев употребления тобой русского языка не вызывает проблем ни у тебя, ни у воспринимающей стороны.


99% в какой области? Можно например сказать, что "знание русского языка" подразумевает знание нескольких матов и умение правильно ответить на вопрос "ты меня уважаешь"?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[29]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.12.04 06:33
Оценка:
Здравствуйте, jazzer, Вы писали:

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

J>Да, для С++ надо иметь знаний больше. Но если мы берем двух человек, которые умеют производить одинаково надежный код на разных языках, то какая нам разница, что это за языки? Или мы отсеем программера на С++ потому, что у него знаний больше?

Разница очень простая. Люди с одинаковыми скилами будут способны написать и отладить бошьше кода и смогут разобраться с более сложной системой.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[33]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.12.04 07:38
Оценка: -1
Здравствуйте, Шахтер, Вы писали:

Ш> Дорогой мой, разносчиков пиццы гораздо больше, чем программистов. Если ты занимаешься натягиванием формочек на базы данных, то это вовсе не значит, что ничего другого в мире программирования нет.


Твоя самоуверенность просто умиляет.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[28]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.12.04 07:38
Оценка:
Здравствуйте, Sergey, Вы писали:

S>У меня там, кстати, совсем не embedded, а вовсе даже под винду. Только вот у

S>винды память тоже ой как быстро кончается — 2.5 Гб еще выделишь, а вот уже
S>2.8 — фигушки. Особенно приятно, когда работает себе программа, работает,
S>часа три к ряду работает, а потом раз — Облом Петрович, нема памяти больше.
S>А все из-за того, что кто-то соломку на километр вокруг себя разложил, чтоб,
S>значит, падать при случае совсем не больно было.

А может все же из-за того, что не задумались над проктировнием как следует. Ну, работали же раньше программы в 640 килобайтах?
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[29]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.12.04 07:38
Оценка:
Здравствуйте, Alxndr, Вы писали:

A>С++ — язык с нулевыми издержками, "чем не пользуюсь, за то не плачу".


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

S>Да какая разница — узкая ниша или широкая? Дарней-то утверждал буквально

S>следующее "Значит — или ты делаешь виртуальный деструктор, или делаешь
S>наследование закрытым (еще лучше — агрегируешь объект). Уродцы наподобие
S>открытого наследования без виртуального дестркутора не должны иметь права на
S>существование."
S>То есть — нигде и ни когда А потом вдруг оказывается, что в узких нишах
S>все же можно


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

И это похоже уже тенденция.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.12.04 07:38
Оценка: -5
Здравствуйте, jazzer, Вы писали:

J>И? Какое это отношение имеет к обсуждаемой проблеме?

J>По-моему, ты перечислил меморилики. Или я не так понял?

Точно! Никакого. Лики и глюки делают ламеры. А мы то круть яцоподбная! Уря товарищи!
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.12.04 07:38
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>SVN написан на pure C (около 800 файлов). Только COM и Java-binding содержат чуть-чуть C++ (~20 файлов). Статистика по версии 1.0.9.


Точно на С то тоже ламеры пишут. Ну, найди бокрепорт любого С++-ного софта сравним количество мемориликов и неинициализированных переменных с Янусом.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.12.04 07:38
Оценка: 1 (1) -1
Здравствуйте, alexeiz, Вы писали:

A>Ошибка данного типа не является ошибкой из серии "ах, опять оплошал!" Она не допускается случайно. Наоборот, это сознательное действие, объяснимое только отсутствием необходимой квалификации.


Тут выше замечательно описано как народ готов плевать на подобне ошибки ради 5%-ного выигрыша в паяти.


ЗЫ

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

Так же забавно, что вокруг столько крутых С++-программистов, в разные MS, Quark, Adobe, Corel (далее следут список из сотен, а то и тысяч успешных IT-компаний) берут исключительно ламеров, потому как у всех и нуих продукты глючат так что плакать хочится. И по какой-то уж совсем не объяснимой причине все эти продукты написанны на С++.

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

Кто-нибудь может объяснить этот парадокс? Что вы откажетесь пойти на работу за 70 килобаксов в год в какой-нибудь Adobe? Или может быть Adobe вам не верит? А то я смотрю как валится In Design 3.0 и тихо фигею. А от того как Ворд вылетает уже и фигеть перестал.

"Ламеры" и "нишей" МС вместо того чтобы убрать вылеты Ворда придумали вочер который ловит крах ворда и спасает его память. После перезагрузки по этой памяти воссоздается файл (зачастую тоже битый). Ну не смешо ли это?
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[39]: Чем становится C++?
От: Дарней Россия  
Дата: 25.12.04 10:23
Оценка: -1
Здравствуйте, Sergey, Вы писали:

S>Это ты не подумавши сказал Какие такие накладные расходы для объектов,

S>лежащих в векторе? Заметь — не указателей на объекты, а именно объектов? И,
S>собственно, с чего спич начался — на кой черт объектам в этом случае
S>виртуальные деструкторы?

Есть еще куча разных вариантов с MMF, на которые тоже прекрасно ложится "приспособленец". Которые снимут ограничение на общий объем данных, и которые будут работать поэффективнее, чем твой вариант. Надо было просто думать об оптимизации алгоритма, а не крохоборством заниматься.
А вообще — кажется, мы отклонились от темы. Если у твоего класса закрыт деструктор и наследование от него не предусматривается в принципе, то никакого отношения к обсуждаемой проблеме твой случай не имеет.

S>Да-да, тупой я как пробка, есть такой недостаток.


ну тебе виднее
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[16]: Чем становится C++?
От: Дарней Россия  
Дата: 25.12.04 10:37
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Кто-нибудь может объяснить этот парадокс? Что вы откажетесь пойти на работу за 70 килобаксов в год в какой-нибудь Adobe? Или может быть Adobe вам не верит? А то я смотрю как валится In Design 3.0 и тихо фигею. А от того как Ворд вылетает уже и фигеть перестал.


Да чего там далеко ходить... Windows уже давно стал притчей во языцех по причине своей крайней дырявости. Достаточно вспомнить про один только MS-Blast. При этом Майкрософт имеет достаточные ресурсы, чтобы набирать лучших программистов во всем мире. Про набор в России я думаю все уже слышали, и никто из здесь присутствующих наверняка не отказался бы поработать на них за 70-80 килобаксов в год. А если кто и скажет, что откажется — значит, просто кривит душой. Ну, может быть за единичными исключениями. Но я таких людей не знаю
Однако, результаты их работы все могут видеть (и громогласно ругать) каждый день.

Если все такие умные и знают, "как надо писать на С++", почему бы вам не отправиться в Редмонд и не объяснить этим бракоделам, как надо на самом деле работать?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[16]: Чем становится C++?
От: FR  
Дата: 25.12.04 10:48
Оценка: +2 -2
Здравствуйте, VladD2, Вы писали:


VD>"Ламеры" и "нишей" МС вместо того чтобы убрать вылеты Ворда придумали вочер который ловит крах ворда и спасает его память. После перезагрузки по этой памяти воссоздается файл (зачастую тоже битый). Ну не смешо ли это?


Это ни проблема языка, ни C# ни java, ни помогут в решении подобных проблем, если фирме выгоднее выпускать глючные програмы, чем доводить их до ума, то они и будут выпускатся. И вообще очень часто вместо вылета программа написанная на языке с GC неправильно работает после критической ошибки.
Re[17]: Чем становится C++?
От: FR  
Дата: 25.12.04 10:51
Оценка: +1 :)
Здравствуйте, Дарней, Вы писали:


Д>Если все такие умные и знают, "как надо писать на С++", почему бы вам не отправиться в Редмонд и не объяснить этим бракоделам, как надо на самом деле работать?


На java (C#) значит выпускаются только безглючные программы?
Re[32]: Чем становится C++?
От: Дарней Россия  
Дата: 25.12.04 11:03
Оценка:
Здравствуйте, Sergey, Вы писали:

S>А потом вдруг оказывается, что в узких нишах

S>все же можно

Потому что если действительно припрет — то все можно. И на языке ассемблера писать, и самомодифицирующие проги в машинных кодах делать. "Историю одного байта" читали? Вот только такие случаи очень редко встречаются.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[18]: Чем становится C++?
От: Дарней Россия  
Дата: 25.12.04 11:51
Оценка: :)
Здравствуйте, FR, Вы писали:

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


Я например ни разу не слышал, чтобы в программе на Яве или C# бывали уязвимости из-за переполнения буфера
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[20]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.12.04 12:03
Оценка:
Здравствуйте, VladD2, Вы писали:

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


А где гарантия что багрепорты будут одинакового качества?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[19]: Чем становится C++?
От: FR  
Дата: 25.12.04 12:05
Оценка: :))
Здравствуйте, Дарней, Вы писали:

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


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


Д>Я например ни разу не слышал, чтобы в программе на Яве или C# бывали уязвимости из-за переполнения буфера


А я ни разу ни видел на C++ программу которая посылает систему в такой swap что приходится снимать задачу из-за того что GC не хватило памяти
Re[16]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.12.04 12:14
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Постоянно слушу от поклонников С++ фразу "Квалифицированный программист должен" или "это делают неофиты" ну и т.п. И не разу не слышал о том, что вот проблемы у нас в проекте. Все таки замечательно. Но как не глянешь в форум по плюсам, так там одни проблемы.


А то в .Net форумах рецепты эклеров обсуждают

VD>У меня возникает впечатление, что те кто защищает С++ в этом форуме и те кто пишет на нем неальный софт — это разные люди.


Прикольно

VD>Так же забавно, что вокруг столько крутых С++-программистов, в разные MS, Quark, Adobe, Corel (далее следут список из сотен, а то и тысяч успешных IT-компаний) берут исключительно ламеров, потому как у всех и нуих продукты глючат так что плакать хочится. И по какой-то уж совсем не объяснимой причине все эти продукты написанны на С++.


А ты не думал, почему тысячи специалистов весьма успешных компаний не решили переходить с Си++ на что-то другое, а один самый умный Влад Чистяков решил? Может есть что-то чего ты ещё не понял? Я не претендую на объяснение, но согласись, утверждать что все вокруг ошибаются и только ты прав несколько самонадеяно.

VD>Кто-нибудь может объяснить этот парадокс? Что вы откажетесь пойти на работу за 70 килобаксов в год в какой-нибудь Adobe? Или может быть Adobe вам не верит? А то я смотрю как валится In Design 3.0 и тихо фигею. А от того как Ворд вылетает уже и фигеть перестал.

Может у тебя с компьютером что-то? Как Ворд вылетает я уже очень давно не видел.

VD>"Ламеры" и "нишей" МС вместо того чтобы убрать вылеты Ворда придумали вочер который ловит крах ворда и спасает его память. После перезагрузки по этой памяти воссоздается файл (зачастую тоже битый). Ну не смешо ли это?


И тоже самое сделали в Corel DRAW.
А знаешь как ECC Registred память работает? Если считалось ошибочное значение, то оно считывается заново. Может это просто тенденция IT, которая лично тебе чужда?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[19]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.12.04 12:17
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Я например ни разу не слышал, чтобы в программе на Яве или C# бывали уязвимости из-за переполнения буфера


http://www.google.ru/search?q="asp.net"+vulnerability
http://www.google.ru/search?q=j2ee+vulnerability
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[20]: Чем становится C++?
От: Дарней Россия  
Дата: 25.12.04 16:19
Оценка: :)
Здравствуйте, adontz, Вы писали:

A>http://www.google.ru/search?q="asp.net"+vulnerability

A>http://www.google.ru/search?q=j2ee+vulnerability

Сравни вот с этим:
http://www.google.ru/search?hl=ru&amp;q=buffer+overrun+vulnerability
Не забывай при этом, что это — всего лишь один один из тех приятных сюрпризов, которыми нас обеспечивает C++
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[20]: Чем становится C++?
От: Дарней Россия  
Дата: 25.12.04 16:23
Оценка: :)
Здравствуйте, FR, Вы писали:

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


В последний раз я такое видел на своем замученном P166MMX + 16mb. Как ты сам понимаешь, никаким дот-нетом там и не пахло.
Так что мой тебе совет — просто купи нормальный компьютер.

И кстати — о глюках. VS6 у меня вылетал не реже раза в день. VS7 — не реже раза в неделю. Можно считать, что это — уже прогресс :-D
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[20]: Чем становится C++?
От: Павел Кузнецов  
Дата: 25.12.04 18:38
Оценка: +1 :)
Здравствуйте, FR, Вы писали:

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


Я видел. Rational Rose C++ Analizer. Правда, в него как раз какая-то сборка мусора вставлена (или какой-то свой хитрый менеджер памяти)
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[21]: Чем становится C++?
От: FR  
Дата: 25.12.04 18:52
Оценка:
Здравствуйте, Дарней, Вы писали:

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


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


Д>В последний раз я такое видел на своем замученном P166MMX + 16mb. Как ты сам понимаешь, никаким дот-нетом там и не пахло.

Д>Так что мой тебе совет — просто купи нормальный компьютер.

Бесполезно, глючные и прожорливые программы пишут быстрее чем становятся мощнее компьютеры

Д>И кстати — о глюках. VS6 у меня вылетал не реже раза в день. VS7 — не реже раза в неделю. Можно считать, что это — уже прогресс :-D


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

И вообще не надо представлять тут языки с GC как панацею, не так далеко они и ушли в плане безглючности от плюсов или дельфи.
Re[21]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.12.04 19:27
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Сравни вот с этим:

Д>http://www.google.ru/search?hl=ru&amp;q=buffer+overrun+vulnerability
Д>Не забывай при этом, что это — всего лишь один один из тех приятных сюрпризов, которыми нас обеспечивает C++

Здесь все ошибки со времён голого С. Я не говрю, что в С++ ошибок меньше, я говорю, Java/.Net не абсолютно безопасная среда.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[36]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 26.12.04 09:27
Оценка: :)
Здравствуйте, Дарней, Вы писали:

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

S>>ненужных виртуальных деструкторов. Разницы по памяти никакой, по скорости —
S>>Flyweight однозначно проигрывает.

Можно я ламерский вопрос задам? Что такое Flyweight?
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[33]: Чем становится C++?
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 26.12.04 13:38
Оценка: +3 :)
Здравствуйте, VladD2, Вы писали:

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


Влад, пара вопросов:
1) Ты видишь в этой тенденции что-то плохое? На ОО-дизайне разве свет клином сошелся?(задаю этот вопрос и плачу, поскольку сам горячий сторонник ОО-дизайна )
2) Что значит "мифические" парадигмы? За этими словами есть что-то кроме твоей личной неприязни?
3) Влад, а разве люди всерьез подсевшие на диезы, не начинают с большой радостью рассуждать о весьма конкретных парадигмах программирования, отличных от объектно-ориентированного? Например, о компоненто-ориентированном программировании?

Спасибо.
Re[30]: Чем становится C++?
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 26.12.04 13:44
Оценка: +2
Здравствуйте, VladD2, Вы писали:

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


A>>С++ — язык с нулевыми издержками, "чем не пользуюсь, за то не плачу".


VD>Дык кто же спорит. Если памяти в обрез, то лучшим решением будет С++, а то и С...

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

VD>Вот только тут речь скорее не об исключениях. А на С++ пишется сегодня море кода не критичного ни к чему кроме его надежности.

Я считаю, что для некритичных с памяти/скорости приложений и/или для программистов, которые считают, что надежность в С++ немыслима без виртуальности деструктора по умолчанию и т.п. подобных фенечек, C# — лучший выбор.
Re[17]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 18:04
Оценка:
Здравствуйте, adontz, Вы писали:

A>А то в .Net форумах рецепты эклеров обсуждают


Ну, вот, например, список первых десяти тем на данный момент:
Добавить элемент в Generic коллекцию через рефлексию
Автор:
Дата: 24.12.04

.NET vs Delphi
Автор:
Дата: 17.12.04

Работа с контролами в design-time
Автор: _lito
Дата: 26.12.04

Лицензирование моего контрола
Автор: Караваха
Дата: 26.12.04

byte[] в double
Автор:
Дата: 23.12.04

Надо вЫмаршаллить метод
Автор: __nogc
Дата: 24.12.04

Отборажение в память файла.
Автор: vanoiz
Дата: 24.12.04

Проблема с исключениями
Автор:
Дата: 25.12.04

обфуксаторы
Автор:
Дата: 24.12.04

Как посмотреть общее количество строк в проекте?
Автор:
Дата: 24.12.04

(VB.NET) Спецификация языка?
Автор: xvost
Дата: 20.12.04


А вот тоже самое из С++:
STL и итераторы
Автор:
Дата: 26.12.04

дробное/целое
Автор: tdebug
Дата: 26.12.04

Странная ошибка в Como, не хочет это компилировать.
Автор: _Winnie
Дата: 26.12.04

static
Автор: r2b2
Дата: 25.12.04

C2106
Автор:
Дата: 26.12.04

огромный массив и другое
Автор: hoakim
Дата: 24.12.04

что эффективнее
Автор:
Дата: 23.12.04

Транспонирование матрицы
Автор: Old Nick
Дата: 25.12.04

Почему Comeau и Intel отказываются компилить такой код?
Автор: Вадим Никулин
Дата: 25.12.04

Начнем все сначала. Указатель функцию
Автор:
Дата: 22.12.04


Мне кажется коментировать тут особо нечего. Вопросы по Шарпу конечно поднимаются, но намного реже и они не имеют стольк больезненного оттенка.

VD>>У меня возникает впечатление, что те кто защищает С++ в этом форуме и те кто пишет на нем неальный софт — это разные люди.


A>Прикольно


Грустно.

VD>>Так же забавно, что вокруг столько крутых С++-программистов, в разные MS, Quark, Adobe, Corel (далее следут список из сотен, а то и тысяч успешных IT-компаний) берут исключительно ламеров, потому как у всех и нуих продукты глючат так что плакать хочится. И по какой-то уж совсем не объяснимой причине все эти продукты написанны на С++.


A>А ты не думал, почему тысячи специалистов весьма успешных компаний не решили переходить с Си++ на что-то другое, а один самый умный Влад Чистяков решил?


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

A> Может есть что-то чего ты ещё не понял? Я не претендую на объяснение, но согласись, утверждать что все вокруг ошибаются и только ты прав несколько самонадеяно.


Я соглашусь, с тем, что в твоих словах ноль конструктива. Больше мне с тобой соглашаться не с чем.

A>И тоже самое сделали в Corel DRAW.


Значит и там не могут найти "нормальных" программистов?

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


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

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

Славо богу похоже с Вордом проблема скоро решится. ИнДизайн еще видимо лет 5 будет глючить.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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
Re[39]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.04 20:56
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Ага, есть. Только наследоваться от них нельзя.


Так потому и нельзя. Это приводит к серьезным проблемам. Например для тебя не секрет, что в дотнете массив производного типа автоматически кастится к базовому. А теперь представь что произойдет если структуры можно будет наследовать?

ПК> Кстати, интересно, а можно ли в C# передавать эти структуры в функции по ссылке, так чтобы их можно было в функциях модифицировать (соответственно, боксинг не подходит)?


Да.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[24]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 26.12.04 21:30
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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

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

Managed C++!

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

AVK>Написанным на С или С++, точно не знаю.

Дело ведь не в том, что он ресурсы совсем не освобождает, дело в том, что там освобождение отложено до луших времён, говоря проще имеет место некоторый garbage collector.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[20]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 26.12.04 21:34
Оценка:
Здравствуйте, VladD2, Вы писали:

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

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

Я тебе про другое. Есть два способа повышения надёжности.
Первый это сделать систему изначально высоконадёжную.
Второй это сделать систему средней надёжности и оснастить её механизмом восстановления после сбоев.
Второй путь ИМХО перспективнее.

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

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

Отсутсвие кроссплатформенности. Янус не ахти какое большое приложение, а даже если МОНО воспроизведёт весь .Net Framework 1.1 фиг он скомпилируется под линуксом. С чего бы это?

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

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

Зато маки не фиолетовы куче дизайнеров и типографов.

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

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

Первый раз о таком слышу.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[36]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.12.04 21:38
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


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


Ну, то есть ФП в нем поддреживаться так же как ООП? Или язык не является ООЯ?

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


Пашь, можно прочесть много разных статей, но С++ от этого другим не станет. Большинство языков поддерживает разные стили программирования. Многие из них делают это хорошо. С++ же даже ООП и то делает не лучшим образом. А уж какие нибудь ФП совсем поршиво. Уж извини я все же буду судить о вещах по своим ощущениям возникшим на базе своего опыта, а не на базе мечтаний создателей языка.

ЗЫ

Кстати, цитата из абстракта статьи:
C++ directly supports a variety of programming styles.
И при попытке поиска слова paradigm — 0 вхождений. Все же у товарища совести хватает называть вещи своими именами.

В общем, если С++ многопорадигмный, то Шарп вообще просто супер многопорадигмный. Уж в нем хотя бы не нужно извращаться, чтобы получить породию на ФП. Жаль только как и С++ он не сильно оптимизирован на функциональный стиль. Так банальная двойная рекурсия ставит в тупик большинство компиляторов.

ЗЫЫ

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

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


AVK>Написанным на С или С++, точно не знаю.


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

ПК>Кстати, интересно, а можно ли в C# передавать эти структуры в функции по ссылке, так чтобы их можно было в функциях модифицировать (соответственно, боксинг не подходит)?


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

A>Managed C++!


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

AVK>Влад, ты не сильно удивишься, если я скажу что IDEA написана на swing?


Сильно.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Чем становится C++?
От: alexeiz  
Дата: 26.12.04 22:35
Оценка: 29 (4)
Здравствуйте, VladD2, Вы писали:

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

VD>
...
VD>

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

Если не секрет, не поделишься, откуда ноги у этих сказок про working set растут? Не в том смысле, что working set — это все сказки, а в том, что "дерни за SetProcessWorkingSetSize — working set уменьшится, и наступит счастье". Я уже не раз встречал подобное заблуждение, очень распостраненное на рсдн'е.

Если действительно интересует, что делает данная функция, смотрим help. Самое важное, что мы там видим, это определение понятия working set:

The working set of a process is the set of memory pages currently visible to the process in physical RAM memory. These pages are resident and available for an application to use without triggering a page fault. The minimum and maximum working set sizes affect the virtual memory paging behavior of a process.


Собственно, отсюда уже понятно, что делает SetProcessWorkingSetSize, вызванная с параметрами, как у тебя в примере. Эта функция просто отправляет наибольшее количество страниц в page file. Со всеми вытекающими, естественно. Не думаю, что ты из этого получишь какую-либо выгоду, а ущерб, как мы видим, на лицо.

Параметр показываемый TaskManager'ом, который тебя должен интересовать, это virtual memory. И это будет набор memory pages, доступных для процесса (вне зависимости от их расположения в памяти или в page file). Как ты понимаешь virtual memory нельзя "уменьшить" такими трюками вроде SetWorkingSetSize. Вся память, которую, твой процесс затребовал, она вся здесь и никуда от нее не деться.

Но все-таки virtual memory — это слишком грубый параметр. На самом деле, имеет смысл поделить его на три части: private, shared & sharable. Private — это память, которая принадлежит твоему процессу и не с кем не разделяется (например, выделения с помощью VirtualAlloc попадают в эту категорию). Shared — это память разделяемая между процессами. Обычно это код и разделяемые данные из DLL, которые ты только читаешь. Sharable — это память, которая потенциально может разделяться, но в текущий момент ни один процесс кроме твоего в ней не заинтересован.

Теперь нам ясно, какой параметр нам нужно стараться уменьшать. Это, во-первых, private memory. Из managed кода, это значит, что нужно меньше выделять самому и меньше использовать всякие фичи, которые любят выделять/писать в память. Еще неплохо пользоваться NGEN'ом, чтобы избавиться от необходимости JIT'а, который динамически создает код, весь попадающий в private категорию.

Далее идет sharable. Sharable звучит вроде неплохо, но если ни с кем больше эта память не разделяется, то она для нас as good as private. Что это значит для managed кода — reflection. Metadata, которая читается из твоей assembly в 99% случаях больше никому кроме тебя не нужна. Если еще учесть, что она обычно очень разреженная, то вполне возможно, что чтение метадаты для каждого нового класса приведет к page fault.

Чтобы увидеть, где у тебя в процессе эти private, shared & sharable, нужно использовать vadump.
Re[32]: Чем становится C++?
От: prVovik Россия  
Дата: 26.12.04 23:35
Оценка: 1 (1) +3
Здравствуйте, VladD2, Вы писали:

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


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


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

В том то и вся фишка, что не увеличится, а, возможно, даже уменьшится. При наличии нормального компилятора, конечно.
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[37]: Чем становится C++?
От: Павел Кузнецов  
Дата: 27.12.04 00:17
Оценка:
VladD2,

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


> Ну, то есть ФП в нем поддреживаться так же как ООП? Или язык не является ООЯ?


Все-таки, похоже, не прочитал...

Constraints-based, logic programming, functional programming, and various forms of concurrent programming are examples of good and useful styles of programming not supported by C++.

Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[40]: Чем становится C++?
От: Павел Кузнецов  
Дата: 27.12.04 01:03
Оценка:
VladD2,

> ПК> Кстати, интересно, а можно ли в C# передавать эти структуры в функции по ссылке, так чтобы их можно было в функциях модифицировать (соответственно, боксинг не подходит)?


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


В смысле, "развеивать подозрения"? Простого ответа "да"/"нет" в данном случае вполне достаточно Пока что у меня к C# интерес исключительно академический, соответственно, особенно тратить время на упражнения с ним не хочется. Недавно чуть было не познакомился поближе с VB.Net, решив установить DotNetNuke, но после некоторых мучений переключился на drupal, с которым пока проблем заметно меньше. В итоге, похоже, поближе познакомлюсь с PHP
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[33]: Чем становится C++?
От: Дарней Россия  
Дата: 27.12.04 04:53
Оценка:
Здравствуйте, prVovik, Вы писали:

V>В том то и вся фишка, что не увеличится, а, возможно, даже уменьшится. При наличии нормального компилятора, конечно.


то есть — если использовать std::istream вместо ручного разбора данных, то это будет работать быстрее и отнимать меньше памяти?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[34]: Чем становится C++?
От: Павел Кузнецов  
Дата: 27.12.04 05:29
Оценка: :))
Дарней,

> V> В том то и вся фишка, что не увеличится, а, возможно, даже уменьшится. При наличии нормального компилятора, конечно.


> то есть — если использовать std::istream вместо ручного разбора данных, то это будет работать быстрее и отнимать меньше памяти?


Нет. Но это не означает, что нельзя было сделать по-другому.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[40]: Чем становится C++?
От: Sergey Россия  
Дата: 27.12.04 08:09
Оценка:
Hello, Дарней!
You wrote on Sat, 25 Dec 2004 10:23:08 GMT:

S>> Это ты не подумавши сказал Какие такие накладные расходы для

S>> объектов, лежащих в векторе? Заметь — не указателей на объекты, а
S>> именно объектов? И, собственно, с чего спич начался — на кой черт
S>> объектам в этом случае виртуальные деструкторы?

Д> Есть еще куча разных вариантов с MMF, на которые тоже прекрасно ложится

Д> "приспособленец".

Хоть один кроссплатформенный среди них есть?

Д> Которые снимут ограничение на общий объем данных, и которые будут

Д> работать поэффективнее, чем твой вариант.

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

Д> Надо было просто думать об

Д> оптимизации алгоритма, а не крохоборством заниматься.
Еще раз, для тех кто в танке — нечего там оптимизировать.

Д> А вообще -

Д> кажется, мы отклонились от темы. Если у твоего класса закрыт деструктор
Д> и наследование от него не предусматривается в принципе,

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

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[34]: Чем становится C++?
От: slegkapjan  
Дата: 27.12.04 08:30
Оценка:
Д>то есть — если использовать std::istream вместо ручного разбора данных, то это будет работать быстрее и отнимать меньше памяти?
N.B. Вообще, потоковая система STL написана из рук вон плохо. Даже при чтении одного байта через istream::get() вызвается огромное количество (в том числе и виртуальных функций), что приводит к очень большой потере производительности. В этом смысле, <stdio.h> и FILE* практически идеальное решение. Единственное, что лично меня не устраивает в FILE * -- это отсутствие возможности подключать эту библиотеку к своим потокам, поэтому, например, если нужно дать возможность программе считывать данные из сжатого файла как из обычного, приходится переходить на свою доморощенную потоковую библиотеку.
Re[30]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 27.12.04 08:34
Оценка:
Здравствуйте, Дарней, Вы писали:

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


Д>JИли мы отсеем программера на С++ потому, что у него знаний больше?


Д>Потому что он больше денег требует :) При этом, при одинаковой производительности труда. (нет, я говорю не про скорость написания кода. Я говорю про скорость приближения к результату)


К большому моему сожалению, тем же жаверам уже платят больше.

J>>Или это не так?


Д>Прочитай внимательно и поймешь, что не так.

Перечитал. Не понял. :)

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


Д>Дьявол, как всегда, в деталях. В данном случае — в цене.


см. выше

J>>Опыт автоматизации заборостроительного совсем не обязательно поможет при автоматизации сваезабивательного. :)


Д>Значит, хреновый это опыт.


Если ты изначально не старался спроектировать универсальную систему — именно такой опыт у тебя и будет.
А насчет универсальной у нас полное согласие :)

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


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


То же самое в java, и так же надо следить. Память — это не единственный ресурс, за использованием которого нужно следить. Хорошо, что есть языки, которые позволяют программисту забыть о конкретно памяти, но все остальное все равно остается и это "остальное" тоже нужно проектировать и проверять.
К слову, С++ позволяет автоматизировать и то, и другое путем использования принципа RAII.
Т.е. большинство программистов С++, которых я знаю, не видят большой разницы в выделении памяти и открытии соединения с базой — и то, и другое без надобности держать не стоит, и то, и другое освобождать дважды — ошибка, так что и в том, и в другом случае политику владения ресурсом надо продумывать, документировать и следить за ее исполнением.

J>>Ты утверждаешь, что для java-приложений не бывает нескольких лет отладки?


Д>оптимизации — возможно. отладки — крайне маловероятно.

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

J>>Вот оно и есть — приведение к ссылке на базовый тип. Очевидно, с тем же успехом можно было бы применить и указатель на базовый тип.


Д>Ключевое слово здесь — "ссылка". А за указатель в таком месте надо нещадно бить по рукам.

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

J>>Когда ты говоришь, что знаешь русский, ты подразумеваешь, что 99% случаев употребления тобой русского языка не вызывает проблем ни у тебя, ни у воспринимающей стороны.


Д>99% в какой области? ;) Можно например сказать, что "знание русского языка" подразумевает знание нескольких матов и умение правильно ответить на вопрос "ты меня уважаешь"? :))


Совершенно верное замечание. Взять, к примеру, стройку :) Там нужны как раз специфические навыки общения :)

Я к тому, что очень мало есть реальных промышленных проектов, где бы использовался, скажем, буст, метапрограммирование и т.п.
А на том подмножестве С++, который реально широко используется (ближайший пример — MFC), писать быстро и без ошибок совершенно несложно.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[20]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 27.12.04 08:38
Оценка:
Здравствуйте, VladD2, Вы писали:

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


J>>И? Какое это отношение имеет к обсуждаемой проблеме?

J>>По-моему, ты перечислил меморилики. Или я не так понял?

VD>Точно! Никакого. Лики и глюки делают ламеры. А мы то круть яцоподбная! Уря товарищи! :)


Вроде из команды, а раздуваешь флейм.
нехорошо.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[41]: Чем становится C++?
От: Дарней Россия  
Дата: 27.12.04 08:45
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Хоть один кроссплатформенный среди них есть?


Вероятно, все остальное в твоей проге сплошь и насквозь кросс-платформенное.

S>Когда я писал конкретно тот код, актуальна была поддержка Win98. MMF там

S>работает настолько замечательно, что хоть вешайся.

Любопытная информация. Откуда дровишки?

S>Еще раз, для тех кто в танке — нечего там оптимизировать.


чушь. Идеальных программ в природе не бывает, как и идеальных программистов.

S>Я, кажется, ясно написал — protected деструктор. Если ты считаешь, что от

S>такого класса нельзя наследоваться, то о чем я тут с тобой вообще говорю...

Если ты не в состоянии четко и недвусмысленно описать свой случай — значит, и правда говорить не о чем.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[25]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.04 08:50
Оценка:
Здравствуйте, adontz, Вы писали:

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

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

A>Managed C++!


С чего ты взял? Нет конечно. Обычный С++.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[38]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 27.12.04 08:55
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Действительно ламерский. Но не в том смысле что стыдно этого не знать, а в том, что подобные вещи в гугле за пол минуты найти можно: Flyweight GOF.

Дык если я ламер, то в ламеризме разбираться должен. как испытывающий его на собственной шкуре, или нет:?
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[20]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.12.04 09:08
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>SVN написан на pure C (около 800 файлов). Только COM и Java-binding содержат чуть-чуть C++ (~20 файлов). Статистика по версии 1.0.9.


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


Не скажу насчёт формального багрепорта, но в Янусе нередко возникает ошибка transaction deadlock. И... хммм... не помню даже, какие причины — но, в общем, stack trace где-то с регулярностью раз в два дня я получаю. Возможно, что причина в Jet. Честно говоря, даже внимание обращать перестал. Некий уровень глючности программе прощается, поскольку она:
а) Несомненно удобна;
б) Данные пока не теряла;
в) Единственный оффлайн-ридер для RSDN (News-ами я пользоваться не люблю);
г) Я вообще очень толерантный пользователь.

К слову сказать, 1.1.4b3.185 гораздо лучше, чем 1.1.3.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Блин!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.12.04 09:08
Оценка: 111 (8) +3
Здравствуйте, VladD2, Вы писали:

A>>Ошибка данного типа не является ошибкой из серии "ах, опять оплошал!" Она не допускается случайно. Наоборот, это сознательное действие, объяснимое только отсутствием необходимой квалификации.

VD>Тут выше замечательно описано как народ готов плевать на подобне ошибки ради 5%-ного выигрыша в паяти.
Меньше надо на мозги людям фигнёй капать. Вот они и будут больше и чаще думать.

VD>ЗЫ


VD>Постоянно слушу от поклонников С++ фразу "Квалифицированный программист должен" или "это делают неофиты" ну и т.п. И не разу не слышал о том, что вот проблемы у нас в проекте.

Дык, если я, например, начну говорить о проблемах в проекте, то всё сведётся к менеджменту, а не к языкам. Причём тут языки? Это технические проблемы, которые совсем не сложно решить. А вот примеров идиотских менеджерских решений, из-за которых можно смело потом идти и обвинять C++ (VB, SQL, ...) во всех смертных грехах привести можно сколько хошь. Простейший, это "не трогайте этот кусок кода, потому что он УЖЕ ОТЛАЖЕН! А-а-а-а!", даже если с этим куском кода работать становится невозможно — стоит колом поперёк логики и хоть ты тресни. Ты тут вспомнишь Задорнова, а я с тобой соглашусь — да, они тупые с точки зрения техники реализации. И воспитывают таких же тупых пользователей. Ну и причём тут языки?

С другой стороны пользователям тоже особо делать нечего. Как, например, никуда не деться от того, что кроме Janus удобного офлайнового ридера нет. Да, я знаю, что проявляю тупость и беспринципность. Поверь, был бы другой ридер — менее глючный и столь же удобный, сменил бы его с радостью. Даже денег, наверное, дал бы за копию. Но только, если он не будет тренировать моё терпение и развлекать stack dump-ами (AVP-окнами, как вариант).

VD>Все таки замечательно. Но как не глянешь в форум по плюсам, так там одни проблемы. У меня возникает впечатление, что те кто защищает С++ в этом форуме и те кто пишет на нем неальный софт — это разные люди.

Неправильное у тебя впечатление. Потому что те, кто "защищает C++ на этом форуме" и "пишет на нём реальный софт", как правило, отвечают, а не жалуются в форуме по C++. Разницу видишь?

VD>Так же забавно, что вокруг столько крутых С++-программистов, в разные MS, Quark, Adobe, Corel (далее следут список из сотен, а то и тысяч успешных IT-компаний) берут исключительно ламеров, потому как у всех и нуих продукты глючат так что плакать хочится. И по какой-то уж совсем не объяснимой причине все эти продукты написанны на С++.

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

Кстати, та же Corel, вроде бы, пыталась свой пакет на Java переписать. Гы... 7-я, что ли, версия была... Не помню. В итоге вернули всё взад, AFAIK.

VD>Нет, бесспорно, и на С++ и даже на С можно написать устойчивый и относительно надежный софт. Причем до недавнего времени это даже было обсалютно оправдано. Но стоимость доведения софта написанного на С++ до качественного состояния настолько велика, что даже монстры позволяют себе тратить такие суммы только на флагмансткие продукты вроде СУБД и OS.

Почему-то я уверен, что дай им волю "нарушить правила здорового консерватизма" и мы быстро узнаем, что такое SQL-recordset, состоящий из строчек stack dump-а. Это как раз тот случай, когда корпоративные правила работают на благо общества.

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


VD>Кто-нибудь может объяснить этот парадокс? Что вы откажетесь пойти на работу за 70 килобаксов в год в какой-нибудь Adobe?

Хех. Не смеши такой риторикой. "Пойти на работу за 70K$ в год" и "препроектировать продукт" в компании калибра "какого-нибудь Adobe" — суть две большие разницы. Почему, понятно? Если не понятно, то объясню.

"Пойти на работу" — это всего лишь устроиться одним из десятков исполнителей низшего звена. В лучшем случае — уровня team lead команды по разработке какого-нибудь визуализатора отдельно взятых овалов на устройстве с разрешением 1024x768 и менее. Или какая-нибудь подобная чушь.

А перепроектировать продукт... Ну ты что! Это же, млин, честь великая, достойная Наполеона местного масштаба. Это же сразу десяток менеджеров закладывать в бюджет нужно! Так что, те самые представители "маленьких компаний" как тот кот из анекдота: "зъисть-то он зъист, да хто ж ему дасть!" на то есть проверенные коты, которые жрут умеренно и время от времени успокаивающе мурчат за печкой (на собраниях). Дальше о глюке феномена "доверия к проверенным кадрам" рассказывать или сам догадаешься?

VD>Или может быть Adobe вам не верит? А то я смотрю как валится In Design 3.0 и тихо фигею. А от того как Ворд вылетает уже и фигеть перестал.

А я вот, уже давно ни отчего не фигею. Привык, что несмотря на рассуждения о необходимости "правильно" проектировать, программы как писали через ж... так и будут писать. И виноватых не сыщешь, потому что у всех есть разумные и логичные оправдания. Одни боятся гнева клиентов, другие — гнева боссов, третьи — непосредственных руководитей, четвёртые никого не боятся, но никого и не слушают и т.п. И распространение управлямых сред типа Java/.Net ситуацию не улучшит, а только ухудшит. Одно хорошо — stack trace станет просто ординарным явлением, а не предсмертным криком программы.

VD>"Ламеры" и "нишей" МС вместо того чтобы убрать вылеты Ворда придумали вочер который ловит крах ворда и спасает его память. После перезагрузки по этой памяти воссоздается файл (зачастую тоже битый). Ну не смешо ли это?


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

А происходит "как всегда": менеджер принял техническое решение; балбес-архитектор залудил полупродуманную фичу, потому что "требования бизнеса" (фетиш наш драгоценный, мать его трижды за ногу); взяли насквозь сертифицированного программиста, которому похрену, что будет на выходе — лишь бы начальство удовлетворить; взяли хорошего программиста, но объяснили, что думать вредно, а "нада слушацца и не жужжать". И таких причин можно найти море.

Только при чём здесь C++? А вот
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[42]: Чем становится C++?
От: Sergey Россия  
Дата: 27.12.04 09:21
Оценка: +2
Hello, Дарней!
You wrote on Mon, 27 Dec 2004 08:45:29 GMT:

S>> Хоть один кроссплатформенный среди них есть?


Д> Вероятно, все остальное в твоей проге сплошь и насквозь

Д> кросс-платформенное.

Не все. Но собственно рисовалка — вполне портабельная.

S>> Когда я писал конкретно тот код, актуальна была поддержка Win98. MMF

S>> там работает настолько замечательно, что хоть вешайся.

Д> Любопытная информация. Откуда дровишки?


Из личного опыта. Ну и в MSDN была раньше статья Q125713 (во что сейчас
переименовали, не знаю), которая проблемы разъясняла. Все просто — гигабайт
отводится на все view memory-mapped файлов и другую совместно используемую
память (16-битные задачи и т.п). На практике — если файло больше гига, то ты
даже первые его три байта под 98 виндой не отмапишь.

S>> Еще раз, для тех кто в танке — нечего там оптимизировать.


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

Д> программистов.

Я не говорил — идеальная. Я говорил — по памяти ее не соптимизируешь.

S>> Я, кажется, ясно написал — protected деструктор. Если ты считаешь, что

S>> от такого класса нельзя наследоваться, то о чем я тут с тобой вообще
S>> говорю...

Д> Если ты не в состоянии четко и недвусмысленно описать свой случай -

Д> значит, и правда говорить не о чем.

Ну и пока.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[21]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.04 10:07
Оценка:
Здравствуйте, adontz, Вы писали:

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

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

A>Отсутсвие кроссплатформенности. Янус не ахти какое большое приложение, а даже если МОНО воспроизведёт весь .Net Framework 1.1 фиг он скомпилируется под линуксом. С чего бы это?


Я тебя правильно понял — если бы янус был написан на С++, то он без проблем бы под Линухом работал?
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Диаложики, а-а-а-а-а!!!!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.12.04 10:25
Оценка: 1 (1) +2 -1 :)
Здравствуйте, VladD2, Вы писали:

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


VD>Никому не выгодно производить глючные программы.

Ага, потому что других-то и нет.

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

Это не потому, что на C++ сложно переписывать, а только лишь потому, что придётся заморочиться доказательством необходимости такого переписывания десятку менеджеров, которых научили, что "переписывать = suxx и mustdie". А уж тем паче, переписывать на том же языке! Театр абсурда.

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

Далась тебе эта порча памяти! Миллион раз уже объясняли, что это — не проблема. А вот то, что Janus вывалил мне 5 минут назад сообщение "feature philisophy(2) not available" со стек-трейсом, когда я не дождавшись окончания обработки сообщений после синхронизации ткнул мышой в название форума — проблема ничуть не меньшая, если не большая, чем виртуальная "порча памяти".

VD>При этом сбои становятся значительно более редки, не столь критичны (диаложик с возможностью продолжения против полного краха) и значительно проще вылавливаются.

Угу. Есессно легко ловить сбои, равномерно распределённые по всей программе. Извини. Притом, если честно, то по мне так лучше полный обвал софта, который хоть как-то заставляет менеджеров и программистов чесать задницу, чем систематически появляющийся "диаложик с возможностью продолжения", на который разработчики просто плюют. Замечательный пример — среда Java NetBeans. Не, оно не падает с GPF. Оно вообще не падает. Оно выдаёт "диаложик", а потом ты трахаешься, выясняешь: куда и что из настроек проекта делось.

VD>Наличие метаданных позволяет так же значительно упростить создание тех самых систем контроля качества.

Которые тоже выдают "диаложик", который тоже содержит возможность продолжения...

VD>Более легкий в парсинге язык позволяет автоматизированный проивзводить анализ код.

Угу, и автоматизированно нажать на Continue...

VD>Да и просто читать код становится намного проще, что резко упрощает его модификацию.

Дык, хто б спорил — нет беллетристики интересней, чем исходный код.

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

От эт ты в самую точку попал! Действительно — ни денег, ни сил не тратится! По Janus-у это как раз и видно.

VD>А 90% тормозов и багов вылезающих в Янусе являются проявлением используемых в нем анменеджед-контролов вроде редактора или броузера.

То ли ещё будет, когда они станут менеджед... Уж поверь, где коготок увяз, там птичке всей... GC!
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[21]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.12.04 10:47
Оценка: +1 :)
Здравствуйте, Дарней, Вы писали:

Д>Сравни вот с этим:

Д>http://www.google.ru/search?hl=ru&amp;q=buffer+overrun+vulnerability
Д>Не забывай при этом, что это — всего лишь один один из тех приятных сюрпризов, которыми нас обеспечивает C++

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

Ни больше, ни меньше.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Блин!
От: Дарней Россия  
Дата: 27.12.04 10:53
Оценка: 36 (2)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Причём тут языки? Это технические проблемы, которые совсем не сложно решить. А вот примеров идиотских менеджерских решений, из-за которых можно смело потом идти и обвинять C++ (VB, SQL, ...) во всех смертных грехах привести можно сколько хошь.


Ну вот, от идеальных программистов мы плавно перешли к идеальным менеджерам вкупе с идеальными архитекторами, заказчиками, и прочими родственниками вакуумживущих сфероконей
Обвинять в проблемах кого-то другого можно сколько угодно, может быть, на душе от этого и станет легче. Но проблемы это никогда не решит.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[41]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.04 10:55
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>VladD2,


>> ПК> Кстати, интересно, а можно ли в C# передавать эти структуры в функции по ссылке, так чтобы их можно было в функциях модифицировать (соответственно, боксинг не подходит)?


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


ПК>В смысле, "развеивать подозрения"?



Именно.

ПК> Простого ответа "да"/"нет" в данном случае вполне достаточно


Дык вопросов и подозрений слишком много.

ПК> Пока что у меня к C# интерес исключительно академический, соответственно, особенно тратить время на упражнения с ним не хочется.


Дык столько время тратится в баталях по его поводу... причем в основном идут обсуждения мифов. Глядишь 80% сналось бы само собой.

ПК> Недавно чуть было не познакомился поближе с VB.Net, решив установить DotNetNuke, но после некоторых мучений переключился на drupal, с которым пока проблем заметно меньше.


А что конкретно нужно то?

ПК>В итоге, похоже, поближе познакомлюсь с PHP


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

ПК>Все-таки, похоже, не прочитал...

ПК>

Constraints-based, logic programming, functional programming, and various forms of concurrent programming are examples of good and useful styles of programming not supported by C++.



Скажи прямо что сказать то хочешь?

ЗЫ

Статью эту я прочел и ровным счетом ничего нового из нее не почерпнул.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[33]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.04 10:55
Оценка:
Здравствуйте, prVovik, Вы писали:

V>В том то и вся фишка, что не увеличится, а, возможно, даже уменьшится. При наличии нормального компилятора, конечно.


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

VD>>Точно! Никакого. Лики и глюки делают ламеры. А мы то круть яцоподбная! Уря товарищи!


J>Вроде из команды, а раздуваешь флейм.

J>нехорошо.

Где флэйм то? Я искринне радуюсь любой глупости.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.04 10:55
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Если не секрет, не поделишься, откуда ноги у этих сказок про working set растут? Не в том смысле, что working set — это все сказки, а в том, что "дерни за SetProcessWorkingSetSize — working set уменьшится, и наступит счастье". Я уже не раз встречал подобное заблуждение, очень распостраненное на рсдн'е.


Про щастье я не знаю. Это не по адресу. Я просто продемонстрировал, что реально требуемая память значительно меньше чем то что занимается процессом в целях повышения производительности.

A>Если действительно интересует, что делает данная функция, смотрим help. Самое важное, что мы там видим, это определение понятия working set:

A>

The working set of a process is the set of memory pages currently visible to the process in physical RAM memory. These pages are resident and available for an application to use without triggering a page fault. The minimum and maximum working set sizes affect the virtual memory paging behavior of a process.


A>Собственно, отсюда уже понятно, что делает SetProcessWorkingSetSize, вызванная с параметрами, как у тебя в примере. Эта функция просто отправляет наибольшее количество страниц в page file. Со всеми вытекающими, естественно. Не думаю, что ты из этого получишь какую-либо выгоду, а ущерб, как мы видим, на лицо.


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


A>Параметр показываемый TaskManager'ом, который тебя должен интересовать, это virtual memory.


Это почему? Мне что виртуельного места в пэйдж-файле жалого что ли? Пока памяти в системе хватает этот параметр ровным счетом ничего не значит.

A> И это будет набор memory pages, доступных для процесса (вне зависимости от их расположения в памяти или в page file). Как ты понимаешь virtual memory нельзя "уменьшить" такими трюками вроде SetWorkingSetSize. Вся память, которую, твой процесс затребовал, она вся здесь и никуда от нее не деться.


Я вот не очень понимаю каой вообще смысл рассуждать о виртуальной памяти? Меня как раз интересует та часть памяти которая реально используется процессом.

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

[рассуждения о кошерности VM поскипаны.]

A>Теперь нам ясно, какой параметр нам нужно стараться уменьшать. Это, во-первых, private memory. Из managed кода, это значит, что нужно меньше выделять самому и меньше использовать всякие фичи, которые любят выделять/писать в память. Еще неплохо пользоваться NGEN'ом, чтобы избавиться от необходимости JIT'а, который динамически создает код, весь попадающий в private категорию.


На практике ngen ничего не дает. Ни по памяти ни по скорости. Дает он только небольшое увеличение скорости загрузки модуля.

[рассуждения про разреженность метаданных тоже поскипаны это такие копейки, что о них и говорить не стоит]

A>Чтобы увидеть, где у тебя в процессе эти private, shared & sharable, нужно использовать vadump.


А зачем мне смотреть на дамп виртуальной памяти?

Еще раз попытаюсь объяснить. Объем знятой но не испльзуемой приложением папяти никак не влияет на производительность (по крайней мере в ОС семейства NT). Значим только тот объем физической памяти который постоянного используется процессом. Если моя программа занимает 100 мег виртуальной памяти, а использует из нее 5, то все затраты сводятся к выделению 100 мег памяти и отображению их на пэдж-файл (если это вообще не ДЛЛ). Время уходящее на заем виртуальной памяти не вилеко, но ощутимо. Время же на назначение и сброс страниц (если в них не ведется записбь) крайне мало.

Можешь произвести следующий эксперемент. Создай на анмендежед плюсах вот такой код:
int ToMByte(int bites) { return bites * 1024 * 1024; }

void main()
{
    printf("1 ...");
    getchar();

    PBYTE mem = NULL;
    mem = (PBYTE)VirtualAlloc(NULL, ToMByte(500), MEM_COMMIT, PAGE_READWRITE);

    printf("2 ...");
    getchar();

    SetProcessWorkingSetSize(
        GetCurrentProcess(), -1, -1);

    printf("3 ...");
    getchar();

    int initSize = ToMByte(5);
    for (int i = 0; i < initSize; i++)
        mem[i] = i % 255;

    printf("4 ...");
    getchar();
}


Понажимай на энтор и погляди на реальные затраты времени и памяти.

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

Реальное дотнетное приложение просто не отдает память системе рассчитывая на то, что если что та сама справится с отемом.

Хороший полигон для наблюдения за памятью является Янус. В работе он может занимать 60-80 мег оперативки, но стоит свернуть его и развернуть обратно как он нчнет занимать 12-25 мег. Причем рост памяти особо идти не будет. Но стоит попереключаться по форумам, поткрывать окна, как память снова достигнет максимума, вот только произойдет это очень не быстор. Единственный быстрый способ занять сразу много памяти — это произвести поиск по всем фомурмам. При этом, правда, дотнет будет вообще не причем, так как поиск целиком осуществляется средствами Jet-а, но MV и ворксет поднимутся до максимальных величин. И опять же банальная минимизация сбросит ворксет в копеечные величины.

К чему я все это рассказываю? Дело в том, что то что многие воспринимают за ужасную прожорливость дотнетных приложений на самом деле является самым разумным способом управления памятью в ОС семейства NT. Если памяти хватает, то операции на управление ею минимизируются. Если же ее становится недостаточно, то она переодически отнимается у дотнет-ых прцессов и отдается другим. Именно по этому дотнет больше всего поражает воображение обладателей огромных объемов памяти. Запусти то же приложение в стесненных условиях и оно начнет расходовать память намного экономнее, но эффективность от этого упадет. Все вместе это называется эффективным автоматическим управлением памятью. И не нужно пугать этим неосведомленных людей.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 27.12.04 11:09
Оценка: 1 (1) +2
Здравствуйте, VladD2, Вы писали:

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


VD>>>Точно! Никакого. Лики и глюки делают ламеры. А мы то круть яцоподбная! Уря товарищи! :)


J>>Вроде из команды, а раздуваешь флейм.

J>>нехорошо.

VD>Где флэйм то? Я искринне радуюсь любой глупости. :)


Влад, не разыгрывай дурачка, пожалуйста, очень неприятно общаться в такой манере.
Мы с Дарнеем обсуждали конкретный баг с удалением объекта без виртуального деструктора через указатель на базовый класс: http://rsdn.ru/Forum/Message.aspx?mid=959273&amp;only=1
Автор: Дарней
Дата: 22.12.04

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

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

Так что твою реплику про круть-не-понял-чему-подобную я квалифицирую исключительно как приглашение к флейму.
Уж уволь.
Вот когда этот топик переедет в "Священные войны" (чего мне не хотелось бы) — тогда пожалуйста, правда, в любом случае я вряд ли приму участие во флейме.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Блин!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.12.04 11:33
Оценка:
Здравствуйте, Дарней, Вы писали:

ГВ>>Причём тут языки? Это технические проблемы, которые совсем не сложно решить. А вот примеров идиотских менеджерских решений, из-за которых можно смело потом идти и обвинять C++ (VB, SQL, ...) во всех смертных грехах привести можно сколько хошь.


Д>Ну вот, от идеальных программистов мы плавно перешли к идеальным менеджерам вкупе с идеальными архитекторами, заказчиками, и прочими родственниками вакуумживущих сфероконей

Д>Обвинять в проблемах кого-то другого можно сколько угодно, может быть, на душе от этого и станет легче. Но проблемы это никогда не решит.

Об том и речь.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[21]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.04 11:35
Оценка: 10 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Не скажу насчёт формального багрепорта, но в Янусе нередко возникает ошибка transaction deadlock.


Ошибки бывают всегда и везде. Вопрос в критичности и массовости ошибок. Согласись, что для менеджед-кода эти показатели значительно ниже. А делдлоки... это не дедлоги, а скорее проблемы с параллельным обновлением БД из разных потоков. Короче опять Джет. С mssql-ем такого небыло бы. Просо проект не денежный и некому серьезно заняться даной проблемой, а так как не особо достает вот и живет очень давно.

ГВ>К слову сказать, 1.1.4b3.185 гораздо лучше, чем 1.1.3.


207 была самя качественная.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 27.12.04 13:03
Оценка: -2
Здравствуйте, AndrewVK, Вы писали:

A>>Отсутсвие кроссплатформенности. Янус не ахти какое большое приложение, а даже если МОНО воспроизведёт весь .Net Framework 1.1 фиг он скомпилируется под линуксом. С чего бы это?

AVK>Я тебя правильно понял — если бы янус был написан на С++, то он без проблем бы под Линухом работал?

Нет не правильно. На Си++ можно написать кроссплатформенное приложение, на C# нельзя. Это не только заслуга большого количества компиляторов (кстати используя GCC можно не менять компилятор на разных платформах), но и следствите большого количества кроссплатформенных библиотек.

Те кто пишут любой софт под несколько платформ выберут Си++, поскольку как бы трудно не было писать на Си++ по сравнению с C# это всё же лучше, чем иметь .Net проект под Windows и ещё какой-то под другую ОС.

В контексте того же Януса:

Для работы с сетью используем libwww
Для отображения отображения интерфейса (не сообщений, а всего интерфейса) используем Mozilla (не ActiveX)

Не знаю как насчёт libwww, но IDE Komodo от ActiveState использует для интерфейса именно движок Mozilla. и ничего, весьма качественная IDE получилась.
Поработав с Komodo, я понял, что у VS IDE есть свои недостатки которых там нет. ИМХО среды по уровню сравнимые.

Можно было так сделать? Можно! Было бы это кроссплатформенно? Да.
Другое дело, такому плану работ помешало желание поковыряться в .Net
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[23]: Чем становится C++?
От: Yachtsman Россия  
Дата: 27.12.04 13:25
Оценка:
Здравствуйте, adontz, Вы писали:
A>Те кто пишут любой софт под несколько платформ выберут Си++, поскольку как бы трудно не было писать на Си++ по сравнению с C# это всё же лучше, чем иметь .Net проект под Windows и ещё какой-то под другую ОС.

Господа, глупый наверное, но живо меня трепещущий вопрос... Что именно понимается под кроссплатформенностью?! Лично я еще не видел софта работающего под любой ОС. Все что я видел так это разные релизы для разных операционок! Но вот чтобы один и тот же релиз работал и под Win, и под Linux, и под Mac я не встречал! Так о какой кроссплатформенности вы тут общаетесь? Или я не вкуриваю во что-то?!
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
Все, что ни делается — делается к лучшему!
Re[35]: Чем становится C++?
От: Павел Кузнецов  
Дата: 27.12.04 13:35
Оценка:
slegkapjan,

> Д>то есть — если использовать std::istream вместо ручного разбора данных, то это будет работать быстрее и отнимать меньше памяти?


> N.B. Вообще, потоковая система STL написана из рук вон плохо.


К STL ввод/вывод не относится. STL это только контейнеры и алгоритмы.

> Даже при чтении одного байта через istream::get() вызвается огромное количество (в том числе и виртуальных функций), что приводит к очень большой потере производительности.


De facto — да. Однако, вполне можно было сделать значительно более оптимальную реализацию, не вызывающую в процессе ввода/вывода никаких виртуальных функций в случае использования только стандартных буферов с локалью по умолчанию (что соответствует большинству случаев).
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[24]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 27.12.04 13:37
Оценка:
Здравствуйте, Yachtsman, Вы писали:

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

A>>Те кто пишут любой софт под несколько платформ выберут Си++, поскольку как бы трудно не было писать на Си++ по сравнению с C# это всё же лучше, чем иметь .Net проект под Windows и ещё какой-то под другую ОС.

Y>Господа, глупый наверное, но живо меня трепещущий вопрос... Что именно понимается под кроссплатформенностью?! Лично я еще не видел софта работающего под любой ОС. Все что я видел так это разные релизы для разных операционок! Но вот чтобы один и тот же релиз работал и под Win, и под Linux, и под Mac я не встречал! Так о какой кроссплатформенности вы тут общаетесь? Или я не вкуриваю во что-то?!


mozilla устроит в качестве примера?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[39]: Чем становится C++?
От: Павел Кузнецов  
Дата: 27.12.04 13:41
Оценка: +2
VladD2,

> ПК>Все-таки, похоже, не прочитал...

> ПК>

Constraints-based, logic programming, functional programming, and various forms of concurrent programming are examples of good and useful styles of programming not supported by C++.

>
> Скажи прямо что сказать то хочешь?

1) Твое первое утверждение:

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

С последующим уточнением:

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

Несколько не в тему, т.к. C++, действительно, поддерживает несколько парадигм (стилей, как выразился в данной статье Страуструп). И авторами языка, в отличие от тебя и твоих заявлений, C++ к ООП не сводится.

2) Твое последующее утверждение:

Ну, то есть ФП в нем поддреживаться так же как ООП? Или язык не является ООЯ?

Тоже к делу отношения не имеет, т.к. ФП к числу поддерживаемых C++ парадигм (стилей) не относится.

Все.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: Чем становится C++?
От: Багер  
Дата: 27.12.04 13:45
Оценка:
Здравствуйте, Tom, Вы писали:

Tom> больше новичков будет писать на .NET, Java, и тем больше будет моя ЗП в связи с грядущим голодом С++ программистов.


Отнюдь.

Возрастающая цена человека приводит к понижению рентабельности,

возрастающая "совместимость" языков приведёт к понижению стоимости среды разработки и к более простым решениям о смене языка программирования.

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

Завершение недоработанного проекта проще будет добиться совершенно ламерским подходом — доведение до минимальной функциональности и выделение этого проекта в модуль проекта.


Такими свойстами должна обладать реклама. Скорее такие статьи — это скрытая реклама(?)
Ваша программа работает корректно? Один звонок и я всё исправлю!

Делаю потенциальные фичи :))
Re[25]: Чем становится C++?
От: Yachtsman Россия  
Дата: 27.12.04 13:46
Оценка:
Здравствуйте, jazzer, Вы писали:
J>mozilla устроит в качестве примера?

Хм... Т.е. один раз скомпилированный исполняемый файл будет работать и под win и под lin?! Это что-то из области фантастики... Вы ничего не путаете?
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
Все, что ни делается — делается к лучшему!
Re[35]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 27.12.04 13:53
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Confusion Matrix такая. Размер зависит от входных данных. Задача была

S>переделать все так, чтоб программа при ее показе не сильно тормозила и не
S>падала.

А нельзя было из неё кусочек 30*30 показывать, и скроллбоксом-мышкой меняь "базовую точку" "показухи"? типа Viewport concept и всё такое...

S>With best regards, Sergey.
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[36]: Чем становится C++?
От: Sergey Россия  
Дата: 27.12.04 13:54
Оценка:
Hello, Волк-Призрак!
You wrote on Mon, 27 Dec 2004 13:53:14 GMT:

S>> Confusion Matrix такая. Размер зависит от входных данных. Задача была

S>> переделать все так, чтоб программа при ее показе не сильно тормозила и
S>> не падала.

ВП> А нельзя было из неё кусочек 30*30 показывать, и скроллбоксом-мышкой

ВП> меняь "базовую точку" "показухи"? типа Viewport concept и всё такое...

А смысл? Проще не такую жадную до памяти, как IE, показывалку написать.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[42]: Чем становится C++?
От: Павел Кузнецов  
Дата: 27.12.04 14:05
Оценка:
VladD2,

> ПК> Недавно чуть было не познакомился поближе с VB.Net, решив установить DotNetNuke, но после некоторых мучений переключился на drupal, с которым пока проблем заметно меньше.

>
> А что конкретно нужно то?

Расширяемая CMS (content management system): blog, форумы, image gallery и т.п. DotNetNuke по-хорошему устанавливаться отказался. В итоге решено было попробовать Drupal, написанный на PHP. Пока работает просто замечательно.

> ПК> В итоге, похоже, поближе познакомлюсь с PHP

>
> Выбор еще тот.

Зато работает. Да и, честно говоря, пока не вижу в PHP ничего ярко отрицательного. Какой-нибудь Perl — это да, ужасть... А здесь, вроде, все вполне пристойно. Тот же Drupal спроектирован и написан очень аккуратно. Плюс получаем бонус в виде возможности легко перенести все это добро на Linux.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[26]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 27.12.04 14:19
Оценка: +2
Здравствуйте, Yachtsman, Вы писали:

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

J>>mozilla устроит в качестве примера?

Y>Хм... Т.е. один раз скомпилированный исполняемый файл будет работать и под win и под lin?! Это что-то из области фантастики... Вы ничего не путаете?


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

Вы же не удивляетесь, что просто перенос исполняемых файлов ворда с компьютера на компьютер без запуска процедуры инсталляции не сделает вам на компе работоспособный ворд. Тогда давайте его назовем тоже непереносимым даже между одной и той же версией винды.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[37]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 27.12.04 14:40
Оценка:
Здравствуйте, Sergey, Вы писали:

ВП>> А нельзя было из неё кусочек 30*30 показывать, и скроллбоксом-мышкой

ВП>> меняь "базовую точку" "показухи"? типа Viewport concept и всё такое...

S>А смысл? Проще не такую жадную до памяти, как IE, показывалку написать.


Дык я "способ превращения Змея Горыныча в рейсовый самолёт Аэрофлота" описал.
Не нужно ж 1000*1000 елать тоько потому что отображабельные (не отобрааемые а именно отображабельные ака те, которые возможно будут показаны), имеют 1000*1000 размер...
Это ж элементарно..... Документ/вид, данные/представление....
И меньше гуйных ресурсов жрать будет, если показывать тоько то что на экране реально помещается, Хотя обработка и будет вестись по 1000*10000.....
Странное решение, однако....
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[38]: Чем становится C++?
От: Sergey Россия  
Дата: 27.12.04 15:28
Оценка:
Hello, Волк-Призрак!
You wrote on Mon, 27 Dec 2004 14:40:28 GMT:

ВП>>> А нельзя было из неё кусочек 30*30 показывать, и скроллбоксом-мышкой

ВП>>> меняь "базовую точку" "показухи"? типа Viewport concept и всё
ВП>>> такое...

S>> А смысл? Проще не такую жадную до памяти, как IE, показывалку написать.


ВП> Дык я "способ превращения Змея Горыныча в рейсовый самолёт Аэрофлота"

ВП> описал. Не нужно ж 1000*1000 елать тоько потому что отображабельные (не
ВП> отобрааемые а именно отображабельные ака те, которые возможно будут
ВП> показаны), имеют 1000*1000 размер... Это ж элементарно.....
ВП> Документ/вид, данные/представление.... И меньше гуйных ресурсов жрать
ВП> будет, если показывать тоько то что на экране реально помещается, Хотя
ВП> обработка и будет вестись по 1000*10000..... Странное решение,
ВП> однако....

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

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[34]: Чем становится C++?
От: prVovik Россия  
Дата: 27.12.04 16:44
Оценка: +2
Здравствуйте, VladD2, Вы писали:


VD>Но выигрыш этот череват ухудшением того самого дизайна.

А при правильном подходе, наоборот — улучшением дизайна...

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

А при правильном подходе, наоборот — повышение производительности и уменьшение потребления памяти... Ну или, как минимум, не ухудшение.

VD>Так что все относительно.

точно
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[34]: Чем становится C++?
От: prVovik Россия  
Дата: 27.12.04 16:44
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>то есть — если использовать std::istream вместо ручного разбора данных, то это будет работать быстрее и отнимать меньше памяти?

потоки — это конкретная библиотека, ответственность за производительность которой целиком и полностью лежит на людях, её реализовавших. Да и потом, помимо производительности, важно удобство использования, а по этому параметру, конкурентов я не знаю.
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[39]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 27.12.04 17:37
Оценка:
Здравствуйте, Sergey, Вы писали:


S>Проблема в том, что ребята, которые писали IE 4.5, этого, видимо, не знали

S> Вообще не представляю, что там такое надо было наворотить, чтоб он так
S>жрал память и так тормозил. А я не знаю, что за сумасшедший скрипт надо
S>написать, который будет, как ты предлагаешь, подсовывать IE только тот кусок
S>таблицы, который надо показать пользователю и при этом не тормозить. На мой
S>взгляд, написать (и сопровождать) такой скрипт куда сложнее, чем написать
S>свой контрол.
Объект вставить актывыксовый в пагу....

Нуу....... Я просто думал что
  1. Речь о стандартном гриде
  2. в ЫЕ можно совать не только урл но и объект типа HTMLDocument....... который моно было бы менять в то самое время пока ссылка на документ и в ЫЕ ссылка есть и регулярно ему орать "перерисуй пагу, придурок!"


S>Из-за чего и пришлось писать собственный контрол. У которого нет проблем ни

S>с излишним расходом памяти, ни со скоростью отрисовки. Который отрисовывает
S>как раз только то, что в текущий момент показывается.
Ээээ.... Ну значца ппроблема уже решена — слава Богу.
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[38]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 27.12.04 17:39
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Волк-Призрак, Вы писали:


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


VD>Действительно ламерский. Но не в том смысле что стыдно этого не знать, а в том, что подобные вещи в гугле за пол минуты найти можно: Flyweight GOF.

Я потыкал по ссылкам гугля — мёртвые какието паги, через Outpost Firewall проходят так, будто их Федди Крюгер зпердел.
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[26]: Чем становится C++?
От: alexeiz  
Дата: 27.12.04 20:39
Оценка: +1
Здравствуйте, Yachtsman, Вы писали:

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

J>>mozilla устроит в качестве примера?

Y>Хм... Т.е. один раз скомпилированный исполняемый файл будет работать и под win и под lin?! Это что-то из области фантастики... Вы ничего не путаете?


Тебе нужно установить Firefox. Одни и те же extensions в бинарных файлах прекрасно работают на разных платформах без перекомпиляции.
Re[35]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.04 22:00
Оценка:
Здравствуйте, prVovik, Вы писали:

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



VD>>Но выигрыш этот череват ухудшением того самого дизайна.

V>А при правильном подходе, наоборот — улучшением дизайна...

Улучшения дизайна от статики еще никогда не случалось. Так что дизайн страдает как не крути.

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

V>А при правильном подходе, наоборот — повышение производительности и уменьшение потребления памяти... Ну или, как минимум, не ухудшение.

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

ПК>Несколько не в тему, т.к. C++, действительно, поддерживает несколько парадигм (стилей, как выразился в данной статье Страуструп). И авторами языка, в отличие от тебя и твоих заявлений, C++ к ООП не сводится.


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

В общем, не нужно выдавать свои желания за действительность. С++ пытается позволять писать в разных стилях, но рассчитан он в основном на два: структурный и ОО. И в этом свете ОО-дизайн является (должен являться) главной стратегией проектирования ПО. GOF, насколько я помню, использовал С++ в качестве одного из основных языков примеров.

ПК>2) Твое последующее утверждение:

ПК>

ПК>Ну, то есть ФП в нем поддреживаться так же как ООП? Или язык не является ООЯ?

ПК>Тоже к делу отношения не имеет, т.к. ФП к числу поддерживаемых C++ парадигм (стилей) не относится.

А какие же еще парадигмы тогда поддерживает С++? И в чем тогда заслуга С++ если почти на любом языке можно писать в разных стилях? Ну, и главно как это отражается на порании принципов ОО-дизайна?

ПК>Все.


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

ПК>Зато работает. Да и, честно говоря, пока не вижу в PHP ничего ярко отрицательного. Какой-нибудь Perl — это да, ужасть... А здесь, вроде, все вполне пристойно. Тот же Drupal спроектирован и написан очень аккуратно. Плюс получаем бонус в виде возможности легко перенести все это добро на Linux.


Ну, Перл это вообще райт-онли, а ПХП. Незнаю... Мне он не нравится. Хотя мне в принципе не нравятся нетипизированные скриптовые языки. У ПХП одно приемущество — много халявного кода. Но весь он мягко говоря не очень то оттестирован. Я бы все же нашел что-нить на JSP (если уж так нужна переносимость).
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.04 22:00
Оценка:
Здравствуйте, jazzer, Вы писали:

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


Ну, тогда и ты не разыгрывай. А то смешно слышать о том, что лики видите ли тут не причем. Что по-твоему будет если выполнить подобный код:
struct A
{
    A(){ _array1 = new int[10]; }
    ~A()
    {
        delete[] _array1;
    }
    int * _array1;
};

struct B : public A
{
    B(){ _array2 = new int[20]; }
    ~B()
    {
        delete[] _array2; // вот сюда мы не прийдем :(
    }
    int * _array2;
};

int main()
{
    A * b = new B();

    delete b;
}

???


Незнаю кто ты в своих проектах (рядовой программист или отвественный за релиз менеджер), но я в доволь насмотрелся на подобные вещи и на слушался, что ошибиться так очень сложно. Ради оптимизации (причем очень сомнительной) народ еще не такое накручивает.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Блин!
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.04 22:00
Оценка: 14 (4) +4
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>А перепроектировать продукт... Ну ты что! Это же, млин, честь великая, достойная Наполеона местного масштаба. Это же сразу десяток менеджеров закладывать в бюджет нужно! Так что, те самые представители "маленьких компаний" как тот кот из анекдота: "зъисть-то он зъист, да хто ж ему дасть!" на то есть проверенные коты, которые жрут умеренно и время от времени успокаивающе мурчат за печкой (на собраниях). Дальше о глюке феномена "доверия к проверенным кадрам" рассказывать или сам догадаешься?


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

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


Извини, но программы валятся и глючат не от недостатков проектирования. Это в оснвовном ошибки кодеров. Вот таких уверенных как ты. Для которых язык ничего не значит, а все ошибки от кривых рук.

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


Ага. Как у тебя, например.

ГВ>И распространение управлямых сред типа Java/.Net ситуацию не улучшит, а только ухудшит. Одно хорошо — stack trace станет просто ординарным явлением, а не предсмертным криком программы.



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

ГВ>Влад, вот давай, не будем путать "как надо" и "как делают"? Потому что надо:

ГВ>- строить цельные модели (за очень небольшие деньги могу тебе немного рассказать на эту тему );

Ага. У МС 20 лет и их состояния не хватило построить цельную модель. Или ума. Жаль тебя не встретили. Сейчас бы глядишь работали на супер стабильном Ворде.

ГВ>- продумывать их до реализации;

ГВ>- поменьше суетиться и лизать одно место начальству.

Да задолбал ты уже со своим продумыванием. Там баги. Баги кодеров, а не дизайнеров. А выловить их не могут, так как это ошибки третьего-четвертого порядка, и потому что вылезают они только при стечении некоторых абстаятельств. Ну, еще, возможно, из-за того, что разные средства проверки орфографии поставляются криворукими уродами на которых в МС сильно повлиять не могут. И тут бы очень помог бы вариант когда вместо GPF мне бы вылетело окно с кнопочкой Континьё.

ГВ>А происходит "как всегда": менеджер принял техническое решение;


Ясно. Менеджер, значич дурак...

ГВ> балбес-архитектор


логично...

ГВ>потому что "требования бизнеса"


Ну, да... теперь уже бизнес мешает.

ГВ>(фетиш наш драгоценный, мать его трижды за ногу); взяли насквозь сертифицированного программиста, которому похрену, что будет на выходе — лишь бы начальство удовлетворить;


Мля, задолбали! Это ваши же, верне наши же, баги. Уверен, что тот орел что насажал багов в Ворде сейчас вот так же втирает подобную чущь кому-нибудь на другом форуме по продуктам фирмы ххх. И он-то точно в багах не виноват, так как еще не нашел их. А те что нашело уже не баги.

Нефига сваливать проблемы на других. Ошибаются все! Это как закон всемирного тяготения, он неотвратим. Натура у человека такая. Он всегода ошибается. Именно ошибки и способность их анализировать сделали человека человеком. И слушать пургу про "других виновных" и "проблемы рынка" просто противно. Нужно думать о том, как повысить уровень программирования и создать гарантированных барьер хотя бы против самых болезненных ошибок. А не перекладывать отвественность на четри знает кого.

ГВ>Только при чём здесь C++? А вот


Притом что это багодром. Это средсво не только не защищающее от ошибок, но и порой подталкивающее к их совершению. Конечно дотнет или Ява не панацея. Конечно они не решат всех проблем, покрайней мере, в одночасье. Но это рельный и ощутимый шаг в правильном направлении.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 27.12.04 22:08
Оценка:
Здравствуйте, Yachtsman, Вы писали:

Y>Господа, глупый наверное, но живо меня трепещущий вопрос... Что именно понимается под кроссплатформенностью?! Лично я еще не видел софта работающего под любой ОС. Все что я видел так это разные релизы для разных операционок! Но вот чтобы один и тот же релиз работал и под Win, и под Linux, и под Mac я не встречал! Так о какой кроссплатформенности вы тут общаетесь? Или я не вкуриваю во что-то?!


Речь идёт о том, чтобы скомпилировав одлни и теже исходники соответствующими компиляторами можно было получить исполняемые файлы под разные ОС с одной и той же функциональностью.
Как пример: уже упомянутый мною браузер Мозилла, MySQL сервер и все утилитки к нему и т.д.

Естественно что некоторая часть кода всё же будет зависима от ОС, но если эта зависимая от ОС часть пренебрежительно мала по сравнению с общим объёмом то всё же можно говорить о кроссплатформенности приложения.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[43]: Чем становится C++?
От: alexeiz  
Дата: 27.12.04 22:36
Оценка: :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Да и, честно говоря, пока не вижу в PHP ничего ярко отрицательного. Какой-нибудь Perl — это да, ужасть...


Руки прочь от Perl'а! А кстати, такого флейма еще не было: Perl vs PHP.
Re[44]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 27.12.04 23:23
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>А кстати, такого флейма еще не было: Perl vs PHP.


Присоединяйся и передай привет Янусоводам.
http://www.rsdn.ru/Forum/Message.aspx?mid=934191
Автор: artSGTU
Дата: 06.12.04
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[9]: Чем становится C++?
От: Maxim S. Shatskih Россия  
Дата: 28.12.04 00:03
Оценка: +2
VD>Кстати, я тоже не вижу каких-то недостатков в битовых полях. Иногда вещь очень удобная. Хотя и заменимая с помощью разных BitArray-ев и ООП. В общем, если с битами возиться не часто, то битовые поля не очень нужы. Но хуже от них не было бы.

Как драйверист скажу — битовые поля противны. Намного удобнее константы битовых позиций. Например, если надо сразу какое-то состояние из нескольких бит куда-то присвоить.

Одно дело

w->CommandBit = 1;

w->ModeBit = 1;

и другое

w |= ( COMMAND_BIT | MODE_BIT );

Все состояние пишется в одну строку, удобочитаемо.

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

union MyReg
{
ULONG AsULONG;
struct
{
CommandBit : 1;
ModeBit : 1;
};
};
Занимайтесь LoveCraftом, а не WarCraftом!
Re[23]: Чем становится C++?
От: alexeiz  
Дата: 28.12.04 01:25
Оценка: +2 -2
Здравствуйте, VladD2, Вы писали:

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


A>>Если не секрет, не поделишься, откуда ноги у этих сказок про working set растут? Не в том смысле, что working set — это все сказки, а в том, что "дерни за SetProcessWorkingSetSize — working set уменьшится, и наступит счастье". Я уже не раз встречал подобное заблуждение, очень распостраненное на рсдн'е.


VD>Про щастье я не знаю. Это не по адресу. Я просто продемонстрировал, что реально требуемая память значительно меньше чем то что занимается процессом в целях повышения производительности.


Вот это и есть сказки. Смотри vadump'ом, где там реальная память. Получишь число близкое к virtual memory из task manager'а. А то, что ты продемонстрировал, это как отправить память процесса в swap.

A>>Параметр показываемый TaskManager'ом, который тебя должен интересовать, это virtual memory.


VD>Это почему? Мне что виртуельного места в пэйдж-файле жалого что ли? Пока памяти в системе хватает этот параметр ровным счетом ничего не значит.


Это значит, что тебе нужно гонять страницы памяти в swap и обратно.

A>> И это будет набор memory pages, доступных для процесса (вне зависимости от их расположения в памяти или в page file). Как ты понимаешь virtual memory нельзя "уменьшить" такими трюками вроде SetWorkingSetSize. Вся память, которую, твой процесс затребовал, она вся здесь и никуда от нее не деться.


VD>Я вот не очень понимаю каой вообще смысл рассуждать о виртуальной памяти? Меня как раз интересует та часть памяти которая реально используется процессом.


Смотри в vadump, если хочешь узнать, какая память реально используется процессом. Если твой процесс выделил 10 мег, а потом OS отправила 5 из них в swap, пользователю от этого не легче. Процесс имеет все те же 10 мег, 5 из которых лежат в swap'е. И когда процесс их захочет почитать, то у него не только page fault будет, но и все что в этом случае полагается.

VD>Надо же понимать, что ЖЦ принципиально занимает заранее большой кусок и в дальнейшем использует его последовательно. ОС же при этом обеспечивает распределение процессам физических страниц памяти. Проблемы с памятью или производительностью могут быть только если нехватает физической памяти и ОС приходится постоянно поднимать и сбрасывать в своп данные.


Неверно. GC отнимает столько, сколько ему нужно. А как только он за-commit'ел эту память — всё, OS с ней ничего не может поделать. Он обязат выделить процессу реальные страницы. Потом OS, конечно может отправить эту память процесса в swap, но от этого уже не легче. Как только таких прожорливых процессов набирается штуки две-три, swap становится постоянно задействован.

VD>[рассуждения о кошерности VM поскипаны.]


A>>Теперь нам ясно, какой параметр нам нужно стараться уменьшать. Это, во-первых, private memory. Из managed кода, это значит, что нужно меньше выделять самому и меньше использовать всякие фичи, которые любят выделять/писать в память. Еще неплохо пользоваться NGEN'ом, чтобы избавиться от необходимости JIT'а, который динамически создает код, весь попадающий в private категорию.


VD>На практике ngen ничего не дает. Ни по памяти ни по скорости. Дает он только небольшое увеличение скорости загрузки модуля.


А ты думаешь, почему увеличивается скорость загрузки? Меньше памяти требуется.

VD>[рассуждения про разреженность метаданных тоже поскипаны это такие копейки, что о них и говорить не стоит]


Ха! Сразу видно профессионала

A>>Чтобы увидеть, где у тебя в процессе эти private, shared & sharable, нужно использовать vadump.


VD>А зачем мне смотреть на дамп виртуальной памяти?


VD>Еще раз попытаюсь объяснить. Объем знятой но не испльзуемой приложением папяти никак не влияет на производительность (по крайней мере в ОС семейства NT). Значим только тот объем физической памяти который постоянного используется процессом. Если моя программа занимает 100 мег виртуальной памяти, а использует из нее 5, то все затраты сводятся к выделению 100 мег памяти и отображению их на пэдж-файл (если это вообще не ДЛЛ). Время уходящее на заем виртуальной памяти не вилеко, но ощутимо. Время же на назначение и сброс страниц (если в них не ведется записбь) крайне мало.


Если OS выделила для твоего процесса 100 мег и они отобразились у тебя в графе virtual memory, то твой процесс хоть раз пошел и прочитал/записал в эти 100 мег. А если так, то OS не может просто эту память покоцать. Она отправляется в swap, те записывается на диск (если конечно это не file-backed memory).


VD>Точно так же и дотнетный экзешник. Если есть море неиспользуемой памяти, то ворксет будет приближаться к объему закомиченой памяти.


virtual memory — это как раз и есть то, что ты закоммител. working set — это то, что ты имеешь в физической памяти из того, что ты закоммител.

>Но как только системе понадобится память, она сразу же отберет ненужные области и отдаст их другим процессам.


Она не отберет, а отправит память в swap. И диск затарахтит... (Это я к тому, что ты, наверное, думаешь, что данная операция дешева. Отнюдь.)


VD>Реальное дотнетное приложение просто не отдает память системе рассчитывая на то, что если что та сама справится с отемом.


VD>Хороший полигон для наблюдения за памятью является Янус. В работе он может занимать 60-80 мег оперативки, но стоит свернуть его и развернуть обратно как он нчнет занимать 12-25 мег.


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

>Причем рост памяти особо идти не будет. Но стоит попереключаться по форумам, поткрывать окна, как память снова достигнет максимума, вот только произойдет это очень не быстор. Единственный быстрый способ занять сразу много памяти — это произвести поиск по всем фомурмам. При этом, правда, дотнет будет вообще не причем, так как поиск целиком осуществляется средствами Jet-а, но MV и ворксет поднимутся до максимальных величин. И опять же банальная минимизация сбросит ворксет в копеечные величины.


VD>К чему я все это рассказываю?


Все твои рассуждения — это все равно, что сказать: "а нефиг, page file большой, виртуальной памяти-то вон сколько!"

>Дело в том, что то что многие воспринимают за ужасную прожорливость дотнетных приложений на самом деле является самым разумным способом управления памятью в ОС семейства NT. Если памяти хватает, то операции на управление ею минимизируются. Если же ее становится недостаточно, то она переодически отнимается у дотнет-ых прцессов и отдается другим. Именно по этому дотнет больше всего поражает воображение обладателей огромных объемов памяти. Запусти то же приложение в стесненных условиях и оно начнет расходовать память намного экономнее, но эффективность от этого упадет. Все вместе это называется эффективным автоматическим управлением памятью. И не нужно пугать этим неосведомленных людей.


Ужасная прожорливоть .NET приложений — это оно самое и есть. Чудес не бывает. OS, конечно, может за счет виртуальной памяти создать впечатление, что ее гигабайты, но факт остается фактом, .NET приложения требуют мегы памяти, которые OS периодически выгружает в swap, а потом обратно подгружает по мере надобности. И диск тарахтит...
Re[35]: Чем становится C++?
От: alexeiz  
Дата: 28.12.04 02:01
Оценка: +3
Здравствуйте, slegkapjan, Вы писали:

Д>>то есть — если использовать std::istream вместо ручного разбора данных, то это будет работать быстрее и отнимать меньше памяти?

S>N.B. Вообще, потоковая система STL написана из рук вон плохо. Даже при чтении одного байта через istream::get() вызвается огромное количество (в том числе и виртуальных функций), что приводит к очень большой потере производительности.

Это цена за гибкость и расширяемость. Пример: мне недавно понадобилось utf-8 файлы читать. Код элементарен до безобразия:
        locale old_locale;
        locale utf8_locale( old_locale, new utf8_codecvt_facet<> );

        wifstream in( file_name );
        in.imbue( utf8_locale );

Причем, utf-8 это не какая-либо особенная кодировка, для которой есть специальная поддержка. Таким же образом я бы мог прикрутить поддержку для любой другой кодировки. Покажи мне другую библиотеку, где данная операция обходилась бы так же легко.

>В этом смысле, <stdio.h> и FILE* практически идеальное решение. Единственное, что лично меня не устраивает в FILE * -- это отсутствие возможности подключать эту библиотеку к своим потокам, поэтому, например, если нужно дать возможность программе считывать данные из сжатого файла как из обычного, приходится переходить на свою доморощенную потоковую библиотеку.
Re[41]: Чем становится C++?
От: Павел Кузнецов  
Дата: 28.12.04 06:08
Оценка: 3 (1)
VladD2,

> ПК> Несколько не в тему, т.к. C++, действительно, поддерживает несколько парадигм (стилей, как выразился в данной статье Страуструп). И авторами языка, в отличие от тебя и твоих заявлений, C++ к ООП не сводится.


> Ну, почитай свою статью внимательно. Там только об ООП речь и идет. Чуть чуть затрагивается вопрос дженерик-программирования, но это как бы к парадигмам и стилям отношения не имеет. <...>


Имеет. Самое непосредственное. Не хотелось оттуда ничего цитировать, т.к. copy-paste не работает, но хоть начало для полноты картины набью:

C++ directly supports a variety of programming styles. In this C++ deliberately differs from languages designed to support a single way of writing programs. This paper briefly presents key programming styles directly supported by C++ and argues that the support for multiple styles is one of its major strengths. The styles presented include: traditional C-style (1), concrete classes (2), abstract classes, traditional class hierarchies (3), abstract class hierarchies and class hierarchies (4), and generic programming (5).


> В общем, не нужно выдавать свои желания за действительность. С++ пытается позволять писать в разных стилях, но рассчитан он в основном на два: структурный и ОО.


Конкретные классы с их собственным наследованием и прочими "удобствами", для них созданными, куда отнесем? Взаимодействие иерархий (конкретных) классов с иерархиями абстрактных классов куда? Generic programming куда?

> И в этом свете ОО-дизайн является (должен являться) главной стратегией проектирования ПО.


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

> GOF, насколько я помню, использовал С++ в качестве одного из основных языков примеров.


Ну и что? Это только говорит об адекватной реализации одного из непосредственно поддерживаемых стилей программирования. Это не означает недостаток поддержки или вторичное положение других стилей.

> ПК>2) Твое последующее утверждение:

> ПК>

> ПК>Ну, то есть ФП в нем поддреживаться так же как ООП? Или язык не является ООЯ?
> ПК>

> ПК>Тоже к делу отношения не имеет, т.к. ФП к числу поддерживаемых C++ парадигм (стилей) не относится.
>
> А какие же еще парадигмы тогда поддерживает С++?

Читай цитату в начале данного сообщения. Специально цифирками обозначил.

> И в чем тогда заслуга С++ если почти на любом языке можно писать в разных стилях?


В полноте поддержки каждого из стилей. В C++ можно спокойно писать в процедурном стиле, не заботясь о борьбе с OOP. Можно, наоборот, писать в OO стиле, не симулируя его искуственно. Можно писать в generic стиле. И т.п. Можно сочетать все вместе. "Почти любые" языки этим похвастать не могут.

> Ну, и главно как это отражается на порании принципов ОО-дизайна?


Еще раз: OOP является одним из поддерживаемых стилей, не единственным, и даже не главным. Никто ОО-дизайн не "попирает", т.к. для начала в C++ его на пьедестал не возводили. Когда выгодно — используют; в этом случае все нужное для комфортной работы язык предоставляет. Когда не выгодно — не используют; в этом случае язык со своими "ОО" ограничениями под руки не лезет. Все дела

> ПК> Все.


> Что все?


Перечисленные два пункта — все, что я имел в виду. Ты об этом в предыдущем сообщении спрашивал.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[24]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 28.12.04 07:57
Оценка: +1 -3
Здравствуйте, VladD2, Вы писали:

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


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


VD>Ну, тогда и ты не разыгрывай. А то смешно слышать о том, что лики видите ли тут не причем. Что по-твоему будет если выполнить подобный код:

VD>
VD>int main()
VD>{
VD>    A * b = new B();

VD>    delete b;
VD>}
VD>

VD>???

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


вот объясни, пожалуйста, кому в здравом уме понадобилось писать то объявление b, которое ты привел, и какие цели такое объявление может преследовать.

Приведи хотя бы одну разумную причину, по которой нужно писать A * b = new B();, а не B * b = new B();
Оптимизации тут, очевидно, никакой нет.

Я только еще раз могу повторить, что такоенаписать довольно сложно и я таких ошибок видел в реальной жизни (в сымсле, в промышленном коде) очень мало. В основном это — результат copy-paste'а, ну а copy-paste'ом можно еще и не такие баги посадить.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Блин!
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 28.12.04 08:34
Оценка:
Здравствуйте, VladD2, Вы писали:

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


интересно... А в самом деле, почему? Пусть объяснит!

VD>Извини, но программы валятся и глючат не от недостатков проектирования. Это в оснвовном ошибки кодеров. Вот таких уверенных как ты. Для которых язык ничего не значит, а все ошибки от кривых рук.


Представьте себе язык Judъ, где нет массивов, и есть только указатели (т. е. нельзя объектную переменную обхявить, можно тлько указатель на объект объявить и нет способа отличить массив объектов от указателя на 1 объект.
Представим другой язык Apple (раздора ессесно ), в котором есть массивы и ссылки (не только на объекты но и на value-примитивные типы), но вообще нет указателей.
В каком языке больше "ранг ошибаемости"? Правильно — в Judъ (Жудъ). Так что утверждать что язык не имеет значения, бессмысленно.
Это всеравно, что говорить "Какая разница, на каком автомобиле принять участие в формуле1? Всеравно доедем до финиша!".

ГВ>>И распространение управлямых сред типа Java/.Net ситуацию не улучшит, а только ухудшит. Одно хорошо — stack trace станет просто ординарным явлением, а не предсмертным криком программы.


VD>Уже улучают. Янус по крайней мере работает. А хваленые версии которые должны были летать, так и не появились на свет.


Дело не в янусе, а в принципе. Имхо, управляемая среда даёт за счёт рантайм-проверок (реализуемых в таких средах проще, чем в обычных, а некоторые проверки вообще не реально сделать в неуправляемой среде), повышение безопасности и конфиденциальности данных. И мне это нравится, правда пока секурити на уровне объектов ещё не ввели (я тут гдето "спецификацию DreamOS" цитировал, по этим словам можете найти, это было в текущем месяце). Но когда весь user applications layer будет managed, тогда можно постепенно свести к 0 потребность в хендлах, как явлениях "windows-природы", будь то денскриптор файла, HWND, Find*File-хэндлы....
Имхо, менеджед может быть всё, кроме ядра, роль которого будет играть тогда MSIL-machine.

VD>Ага. У МС 20 лет и их состояния не хватило построить цельную модель. Или ума. Жаль тебя не встретили. Сейчас бы глядишь работали на супер стабильном Ворде.


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

VD>Да задолбал ты уже со своим продумыванием. Там баги. Баги кодеров, а не дизайнеров. А выловить их не могут, так как это ошибки третьего-четвертого порядка, и потому что вылезают они только при стечении некоторых абстаятельств. Ну, еще, возможно, из-за того, что разные средства проверки орфографии поставляются криворукими уродами на которых в МС сильно повлиять не могут. И тут бы очень помог бы вариант когда вместо GPF мне бы вылетело окно с кнопочкой Континьё.


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

У МС нет выбора — им приходмится привлекать сторонних девелоперов, и "devil-оперов", потому что ни одна организация в мире не способна содержать штат для локализации программ для всех 200 с пригоршней стран мира (я говорю олаколизации не столько ресурсов, сколько логики вроде проверки орфографии).

ГВ>>потому что "требования бизнеса"


VD>Ну, да... теперь уже бизнес мешает.

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

VD>Нефига сваливать проблемы на других. Ошибаются все! Это как закон всемирного тяготения, он неотвратим. Натура у человека такая. Он всегода ошибается. Именно ошибки и способность их анализировать сделали человека человеком. И слушать пургу про "других виновных" и "проблемы рынка" просто противно.


Респект в общем-то, но человека человеком сделал бог. А способность ошибкам есть следствие способности к эксперементу, к познанию. Обратная сторона медали, так сказать. Вот способность учиться на чужих ошибках делает его царём природы. Правда тираном, но это другой вопрос — вопрос этики/ культуры.

VD>Нужно думать о том, как повысить уровень программирования и создать гарантированных барьер хотя бы против самых болезненных ошибок. А не перекладывать отвественность на четри знает кого.

Супер! Соглсен! Двумя куками... ээ руками за!

VD>Притом что это багодром. Это средсво не только не защищающее от ошибок, но и порой подталкивающее к их совершению. Конечно дотнет или Ява не панацея. Конечно они не решат всех проблем, покрайней мере, в одночасье. Но это рельный и ощутимый шаг в правильном направлении.


Правда последний шаг в этом направлении будет ИИ-низированый генератор кода по постановке задачи, и тогда роль системных архитекторов будут играть аналитики, а роль кодеров — системные архитекторы.... Не знаю, является ли это архи, хорошо, если программирование вообще и кодинг как класс вымрут за ненадобностью....
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[23]: Чем становится C++?
От: Дарней Россия  
Дата: 28.12.04 08:34
Оценка: +1
Здравствуйте, jazzer, Вы писали:

J>И, судя по молчанию Андрея, он с этим согласился.


На самом деле, этот случай не так уж и важен. Есть намного более опасные грабли
Создавать иерархии классов без виртуального деструктора — просто "плохой стиль", вот и все.
А вообще — у меня создается впечатление, что 99% "защитников C++" в этой теме не знакомы с .NET, или знакомы очень слабо. Я бы посоветовал детальнее изучить его, чтобы иметь возможность сравнивать на деле, а не ругать его за "неэффективность" и "прожорливость".
С++ в свое время тоже немало за это ругали У .NET в плане эффективности тоже есть немало плюсов. Например, такой могучий инструмент оптимизации, как динамическая генерация кода в рантайме. Другой вопрос, что это пока что мало где используется эффективно.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[3]: Блин!
От: Дарней Россия  
Дата: 28.12.04 08:42
Оценка: +1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Об том и речь.


Факт в том, что .NET реально очень упрощает разработку по сравнению с плюсами. Это дает возможность тратить свое время на разработку добавочных фич и оптимизацию на высоком уровне, а не на борьбу с граблями и многочасовое ползание по программе дебаггером.
Если взять команду идеальных разработчиков во главе с идеальным менеджером, найти для них идеального беспроблемного заказчика — вероятно, тогда никакой разницы не будет. Но мы живем в реальном мире
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[38]: Чем становится C++?
От: Дарней Россия  
Дата: 28.12.04 08:53
Оценка: :)
Здравствуйте, Волк-Призрак, Вы писали:

ВП>И меньше гуйных ресурсов жрать будет, если показывать тоько то что на экране реально помещается, Хотя обработка и будет вестись по 1000*10000.....

ВП>Странное решение, однако....

Просто не нужно подгружать все данные в память зараз, вот и все. Flyweight с пулом объектов, все данные остаются в исходном файле и подгружаются по мере необходимости. Неиспользуемые в данный момент объекты возвращаются в пул.
Даже если возникают проблемы с MMF, можно реализовать аналогичную технику вручную.
Прога будет работать как минимум не медленнее, чем вариант с загрузкой всех данных в память (ну не верю я, что прога используется только на машинах с 2гб оперативки ). При этом время загрузки данных уменьшится на порядки.
Ну да о чем это я... невиртуальные деструкторы — это куда увлекательнее
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[23]: Чем становится C++?
От: Дарней Россия  
Дата: 28.12.04 09:20
Оценка: +3
Здравствуйте, adontz, Вы писали:

A>Нет не правильно. На Си++ можно написать кроссплатформенное приложение, на C# нельзя. Это не только заслуга большого количества компиляторов (кстати используя GCC можно не менять компилятор на разных платформах), но и следствите большого количества кроссплатформенных библиотек.


Моно уже вышел в релиз, так что — welcome.
Что касается написания кроссплатформенных проектов на С++... честно тебе скажу, разработка кроссплатформенной версии на основе реального существующего продукта — это чудовищный объем работы. Особенно с учетом того, что документация по архитектуре — это что-то вроде синей птицы... все про нее слышали, но никто еще не видел
Если проект сразу закладывается с учетом переноса на другие платформы — тогда немного проще, но:
1. Это встречается крайне редко, посколько требует дополнительных затрат и нет никакой гарантии, что эти затраты вообще когда-нибудь окупятся
2. Все ошибаются.. и пока дело не дойдет непосредственно до процесса портирования, разработчики успеют наворотить кучу платформо-зависимых мест
Например — продукт одного очень известного российского производителя (известного не только в нашей стране). Используется собственная библиотека классов, никакой завязки на платформу — в общем, сказка, а не программа. По крайней мере, в теории.
Но вот дело доходит до переноса проги под другую ОСь... и тут выясняется, что вся сериализация в проге делается очень просто — указатель на объект приводится к void*, после чего его содержимое тупо сбрасывается в файл. Десериализация — по тому же принципу. Плюс к этому — огромное количество алгоритмов, завязанных на конкретный размер типов. Плюс к этому — прямые вызовы API из кода программы, несмотря на все запреты и контроль. Инициализация переменных, которая завязана на определенный порядок вызова конструкторов. Проект — огромный и очень сложный. Вся документация состоит только из комментариев в коде.
И тут начинается такое, что даже немецкая порнушка покажется невинным развлечением
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[39]: Чем становится C++?
От: Sergey Россия  
Дата: 28.12.04 10:02
Оценка:
Hello, Дарней!
You wrote on Tue, 28 Dec 2004 08:53:16 GMT:

Д> Просто не нужно подгружать все данные в память зараз, вот и все.

Д> Flyweight с пулом объектов, все данные остаются в исходном файле и
Д> подгружаются по мере необходимости. Неиспользуемые в данный момент
Д> объекты возвращаются в пул. Даже если возникают проблемы с MMF, можно
Д> реализовать аналогичную технику вручную.

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

Д> Прога будет работать как минимум не медленнее, чем вариант с загрузкой

Д> всех данных в память (ну не верю я, что прога используется только на
Д> машинах с 2гб оперативки ).

При чем здесь 2 Гб?

Д> При этом время загрузки данных

Д> уменьшится на порядки. Ну да о чем это я... невиртуальные деструкторы -
Д> это куда увлекательнее

Оно не увлекательней, оно бесплатно. Закомментарил одну строчку, другую
сделал protected — и 5% памяти сэкономилось. Вот пулы писать действительно
куда увлекательней.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[24]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 28.12.04 10:38
Оценка: +3
Здравствуйте, Дарней, Вы писали:

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


J>>И, судя по молчанию Андрея, он с этим согласился.


Д>На самом деле, этот случай не так уж и важен. Есть намного более опасные грабли :)


Есть, кто ж спорит :)

Д>Создавать иерархии классов без виртуального деструктора — просто "плохой стиль", вот и все.


Предлагаешь пойти по второму кругу? :)

Д>А вообще — у меня создается впечатление, что 99% "защитников C++" в этой теме не знакомы с .NET, или знакомы очень слабо. Я бы посоветовал детальнее изучить его, чтобы иметь возможность сравнивать на деле, а не ругать его за "неэффективность" и "прожорливость".

Д>С++ в свое время тоже немало за это ругали ;) У .NET в плане эффективности тоже есть немало плюсов. Например, такой могучий инструмент оптимизации, как динамическая генерация кода в рантайме. Другой вопрос, что это пока что мало где используется эффективно.

Дарней, ткни меня, пожалуйста, носом в мое сообщение, где бы я ругал .NET или сравнивал его с С++.
Топик изначально был о С++, а не о .NET.

Еще раз повторю, у меня нет никаких претензий ни к самому .NET, ни к программистам на .NET, в том числе и перешедшим туда из С++ :). Но когда утверждают, что на С++ невозможно програмировать, потому что есть .NET — извините, не мне одному отлично удается на нем программировать, не испытывая никаких проблем. Называйте меня кем хотите, но я привык к С++ и мне с ним легко и удобно, так что пока за С++ платят деньги — я буду работать на С++.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[40]: Чем становится C++?
От: Дарней Россия  
Дата: 28.12.04 10:39
Оценка:
Здравствуйте, Sergey, Вы писали:

S>мне лень.


Это твои проблемы, на самом деле
Но, как видишь, оптимизировать таки можно
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[25]: Чем становится C++?
От: Дарней Россия  
Дата: 28.12.04 10:46
Оценка: +1
Здравствуйте, jazzer, Вы писали:

J>Еще раз повторю, у меня нет никаких претензий ни к самому .NET, ни к программистам на .NET, в том числе и перешедшим туда из С++ . Но когда утверждают, что на С++ невозможно програмировать, потому что есть .NET — извините, не мне одному отлично удается на нем программировать, не испытывая никаких проблем. Называйте меня кем хотите, но я привык к С++ и мне с ним легко и удобно, так что пока за С++ платят деньги — я буду работать на С++.


А мне, честно говоря, стало просто противно писать на С++. Приходится тратить кучу времени на совершенно элементарные вещи.. и отнимать это время у других, более важных, задач
Хотя временами без него не обойтись. Необходимость устанавливать фреймворк — слишком большой минус для некоторых случаев.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[41]: Чем становится C++?
От: Sergey Россия  
Дата: 28.12.04 10:50
Оценка:
Hello, Дарней!
You wrote on Tue, 28 Dec 2004 10:39:12 GMT:

S>> мне лень.


Д> Это твои проблемы, на самом деле


На самом деле, это вовсе не проблемы.

Д> Но, как видишь, оптимизировать таки можно


Это не оптимизация, а полное переписывание.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[44]: Чем становится C++?
От: Зверёк Харьковский  
Дата: 28.12.04 11:30
Оценка: :))) :)
Здравствуйте, VladD2, Вы писали:

ПК>>Какой-нибудь Perl — это да, ужасть...


VD>Ну, Перл это вообще райт-онли...



не трогайте Перл, изверги!!!! Что он вам плохого сделал?

ЗЫ:

Victor Shepelev: ... For example, Perl, which I consider "awful but exciting".
Bjarne Stroustrup: Yes, Perl does offer a morbid facination...

сам слушаю и вам рекомендую: в тишине сижу
FAQ — це мiй ай-кью!
Re[36]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.12.04 11:40
Оценка: +1 :)))
Здравствуйте, alexeiz, Вы писали:

A>Причем, utf-8 это не какая-либо особенная кодировка, для которой есть специальная поддержка. Таким же образом я бы мог прикрутить поддержку для любой другой кодировки. Покажи мне другую библиотеку, где данная операция обходилась бы так же легко.


.NET Framework
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[26]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 28.12.04 11:43
Оценка:
Здравствуйте, Дарней, Вы писали:

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


J>>Еще раз повторю, у меня нет никаких претензий ни к самому .NET, ни к программистам на .NET, в том числе и перешедшим туда из С++ :). Но когда утверждают, что на С++ невозможно програмировать, потому что есть .NET — извините, не мне одному отлично удается на нем программировать, не испытывая никаких проблем. Называйте меня кем хотите, но я привык к С++ и мне с ним легко и удобно, так что пока за С++ платят деньги — я буду работать на С++.


Д>А мне, честно говоря, стало просто противно писать на С++. Приходится тратить кучу времени на совершенно элементарные вещи.. и отнимать это время у других, более важных, задач :crash:

Д>Хотя временами без него не обойтись. Необходимость устанавливать фреймворк — слишком большой минус для некоторых случаев.

Ну что тут скажешь :)
Каждому свое :)

peace bro :)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[42]: Чем становится C++?
От: Дарней Россия  
Дата: 28.12.04 11:43
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Это не оптимизация, а полное переписывание.


In computer science, optimization is the process of improving a system in certain ways to increase the effective execution speed and/or bandwidth, or reducing memory requirements.


А сколько там кода переписывается — это дело десятое.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[24]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.12.04 11:45
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>С++ в свое время тоже немало за это ругали У .NET в плане эффективности тоже есть немало плюсов. Например, такой могучий инструмент оптимизации, как динамическая генерация кода в рантайме. Другой вопрос, что это пока что мало где используется эффективно.


На самом деле не так уж и редко. В самом фреймворке (в 1.1) я вспоминаю как минимум 3 места где это делается.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[25]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.12.04 11:45
Оценка: +1
Здравствуйте, jazzer, Вы писали:

J>Но когда утверждают, что на С++ невозможно програмировать, потому что есть .NET


А кто так говорил? Говорили другое — основную массу софта на C# писать дешевле и качественнее.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[3]: Блин!
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.12.04 11:55
Оценка: 2 (1)
Здравствуйте, Волк-Призрак, Вы писали:

ВП>И мне это нравится, правда пока секурити на уровне объектов ещё не ввели


Познакомься поподробнее с CAS, он подобное позволит реализовать без особых проблем. Рекомендую книжку Бокса с кем то там еще — Основы платформы .NET том 1.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[43]: Чем становится C++?
От: Sergey Россия  
Дата: 28.12.04 12:30
Оценка: +1
Hello, Дарней!
You wrote on Tue, 28 Dec 2004 11:43:43 GMT:

S>> Это не оптимизация, а полное переписывание.


Д>

Д> In computer science, optimization is the process of improving a system
Д> in certain ways to increase the effective execution speed and/or
Д> bandwidth, or reducing memory requirements.


Д> А сколько там кода переписывается — это дело десятое.


В компьютер сайнсе — может быть. А в жизни это именно полное переписывание,
причем не только показывалки (которая всем устраивает), а половины всей
системы. Замечательное решение несуществующей проблемы

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9 delta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[37]: Чем становится C++?
От: Павел Кузнецов  
Дата: 28.12.04 13:50
Оценка:
AndrewVK,

> A> Причем, utf-8 это не какая-либо особенная кодировка, для которой есть специальная поддержка. Таким же образом я бы мог прикрутить поддержку для любой другой кодировки. Покажи мне другую библиотеку, где данная операция обходилась бы так же легко.


> .NET Framework


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

ПК>Можно увидеть, как будут выглядеть в использовании те же несколько строк кода для кодировки X, не поддерживаемой до того C#/.Net?.. Просто любопытно, как у них это сделано


Да так же:
using (StreamReader sr = new StreamReader(someBinaryStream, new MyEncoding()))
{
    // Do some work
}


Вот только в дотнете очень много кодировок поддерживается (упомянутая UTF-8 вобще дефолтная), так что смысла обычно в этом нет.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[4]: Блин!
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 28.12.04 14:39
Оценка: +1 :)))
Здравствуйте, Дарней, Вы писали:

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


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

Даже в указанных условиях, имхо, при разаработке софта пользовательского layer-а managed-платформы покажут более высокую эффективность, не зависимо от того, как она называется (Java, .net, smalltalk...).
То что игры практически не пишут pure-managed, это временное явление. Требуется финальная стандартизация трёхмерной графики в Java на базе OpenGL, и фиксацию DirectX-классов. Не удивлюсь, если "Direct3D-драйвкр" (то что реализует getVideoCaps, DrawPrimitive из Direct* Driver Interface этак к DirectX 11-12 (возможно будет называться Direct.net), будет managed-only... Очень вероятная перспектива. правда несколько отдалённая. Движок Doom V правда придётся Кармаку переписать с нуля
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[42]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.04 17:22
Оценка: 1 (1) :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>VladD2,


>> ПК> Несколько не в тему, т.к. C++, действительно, поддерживает несколько парадигм (стилей, как выразился в данной статье Страуструп). И авторами языка, в отличие от тебя и твоих заявлений, C++ к ООП не сводится.


>> Ну, почитай свою статью внимательно. Там только об ООП речь и идет. Чуть чуть затрагивается вопрос дженерик-программирования, но это как бы к парадигмам и стилям отношения не имеет. <...>


ПК>Имеет. Самое непосредственное. Не хотелось оттуда ничего цитировать, т.к. copy-paste не работает,

Как не работает? Вот, скопировал:

C++ directly supports a variety of programming styles. In this, C++ deliberately differs
from languages designed to support a single way of writing programs. This paper briefly
presents key programming styles directly supported by C++ and argues that the support
for multiple styles is one of its major strengths. The styles presented include: traditional
Cstyle,
concrete classes, abstract classes, traditional class hierarchies, abstract classes
and class hierarchies, and generic programming. To provide a context for this overview, I
discuss criteria for a reasonable and useful definition of ‘‘objectoriented
programming.’’


ПК> но хоть начало для полноты картины набью:

ПК>

C++ directly supports a variety of programming styles. In this C++ deliberately differs from languages designed to support a single way of writing programs. This paper briefly presents key programming styles directly supported by C++ and argues that the support for multiple styles is one of its major strengths. The styles presented include: traditional C-style (1), concrete classes (2), abstract classes, traditional class hierarchies (3), abstract class hierarchies and class hierarchies (4), and generic programming (5).


Что же по содержимому этого бастракта, то треп это. Почитай внимательно статью. Где там хоть что-то серьезное о чем-то кроме ООП? Есть конечно слова о производительности, "дженерисити", но это только в твоем воображении к парадигмам отношение имеет.

ПК>Конкретные классы с их собственным наследованием и прочими "удобствами", для них созданными, куда отнесем? Взаимодействие иерархий (конкретных) классов с иерархиями абстрактных классов куда?


Блин, куда еще можно классы относить? Смешеся что ли?

ПК> Generic programming куда?


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

>> И в этом свете ОО-дизайн является (должен являться) главной стратегией проектирования ПО.


ПК>В общем случае — не является, не должен. Там где надо — да, является.


А что это за зверь общий случай? Если мы пишем на С++ и решаем относительно сложную задачу (когда структурный подход уже некатит), то ОО-дизайн — это и есть общий случай.

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


Что за звери "альтернативные подходы"? Каковы принципы проектирования с их применением?

>> GOF, насколько я помню, использовал С++ в качестве одного из основных языков примеров.


ПК>Ну и что?


Вот и странно, почему 90% С++-программистов эти принципы или игнорируют, или вообще о них не слышало.

ПК> Это только говорит об адекватной реализации одного из непосредственно поддерживаемых стилей программирования. Это не означает недостаток поддержки или вторичное положение других стилей.


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

ПК>Читай цитату в начале данного сообщения. Специально цифирками обозначил.


Да сам читай, если тебе она нравится. Притянул за уши какую-то фигню и делашь далеко идущие выводы.

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

>> И в чем тогда заслуга С++ если почти на любом языке можно писать в разных стилях?


ПК>В полноте поддержки каждого из стилей.


Да, тут не поспоришь. На сегодня С++ самый отсталый в этом смысле.

Может хватить делать идовла из этого успешно устаривающего языка? А?

ПК> В C++ можно спокойно писать в процедурном стиле,


А на яве нельзя? И на Шарпе тоже? Или на каком-нибудь Окамле нельзя? А я вот только сегодня накатал штук 5 статических процедур, так как их было достаточно. Вод беда. Знал бы что не льзя может и не неписал бы.

ПК> не заботясь о борьбе с OOP.


Можно продемонстрировать особненности того же Шарпа приводящие к "борьбе с OOP"? В чем эта борьба заключается?

ПК> Можно, наоборот, писать в OO стиле, не симулируя его искуственно.


Пашь, это уже просто смешно. На любом импиративном языке можно писать структурный код.

ПК> Можно писать в generic стиле.


Это не парадигма. На VBScript тоже можно писать обобщенный код. Даже более того. Неообщенный тяжало написать. Стилем это не является. Разумный человек при наличии возможности и необходимости просто обязан писать код обобщенным, так как это повышает его абстракность, а стало быть широту применимости.

ПК> И т.п.


Какое т.п.?

ПК> Можно сочетать все вместе. "Почти любые" языки этим похвастать не могут.


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

>> Ну, и главно как это отражается на порании принципов ОО-дизайна?


ПК>Еще раз: OOP является одним из поддерживаемых стилей, не единственным, и даже не главным. Никто ОО-дизайн не "попирает",


Да его не просто попирают. Его просто незамечают. 90% код пишится вообще без мыслей о нем. И те кто плюет на ОО-дизайн не заменяют его каким-то другим, а просто кладут на какой либо дизайн как таковой.

ПК> т.к. для начала в C++ его на пьедестал не возводили. Когда выгодно — используют; в этом случае все нужное для комфортной работы язык предоставляет. Когда не выгодно — не используют; в этом случае язык со своими "ОО" ограничениями под руки не лезет. Все дела


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

J>вот объясни, пожалуйста, кому в здравом уме понадобилось писать то объявление b, которое ты привел, и какие цели такое объявление может преследовать.


J>Приведи хотя бы одну разумную причину, по которой нужно писать A * b = new B();, а не B * b = new B();


Бнин, уровень разговора на уровне фактастики.

Ты про абстракции ничего не слышал? Ну, давай на примерах более приближенных к жизни:

CWindow * window = new CButton();
...
// используем некоторый код наботающий с window (полиморфно)

delete window;


J>Оптимизации тут, очевидно, никакой нет.


Слово "оптимизация" тут нужно понимать в ковычках. И заключается она в том, что классу не сдалали виртуальный конструктор, напимер, на основании того что объем памяти требуемой для храниения эксземляра CWindow равен аналогичному для CButton, а деструктор CButton ничего особого не делает.

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

J>Я только еще раз могу повторить, что такоенаписать довольно сложно и я таких ошибок видел в реальной жизни (в сымсле, в промышленном коде) очень мало. В основном это — результат copy-paste'а, ну а copy-paste'ом можно еще и не такие баги посадить.


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


Д>А вообще — у меня создается впечатление, что 99% "защитников C++" в этой теме не знакомы с .NET, или знакомы очень слабо. Я бы посоветовал детальнее изучить его, чтобы иметь возможность сравнивать на деле, а не ругать его за "неэффективность" и "прожорливость".


Все еще хуже. Даже пытаясь познакомиться с дотнетом многие не понимаю зачем нужны все фичи и ограничения засунутые в него. Это как в той притче про Блабл-программиста. Они смотрят на более высокоуровневые технологии и видят только лишь набор непонятной фигни.

Все это помому, что они думают на С++ и измеряют все его метриками.

Д>С++ в свое время тоже немало за это ругали У .NET в плане эффективности тоже есть немало плюсов. Например, такой могучий инструмент оптимизации, как динамическая генерация кода в рантайме. Другой вопрос, что это пока что мало где используется эффективно.


Проблемы тут две:
1. Неумение применить мощь и гибкость технологии.
2. Недостаточная оптимизация джита.

Второе со временем решится. А первому нужно учить. Но как учить, если люди даже концепции не понимают или даже неприемлят?
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Чем становится C++?
От: Gaperton http://gaperton.livejournal.com
Дата: 28.12.04 19:36
Оценка: +1 :))) :))
Здравствуйте, adontz, Вы писали:

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


A>Пока одни ругают Си++, другие на нём пишут и зарабатывают этим деньги.

A>Я не злой — пусть ругают...
Пока одни ругают проституцию и торговлю героином — другие зарабатывают этим деньги
Я тоже не злой
Re[3]: Чем становится C++?
От: Gaperton http://gaperton.livejournal.com
Дата: 28.12.04 19:40
Оценка:
Здравствуйте, Quintanar, Вы писали:

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


Tom>>Чем больше будут ругать С++, тем меньше новичков будет на нём писать, и тем больше новичков будет писать на .NET, Java, и тем больше будет моя ЗП в связи с грядущим голодом С++ программистов.


Q>Страшно подумать, какие деньги зашибают программисты на Cobol.

Я думаю, в штатах Cobol-консультанты зашибают сейчас немеряные деньги, на самом деле. Одна проблема — рынок не очень большой
Re[39]: Чем становится C++?
От: alexeiz  
Дата: 28.12.04 21:01
Оценка: -1
"AndrewVK" <5161@users.rsdn.ru> wrote in message
news:968506@news.rsdn.ru
> Здравствуйте, Павел Кузнецов, Вы писали:
>
>> Можно увидеть, как будут выглядеть в использовании те же несколько
>> строк кода для кодировки X, не поддерживаемой до того C#/.Net?..
>> Просто любопытно, как у них это сделано
>
> Да так же:
>
> using (StreamReader sr = new StreamReader(someBinaryStream, new
> MyEncoding())) {
> // Do some work
> }
>


А что нужно сделать, чтобы свою кодировку реализовать? В том смысле, что std::codecvt имеет 7 защищенных виртуальных do_xxx методов, которые нужно определить. А в .NET как я вижу как минимум три класса нужно реализовать Encoding, Encoder & Decoder. У них в сумме куча виртуальных методов (так как все эти классы abstract). Какие из них нужно реализовывать?

> Вот только в дотнете очень много кодировок поддерживается (упомянутая

> UTF-8 вобще дефолтная), так что смысла обычно в этом нет.

Вот на это и приходится надеяться. Но в подавляющем большинстве случаев того, что уже есть, наверное, достаточно, так как набор реализованных кодировок достаточно большой.
Posted via RSDN NNTP Server 1.9 delta
Re[44]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.04 21:39
Оценка: :))
Здравствуйте, alexeiz, Вы писали:

A>Руки прочь от Perl'а! А кстати, такого флейма еще не было: Perl vs PHP.


Боюсь, что при этом С++-ники и C#-ники объеденятся и...
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[37]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.04 21:39
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

A>>Причем, utf-8 это не какая-либо особенная кодировка, для которой есть специальная поддержка. Таким же образом я бы мог прикрутить поддержку для любой другой кодировки. Покажи мне другую библиотеку, где данная операция обходилась бы так же легко.


AVK>.NET Framework


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

AVK>Да так же:

AVK>
AVK>using (StreamReader sr = new StreamReader(someBinaryStream, new MyEncoding()))
AVK>{
AVK>    // Do some work
AVK>}
AVK>


Все немного проще. Стандартные кодировки (это только для плюсов UTF-8 экзотика) перечислены в Encoding):
using (StreamReader sr = new StreamReader(someBinaryStream, Encoding.UTF8))
    // Do some work
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.04 21:39
Оценка:
Здравствуйте, Gaperton, Вы писали:

A>>Пока одни ругают Си++, другие на нём пишут и зарабатывают этим деньги.

A>>Я не злой — пусть ругают...
G>Пока одни ругают проституцию и торговлю героином — другие зарабатывают этим деньги

Пять балов.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[43]: Чем становится C++?
От: Павел Кузнецов  
Дата: 28.12.04 23:45
Оценка: 20 (1) -1 :)
VladD2,

> ПК>Конкретные классы с их собственным наследованием и прочими "удобствами", для них созданными, куда отнесем? Взаимодействие иерархий (конкретных) классов с иерархиями абстрактных классов куда?

>
> Блин, куда еще можно классы относить? Смешеся что ли?

Нет. Не все, что с классами — ООП. Читать определение ООП.

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

>
> Что за звери "альтернативные подходы"? Каковы принципы проектирования с их применением?

См., например, James O. Coplien. Multi-Paradigm Design for C++

>>> GOF, насколько я помню, использовал С++ в качестве одного из основных языков примеров.

>
> ПК>Ну и что?
>
> Вот и странно, почему 90% С++-программистов эти принципы или игнорируют, или вообще о них не слышало.

Это не принципы. Принципы ООП — open-closed, dependency inversion, Liskov substitution и т.п.

> ПК> Это только говорит об адекватной реализации одного из непосредственно поддерживаемых стилей программирования. Это не означает недостаток поддержки или вторичное положение других стилей.

>
> Довольно глупо неиспользовать принципов ОО-дизайна в ОО-языке.

Довольно глупо замыкаться на одном стиле, когда доступны другие.

> Тебе говорят, о том что у твоих сторонников вместо слов о дизайне постоянно идут слова о том что ни сэкономили три байта на отсутсвии vtbl и что им дико мешает втоматический контрольк памяти.


У "моих сторонников" идут слова о предпочтительности вынесения вспомогательных функций за пределы класса, изоляции данных от алгоритмов, уменьшении зависимостей, статическом контроле инвариантов и т.п.

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


Эти ужастики я от тебя слышу.

> ПК> В C++ можно спокойно писать в процедурном стиле,

>
> А на яве нельзя? И на Шарпе тоже? <...>

Это как раз то, что я назвал "борьбой с ООП". Ну не поддерживают эти языки такой стиль, не поддерживают. Все, что не вписывается в ООП, в них, как на корове седло.

> Или на каком-нибудь Окамле нельзя?


На Окамле можно. На Питоне можно. На Перле можно. На Си можно. На Аде можно. На Паскале можно. И т.п.

> ПК> не заботясь о борьбе с OOP.

>
> Можно продемонстрировать особненности того же Шарпа приводящие к "борьбе с OOP"? В чем эта борьба заключается?

В том, что нельзя писать свободные функции.

> ПК> т.к. для начала в C++ его на пьедестал не возводили. Когда выгодно — используют; в этом случае все нужное для комфортной работы язык предоставляет. Когда не выгодно — не используют; в этом случае язык со своими "ОО" ограничениями под руки не лезет. Все дела

>
> Да не используют его даже когда он архи выгоден. Хотя я уже десятый раз повторяюсь.

От того, что ты повторишь это еще двадцать раз, это более убедительным не станет. Ну, наверное, вырос ты среди программистов, плохо использующих C++. Я-то тут причем?
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[26]: Чем становится C++?
От: Павел Кузнецов  
Дата: 28.12.04 23:58
Оценка: +2 -1
VladD2,

> давай на примерах более приближенных к жизни:

>
>
> CWindow * window = new CButton();
> ...
> // используем некоторый код наботающий с window (полиморфно)
>
> delete window;
>


Данный код будет иметь смысл, например, если у CWindow есть хоть одна виртуальная функция. Это совсем не тот случай, что рассматривался ранее.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[44]: Чем становится C++?
От: Дарней Россия  
Дата: 29.12.04 04:20
Оценка: -2
Здравствуйте, Sergey, Вы писали:

S>В компьютер сайнсе — может быть. А в жизни это именно полное переписывание,

S>причем не только показывалки (которая всем устраивает), а половины всей
S>системы. Замечательное решение несуществующей проблемы

Значит — хреновый дизайн как у показывалки, так и у всей системы.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[40]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.12.04 08:27
Оценка: 22 (2)
Здравствуйте, alexeiz, Вы писали:

A>А что нужно сделать, чтобы свою кодировку реализовать? В том смысле, что std::codecvt имеет 7 защищенных виртуальных do_xxx методов, которые нужно определить. А в .NET как я вижу как минимум три класса нужно реализовать Encoding, Encoder & Decoder.


Неправильно видишь. Минимально достаточно 1 класс и реализовать в нем 6 методов, по 3 на каждое направление преобразования:
GetByteCount
GetMaxByteCount
GetBytes
GetCharCount
GetMaxCharCount
GetChars


Но. повторяю, все это имеет небольшое практическое значение — все часто используемые кодировки в дотнете есть.

A> У них в сумме куча виртуальных методов (так как все эти классы abstract).


Вот этого вывода не понял.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[40]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.12.04 08:27
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>Все немного проще. Стандартные кодировки (это только для плюсов UTF-8 экзотика) перечислены в Encoding):


Внимательнее читай вопрос.

Можно увидеть, как будут выглядеть в использовании те же несколько строк кода для кодировки X, не поддерживаемой до того C#/.Net?

... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[27]: Чем становится C++?
От: jazzer Россия Skype: enerjazzer
Дата: 29.12.04 08:36
Оценка: +2 -1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>VladD2,


>> давай на примерах более приближенных к жизни:

>>
>>
>> CWindow * window = new CButton();
>> ...
>> // используем некоторый код наботающий с window (полиморфно)
>>
>> delete window;
>>


ПК>Данный код будет иметь смысл, например, если у CWindow есть хоть одна виртуальная функция. Это совсем не тот случай, что рассматривался ранее.


Имхо, данный код как не имел смысла, так и после реплики Влада не имеет.
Поскольку у нас есть принцип подстановки Лисков, нет абсолютно никакого смысла писать
CWindow * window = new CButton();
вместо
CButton * button = new CButton();

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

Ну уж я и не говорю, что нет никакой необходимости писать явный delete при наличии армиии оберток указателей (для данного случая — std::auto_ptr и boost::scoped_ptr).

Совсем другое дело, если new происходит не в этой функции, а в какой-то внешней (т.е. фабрике), которая генерит разнообразных потомков CWindow и возвращает указатели CWindow — но это автоматически означает, что иерархия классов CWindow изначально разрабатывалась для такого использования и если дизайнер при проектировании такой иерархии не объявил деструктор CWindow виртуальным, с ним надо сразу же сделать что-нибудь нехорошее.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[25]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 29.12.04 10:54
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Все это помому, что они думают на С++ и измеряют все его метриками.

Ну, если мерой LISP .Net померять, так .Net вообще отдыхает и нервно курит в сторонке (по крайней мере — с точки зрения комбинаторных возможностей, часто называемых "метапрограммированием"). Уж извиняйте. Это к вопросу о "высокоуровневости". Так что, приходится сравнивать с тем, что попроще — с C++.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Блин!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 29.12.04 10:54
Оценка: 22 (3) +2 -2
Здравствуйте, VladD2, Вы писали:

ГВ>>А перепроектировать продукт... Ну ты что! Это же, млин, честь великая, достойная Наполеона местного масштаба. Это же сразу десяток менеджеров закладывать в бюджет нужно! Так что, те самые представители "маленьких компаний" как тот кот из анекдота: "зъисть-то он зъист, да хто ж ему дасть!" на то есть проверенные коты, которые жрут умеренно и время от времени успокаивающе мурчат за печкой (на собраниях). Дальше о глюке феномена "доверия к проверенным кадрам" рассказывать или сам догадаешься?

VD>Ну, прямо крик души притесненного и обделенного таланта.
Ладно, ладно. Я понимаю: в ответ не наедешь — весь день, как оплёванный. Ладно, прощаю тебе переход на личности.

VD>А я вот не считаю, что все места занимаются разными долболомами, а умным и правильным места не дают. И боюсь, что если этим самым умным и правильным (по их самомнению) доврить работу тех самых "котов", то вместо продукта будет полный абзац,


VD>а юзеры будут выслушивать объяснения почему, видите ли, GPF лучше сообщения об ошибки с возможностью продолжения.

... и не слишком внимательное чтение постингов...

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

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

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

VD>Ага. Как у тебя, например.
... и... об этом уже было.

ГВ>>И распространение управлямых сред типа Java/.Net ситуацию не улучшит, а только ухудшит. Одно хорошо — stack trace станет просто ординарным явлением, а не предсмертным криком программы.

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

ГВ>>Влад, вот давай, не будем путать "как надо" и "как делают"? Потому что надо:

ГВ>>- строить цельные модели (за очень небольшие деньги могу тебе немного рассказать на эту тему );
VD>Ага. У МС 20 лет и их состояния не хватило построить цельную модель. Или ума. Жаль тебя не встретили. Сейчас бы глядишь работали на супер стабильном Ворде.

... безаргументный этот, как его.

ГВ>>- продумывать их до реализации;

ГВ>>- поменьше суетиться и лизать одно место начальству.

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

Эк, однако!

VD>Там баги.

Правильно. Думать нам некогда — мы работаем.

VD>Баги кодеров, а не дизайнеров. А выловить их не могут, так как это ошибки третьего-четвертого порядка, и потому что вылезают они только при стечении некоторых абстаятельств.

Хрена себе баги кодеров! Кодерские-то баги обычно очень быстро вылазят.

VD>Ну, еще, возможно, из-за того, что разные средства проверки орфографии поставляются криворукими уродами на которых в МС сильно повлиять не могут.

О редакторе Word я не говорил, ну уж коль скоро...

VD>И тут бы очень помог бы вариант когда вместо GPF мне бы вылетело окно с кнопочкой Континьё.

Давай попробуем предугадать последствия нажатия на Continue? Я не случайно приводил пример с NetBeans, которая теряет при этом настройки проекта. Как ты думаешь, что произойдёт в Word-е, если пользователь нажмёт Continue? Например, ты сможешь поручиться за то, что после нажатия на Continue и Save вместо текста в файле не окажется дамп стека? А это, в принципе, не сложно сделать — прокастили результат функции к типу TextData — и понеслаь!

ГВ>>А происходит "как всегда": менеджер принял техническое решение;

VD>Ясно. Менеджер, значич дурак...

Мда. Кавычки я, значит, зря поставил.

ГВ>> балбес-архитектор

VD>логично...

Угу, учту на будущее — какой именно смысл ты вкладываешь в это слово.

ГВ>>потому что "требования бизнеса"

VD>Ну, да... теперь уже бизнес мешает.

Мешает не бизнес, а фетиш "требований бизнеса". Понимаешь, в чём разница понятий "бизнес" и "фетиш"?

ГВ>>(фетиш наш драгоценный, мать его трижды за ногу); взяли насквозь сертифицированного программиста, которому похрену, что будет на выходе — лишь бы начальство удовлетворить;

VD>Мля, задолбали! Это ваши же, верне наши же, баги.

Какие такие "наши же"? Так ваши или наши?

VD>Уверен, что тот орел что насажал багов в Ворде сейчас вот так же втирает подобную чущь кому-нибудь на другом форуме по продуктам фирмы ххх. И он-то точно в багах не виноват, так как еще не нашел их. А те что нашело уже не баги.


Ну, орлов много. Одни втирают, что ошибки — это не ошибки, другие, что ошибки — это только глобальный бу-бух, третьи, что... Что из этого следует?

VD>Нефига сваливать проблемы на других. Ошибаются все! Это как закон всемирного тяготения, он неотвратим. Натура у человека такая. Он всегода ошибается. Именно ошибки и способность их анализировать сделали человека человеком. И слушать пургу про "других виновных" и "проблемы рынка" просто противно. Нужно думать о том, как повысить уровень программирования и создать гарантированных барьер хотя бы против самых болезненных ошибок. А не перекладывать отвественность на четри знает кого.


Ты правда, считаешь, что лучшая защита от ошибок, это конструкция вроде такой:

if (!validpointer(p)) { throw InvalidPointer; }

?

Если да, то нам с тобой на самом деле не о чем спорить, если нет — то перестань нести чепуху относительно "гарантированного барьера". Потому что даже "прокатку" по памяти обычно можно вычислить быстро. Главное — засечь её существование.

ГВ>>Только при чём здесь C++? А вот

VD>Притом что это багодром. Это средсво не только не защищающее от ошибок, но и порой подталкивающее к их совершению.

Блин, ну сколько можно повторять. Никто не защитит программиста (и программу) от ошибок лучше, чем он сам. Потому что трижды навороченное средство знать не знает ничего о том, как его собираются применять. То есть — вообще. Потому что оно — средство. Можно запросто поломать молоток, если вколачивать им тупой короткий гвоздь в железную стену. А виртуальный барьер против ошибок Null Reference (даже не самих ошибок, а последствий в виде краха программы) как раз и подталкивает к их совершениею куда как больше, чем "вседозволенность" C++. Потому что ничто так не подталкивает к ошибкам, как иллюзия защиты от них. Забегая вперёд, скажу, что это же справедливо и для C++.

VD>Конечно дотнет или Ява не панацея. Конечно они не решат всех проблем, покрайней мере, в одночасье. Но это рельный и ощутимый шаг в правильном направлении.


Мне бы твою уверенность, Влад. К сожалению, мне пока что за словом ".Net" ничего кроме очень толкового маркетинга, очень бестолковой технологической эклектики, рассчитанной на... (не будем о грустном) — не видно. Ну, было уже нечто похожее в IT-индустрии, PL/xxxx называлось. Так что, я очень-очень сомневаюсь, что это шаг в "правильном направлении". Да и в самом по себе существовании такого "направления" в техническом виде — тоже очень сомневаюсь. Впрочем, поживём — увидим.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[44]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.12.04 12:04
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Нет. Не все, что с классами — ООП. Читать определение ООП.


Вики тебе в руки.

ПК>См., например, James O. Coplien. Multi-Paradigm Design for C++


Зачем? Я достаточно знаю С++ чтобы иметь о нем собственное мнение.

ПК>Это не принципы. Принципы ООП — open-closed, dependency inversion, Liskov substitution и т.п.


Это только по-твоему.

ПК>Довольно глупо замыкаться на одном стиле, когда доступны другие.


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

ПК>У "моих сторонников" идут слова о предпочтительности вынесения вспомогательных функций за пределы класса, изоляции данных от алгоритмов, уменьшении зависимостей, статическом контроле инвариантов и т.п.


Вот тут рядом, как раз очередная гениальная мысль о дизайне Re[24]: Чем становится C++?
Автор: jazzer
Дата: 28.12.04
.

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


ПК>Эти ужастики я от тебя слышу.


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

ПК>Данный код будет иметь смысл, например, если у CWindow есть хоть одна виртуальная функция. Это совсем не тот случай, что рассматривался ранее.


Странно слышать подобню кромолу от человека со столь большим рейтингом в С++.

Это дизайн. Никто не знает когда появится виртуальная функция. Да и довольно странно выглядят иерархии биз виртуальных методов.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.12.04 12:20
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

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


VD>>Все это помому, что они думают на С++ и измеряют все его метриками.

ГВ>Ну, если мерой LISP .Net померять, так .Net вообще отдыхает и нервно курит в сторонке (по крайней мере — с точки зрения комбинаторных возможностей, часто называемых "метапрограммированием"). Уж извиняйте. Это к вопросу о "высокоуровневости". Так что, приходится сравнивать с тем, что попроще — с C++.

Вообще-то функциональные языки под дотнетом во всю работают. Так что не надо ля-ля. Да и во многом курит скорее Лисп.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[45]: Чем становится C++?
От: Зверёк Харьковский  
Дата: 29.12.04 12:28
Оценка:
Здравствуйте, VladD2, Вы писали:

A>>Руки прочь от Perl'а! А кстати, такого флейма еще не было: Perl vs PHP.


VD>Боюсь, что при этом С++-ники и C#-ники объеденятся и...


...отстоят-таки Perl?
сам слушаю и вам рекомендую: в тишине сижу
FAQ — це мiй ай-кью!
Re[45]: Чем становится C++?
От: Багер  
Дата: 29.12.04 12:31
Оценка: :)))
ПК>>Это не принципы. Принципы ООП — open-closed, dependency inversion, Liskov substitution и т.п.

VD>Это только по-твоему.


ПК>>Довольно глупо замыкаться на одном стиле, когда доступны другие.


VD>Довольно глупо поощрять бардак и отсуствие дизайна как такового прикрываясь разговорами о стилях.


ПК>>У "моих сторонников" идут слова о предпочтительности вынесения вспомогательных функций за пределы класса, изоляции данных от алгоритмов, уменьшении зависимостей, статическом контроле инвариантов и т.п.

VD>Вот тут рядом, как раз очередная гениальная мысль о дизайне Re[24]: Чем становится C++?

.


Runtime error: Stack overflow...
Ваша программа работает корректно? Один звонок и я всё исправлю!

Делаю потенциальные фичи :))
Re[46]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.12.04 12:54
Оценка: :)
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>...отстоят-таки Perl?


Без мазы.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[28]: Чем становится C++?
От: Павел Кузнецов  
Дата: 29.12.04 13:53
Оценка: +3 -1
jazzer,

>>> давай на примерах более приближенных к жизни:


>>>
>>> CWindow * window = new CButton();
>>> ...
>>> // используем некоторый код наботающий с window (полиморфно)
>>>
>>> delete window;
>>>


> ПК>Данный код будет иметь смысл, например, если у CWindow есть хоть одна виртуальная функция. Это совсем не тот случай, что рассматривался ранее.


> Имхо, данный код как не имел смысла, так и после реплики Влада не имеет.

> Поскольку у нас есть принцип подстановки Лисков, нет абсолютно никакого смысла писать
>
> CWindow * window = new CButton();
>
вместо

>
> CButton * button = new CButton();
>


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

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


Ну, если пойти так далеко, и говорить именно об этом коде, то я бы дал по рукам программистам, написавшим оба варианта Без дополнительного кода не вижу ни одной причины писать это вместо:
CButton button;



> Ну уж я и не говорю, что нет никакой необходимости писать явный delete при наличии армиии оберток указателей (для данного случая — std::auto_ptr и boost::scoped_ptr).


+1

> Совсем другое дело, если new происходит не в этой функции, а в какой-то внешней (т.е. фабрике), которая генерит разнообразных потомков CWindow и возвращает указатели CWindow — но это автоматически означает, что иерархия классов CWindow изначально разрабатывалась для такого использования и если дизайнер при проектировании такой иерархии не объявил деструктор CWindow виртуальным, с ним надо сразу же сделать что-нибудь нехорошее.


Да, я полагаю, Влад именно что-то такое имел в виду. И да, снова с тобой согласен, нужно уж очень неряшливо писать, чтобы пропустить такое. По-моему, языком это уже не лечится...
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[28]: Чем становится C++?
От: Павел Кузнецов  
Дата: 29.12.04 14:03
Оценка: 1 (1) +2
VladD2,

> ПК>Данный код будет иметь смысл, например, если у CWindow есть хоть одна виртуальная функция. Это совсем не тот случай, что рассматривался ранее.


> < ... ad hominem arguments skipped ... >


> Это дизайн. Никто не знает когда появится виртуальная функция.


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

> Да и довольно странно выглядят иерархии биз виртуальных методов.


Зависит от контекста. Пример iterator traits уже приводили.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[45]: Чем становится C++?
От: Павел Кузнецов  
Дата: 29.12.04 14:37
Оценка: 1 (1)
VladD2,

> ПК> Это не принципы. Принципы ООП — open-closed, dependency inversion, Liskov substitution и т.п.


> Это только по-твоему.


Я так понимаю, ссылок на авторитетные источники, где бы design patterns причислялись бы к принципам ООП, ты привести не сможешь.

> ПК> Довольно глупо замыкаться на одном стиле, когда доступны другие.


> Довольно глупо поощрять бардак и отсуствие дизайна как такового прикрываясь разговорами о стилях.


Безусловно. Однако в данном случае речь шла о сознательно принимаемых проектных решениях. Странно, что ты этого не заметил.

Для контраста, вот пример
Автор: VladD2
Дата: 20.11.04
описания "бардака и отсутствия дизайна" в моем понимании:

Я часто пишу код по схеме — продавливаем проблему как выходит, а затем причесываем код рефакторингом. Очень эффективно выходит.

Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[3]: Блин!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 29.12.04 16:10
Оценка: -1 :)
Здравствуйте, Волк-Призрак, Вы писали:

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

ВП>интересно... А в самом деле, почему? Пусть объяснит!

А потому, что GPF приведёт к более сильному недовольству пользователей и, следовательно — более острой реакции производителя софта. Ну а stack-dump window так сильно пользователей не раздражает.



ВП>Правда последний шаг в этом направлении будет ИИ-низированый генератор кода по постановке задачи, и тогда роль системных архитекторов будут играть аналитики, а роль кодеров — системные архитекторы.... Не знаю, является ли это архи, хорошо, если программирование вообще и кодинг как класс вымрут за ненадобностью....
Ещё один мечтатель.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[27]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 29.12.04 16:26
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>>Все это помому, что они думают на С++ и измеряют все его метриками.

ГВ>>Ну, если мерой LISP .Net померять, так .Net вообще отдыхает и нервно курит в сторонке (по крайней мере — с точки зрения комбинаторных возможностей, часто называемых "метапрограммированием"). Уж извиняйте. Это к вопросу о "высокоуровневости". Так что, приходится сравнивать с тем, что попроще — с C++.
VD>Вообще-то функциональные языки под дотнетом во всю работают. Так что не надо ля-ля. Да и во многом курит скорее Лисп.

Кхм. Вообще-то, они не только под дотнетом работают. Это как раз и говорит о мощности и высокоуровневости этих языков.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[44]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 29.12.04 19:08
Оценка: -1 :))
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>В том, что нельзя писать свободные функции.


Свободные от кого? От чего? Меня эта реплика даже рассмешила...

"Свободу функциям! Я не выйду из туалета, пока не освободят функции!!!"
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[3]: Блин!
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 29.12.04 19:08
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

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


VD>>Баги кодеров, а не дизайнеров. А выловить их не могут, так как это ошибки третьего-четвертого порядка, и потому что вылезают они только при стечении некоторых абстаятельств.

ГВ>Хрена себе баги кодеров! Кодерские-то баги обычно очень быстро вылазят.

Не знаю.... Представьте кодерский баг copypaste, где в функции, в которой д. б. происходить вызов чегото вроде:
log.writestste(this)
threadsset.remove.this();

изза очепятки происходит
log.writestste(this)
threadsset.add.this();

Это вроде как ошибка кодинга, но этот лик может всплыть после Страшного Суда

ГВ>Давай попробуем предугадать последствия нажатия на Continue? Я не случайно приводил пример с NetBeans, которая теряет при этом настройки проекта. Как ты думаешь, что произойдёт в Word-е, если пользователь нажмёт Continue? Например, ты сможешь поручиться за то, что после нажатия на Continue и Save вместо текста в файле не окажется дамп стека? А это, в принципе, не сложно сделать — прокастили результат функции к типу TextData — и понеслаь!

))))


ГВ>Ты правда, считаешь, что лучшая защита от ошибок, это конструкция вроде такой:


ГВ>

ГВ>if (!validpointer(p)) { throw InvalidPointer; }

ГВ>?

Я подозреваю что речь идёт об ошибках компияции вроде "$variable is null pointer" и "$variable is unassigned pointer" или "error — returning null pointer", а не проверок на уровне синтаксических конструкций.
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[45]: Чем становится C++?
От: Павел Кузнецов  
Дата: 29.12.04 19:15
Оценка:
Волк-Призрак,

> ПК> В том, что нельзя писать свободные функции.


> Свободные от кого? От чего? Меня эта реплика даже рассмешила...


Это термин такой.

http://whiteunicorn.dax.ru/docs/prog/cpp/GradiBuch/ch02.html

Свободная функция — функция, не входящая ни в какой класс.

Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[46]: Чем становится C++?
От: Mika Soukhov Stock#
Дата: 29.12.04 19:46
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Волк-Призрак,


>> ПК> В том, что нельзя писать свободные функции.


>> Свободные от кого? От чего? Меня эта реплика даже рассмешила...


ПК>Это термин такой.


ПК>http://whiteunicorn.dax.ru/docs/prog/cpp/GradiBuch/ch02.html

ПК>

Свободная функция — функция, не входящая ни в какой класс.


А чем это отличается от глобальной функции?

Кстати, вроде функция, являющая членом класса, называется методом. Надо приучаться к короткому слову, по-военному
Re[37]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 29.12.04 19:47
Оценка:
Здравствуйте, AndrewVK, Вы писали:

A>>Причем, utf-8 это не какая-либо особенная кодировка, для которой есть специальная поддержка. Таким же образом я бы мог прикрутить поддержку для любой другой кодировки. Покажи мне другую библиотеку, где данная операция обходилась бы так же легко.

AVK>.NET Framework

А UTF-32, UTF-7, KOI-8r?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[47]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 29.12.04 20:29
Оценка:
Здравствуйте, Mika Soukhov, Вы писали:

MS>Здравствуйте, Павел Кузнецов, Вы писали:

ПК>>

Свободная функция — функция, не входящая ни в какой класс.


MS>А чем это отличается от глобальной функции?


MS>Кстати, вроде функция, являющая членом класса, называется методом. Надо приучаться к короткому слову, по-военному


Нуу... Я вообще считаю что это атавизм — всеравно их суют в классы (статические методы) или в пространства имён. Потому и удивился "свободной" ф-ии.
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[38]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 29.12.04 20:29
Оценка:
Здравствуйте, adontz, Вы писали:

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


A>>>Причем, utf-8 это не какая-либо особенная кодировка, для которой есть специальная поддержка. Таким же образом я бы мог прикрутить поддержку для любой другой кодировки. Покажи мне другую библиотеку, где данная операция обходилась бы так же легко.

AVK>>.NET Framework

A>А UTF-32, UTF-7, KOI-8r?


Да, в самом деле, как насчёт koi8r? Мало тогочто например я изредка ещё и линух врубаю так ведь почта почти вся на бывшемм ссср бродит в этой кодироффке! Если это не поддерживается "базовым" .Net, то всеравно широкое распространение получит сборка, реализуюшая эту кодировку.
А всякие там coder-decoder — это извращение. Надо было делать имхо иначе, но это не имеет значиния, всеравно придётся пользовать то что есть.
Если кратко то я бы ввёл понятие "encodings mapping" — файл записей вида (100 лет не писал структур сори за потенцальный туфтур)
struct charencodingmapingpoint {
unicode32char unicode32symbol;
__int32 encodingsymbol;
}
//а файл начинается с загоовка вида
struct charencodingmapingpoint {
__int32 symbolsize;//7, 8, 16, 32
unicode32char[8] encodingisoname;
unicode32char[64] encodingdisplayname;
}

ессесно не обязательно unicode32 пугать людей, можно было темже unicode16 "обойтись". Главное — принцип. Смысл в том, что в папке лежат файлы мапинга, и достаточно 1-2 класса унивесальных (носледовательных разумеется), которые использубт файлаы мапинга в своей работе.
ЗЫ: разумеется мапинг должен отображать только те символы, которые содержит кодировка меньшей разрядности, остальные мапятся в то, на что замапен 0. Таким образом для тойже win1251 получаем 256 записей — всего 2048 байт — не так уж и много, если в памяти она будет в 1м жкземпяре
7 интерпретируется как 8 "с 0-м 8м битом".
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[48]: Чем становится C++?
От: Mika Soukhov Stock#
Дата: 29.12.04 20:37
Оценка: -1
Здравствуйте, Волк-Призрак, Вы писали:

ВП>Нуу... Я вообще считаю что это атавизм — всеравно их суют в классы (статические методы) или в пространства имён.


НаймСпейс — это логическое объединение, а вот классы — физическое.
Re[47]: Чем становится C++?
От: Павел Кузнецов  
Дата: 29.12.04 20:43
Оценка:
Mika Soukhov,

> ПК>http://whiteunicorn.dax.ru/docs/prog/cpp/GradiBuch/ch02.html

> ПК>

Свободная функция — функция, не входящая ни в какой класс.


> А чем это отличается от глобальной функции?


Тем, что она может не быть глобальной. Например, входить в какой-нибудь namespace. "Глобальная" говорит об области видимости. "Свободная" говорит, что функция не является членом класса. Суть ортогональные вещи.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[48]: Чем становится C++?
От: Павел Кузнецов  
Дата: 29.12.04 20:49
Оценка:
Волк-Призрак,

> Нуу... Я вообще считаю что это атавизм — всеравно их суют в классы (статические методы) или в пространства имён. Потому и удивился "свободной" ф-ии.


Функция, входящая в namespace, но не являющаяся членом какого-нибудь класса, является свободной. Именно таких функций нет в C#/Java.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[41]: Чем становится C++?
От: alexeiz  
Дата: 29.12.04 21:47
Оценка:
"AndrewVK" <5161@users.rsdn.ru> wrote in message
news:969525@news.rsdn.ru
> Неправильно видишь. Минимально достаточно 1 класс и реализовать в нем
> 6 методов, по 3 на каждое направление преобразования:
> GetByteCount
> GetMaxByteCount
> GetBytes
> GetCharCount
> GetMaxCharCount
> GetChars
>


Меня интересует логика, которой ты руководствуешься в данном случае. Как ты знаешь, какие методы нужно реализовывать в своем, унаследованном от Encoding классе, а какие нет?
Posted via RSDN NNTP Server 1.9
Re[3]: Блин!
От: Дарней Россия  
Дата: 30.12.04 04:45
Оценка: 21 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>... и излишние упрощения тоже.


Тем не менее, факт остается фактом. Подавляющее большинство ошибок — это ошибки кодирования.

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


Всего то навсего. Разве же это сложно — выявить то самое сочетание факторов, которое проявляется раз в месяц на одном компьютере из десяти?
Вероятно, именно поэтому в инструкциях по кодированию появляется запрет под страхом смертной казни примененять арифметику указателей

ГВ>Блин, ну сколько можно повторять. Никто не защитит программиста (и программу) от ошибок лучше, чем он сам.


Бывают опасные бритвы, а бывают безопасные. Если очень хорошо постараться, то можно порезаться и безопасной. Но перерезать ей себе горло точно не получится. Ну если не считать особо талантливых индивидуумов
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[4]: Блин!
От: Павел Кузнецов  
Дата: 30.12.04 05:48
Оценка: +1
Дарней,

> ГВ> Блин, ну сколько можно повторять. Никто не защитит программиста (и программу) от ошибок лучше, чем он сам.


> Бывают опасные бритвы, а бывают безопасные. <...>


Да-да! А еще ножи бывают настоящие, "опасные", а бывают пластиковые, "безопасные"
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[5]: Блин!
От: Alex Reyst Россия  
Дата: 30.12.04 05:55
Оценка: :))) :))) :))) :)))
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Да-да! А еще ножи бывают настоящие, "опасные", а бывают пластиковые, "безопасные"


Пластиковые ножи, искусственные елки, безалкогольное пиво и технология .NET — вот что ведет человечество к надувным резиновым женщинам и биологическому краху!
Все, что здесь сказано, может и будет использоваться против меня...
Re[5]: Блин!
От: Дарней Россия  
Дата: 30.12.04 06:41
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Да-да! А еще ножи бывают настоящие, "опасные", а бывают пластиковые, "безопасные"


Пластиковые ножи — они не "безопасные", они "дешевые". Хотя навредить с их помощью и правда тяжело. Как и сделать с их помощью вообще хоть что-нибудь
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[39]: Чем становится C++?
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.12.04 08:55
Оценка: +2
Здравствуйте, Волк-Призрак, Вы писали:


ВП>Да, в самом деле, как насчёт koi8r? Мало тогочто например я изредка ещё и линух врубаю так ведь почта почти вся на бывшемм ссср бродит в этой кодироффке! Если это не поддерживается "базовым" .Net, то всеравно широкое распространение получит сборка, реализуюшая эту кодировку.

Вообще-то .Net поддерживает все кодировки, присутствующие в хост-системе. Т.е все эти koi-8r, koi-8u есть, вместе с еще более экзотическими.
ВП>А всякие там coder-decoder — это извращение. Надо было делать имхо иначе, но это не имеет значиния, всеравно придётся пользовать то что есть.
Я бы на твоем месте почитал что-нибудь хотя бы типа MSDN по mlang.dll. Чтобы понять, какие еще сервисы бывают связаны с кодовыми страницами. Глядишь, и отпадет желание изобретать очередной способ байт-маппинга.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[42]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.12.04 09:29
Оценка: +1
Здравствуйте, alexeiz, Вы писали:

A>Меня интересует логика, которой ты руководствуешься в данном случае. Как ты знаешь, какие методы нужно реализовывать в своем, унаследованном от Encoding классе, а какие нет?


Документацию читаю и обращаю внимание на модификатор abstract. Плюс знание общих принципов построения библиотеки фреймворка.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[49]: Чем становится C++?
От: Mika Soukhov Stock#
Дата: 30.12.04 09:32
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Функция, входящая в namespace, но не являющаяся членом какого-нибудь класса, является свободной. Именно таких функций нет в C#/Java.


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

Хотя, честно говоря, я так и не понял, в чем смысл свободной функции. Неймспейс — это всего лишь префиск перед именем типов и функций. Равен ли он "" или какому-то "Warlock" — никакой разницы. Или я что то упустил?
Re[38]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.12.04 09:40
Оценка:
Здравствуйте, adontz, Вы писали:

AVK>>.NET Framework


A>А UTF-32,


Можно дописать поддержку.

A> UTF-7, KOI-8r?


Поддерживается стандартно.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[48]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 30.12.04 10:28
Оценка: 1 (1) -2 :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Тем, что она может не быть глобальной. Например, входить в какой-нибудь namespace. "Глобальная" говорит об области видимости. "Свободная" говорит, что функция не является членом класса. Суть ортогональные вещи.


Я бы сказал даже "атавиальные"
Спорить не надо, всеравно меня не убедите, что отсутствие свободных функций — страшное преступление. за которое авторов языка/платформы надо в гаагский трибунал.
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[40]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 30.12.04 10:28
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Я бы на твоем месте почитал что-нибудь хотя бы типа MSDN по mlang.dll. Чтобы понять, какие еще сервисы бывают связаны с кодовыми страницами. Глядишь, и отпадет желание изобретать очередной способ байт-маппинга.

А я и не собираюсь его изобретать — я говорю что "64 кубических сфероидальных вакуумных коня на спиралях инвертированных спинов виртуальных функций" по поводу преобразования кодироваок городить не обязательно.
А впрочем, какая разница, всеравно в биллютене один пункт, и тот проставлен...
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[50]: Чем становится C++?
От: Павел Кузнецов  
Дата: 30.12.04 15:38
Оценка: 2 (2) +1
Mika Soukhov,

> ПК> Функция, входящая в namespace, но не являющаяся членом какого-нибудь класса, является свободной. Именно таких функций нет в C#/Java.


> Там нет глобальные функций (вернее, они есть, но не уровне C#), а вот создать класс, не входящий ни в один неймспейс, можно.


Речь о свободных функциях, которых, как мы уже выяснили, нет.

> Хотя, честно говоря, я так и не понял, в чем смысл свободной функции. Неймспейс — это всего лишь префиск перед именем типов и функций. Равен ли он "" или какому-то "Warlock" — никакой разницы. Или я что то упустил?


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

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

Например, как без свободных функций вызвать в шаблоне/generic функции скалярное умножение двух векторов, если вектор может быть как встроенным массивом, так и структурой, определенной пользователем? Со свободными функиями легко:
template< class T>
void my_function( const T& t1, const T& t2 )
{
   . . .

   . . . = scalar_multiplication( t1, t2 );

   . . .
}

Задача пользователя данной функции — определить scalar_multiplication для типов, которые передаются в данную функцию. Это можно сделать для любых типов, даже если тип определен в какой-то библиотеке, модифицировать которую мы не можем.

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

В результате, без нормальной поддержки свободных функций, многие возможности языка недоступны пользователю, не желающему писать в ОО-стиле.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[29]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.04 17:38
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>VladD2,


>> ПК>Данный код будет иметь смысл, например, если у CWindow есть хоть одна виртуальная функция. Это совсем не тот случай, что рассматривался ранее.


>> < ... ad hominem arguments skipped ... >


>> Это дизайн. Никто не знает когда появится виртуальная функция.


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


Извини и ты меня, но глупость говришь ты. Полиморфным класс будет и без виртуальной функции. Полиморфизм — это возможность работать с объектами производных классов, используя интерфейс их базового класса. А безграмотным дизайн становится из-за желания сэкономить на витруальных функциях. К тому же, любой мало-мальски долго живующий проект постоянно изменяется. И внесение изменений в дизайн — это совершенно нармальный процесс (рефакториг). И если твой дизайн плохо поддается изменению, то плох такой дизайн.

ПК>Зависит от контекста. Пример iterator traits уже приводили.


Все равно странно. Это именно экономия в рассчете, на то что изменений не будет. В общем, очередное закладывание на частности ради скорости.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[28]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.04 17:38
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Кхм. Вообще-то, они не только под дотнетом работают. Это как раз и говорит о мощности и высокоуровневости этих языков.


Ты на два сообщения вверх голову подними. Это был ответ на бессмысленное заявление:

если мерой LISP .Net померять, так .Net вообще отдыхает и нервно курит

Я как бы просто намекнул, что сравнение языка с платформой — это логическая ошибка. Только и всего.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[46]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.04 17:38
Оценка: -1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Я так понимаю, ссылок на авторитетные источники, где бы design patterns причислялись бы к принципам ООП, ты привести не сможешь.


GOF тебя устроит?

>> Довольно глупо поощрять бардак и отсуствие дизайна как такового прикрываясь разговорами о стилях.


ПК>Безусловно. Однако в данном случае речь шла о сознательно принимаемых проектных решениях. Странно, что ты этого не заметил.


Это не я не заметил. Это ты пыташся выдать халтуру за проектные решения.

ПК>Для контраста, вот пример
Автор: VladD2
Дата: 20.11.04
описания "бардака и отсутствия дизайна" в моем понимании:

ПК>

Я часто пишу код по схеме — продавливаем проблему как выходит, а затем причесываем код рефакторингом. Очень эффективно выходит.


Что я могу скзать? Отсталое у тебя понимание. Или ты редко работал с исследователькими проектами. Подобный стиль и является частью процесса проектирования. Ты создашь протатип, анализируешь резуальтат и рефакторишь прототип в законченное и более грамотное решение. Не получив прототип ты просто не всилах сказать како проектное решение более грамотное.

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

Я точно так же пишу и стати. Сначало пишу общий план. Потом начинаю писать отдельные фрагменты. Потом читаю что получилось... переписываю... так сказать, кристализую мысль. В итоге через несколько итераций получается статья. Потом, как ты знашь, выношу ее на суд других и устраняю проблемы которые я не заметил. По-моему, очень продутивный подход. И при программировании он тоже прекрасно применим.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[49]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.04 17:38
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Функция, входящая в namespace, но не являющаяся членом какого-нибудь класса, является свободной. Именно таких функций нет в C#/Java.


А в чем реальная разница? Что не дает сделать функция входящая в класс? И чем класс отличается от пространства имен для статической функции?
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[48]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.04 17:38
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Тем, что она может не быть глобальной. Например, входить в какой-нибудь namespace. "Глобальная" говорит об области видимости. "Свободная" говорит, что функция не является членом класса. Суть ортогональные вещи.


Так, если отбросить ненужные частности, то какая разница между "свободными" функциями и статическими методами? В чем заключаются "физические" ограничения?
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[29]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.04 17:38
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


Что значит не лечитс, если подобной проблемы даже невозможно создать в Яве или Шарпе?
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Блин!
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.04 17:38
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>А потому, что GPF приведёт к более сильному недовольству пользователей и, следовательно — более острой реакции производителя софта. Ну а stack-dump window так сильно пользователей не раздражает.


Конкретный пример. Ворд вылетает на ревиженах вот уже более 10 лет. Реакция производителя нулевая.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Блин!
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.04 17:38
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Да-да! А еще ножи бывают настоящие, "опасные", а бывают пластиковые, "безопасные"


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

Общество защиты прав потребителей.

... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: Чем становится C++?
От: Павел Кузнецов  
Дата: 30.12.04 18:07
Оценка: 15 (3) +2
VladD2,

>>> Это дизайн. Никто не знает когда появится виртуальная функция.


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


> Извини и ты меня, но глупость говришь ты. Полиморфным класс будет и без виртуальной функции.


В терминах C++ полиморфным называется класс с виртуальными функциями. Это я и имел в виду. Перефразируя: виртуальные функции "вдруг" появиться могут в классе, ранее их не имевшем, только при абсолютно неграмотном проектировании. Т.е., случай "никто не знает, когда появится виртуальная функция" в моем понимании — абсолютно неграмотное проектирование. Как ты уже ранее говорил: "бардак и отсутствие дизайна".

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


Дело далеко не только и не столько в экономии. Далеко не всегда функции должны быть виртуальными по своей природе. Виртуальная функция — зависимость базового класса от наследника. В тех случаях, где это не нужно/не предусматривается, делать функции виртуальными "на всякий случай" — и есть безграмотный дизайн.

Например, можно взять паттерн "шаблон":
class Base
{
public:
   void act()
   {
     // prefix
     do_action();
     // postfix
   }

private:
   virtual void do_action() = 0;
};

в данном случае сделать act() виртуальной — грубая ошибка дизайна.

> К тому же, любой мало-мальски долго живующий проект постоянно изменяется. И внесение изменений в дизайн — это совершенно нармальный процесс (рефакториг). И если твой дизайн плохо поддается изменению, то плох такой дизайн.


Это никак не коррелирует с тем, что часть классов может не иметь виртуальных функций по проекту.

> ПК> Зависит от контекста. Пример iterator traits уже приводили.


> Все равно странно. Это именно экономия в рассчете, на то что изменений не будет. В общем, очередное закладывание на частности ради скорости.


Виртуальные функции в iterator traits абсолютно бессмысленны. Равно как, скажем, и в std::unary_function. Это не оптимизация, это более четкое отражение назначения класса.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[47]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.12.04 20:14
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Что я могу скзать? Отсталое у тебя понимание. Или ты редко работал с исследователькими проектами. Подобный стиль и является частью процесса проектирования.


Это верно не только для исследовательских проектов. Собственно это одна из составляющих ХР. И в нашем проекте мы тоже в итоге к подобному пришли, поскольку, как оказалось, самые качественные решения были получены именно таким путем.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[30]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.12.04 20:14
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Что значит не лечитс, если подобной проблемы даже невозможно создать в Яве или Шарпе?


Ну это типа только криворукие программисты такое делают.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[31]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.12.04 20:14
Оценка: +1 :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Дело далеко не только и не столько в экономии. Далеко не всегда функции должны быть виртуальными по своей природе. Виртуальная функция — зависимость базового класса от наследника. В тех случаях, где это не нужно/не предусматривается, делать функции виртуальными "на всякий случай" — и есть безграмотный дизайн.


Что то я тебя понять не могу. Предположим были некоторые требования А, для них была создана иерархия классов без полиморфизма, good enough для поставленных требований (наследование применялось для реиспользования кода, поскольку это один из самых дешевых способов). Потом появились требования В и они привели к появлению виртуальных функций. В чем здесь криминал? Только не надо рассказывать про кривой дизайн и кривых менеджеров. Идеальный дизайн на начальных этапах создания продукта практически всегда недостижим.

ПК>Например, можно взять паттерн "шаблон":

ПК>
ПК>class Base
ПК>{
ПК>public:
ПК>   void act()
ПК>   {
ПК>     // prefix
ПК>     do_action();
ПК>     // postfix
ПК>   }

ПК>private:
ПК>   virtual void do_action() = 0;
ПК>};
ПК>

ПК>в данном случае сделать act() виртуальной — грубая ошибка дизайна.

Что то я не понял в чем смысл примера. Зачем делать виртуальную приватную функцию? Это не ошибка дизайна, это кретинизм.

>> Все равно странно. Это именно экономия в рассчете, на то что изменений не будет. В общем, очередное закладывание на частности ради скорости.


ПК>Виртуальные функции в iterator traits абсолютно бессмысленны. Равно как, скажем, и в std::unary_function. Это не оптимизация, это более четкое отражение назначения класса.


Паша, ты уж извини, но тут ты смотришь слишком узко. Ничего страшного в виртуальности нет в большинстве случаев. Вон в Java вобще функции по умолчанию виртуальны, и ничего, особых проблем это не вызывает. Да и виртуальность бывает ну очень разная. Даже в близком к классике дотнете и то есть помимо обычных виртуальных функций и двойная виртуальность поверх невиртуальных функций при реализации интерфейса (виртуально наличие реализации интерфейса в классе и виртуальна ссылка тна функцию в interface map), т.е. одна и та же функция может быть вызвана как виртуально, так и нет. А если вспомнить чего похитрее, например Smalltalk?
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[48]: Чем становится C++?
От: Павел Кузнецов  
Дата: 30.12.04 21:39
Оценка:
AndrewVK,

> VD> Что я могу скзать? Отсталое у тебя понимание. Или ты редко работал с исследователькими проектами. Подобный стиль и является частью процесса проектирования.


> Это верно не только для исследовательских проектов. Собственно это одна из составляющих ХР.


Нет, XP включает обязательный этап проектирования на каждой итерации. В классике, если не ошибаюсь — несколько дней на двухнедельных итерациях. Отличие от водопада в итерационном характере процесса, а не в отсутствии проектирования.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[32]: Чем становится C++?
От: Павел Кузнецов  
Дата: 30.12.04 22:33
Оценка: 7 (2)
AndrewVK,

> ПК> Дело далеко не только и не столько в экономии. Далеко не всегда функции должны быть виртуальными по своей природе. Виртуальная функция — зависимость базового класса от наследника. В тех случаях, где это не нужно/не предусматривается, делать функции виртуальными "на всякий случай" — и есть безграмотный дизайн.


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


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

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

> Идеальный дизайн на начальных этапах создания продукта практически всегда недостижим.


+1. Но это не означает, что на этом основании можно пропускать проектирование.

> ПК>Например, можно взять паттерн "шаблон":

> ПК>
> ПК>class Base
> ПК>{
> ПК>public:
> ПК>   void act()
> ПК>   {
> ПК>     // prefix
> ПК>     do_action();
> ПК>     // postfix
> ПК>   }
>
> ПК>private:
> ПК>   virtual void do_action() = 0;
> ПК>};
> ПК>

> ПК>в данном случае сделать act() виртуальной — грубая ошибка дизайна.
>
> Что то я не понял в чем смысл примера. Зачем делать виртуальную приватную функцию? Это не ошибка дизайна, это кретинизм.

Это сознательное ограничение: саму виртуальную функцию do_action() вызывать имеет "право" только класс Base. Наследникам ее вызывать ни к чему. Впрочем, это здесь далеко не самое важное. Можешь ее сделать protected, если тебе так больше нравится (хотя вот это уже и будет ошибкой, т.к. тогда у наследников появится возможность ее вызывать, чего они делать не должны). Главное, что функция act() должна быть невиртуальной.

> ПК> Виртуальные функции в iterator traits абсолютно бессмысленны. Равно как, скажем, и в std::unary_function. Это не оптимизация, это более четкое отражение назначения класса.


> Паша, ты уж извини, но тут ты смотришь слишком узко.


По-моему, допущение большего количества вариантов (например, возможность существования наследования без виртуальных функций) — скорее, более широкий взгляд на вещи, чем более узкий

> Ничего страшного в виртуальности нет в большинстве случаев.


По этому поводу есть разные мнения. Я согласен с таким:

Bill Venners: In Java, instance methods are virtual by default—they can be overridden in subclasses unless they are explicitly declared final. In C#, by contrast, instance methods are non-virtual by default. To make a method virtual, the programmer must explicitly declare it virtual. Why is non-virtual the default in C#?

Anders Hejlsberg: There are several reasons. One is performance. We can observe that as people write code in Java, they forget to mark their methods final. Therefore, those methods are virtual. Because they're virtual, they don't perform as well. There's just performance overhead associated with being a virtual method. That's one issue.

A more important issue is versioning. There are two schools of thought about virtual methods. The academic school of thought says, "Everything should be virtual, because I might want to override it someday." The pragmatic school of thought, which comes from building real applications that run in the real world, says, "We've got to be real careful about what we make virtual."

When we make something virtual in a platform, we're making an awful lot of promises about how it evolves in the future. For a non-virtual method, we promise that when you call this method, x and y will happen. When we publish a virtual method in an API, we not only promise that when you call this method, x and y will happen. We also promise that when you override this method, we will call it in this particular sequence with regard to these other ones and the state will be in this and that invariant.

Every time you say virtual in an API, you are creating a call back hook. As an OS or API framework designer, you've got to be real careful about that. You don't want users overriding and hooking at any arbitrary point in an API, because you cannot necessarily make those promises. And people may not fully understand the promises they are making when they make something virtual.


> Вон в Java вобще функции по умолчанию виртуальны, и ничего, особых проблем это не вызывает.


Виртуальность по умолчанию в Java делает невозможной полноценную реализацию design by contract, т.к., например, нельзя гарантировать вызов проверок пред-/постусловий.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[47]: Чем становится C++?
От: Павел Кузнецов  
Дата: 30.12.04 22:54
Оценка: +1 -1
VladD2,

> ПК> Я так понимаю, ссылок на авторитетные источники, где бы design patterns причислялись бы к принципам ООП, ты привести не сможешь.


> GOF тебя устроит?


Более чем. Итак, хоть одну ссылку оттуда, где бы паттерн назывался принципом ООП.

>>> Довольно глупо поощрять бардак и отсуствие дизайна как такового прикрываясь разговорами о стилях.


> ПК> Безусловно. Однако в данном случае речь шла о сознательно принимаемых проектных решениях. Странно, что ты этого не заметил.


> Это не я не заметил. Это ты пыташся выдать халтуру за проектные решения.


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

> ПК>Для контраста, вот пример
Автор: VladD2
Дата: 20.11.04
описания "бардака и отсутствия дизайна" в моем понимании:

> ПК>

Я часто пишу код по схеме — продавливаем проблему как выходит, а затем причесываем код рефакторингом. Очень эффективно выходит.


> Подобный стиль и является частью процесса проектирования. Ты создашь протатип,


+1: нормальный подход в качестве создания прототипа.

> анализируешь резуальтат и рефакторишь прототип в законченное и более грамотное решение.


-1: прототип не годится для создания конечного дизайна.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[50]: Чем становится C++?
От: Павел Кузнецов  
Дата: 30.12.04 22:55
Оценка:
VladD2,

> А в чем реальная разница? Что не дает сделать функция входящая в класс? И чем класс отличается от пространства имен для статической функции?


http://rsdn.ru/Forum/Message.aspx?mid=972007&amp;only=1
Автор: Павел Кузнецов
Дата: 30.12.04
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[30]: Чем становится C++?
От: Павел Кузнецов  
Дата: 30.12.04 22:56
Оценка: +2
VladD2,

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


> Что значит не лечитс, если подобной проблемы даже невозможно создать в Яве или Шарпе?


Не лечится такая неряшливость. Будут не эти проблемы, так другие.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[49]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.12.04 23:15
Оценка: 21 (1)
Здравствуйте, Павел Кузнецов, Вы писали:

>> VD> Что я могу скзать? Отсталое у тебя понимание. Или ты редко работал с исследователькими проектами. Подобный стиль и является частью процесса проектирования.


>> Это верно не только для исследовательских проектов. Собственно это одна из составляющих ХР.


ПК>Нет, XP включает обязательный этап проектирования на каждой итерации.


Безусловно. И Влад ведь тоже не говорит что проектировать вовсе не нужно. Но ключевое отличие — проектирование делается по месту, только на основании уже доступных данных, без особых предположений что там будет дальше. И тут есть еще один момент — исходной информацией для проектирования являются не только требования заказчика, но еще и текущее состояние системы (сложность программных структур, бутылочные горлышки, потребление ресурсов алгоритмом и т.п.). В точке 0 второй состовляющей у тебя практически нет. Поэтому собственно Влад и предлагает — спроектировать вчерне и получить более полную информацию о будущей системе, а потому же проектировать более тщательно и приближать существующую систему к идеалу путем рефакторинга.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[33]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.12.04 23:15
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:


ПК>Можно конкретный пример? Я как-то слабо такую ситуацию представляю. Зачем там понадобятся виртуальные функции, если с объектами унаследованных классов через указатели/ссылки на базовые не работают?


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

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


А это уже пофигу. Проблемы останутся теми же самыми. Что бы там не напроектировали проектировщики, в итоге все равно придется править код.

>> Идеальный дизайн на начальных этапах создания продукта практически всегда недостижим.


ПК>+1. Но это не означает, что на этом основании можно пропускать проектирование.


Речь не о пропускании, речь о том что не стоит сильно много тратить усилий на проектирование сразу — практически 100% шанс что детализация первых вариантов дизайна пойдет в итоге в мусорную корзину. У нас в текущем проекте некоторые системы оказались перепроектированы по 4 раза до выхода первой беты. Но они же в итоге оказались наиболее качественно спроектированны.

>> Что то я не понял в чем смысл примера. Зачем делать виртуальную приватную функцию? Это не ошибка дизайна, это кретинизм.


ПК>Это сознательное ограничение: саму виртуальную функцию do_action() вызывать имеет "право" только класс Base. Наследникам ее вызывать ни к чему.


Зачем ее тогда делать виртуальной? Для красоты?

ПК> Впрочем, это здесь далеко не самое важное. Можешь ее сделать protected, если тебе так больше нравится (хотя вот это уже и будет ошибкой, т.к. тогда у наследников появится возможность ее вызывать, чего они делать не должны). Главное, что функция act() должна быть невиртуальной.


Слишком куцый пример. Я так и не смог понять мысль, которую ты хотел донести.

>> Паша, ты уж извини, но тут ты смотришь слишком узко.


ПК>По-моему, допущение большего количества вариантов (например, возможность существования наследования без виртуальных функций) — скорее, более широкий взгляд на вещи, чем более узкий


Я не про это. А про то что виртуальность отнюдь не ограничивается классическим вариантом с VMT.

>> Ничего страшного в виртуальности нет в большинстве случаев.


ПК>По этому поводу есть разные мнения. Я согласен с таким:


Это не мнение, это вобщем то реклама. Опять же — в случае интерфейсов вобще нет возможности влиять на виртуальность реализаций. А еще иногда JIT виртуальные вызовы может убирать. Вобщем все не так тривиально.

>> Вон в Java вобще функции по умолчанию виртуальны, и ничего, особых проблем это не вызывает.


ПК>Виртуальность по умолчанию в Java делает невозможной полноценную реализацию design by contract, т.к., например, нельзя гарантировать вызов проверок пред-/постусловий.


Тем не менее за год, что я писал на джаве, я сам ни разу с такими проблемами не сталкивался и не слышал чтобы кто то из-за этого поимел что то серьезное. Зато слышал кучу матюков за воткнутые не к месту final. У виртуальности есть две стороны медали — с одной стороны она действительно снижает защищенность, но с другой стороны увеличивает гибкость и позволяет расширять библиотеки не только теми способами о которых догадались подумать их создатели.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[34]: Чем становится C++?
От: Павел Кузнецов  
Дата: 31.12.04 00:00
Оценка:
AndrewVK,

> Опять же контейнеры — в них может использоваться базовый тип отнюдь не только из-за полиморфизма, а просто чтобы получить типизированный контейнер для относительно разнородных данных. Или когда объекты изначально предполагаются полиморфными ради масштабируемости кода, но на начальных этапах ни одной виртуальной функции не наличествует за ненадобностью.


Что-то я не понял, как это относится к обсуждавшемуся примеру... Плюс, в обоих этих случаях деструктор должен будет делаться виртуальным с рождения, т.к., насколько я понимаю, удалять их будут через указатель на базу...

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


> А это уже пофигу. Проблемы останутся теми же самыми.


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

>>> Что то я не понял в чем смысл примера. Зачем делать виртуальную приватную функцию? Это не ошибка дизайна, это кретинизм.


> ПК>Это сознательное ограничение: саму виртуальную функцию do_action() вызывать имеет "право" только класс Base. Наследникам ее вызывать ни к чему.


> Зачем ее тогда делать виртуальной? Для красоты?


Нет, потому что она вызывается из act(), и нужно, чтобы была вызвана функция, определенная в наследнике.

> ПК> Впрочем, это здесь далеко не самое важное. Можешь ее сделать protected, если тебе так больше нравится (хотя вот это уже и будет ошибкой, т.к. тогда у наследников появится возможность ее вызывать, чего они делать не должны). Главное, что функция act() должна быть невиртуальной.


> Слишком куцый пример. Я так и не смог понять мысль, которую ты хотел донести.


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

> Я не про это. А про то что виртуальность отнюдь не ограничивается классическим вариантом с VMT.


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

> ПК> Виртуальность по умолчанию в Java делает невозможной полноценную реализацию design by contract, т.к., например, нельзя гарантировать вызов проверок пред-/постусловий.


> Тем не менее за год, что я писал на джаве, я сам ни разу с такими проблемами не сталкивался <...>


Я слышал жалобы на Java именно в контексте использования design by contract, template method pattern и т.п.

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


Ну, по умолчанию я за защищенность и сохранение заявленных инвариантов.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[51]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 31.12.04 10:00
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Например, как без свободных функций вызвать в шаблоне/generic функции скалярное умножение двух векторов, если вектор может быть как встроенным массивом, так и структурой, определенной пользователем? Со свободными функиями легко:

ПК>
ПК>template< class T>
ПК>void my_function( const T& t1, const T& t2 )
ПК>{
ПК>   . . .

ПК>   . . . = scalar_multiplication( t1, t2 );

ПК>   . . .
ПК>}
ПК>

ПК>Задача пользователя данной функции — определить scalar_multiplication для типов, которые передаются в данную функцию. Это можно сделать для любых типов, даже если тип определен в какой-то библиотеке, модифицировать которую мы не можем.

Всё это проблематично только потому, что в шаблоны некоторых языков нельзя примитивные типы вставлять. А вы не обратили внимание, что происходит в данном примере?? Оборачивание свободной функции объектом! Так что проблема свободных функций не становится мене надуманной имхо после данного примера.

ПК>Еще один, классический пример — функция swap(). Та же история: ее можно использовать из любых шаблонов для любых типов именно потому, что она является свободной функцией: пользователь может использовать готовую, либо, при желании, определить свою, более оптимальную, для своих или библиотечных типов.

Не думаю, что т. н. несвободные функции являются ущербными по своей функциональности только потому что они не свободны. Либо язык позволяет использовать примитивные типы в шаблонах, либо нет. Это более серьёзная проблема оо-языков чем "свобода" или "рабство" функций. Именно отсутствие возможности создать что либо в стиле

public class Matrix<class PrimitiveType> { 
  public Matrix<PrimitiveType> Invert() {
  //делаем обратную матрицу
    }
    public Matrix<PrimitiveType> Multiple(Matrix<PrimitiveType> to) {
    //перемножаем матрицы
    }
    //итд итп
}

Matrix<double> identity=new Matrix<double>;
identity=identity*


более сильно ограничивает меня чем отсутсвие свободных фунций. Необъходимо также заметить, что подобный манёвр требует спецмализации шаблона по всем примитивнымтипам и по классу Number (или его логическим аналогам). О Number-классах хочу сказать особо то, что я не понимаю, почему (хотя бы) для них не сделали перегрузку операторов "по мнемоническим именам". Чтонибудь вроде строгого соответствия THISCLASS OPERATOR_MULTIPLY(THISCLASS arg); оператору *

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

Язык стал бы слишком сложен с точки зрения написания рантайма. Но за простоту относительную реализации пришлось заплатить слишком дорого.
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[5]: Блин!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 31.12.04 13:49
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>А потому, что GPF приведёт к более сильному недовольству пользователей и, следовательно — более острой реакции производителя софта. Ну а stack-dump window так сильно пользователей не раздражает.

VD>Конкретный пример. Ворд вылетает на ревиженах вот уже более 10 лет. Реакция производителя нулевая.

Дык. MS и не на такие штуки никак не реагирует. И о чём это говорит? Да ни о чём.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[47]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 31.12.04 14:04
Оценка: +1 -1
Здравствуйте, VladD2, Вы писали:

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

И получать такой же бред?

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

Влад, не путай законченную мысль, выражаемую статьёй, и удовлетворительно работающую программу, выражаемую кодом.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[29]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 31.12.04 14:04
Оценка: +1 -2
Здравствуйте, VladD2, Вы писали:

ГВ>>Кхм. Вообще-то, они не только под дотнетом работают. Это как раз и говорит о мощности и высокоуровневости этих языков.


VD>Ты на два сообщения вверх голову подними. Это был ответ на бессмысленное заявление:

VD>

если мерой LISP .Net померять, так .Net вообще отдыхает и нервно курит

VD>Я как бы просто намекнул, что сравнение языка с платформой — это логическая ошибка. Только и всего.

Правильно, а потому нечего пенять на "C++ — мышление" окружающим. Поскольку ты же сам таким образом и противопоставляешь язык библиотеке.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[52]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 31.12.04 14:35
Оценка: +1
Здравствуйте, Волк-Призрак, Вы писали:

ПК>>Например, как без свободных функций вызвать в шаблоне/generic функции скалярное умножение двух векторов, если вектор может быть как встроенным массивом, так и структурой, определенной пользователем? Со свободными функиями легко:

ПК>>
ПК>>template< class T>
ПК>>void my_function( const T& t1, const T& t2 )
ПК>>{
ПК>>   . . .
ПК>>   . . . = scalar_multiplication( t1, t2 );
ПК>>   . . .
ПК>>}
ПК>>

ПК>>Задача пользователя данной функции — определить scalar_multiplication для типов, которые передаются в данную функцию. Это можно сделать для любых типов, даже если тип определен в какой-то библиотеке, модифицировать которую мы не можем.

ВП>Всё это проблематично только потому, что в шаблоны некоторых языков нельзя примитивные типы вставлять. А вы не обратили внимание, что происходит в данном примере?? Оборачивание свободной функции объектом! Так что проблема свободных функций не становится мене надуманной имхо после данного примера.

Где здесь упомянутое оборачивание? Кроме того, scalar_multiplication в приведёном примере предполагается настолько же глобальным, насколько глобален и сам оператор "*".

ПК>>Еще один, классический пример — функция swap(). Та же история: ее можно использовать из любых шаблонов для любых типов именно потому, что она является свободной функцией: пользователь может использовать готовую, либо, при желании, определить свою, более оптимальную, для своих или библиотечных типов.

ВП>Не думаю, что т. н. несвободные функции являются ущербными по своей функциональности только потому что они не свободны. Либо язык позволяет использовать примитивные типы в шаблонах, либо нет. Это более серьёзная проблема оо-языков чем "свобода" или "рабство" функций.
Прежде всего, это проблема C# и Java, не стоит здесь обобшать. Для C++ такой проблемы нет в принципе.

ВП>Именно отсутствие возможности создать что либо в стиле

[пример поскипан]

ВП>более сильно ограничивает меня чем отсутсвие свободных фунций. Необъходимо также заметить, что подобный манёвр требует спецмализации шаблона по всем примитивнымтипам и по классу Number (или его логическим аналогам). О Number-классах хочу сказать особо то, что я не понимаю, почему (хотя бы) для них не сделали перегрузку операторов "по мнемоническим именам". Чтонибудь вроде строгого соответствия THISCLASS OPERATOR_MULTIPLY(THISCLASS arg); оператору *

Здесь непонятно, где именно нужно копать. ИМХО, предпринята не слишком остроумная попытка "абстрагироваться от железа", вот и приколы...

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

ВП>Язык стал бы слишком сложен с точки зрения написания рантайма. Но за простоту относительную реализации пришлось заплатить слишком дорого.
Об том и речь, что чудес не бывает.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[22]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 31.12.04 14:57
Оценка: +1
Здравствуйте, VladD2, Вы писали:

ГВ>>Не скажу насчёт формального багрепорта, но в Янусе нередко возникает ошибка transaction deadlock.

VD>Ошибки бывают всегда и везде. Вопрос в критичности и массовости ошибок. Согласись, что для менеджед-кода эти показатели значительно ниже.
С удовольствием бы согласился, если бы не периодичность падений и выстреливаний exceptions у того же Janus, к примеру. Есть и другие доводы, которые в сумме не позволяют мне думать, что повсеместное внедрение .Net приведёт к появлению безглючных программ.

VD>А делдлоки... это не дедлоги, а скорее проблемы с параллельным обновлением БД из разных потоков.

Меня, как пользователя, чрезвычайно мало интересует — на каком уровне возникает проблема. Либо разработчики её решают, либо — нет.

VD>Короче опять Джет. С mssql-ем такого небыло бы.

Неча на зеркало пенять... Повторю: меня, как пользователя, совершенно не интересует, по причине какого из компонентов проявляются подобные вещи. Меня раздражает сам факт появления окошек stack trace. А ещё более раздражает то, что ты, например, считаешь возможным пытаться доказывать, что сие суть норма и есть хорошо. Знаешь, это очень мило звучит, но я как-то успел привыкнуть к другому подходу к оценке некорректного поведения собственной программы. И чужие программы я оцениваю по тем же критериям. ИМХО — не самым худшим. В частности, если программа выдаёт Assertion Violation Fault (по сути — то же самое, что и stack trace), то это ничем не лучше, чем выстреливание Continue/Quit. И в том и в том случае проявлется неработоспособность программы в определённых штатных, по видимому, ситуациях — иначе, они не были бы обработаны встроенными обработчиками.

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

Оправдываться я и сам умею. ИМХО, суть в том, что на мой взгляд, .Net просто позволил наплевать на некоторые вещи, или почему-то не позволил сконцентрироваться на них. Только-то и всего.

ГВ>>К слову сказать, 1.1.4b3.185 гораздо лучше, чем 1.1.3.

VD>207 была самя качественная.
Попробую выкачать, спасибо.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Блин!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 31.12.04 15:17
Оценка: -1
Здравствуйте, Дарней, Вы писали:

ГВ>>... и излишние упрощения тоже.

Д>Тем не менее, факт остается фактом. Подавляющее большинство ошибок — это ошибки кодирования.
Угу, и потому вылавливаются влёт.

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

Д>Всего то навсего. Разве же это сложно — выявить то самое сочетание факторов, которое проявляется раз в месяц на одном компьютере из десяти?
Если ситуация доведена до такой — то это есть беда проектирования. Как минимум — следствие нарушения контроля типов. Извини, но это — медицинский факт. Во всяком случае — по моей практике.

Д>Вероятно, именно поэтому в инструкциях по кодированию появляется запрет под страхом смертной казни примененять арифметику указателей

Давай теперь подумаем — зачем и для кого пишутся инструкции по кодированию?

ГВ>>Блин, ну сколько можно повторять. Никто не защитит программиста (и программу) от ошибок лучше, чем он сам.

Д>Бывают опасные бритвы, а бывают безопасные. Если очень хорошо постараться, то можно порезаться и безопасной. Но перерезать ей себе горло точно не получится. Ну если не считать особо талантливых индивидуумов
Кто же дураку запретит? Кстати, как ты думаешь, кого именно пытаются культивировать "современные направления IT-индустрии"? Я имею ввиду — в интеллектуальном смысле?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[23]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 31.12.04 16:09
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>С удовольствием бы согласился, если бы не периодичность падений и выстреливаний exceptions у того же Janus, к примеру.


А ничего что источник этих самых эксепшенов в Jet? Или в глюках джета тоже дотнет виноват?
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[24]: Чем становится C++?
От: Волк-Призрак Россия http://ghostwolf.newmail.ru
Дата: 31.12.04 17:04
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


ГВ>>С удовольствием бы согласился, если бы не периодичность падений и выстреливаний exceptions у того же Janus, к примеру.


AVK>А ничего что источник этих самых эксепшенов в Jet? Или в глюках джета тоже дотнет виноват?


С точки зрения российских юзверей во всём виноват Чубайс, а не дотнет или дотда, или ещё какая борода
А насчёт того что были вы вынуждены использовать Jet.... Вообще в данном случае у меня, как пользователя Януса, биллюдтень с одним пунктом, итот проставлен
... << RSDN@Home 1.1.4 beta 3 rev. 185>> @@J[getWorld.ApplyCheats(unfair.Cheats.IDDQD_AND_IDKFA]
while(Life.getClass().getClassLoader()==Religion.GOD){Life.be();};
Скажи .net корпорации Microsoft! (c) ghostwolf 2004
7 раз поищи в стандартной библиотеке, 1 раз накодь своё.
Re[24]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 31.12.04 18:26
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ГВ>>С удовольствием бы согласился, если бы не периодичность падений и выстреливаний exceptions у того же Janus, к примеру.

AVK>А ничего что источник этих самых эксепшенов в Jet? Или в глюках джета тоже дотнет виноват?

А чего это они "пролетают" наверх и всё, что я вижу — это stack trace?




Впрочем, в любом случае — с Новым Годом!
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[25]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 31.12.04 20:02
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>А чего это они "пролетают" наверх и всё, что я вижу — это stack trace?


А как должно быть? Красивое окошко с тем же самым сообщением? Или молчаливое проглатывание?

ГВ>Впрочем, в любом случае — с Новым Годом!


Взаимно
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[26]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 31.12.04 20:11
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А как должно быть?


Например отсыл сообщения об ошибке на newbug@janus.rsdn.ru, повтор запроса раза 3-4 (вдруг получиться?) и лишь потом StackTrace
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[27]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 31.12.04 20:30
Оценка:
Здравствуйте, adontz, Вы писали:

A>Например отсыл сообщения об ошибке на newbug@janus.rsdn.ru,


Ты еще не забыл что янус проект некоммерческий? 99% багов разработчикам известны, проблема в том что нехватает ресурсов их пофиксить.

A> повтор запроса раза 3-4 (вдруг получиться?)


Ты это серьезно?
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[28]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 31.12.04 21:28
Оценка:
Здравствуйте, AndrewVK, Вы писали:

A>> повтор запроса раза 3-4 (вдруг получиться?)

AVK>Ты это серьезно?

А почему нет? Если ошмбка вызвана рассинхронизацией потоков, то это вполне себе временный выход.

ЗЫ: С наступившим!
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[48]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.01.05 15:36
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:

VD>>Что я могу скзать? Отсталое у тебя понимание. Или ты редко работал с исследователькими проектами. Подобный стиль и является частью процесса проектирования.


AVK>Это верно не только для исследовательских проектов. Собственно это одна из составляющих ХР.


ХР в чистом виде мне не очень подходит. У них сдвиг по фазе на юнит-тестах, а для того же R#-а оно не очень то прокатывает. Хотя возможно тут я и ошибаюсь.

AVK> И в нашем проекте мы тоже в итоге к подобному пришли, поскольку, как оказалось, самые качественные решения были получены именно таким путем.


Согласен. Паше же тяжело понять и принять пдобный подход, так как на плюсах он очень рискованный. Тут безопастность дотнета, автоматизированный рефакторинг и т.п. очень кстати оказывается. Так что как всегда мы смотрим на жизнь с разных уровней абстракции.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[49]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.01.05 15:36
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Нет, XP включает обязательный этап проектирования на каждой итерации. В классике, если не ошибаюсь — несколько дней на двухнедельных итерациях. Отличие от водопада в итерационном характере процесса, а не в отсутствии проектирования.


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

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


Очень верно сформулировал. Подписываюсь под каждым словом.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[48]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.01.05 15:36
Оценка: -1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>VladD2,


>> ПК> Я так понимаю, ссылок на авторитетные источники, где бы design patterns причислялись бы к принципам ООП, ты привести не сможешь.


>> GOF тебя устроит?


ПК>Более чем. Итак, хоть одну ссылку оттуда, где бы паттерн назывался принципом ООП.


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

Повторю еще раз цитату (полностью):

>>> В общем, не нужно выдавать свои желания за действительность. С++ пытается позволять писать в разных стилях, но рассчитан он в основном на два: структурный и ОО. И в этом свете ОО-дизайн является (должен являться) главной стратегией проектирования ПО. GOF, насколько я помню, использовал С++ в качестве одного из основных языков примеров.

>
> ПК>Ну и что?
>
> Вот и странно, почему 90% С++-программистов эти принципы или игнорируют, или вообще о них не слышало.

Это не принципы. Принципы ООП — open-closed, dependency inversion, Liskov substitution и т.п.


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

ПК>Чудной ты человек... Тебе ж даже ход рассуждений продемонстрировали. Ты чем бросаться эпитетами, показал бы изъяны в последнем...


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

ПК>+1: нормальный подход в качестве создания прототипа.


>> анализируешь резуальтат и рефакторишь прототип в законченное и более грамотное решение.


ПК>-1: прототип не годится для создания конечного дизайна.


Не буду повторяться. АВК вот тут
Автор: AndrewVK
Дата: 31.12.04
очень хорошо описал данный подход. То что ты с ним не согласен еще не значит, что он не верен. Еще раз повторю только то, что ты умудрился будучи моложе меня очень сильно увязнуть в доисторических догмах. Технологии меняются. С ними меняются и подходы.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[48]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.01.05 15:37
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>И получать такой же бред?


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

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


Извини, но я кое-что понимаю в обоих областях.

ЗЫ

В общем, можете оставаться виртуально в кменном веке и не верить, что можно жить по другому. Реальность от этого не изменится. Сейчас можно и нужно проектировать и кодировать по другому. Более эффективно, просто и надежно.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[51]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.01.05 15:37
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>VladD2,


>> А в чем реальная разница? Что не дает сделать функция входящая в класс? И чем класс отличается от пространства имен для статической функции?


ПК>http://rsdn.ru/Forum/Message.aspx?mid=972007&amp;only=1
Автор: Павел Кузнецов
Дата: 30.12.04


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

ПК>Речь о свободных функциях, которых, как мы уже выяснили, нет.


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

ПК>Главным является то, что класс, в отличие от namespace, нельзя расширять в других модулях.


Да? И так:
class A
{
    static void Test(int i);
}

class B : A
{
    static void Test(string s);
}

?

Да и что мне даст расширение этого же класса если функции независимы?

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


Согласен. Особой нужды нет. Это всего лишь делает язык более стройным и простым. Нет лишних сущьностей нет и нужны лишнее запоминать и объяснять.

ПК>но несмотря на неудобства приходится использовать,


Да нет особых неудобств. Только структуризация становится лучше. Вот и все.

ПК> только из-за того, что их навязывает язык.


Он их и навязывает, чтобы небыло 100 разных вариаций одного и того же.

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


ПК>Например, как без свободных функций вызвать в шаблоне/generic функции скалярное умножение двух векторов, если вектор может быть как встроенным массивом, так и структурой, определенной пользователем? Со свободными функиями легко:

ПК>
ПК>template< class T>
ПК>void my_function( const T& t1, const T& t2 )
ПК>{
ПК>   . . .

ПК>   . . . = scalar_multiplication( t1, t2 );

ПК>   . . .
ПК>}
ПК>

ПК>Задача пользователя данной функции — определить scalar_multiplication для типов, которые передаются в данную функцию. Это можно сделать для любых типов, даже если тип определен в какой-то библиотеке, модифицировать которую мы не можем.

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

Ну, и решается все это довольно просто. Всегда можно передавать интерфейсы и делегаты через обычные параметры и свойства. Решения получаются только гибче. Это действительно насильное приучение к ООП, но тут я особых проблем не вижу.

ПК>Еще один, классический пример — функция swap(). Та же история: ее можно использовать из любых шаблонов для любых типов именно потому, что она является свободной функцией: пользователь может использовать готовую, либо, при желании, определить свою, более оптимальную, для своих или библиотечных типов.


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

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


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

ПК>Не лечится такая неряшливость. Будут не эти проблемы, так другие.


А так будут и эти проблемы, и другие, и их пересечение. Это хорошо?

ЗЫ

Что касается "неряшливости"... Я, например, могу довольно часто ошибаться по мелочевке. При этом я без проблем пишу и ну С++, и на C#, так как их компиляторы, возможно, в купе с паттернами безопастного программирования позволяют ловить 99.999% всех ошибок еще на стадии компиляции. При этом я, обычно, сосредоточен на основной задаче и допускаю минимум логических ошибок. Таким образом, в каком-то смысле "неряшливость" очень даже лечится.

Теперь о С++ вс. Шарп. Когда я пишу на С++ мне приходится больше времени уделять паттенам безопасного программирования и поиску замены отсуствующих конструкций языка. Все это время вычитается из времени затрачиваемого на кодирование и местное проектирование. В итоге С++ становится значительно менее эффекивным средством разработки.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[31]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.01.05 15:37
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


>> Извини и ты меня, но глупость говришь ты. Полиморфным класс будет и без виртуальной функции.


ПК>В терминах C++ полиморфным называется класс с виртуальными функциями.


Я не имел ввиду С++-ной терминалогии. Она довольно сильно расходится с реальным смыслом слова "полимрфизм". Перегрузка функций, к примеру, тоже полиморфизм.

ПК> Это я и имел в виду. Перефразируя: виртуальные функции "вдруг" появиться могут в классе, ранее их не имевшем, только при абсолютно неграмотном проектировании. Т.е., случай "никто не знает, когда появится виртуальная функция" в моем понимании — абсолютно неграмотное проектирование. Как ты уже ранее говорил: "бардак и отсутствие дизайна".


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

ПК>Дело далеко не только и не столько в экономии. Далеко не всегда функции должны быть виртуальными по своей природе. Виртуальная функция — зависимость базового класса от наследника. В тех случаях, где это не нужно/не предусматривается, делать функции виртуальными "на всякий случай" — и есть безграмотный дизайн.


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

ПК>...в данном случае сделать act() виртуальной — грубая ошибка дизайна.


Я где-то призывал делать все публичные методы виртуальными? А вот делать виртуальными скрытые методы, как в твоем случае — это вообще экстровогантно. Шарпм такие экстравогантности отказывается компилировать.

>> К тому же, любой мало-мальски долго живующий проект постоянно изменяется. И внесение изменений в дизайн — это совершенно нармальный процесс (рефакториг). И если твой дизайн плохо поддается изменению, то плох такой дизайн.


ПК>Это никак не коррелирует с тем, что часть классов может не иметь виртуальных функций по проекту.


А я и не утрверждал подобного. Ты вообще с кем споришь то?
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[49]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.01.05 16:15
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>ХР в чистом виде мне не очень подходит.


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

VD> У них сдвиг по фазе на юнит-тестах,


У них много сдвигов. Вот только часть этих сдвигов почти универсальна, а часть уже на универсализм не тянет.
... << RSDN@Home 1.1.4 beta 3 rev. 268>>
AVK Blog
Re[34]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.01.05 16:28
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Зачем ее тогда делать виртуальной? Для красоты?


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

ПК>> Впрочем, это здесь далеко не самое важное. Можешь ее сделать protected, если тебе так больше нравится (хотя вот это уже и будет ошибкой, т.к. тогда у наследников появится возможность ее вызывать, чего они делать не должны). Главное, что функция act() должна быть невиртуальной.


AVK>Слишком куцый пример. Я так и не смог понять мысль, которую ты хотел донести.


Товаришь борется с очередной ветренной мельницей. Он думает, что кто-то тут призывает делать все методы виртуальными, так сказать на всякий случай.

AVK>Тем не менее за год, что я писал на джаве, я сам ни разу с такими проблемами не сталкивался и не слышал чтобы кто то из-за этого поимел что то серьезное. Зато слышал кучу матюков за воткнутые не к месту final. У виртуальности есть две стороны медали — с одной стороны она действительно снижает защищенность, но с другой стороны увеличивает гибкость и позволяет расширять библиотеки не только теми способами о которых догадались подумать их создатели.


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

ГВ>С удовольствием бы согласился, если бы не периодичность падений


Это сказка. У меня Янус не падал с тех пор как пофиксили глюки в Сентиловском коде.

ГВ> и выстреливаний exceptions у того же Janus, к примеру.


Тебе уже 200 раз говорили, что анменеджед-приложение созданное в аналогичных условиях было бы вообще неработоспособным. И так же говорили, что очень многие серьезные проблемы Януса вызываны неподобающим поведением анменеджед-кода (ну, не можем мы переписать Jet и IE).

ГВ>Есть и другие доводы, которые в сумме не позволяют мне думать, что повсеместное внедрение .Net приведёт к появлению безглючных программ.


К безглючным не приведет. Токого никто и не утвреждал. Это очередное передергивание. Речь идет о существенном снижении количества ошибок, и повшении живучисти приложения в виду понижения степенит критичности ошибок.

ГВ>Меня, как пользователя, чрезвычайно мало интересует — на каком уровне возникает проблема. Либо разработчики её решают, либо — нет.


Ну, обратись к разработчикам Jet-а. Или заплати за портирование Януса на MSSQL.

VD>>Короче опять Джет. С mssql-ем такого небыло бы.

ГВ>Неча на зеркало пенять...

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

ГВ> Повторю: меня, как пользователя, совершенно не интересует, по причине какого из компонентов проявляются подобные вещи. Меня раздражает сам факт появления окошек stack trace. А ещё более раздражает то, что ты, например, считаешь возможным пытаться доказывать, что сие суть норма и есть хорошо.


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

ГВ> Знаешь, это очень мило звучит, но я как-то успел привыкнуть к другому подходу к оценке некорректного поведения собственной программы.


Что я еще могу сказать? Ну, чето тебе в 201 раз повторить?

ГВ> И чужие программы я оцениваю по тем же критериям. ИМХО — не самым худшим. В частности, если программа выдаёт Assertion Violation Fault (по сути — то же самое, что и stack trace), то это ничем не лучше, чем выстреливание Continue/Quit. И в том и в том случае проявлется неработоспособность программы в определённых штатных, по видимому, ситуациях — иначе, они не были бы обработаны встроенными обработчиками.


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

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

ГВ>Оправдываться я и сам умею.

Неспорю. Вот только я не оправдываюсь. Я обясняю. Если тебе оно нужно, то пара килобаксов решат проблему в лучшем виде. Меня эта проблема не достает (я ее словил 2 раза за все время). Так что...

ГВ> ИМХО, суть в том, что на мой взгляд, .Net просто позволил наплевать на некоторые вещи, или почему-то не позволил сконцентрироваться на них. Только-то и всего.


Дотнет позволяет пользоваться софтом в котором есть проблемы. Только и всего. А плевать или нет зависит от тех усилий которые нужно вложить в исправление ошибки. Если бы в Янусе постоянно вылетали бы AV, то ты просто бы бросил бы им пользоваться.

ГВ>>>К слову сказать, 1.1.4b3.185 гораздо лучше, чем 1.1.3.

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

A>А почему нет? Если ошмбка вызвана рассинхронизацией потоков, то это вполне себе временный выход.


Вот это и есть замазывание ошибки.

A>ЗЫ: С наступившим!


Аналогично.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Блин!
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.01.05 16:28
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>>>А потому, что GPF приведёт к более сильному недовольству пользователей и, следовательно — более острой реакции производителя софта. Ну а stack-dump window так сильно пользователей не раздражает.

VD>>Конкретный пример. Ворд вылетает на ревиженах вот уже более 10 лет. Реакция производителя нулевая.

ГВ>Дык. MS и не на такие штуки никак не реагирует. И о чём это говорит? Да ни о чём.


Это говорит только об ошибочности твоих утверждений.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 01.01.05 17:10
Оценка:
Здравствуйте, VladD2, Вы писали:

A>>А почему нет? Если ошмбка вызвана рассинхронизацией потоков, то это вполне себе временный выход.

VD>Вот это и есть замазывание ошибки.

Тут какое дело. АВК говорит, что 99% ошибок известно, но нет времени. Если можно 1 раз написать обёртку для вызова Jet-функциональности благодаря которой для пользователя заметно повыситься устойчивость, то это ИМХо благо. А потом потихоньку исправлять ошибки. Вполне себе временное решение. К тому же достаточно общее.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[32]: Чем становится C++?
От: Павел Кузнецов  
Дата: 01.01.05 21:16
Оценка: 10 (1) +2 -1
VladD2,

> ПК> В терминах C++ полиморфным называется класс с виртуальными функциями.


> Я не имел ввиду С++-ной терминалогии. <...>


Я не видел никаких других значений термина "полиморфный класс". "Полиморфизм" вообще может означать много разных вещей, но это уже совсем другой разговор.

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


Тогда это разговор о других use cases (читай, смена темы). В оригинальном примере ничего подобного я не обнаружил.

>>> К тому же, любой мало-мальски долго живующий проект постоянно изменяется. И внесение изменений в дизайн — это совершенно нармальный процесс (рефакториг). И если твой дизайн плохо поддается изменению, то плох такой дизайн.


> ПК>Это никак не коррелирует с тем, что часть классов может не иметь виртуальных функций по проекту.


> А я и не утрверждал подобного. Ты вообще с кем споришь то?


Твой аргумент о легкости внесения изменений относился к наличию в классе виртуальных функций. Этот аргумент в обсуждавшемся случае невалиден.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[24]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 02.01.05 09:59
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>С удовольствием бы согласился, если бы не периодичность падений

VD>Это сказка. У меня Янус не падал с тех пор как пофиксили глюки в Сентиловском коде.
Блин
Автор: Геннадий Васильев
Дата: 30.12.04
. Хотя, справедливости ради, я не знаю — произошло сие падение в версии c пофиксеным сентинеловским кодом или без оного. Но факт остаётся фактом — Janus грохнулся.

ГВ>> и выстреливаний exceptions у того же Janus, к примеру.

VD>Тебе уже 200 раз говорили, что анменеджед-приложение созданное в аналогичных условиях было бы вообще неработоспособным. И так же говорили, что очень многие серьезные проблемы Януса вызываны неподобающим поведением анменеджед-кода (ну, не можем мы переписать Jet и IE).
Тем не менее — факт остаётся фактом.

ГВ>>Есть и другие доводы, которые в сумме не позволяют мне думать, что повсеместное внедрение .Net приведёт к появлению безглючных программ.

VD>К безглючным не приведет. Токого никто и не утвреждал. Это очередное передергивание. Речь идет о существенном снижении количества ошибок, и повшении живучисти приложения в виду понижения степенит критичности ошибок.
Хм... Я вот и думаю — о чём мы тогда спорим, вообще? ИМХО, с точки зрения пользователя нет разницы, свалилась ли программа с AV/GPF или снесла данные. Пример с Java NetBeans я уже приводил. Собственно, к тем же непредсказуемым последствиям приводит и нажатие на кнопку Continue в AVF-окне.

ГВ>>Меня, как пользователя, чрезвычайно мало интересует — на каком уровне возникает проблема. Либо разработчики её решают, либо — нет.

VD>Ну, обратись к разработчикам Jet-а. Или заплати за портирование Януса на MSSQL.

Ни того, ни другого делать не буду. Пока что Janus "не тянет" на платный софт, а за модификацию Jet мне лично платить незачем. Я, собственно, относительно Janus уже высказался — в целом я отношусь к нему более чем положительно, а отрицательные оценки использую как иллюстрации к своим высказываниям.

VD>>>Короче опять Джет. С mssql-ем такого небыло бы.

ГВ>>Неча на зеркало пенять...
VD>Так не пеняй.
Супер! Но я же и не пеняю. На Джет, вроде бы, пеняешь ты.

VD>Я проанализировал (года два назад) ситуацию и объем работы по обходу проблем и пришел к выводу, что проще портировать на mssql, но времени на это ни у кого не находится. Там нужно довтльно много переписать.

Ну и что? Так может быть, здесь, в дизайне, как раз собака и порылась?

ГВ>> Повторю: меня, как пользователя, совершенно не интересует, по причине какого из компонентов проявляются подобные вещи. Меня раздражает сам факт появления окошек stack trace. А ещё более раздражает то, что ты, например, считаешь возможным пытаться доказывать, что сие суть норма и есть хорошо.

VD>Опять передергивание. Я не говрю, что стэк-трэйсы — это хорошо. Я говорю, что это значительно лучше чем GPF с закрытием приложения и потерей незаписанных данных (а то и порчей БД).
Я отлично понимаю то, что ты говоришь. Но у меня всё время складывается впечателение, что ты (и не только ты) не хочешь понять одной простой вещи: что методы недопущения ошибок, приводящих к AV/GPF и ошибок, приводящих к stack dump — одни и те же. Научись бороться с первым — и научишься избавляться от второго. Только вот C++ в данном случае "проповедует" куда как более эффективную парадигму, чем try...catch...finally + GC.

ГВ>> Знаешь, это очень мило звучит, но я как-то успел привыкнуть к другому подходу к оценке некорректного поведения собственной программы.

VD>Что я еще могу сказать? Ну, чето тебе в 201 раз повторить?
От количества повторений истинность тезиса... как известно... кхм...

ГВ>> И чужие программы я оцениваю по тем же критериям. ИМХО — не самым худшим. В частности, если программа выдаёт Assertion Violation Fault (по сути — то же самое, что и stack trace), то это ничем не лучше, чем выстреливание Continue/Quit. И в том и в том случае проявлется неработоспособность программы в определённых штатных, по видимому, ситуациях — иначе, они не были бы обработаны встроенными обработчиками.

VD>Нет, уж. Случае координально разные. AV/GPF — это практически наверняка полный крах приложения, причем в большом количестве случаев это еще и порча памяти процесса с возможной порчей/потерей данных.
AV — почти то же самое, что и stack trace — суть нарушение критически важных ограничений на данные. GPF может свидетельствовать и о более сложных ошибках.

VD>Подобные ошибки зачастую бывают ошибками второго или третьего порядка (наложенными) и крайне трудно ловятся. Причем диагностическая информация выдаваемая при AV/GPF практически ничего не говорит разработчкику. А стэк-трэйс это мягкое сообщение о наличии проблемы с возможностью отладить код. При этом наложенности быть не может. По крайней мерее третьего порядка точно.

Хммм... А не мог бы ты уточнить критерии упорядочивания ошибок? Я не совсем тебя понимаю, когда ты говоришь о первом .. n-ом порядке ошибок. ИМХО, stack trace это суть то же самое, что и AV-окно, только с добавленным дампом стека. И то и то появляется вследствие критической неисправиой ошибки. Например вследствие некорректности данных: NULL-pointer, или NULL-reference, или ещё что-то в таком же роде. Значит, если мы хотим продолжить работу программы, то нужно либо повторить действие, либо его прекратить, поскольку всё, что мы смогли предпринять на данный момент — это сообщить о фатальной ошибке.


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

ГВ>>Оправдываться я и сам умею.
VD>Неспорю. Вот только я не оправдываюсь. Я обясняю. Если тебе оно нужно, то пара килобаксов решат проблему в лучшем виде. Меня эта проблема не достает (я ее словил 2 раза за все время). Так что...
...так что, добавим ещё одну иллюстрацию к тезису о том, что некоторые программы безглючно работают только на компьютерах своих разработчиков.

ГВ>> ИМХО, суть в том, что на мой взгляд, .Net просто позволил наплевать на некоторые вещи, или почему-то не позволил сконцентрироваться на них. Только-то и всего.

VD>Дотнет позволяет пользоваться софтом в котором есть проблемы. Только и всего. А плевать или нет зависит от тех усилий которые нужно вложить в исправление ошибки. Если бы в Янусе постоянно вылетали бы AV, то ты просто бы бросил бы им пользоваться.
Так они и так вылетают. Или причины появления stack trace сильно отличаются от причин Assert Violation Fault?

Кроме того, я когда-то вполне себе даже пользовался Embarcadero Tools несмотря на их потрясающую глючность.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[7]: Блин!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 02.01.05 09:59
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>>>А потому, что GPF приведёт к более сильному недовольству пользователей и, следовательно — более острой реакции производителя софта. Ну а stack-dump window так сильно пользователей не раздражает.

VD>>>Конкретный пример. Ворд вылетает на ревиженах вот уже более 10 лет. Реакция производителя нулевая.
ГВ>>Дык. MS и не на такие штуки никак не реагирует. И о чём это говорит? Да ни о чём.
VD>Это говорит только об ошибочности твоих утверждений.

"Более острая реакция" вовсе не означает (увы), что она влечёт за собой исправление ошибок.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[26]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 02.01.05 09:59
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ГВ>>А чего это они "пролетают" наверх и всё, что я вижу — это stack trace?

AVK>А как должно быть? Красивое окошко с тем же самым сообщением? Или молчаливое проглатывание?
Ну, я бы ожидал, как минимум, что некое действие будет возобновлено.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[49]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 02.01.05 09:59
Оценка: 1 (1) :)
Здравствуйте, VladD2, Вы писали:

ГВ>>И получать такой же бред?

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

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

VD>Извини, но я кое-что понимаю в обоих областях.
Это тема отдельного, о-о-очень большого спора, и давай пока не будем в него ввязываться. Хотя мне странно видеть, что ты не можешь отличить аллегоричного выражения мысли от оскорбления.

VD>ЗЫ


VD>В общем, можете оставаться виртуально в кменном веке и не верить, что можно жить по другому. Реальность от этого не изменится. Сейчас можно и нужно проектировать и кодировать по другому. Более эффективно, просто и надежно.

Ну что же... в ответ могу пожелать оставаться в вечно меняющемся мире менеджерской демагогии.


Ты уж извини, но мне, как-то, мир живых людей и исполнительных компьютеров куда интереснее мира исполнительных людей и живых компьютеров. Так-то вот уж...
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Блин!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 02.01.05 10:00
Оценка:
Здравствуйте, Волк-Призрак, Вы писали:

ГВ>>Хрена себе баги кодеров! Кодерские-то баги обычно очень быстро вылазят.

ВП>Не знаю.... Представьте кодерский баг copypaste, где в функции, в которой д. б. происходить вызов чегото вроде:
ВП>
ВП>log.writestste(this)
ВП>threadsset.remove.this();
ВП>

ВП>изза очепятки происходит
ВП>
ВП>log.writestste(this)
ВП>threadsset.add.this();
ВП>

ВП>Это вроде как ошибка кодинга, но этот лик может всплыть после Страшного Суда
У такого бага может быть куча последствий, так что гадать когда он всплывёт — неблагодарное занятие.

ГВ>>Ты правда, считаешь, что лучшая защита от ошибок, это конструкция вроде такой:

ГВ>>

ГВ>>if (!validpointer(p)) { throw InvalidPointer; }

ГВ>>?
ВП>Я подозреваю что речь идёт об ошибках компияции вроде "$variable is null pointer" и "$variable is unassigned pointer" или "error — returning null pointer", а не проверок на уровне синтаксических конструкций.
Дык, вроде как речь идёт о выкусывании ошибок, возникающих в runtime. А их можно выловить только явно или неявно внедрив проверки вроде показанной.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Блин!
От: Дарней Россия  
Дата: 02.01.05 10:36
Оценка: +1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Угу, и потому вылавливаются влёт.

ГВ>Если ситуация доведена до такой — то это есть беда проектирования. Как минимум — следствие нарушения контроля типов. Извини, но это — медицинский факт. Во всяком случае — по моей практике.

У меня есть смутное подозрение, что в состав твоей практики никогда не входило производство сложного тиражного софта. Если бы ты этим занимался — никогда бы такого не сказал.

ГВ>Кто же дураку запретит? Кстати, как ты думаешь, кого именно пытаются культивировать "современные направления IT-индустрии"? Я имею ввиду — в интеллектуальном смысле?


Культивация — дело хорошее, но компетентного специалиста из дурака ты все равно никогда не сделаешь. А толковых программистов — мало, очень мало. Поэтому работать приходится с тем, что есть.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[50]: Чем становится C++?
От: Дарней Россия  
Дата: 02.01.05 10:55
Оценка: +2 :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Ну что же... в ответ могу пожелать оставаться в вечно меняющемся мире менеджерской демагогии.


Как там говорят... кто громче всех кричит "вор"?

Если ты просто не понимаешь какие-то мысли — это не причина называть их "демагогией".
Если ты их понимаешь и понимаешь их ошибочность — расскажи своему начальству, как надо делать лучше. Тебя просто с рапростертыми объятиями примут. Если, конечно, ты действительно это знаешь. И тогда ты, со своими прозрениями в этой области, оставишь всех своих конкурентов без штанов. Есть какие-то возражения против этого плана?

Боюсь, что спор опять зашел в тупик. Но это и неважно, по большому счету.
Пока одни будут упорно писать все на С++ и упиваться сознанием свой крутизны, другие будут использовать .NET и выпускать более функциональные и качественные программы. А рынок всех расставит по своим местам
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[51]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 02.01.05 12:28
Оценка: :))
Здравствуйте, Дарней, Вы писали:

Д>Пока одни будут упорно писать все на С++ и упиваться сознанием свой крутизны, другие будут использовать .NET и выпускать более функциональные и качественные программы. А рынок всех расставит по своим местам


Повторять как мантру... с утра и в полдень... и на ритуале подъёма флага компании.




Только что, во время очередной синхронизации, Janus вывалил очередной Exception... Впрочем, нет — так ведь не бывает, верно?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[52]: Чем становится C++?
От: Дарней Россия  
Дата: 02.01.05 13:19
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Повторять как мантру... с утра и в полдень... и на ритуале подъёма флага компании.


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

ГВ>Только что, во время очередной синхронизации, Janus вывалил очередной Exception... Впрочем, нет — так ведь не бывает, верно?


На фоне отсутствующих как класс С++ аналогов — это аргумент в пользу сам понимаешь чего

PS Ах да, совсем забыл.
Ом мани пад ме хум
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[32]: Чем становится C++?
От: Павел Кузнецов  
Дата: 02.01.05 16:51
Оценка:
VladD2,

> Что касается "неряшливости"... Я, например, могу довольно часто ошибаться по мелочевке. При этом я без проблем пишу и ну С++, и на C#, так как их компиляторы, возможно, в купе с паттернами безопастного программирования позволяют ловить 99.999% всех ошибок еще на стадии компиляции.


Ага. Например, таких, как здесь: http://rsdn.ru/forum/?mid=942605
Автор: AndrewVK
Дата: 11.12.04


> Когда я пишу на С++ мне приходится больше времени уделять паттенам безопасного программирования и поиску замены отсуствующих конструкций языка.


Это не означает, что у всех так. Другим приходится больше времени уделять тому же при использовании C# и библиотеки .Net. Особенно при переходе с JavaScript и Python: вопреки твоим заявлениям, в функциональном стиле на C# получается не очень. И что?

Все это только говорит о том, что разным людям лучше подходят разные языки. Однако некоторые почему-то продолжают настаивать на безусловных преимуществах одного языка. Ну-ну...
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[49]: Чем становится C++?
От: Павел Кузнецов  
Дата: 02.01.05 19:52
Оценка: 18 (1) +1 -1
VladD2,

> Повторю еще раз цитату (полностью):

>

>>> В общем, не нужно выдавать свои желания за действительность. С++ пытается позволять писать в разных стилях, но рассчитан он в основном на два: структурный и ОО. И в этом свете ОО-дизайн является (должен являться) главной стратегией проектирования ПО. GOF, насколько я помню, использовал С++ в качестве одного из основных языков примеров.

>> ПК>Ну и что?

>> Вот и странно, почему 90% С++-программистов эти принципы или игнорируют, или вообще о них не слышало.

> Это не принципы. Принципы ООП — open-closed, dependency inversion, Liskov substitution и т.п.


> Естествнно речь шла о принципах ОО-дизайна.


Я в своем ответе их не разделял. Пожалуйста, могу перефразировать. Паттерны не относятся к принципам ОО-дизайна. Принципы ОО-дизайна — open-closed, dependency inversion, Liskov substitution и т.п.

> Принципами ООП их подменил уже ты. Я же просто не согласен с тем, что перечисленный тобой список является принципами ООП. Принципы ООП — это наследование, инкапсуляция, полиморфизм. Куда засунуть приведенные тобой принципы я даже и не знаю.


Если не относить к принципам перечисленное мною, то паттернам там вообще ловить нечего. Паттерны по отношению к перечисленным мной принципам (критериям качества ОО-дизайна) — средства их достижения.

> Не буду повторяться. АВК вот тут
Автор: AndrewVK
Дата: 31.12.04
очень хорошо описал данный подход. То что ты с ним не согласен еще не значит, что он не верен. Еще раз повторю только то, что ты умудрился будучи моложе меня очень сильно увязнуть в доисторических догмах. Технологии меняются. С ними меняются и подходы.


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

ПК>Ага. Например, таких, как здесь: http://rsdn.ru/forum/?mid=942605
Автор: AndrewVK
Дата: 11.12.04


Этот код даже не компилировался. Но если тебе очень хочется, то, например, такий. Сути дела это не меняет.

>> Когда я пишу на С++ мне приходится больше времени уделять паттенам безопасного программирования и поиску замены отсуствующих конструкций языка.


ПК>Это не означает, что у всех так. Другим приходится больше времени уделять тому же при использовании C# и библиотеки .Net. Особенно при переходе с JavaScript и Python: вопреки твоим заявлениям, в функциональном стиле на C# получается не очень. И что?


То что ты мягко гворя извращаешь факты. Ну, и переводишь стрелки. Речь в теме, кажется, шла о С++. Ну, и нефига переходить к обсуждению черти чего. Темболее недостатков у Питона более чем достаточно, а JavaScript не ясно зачем приплетен. Его только как идеал убогости можно приводить.

ПК>Все это только говорит о том, что разным людям лучше подходят разные языки.


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

ПК> Однако некоторые почему-то продолжают настаивать на безусловных преимуществах одного языка. Ну-ну...


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

ЗЫ

Ладно, надо заканчивать эти бесплодные сражения. С новым годом!
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Блин!
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.01.05 20:13
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>"Более острая реакция" вовсе не означает (увы), что она влечёт за собой исправление ошибок.


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

ПК>Я в своем ответе их не разделял. Пожалуйста, могу перефразировать. Паттерны не относятся к принципам ОО-дизайна. Принципы ОО-дизайна — open-closed, dependency inversion, Liskov substitution и т.п.


Вот в таком виде грех с тобй согласиться.

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


А... ну, ну. Снова Янус за уши притягиваем. Вот только две не большие проблемы:
1. Изменения в Янус вносятся влет и в том числе довольно мало квалифицированными кадрами. А если бы твои слова были правдой, то изменения немогли бы вносить даже я с АВК.
2. Есть такой проект — Янус 2. У АВК была замечательная мысль перепроектировать и переписать Янус с нуля. Эта мысль вообще свойственна многим русским программистам. Так вот кончилась она так и не дойдя до зримых стадий. А вот после проведенного (сначала мной, а потом АВК и другими) рефакторинга проект потихоничку избавился от основных проблем. Сегодняшние проблемы в основном сосредоточены вокруг джета, IE и времени которое нужно затратить на избавление от джета и обход проблем связанных с интерграцией с анменеджед-кодом.

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

Кстати, NNTP тоже работает на дотнете, а анменеджед-прокт десктопа сдох не родившись. По больше бы таких "недостатков".
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[51]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.01.05 20:57
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Кстати, NNTP тоже работает на дотнете, а анменеджед-прокт десктопа сдох не родившись. По больше бы таких "недостатков".


Думаю это больш связано с тем, что Janus И прочи альтрнативы мтоды доступа, включая NNTP могут использовать код сайта.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[52]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.01.05 21:12
Оценка:
Здравствуйте, adontz, Вы писали:

A>Думаю это больш связано с тем, что Janus И прочи альтрнативы мтоды доступа, включая NNTP могут использовать код сайта.


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

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

А если бы С++ давал больше приемуществ чем дотнет, то мы бы имели сайт написанный на С++. Поверь уж С-шников у нас то хватет. 4 года назад 90% писало на плюсах.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[51]: Чем становится C++?
От: Павел Кузнецов  
Дата: 02.01.05 21:53
Оценка:
VladD2,

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


> 1. Изменения в Янус вносятся влет <...>


> 2. <...> Сегодняшние проблемы в основном сосредоточены вокруг джета, IE и времени которое нужно затратить на избавление от джета


Именно о таких противоречиях в твоих лозунгах я и говорю: с одной стороны, на словах, вообще изменения вносятся влет; с другой, на деле, конкретные нужные изменения внести долго и тяжело. Еще раз: не невозможно, но и не "влет". По своим наблюдениям могу сказать, что в нормальных проектах на C++ больше всего ресурсов отнимают похожие вещи, а вовсе не мифические "грабли".

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


Ага. А огромное количество других открытых проектов, написанных на C, C++ и даже Python — только благодяря последним? Ерунда. Все эти проекты, включая Янус, написаны благодаря программистам, их писавшим. Программисты, естественно, выбирали то, что им лично удобнее. Обобщать их личный опыт на всех немного неверно.

> Кстати, NNTP тоже работает на дотнете, а анменеджед-прокт десктопа сдох не родившись. По больше бы таких "недостатков".


http://sourceforge.net/softwaremap/trove_list.php?form_cat=160 — можешь сам посмотреть количество открытых проектов на других языках.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[52]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.01.05 22:18
Оценка:
Здравствуйте, adontz, Вы писали:

A>Думаю это больш связано с тем, что Janus И прочи альтрнативы мтоды доступа, включая NNTP могут использовать код сайта.


Единственный код сайта, используемый янусом это форматтер. Написать аналог не так уж и сложно. Сравни размеры исходников — янус 2.2М, форматтер 50К. Все еще считаешь что главное препятствие создания анменеджед версии форматтер? Тогда спешу сообщить что форматтер можно использовать и из анменеджед кода через СОМ.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[33]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.01.05 22:18
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Ага. Например, таких, как здесь: http://rsdn.ru/forum/?mid=942605
Автор: AndrewVK
Дата: 11.12.04


Грязновато работаешь.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[52]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.01.05 22:32
Оценка: 4 (1)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Именно о таких противоречиях в твоих лозунгах я и говорю: с одной стороны, на словах, вообще изменения вносятся влет; с другой, на деле, конкретные нужные изменения внести долго и тяжело.


Изменения бывают разные. Замена джета на другой сервер — это глобальный рефакторинг. Мне на такую задачу нужно где-то дня три чистого времени. И их у меня попросту нет. Других дел по горло. А проблем лично у меня с джетом нет. У меня тачка шустрая и блокировки если и случаются, то раз в два месяца.

ПК> Еще раз: не невозможно, но и не "влет".


Влет влет. Погляди Хоумный форум... убедись сам.

ПК> По своим наблюдениям могу сказать, что в нормальных проектах на C++ больше всего ресурсов отнимают похожие вещи, а вовсе не мифические "грабли".


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

ПК>Ага. А огромное количество других открытых проектов, написанных на C, C++


Плодами скльких из них ты пользуешся? Я вот ни одним.

ПК> и даже Python


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

ПК> — только благодяря последним?


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

ПК> Все эти проекты, включая Янус, написаны благодаря программистам, их писавшим. Программисты, естественно, выбирали то, что им лично удобнее. Обобщать их личный опыт на всех немного неверно.


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

>> Кстати, NNTP тоже работает на дотнете, а анменеджед-прокт десктопа сдох не родившись. По больше бы таких "недостатков".


ПК>http://sourceforge.net/softwaremap/trove_list.php?form_cat=160 — можешь сам посмотреть количество открытых проектов на других языках.


Кстати, забавно произвести анализ зависимости объема проектов от срока жизни языка, то результаты получаются призабавнейшие. Я к сожалению не знаю точно сроки жизни всех языков, но приблизительная картина такова:
Язык            Кол-во  Время   Рэйтинг
                        жизни   (Кол-во / Время жизни)
Java            13620    8       1 703
PHP             10051    7       1 436
C#               2067    2       1 034
Perl             5570    7         796
C++             14399   20         720
C               14008   35         400
Python           3630   10         363
JavaScript       2067   10         207
Delphi/Kylix     1653    9         184
Visual Basic     1996   11         181
ASP               516    7          74
Ruby              322    6          54
PL/SQL           1059   20          53
Unix Shell       1583   30          53
Assembly         1469   50          29
Tcl               841   30          28
Objective C       615   25          25
Object Pascal     243   11          22
Pascal            306   35           9
Lisp              306   48           6
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[52]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.01.05 22:34
Оценка: 40 (1)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>с другой, на деле, конкретные нужные изменения внести долго и тяжело.


Ты считаешь что лучше меня знаешь состояние дел в проекте? Думаю нет, так что придется поверить на слово. Так вот — Jet был выбран сознательно, и ты не хуже меня знаешь почему. И работает он вобщем то не так уж и смертельно плохо. С его глюками можно мирится. А насчет долго и тяжело — это не так, просто у нас нет ресурсов делать даже несложную работу регулярно. Есть целый ряд задач более первостепенной важности, нежели замена джета, но и на них времени не хватает.
И вобще, Паша, покажи класс, перепроектируй какую нибудь подсистему януса по правильному. А?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[53]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.01.05 22:35
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


Я не знал.

Знаешь, я думаю что самое главное, это удобство. И то что всё ПО сайта на одном языке это ОЧЕНЬ удобно.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[53]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.01.05 22:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Тогда спешу сообщить что форматтер можно использовать и из анменеджед кода через СОМ.


Не, ну, это уже верх экстравогантности... сделать анменеджед-клиента и чтобы заюзать в нем форматер ставить рядом с ним дотнет для интеропа.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[53]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.01.05 22:42
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>И вобще, Паша, покажи класс, перепроектируй какую нибудь подсистему януса по правильному. А?


Да чё уж там. За одно и на плюсах (по бырому) препиши.

ЗЫ

Будешь 256-ым.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[54]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.01.05 22:46
Оценка:
Здравствуйте, adontz, Вы писали:

A>Знаешь, я думаю что самое главное, это удобство.


Не самое главное, но достаточно важный момент.

A> И то что всё ПО сайта на одном языке это ОЧЕНЬ удобно.


Янус это не ПО сайта. К таковому можно отнести разве что его сервис, но это не OpenSource и он действительно жестко ограничен по платформе (и ты это прекрасно знаешь). А вот сам янус по платформе не ограничен никак, его можно писать на любом что поддерживает сервисы, а их поддерживает на данный момент очень много кто. Из того что я знаю — С++, Дельфи, Java, PHP.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[54]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.01.05 22:46
Оценка:
Здравствуйте, VladD2, Вы писали:

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


Его вобщем то переписать не сложно. Регексы и xslt для плюсов есть, а кроме них кода там немного. И вопрос по открытию исходников форматтера вобщем то тоже можно решить.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[54]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.01.05 22:51
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Да чё уж там. За одно и на плюсах (по бырому) препиши.


Да нет, я на полном серьезе. Пусть перепроектирует, мы реализуем. А потом посмотрим сколько этот дизайн проживет.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[53]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.01.05 23:02
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>
VD>Язык            Кол-во  Время   Рэйтинг
VD>                        жизни   (Кол-во / Время жизни)
VD>Java            13620    8       1 703
VD>PHP             10051    7       1 436
VD>C#               2067    2       1 034
VD>Perl             5570    7         796
VD>C++             14399   20         720
VD>C               14008   35         400
VD>Python           3630   10         363
VD>JavaScript       2067   10         207
VD>Delphi/Kylix     1653    9         184
VD>Visual Basic     1996   11         181
VD>ASP               516    7          74
VD>Ruby              322    6          54
VD>PL/SQL           1059   20          53
VD>Unix Shell       1583   30          53
VD>Assembly         1469   50          29
VD>Tcl               841   30          28
VD>Objective C       615   25          25
VD>Object Pascal     243   11          22
VD>Pascal            306   35           9
VD>Lisp              306   48           6
VD>

И что показывает эта таблица?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[34]: Чем становится C++?
От: Павел Кузнецов  
Дата: 02.01.05 23:05
Оценка: -1
AndrewVK,

> ПК> Ага. Например, таких, как здесь: http://rsdn.ru/forum/?mid=942605
Автор: AndrewVK
Дата: 11.12.04


> Грязновато работаешь.


Ну, извините...

Вроде бы должно быть очевидно, что "99.999% всех ошибок еще на стадии компиляции" отловить ни один компилятор не может. Всегда останется огромное количество потенциальных ошибок, которые обнаружить/предотвратить можно только традиционными способами: повышенное внимание при кодировании, тестирование и т.п.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[55]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.01.05 23:10
Оценка:
Здравствуйте, AndrewVK, Вы писали:

A>>Знаешь, я думаю что самое главное, это удобство.

AVK>Не самое главное, но достаточно важный момент.

Не вообще, а для Януса, учитывая нехватку времени.

AVK>Янус это не ПО сайта.


Сайт в широком смысле.

AVK>К таковому можно отнести разве что его сервис, но это не OpenSource и он действительно жестко ограничен по платформе (и ты это прекрасно знаешь).


Представь себе не знаю Я сам писал загрузчил perl'а для сайта, так что про платформу... ну под Windows это да и не более того.

AVK>А вот сам янус по платформе не ограничен никак, его можно писать на любом что поддерживает сервисы, а их поддерживает на данный момент очень много кто. Из того что я знаю — С++, Дельфи, Java, PHP.


Ну Java, PHP это ты замахнулся GTK ИМХО не для слабонервных, а JVM не у всех стоит. Хотя собственно какая разница что требовать JVM или .Net Framework? Остатся Delphi и С++ как более выгодные с точки зрения минимализации системных требований.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[55]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.01.05 23:17
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Да нет, я на полном серьезе. Пусть перепроектирует, мы реализуем.


Беда в том, что хороший проект должен подразумевать модульность. А это значит, что с наскоку такое не написать и вообще нужна будет некоторая организованность. Я уже сейчас, просто зная что делает Янус вижу разбиение на 5-6 зависимых модулей.
Такое независимо на коленке не написать. И дело не в деньгах или времени, а в высокой степени организованности.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[53]: Чем становится C++?
От: Павел Кузнецов  
Дата: 02.01.05 23:58
Оценка:
VladD2,

> ПК> Ага. А огромное количество других открытых проектов, написанных на C, C++


> Плодами скльких из них ты пользуешся?


Даже интересно стало... Вот, что более-менее сразу в голову пришло:

PopFile (perl)
drupal (PHP)
Mozilla (C)
GCC (C)
MinGW (C)
CygWin (C)
GnuWin32 (C)
Miranda (C)
PHP (C)
MLdonkey (OCaml, C)
mysql.com (C, C++)
VNC (C?)
jhead (C)
SysInternals (C)
ImageMagick (C, C++)
NSSM (The Non-Sucking Service Manager, C++)
wget (C)
Вариация *BSD в виде Mac OS X (C, ...)
Emacs (C, LISP, ...)
PyGallery (Python)
LAME (C, C++, Asm)

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

> Я вот ни одним.


NIH?

> Питон по некоторым парамерам можно сравнивать с дотнетом.


Ты языки сравниваешь, или платформы? Против .Net ничего не имею (правда, особой пользы, кроме как для Web, у нас от него пока тоже не наблюдается). А C#... Сначала, когда только анонсы появились, понравилось. Когда поближе рассмотрел... Извини, — "радости от него (у меня) никакой"
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[53]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 00:03
Оценка:
AndrewVK,

> И вобще, Паша, покажи класс, перепроектируй какую нибудь подсистему януса по правильному. А?


Мне жаль, что ты это лично воспринял, я просто имел в виду, что C# панацеей не является, и в реальных относительно крупных проектах ресурсы отнимают более-менее одинаковые вещи, вне зависимости от языка.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[56]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 09:30
Оценка:
Здравствуйте, adontz, Вы писали:

AVK>>Янус это не ПО сайта.


A>Сайт в широком смысле.


В широком смысле это смысла не имеет — янус и сайт пишут разные люди.

A>Ну Java, PHP это ты замахнулся


Насчет PHP возможно, а вот на Java уже двое точно собирались писать.

A> GTK ИМХО не для слабонервных, а JVM не у всех стоит.


.NET Framework тоже. А он тяжелее JRE почти в 2 раза.

A> Хотя собственно какая разница что требовать JVM или .Net Framework? Остатся Delphi и С++ как более выгодные с точки зрения минимализации системных требований.


Ага. Не хочешь попробовать
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[56]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 09:30
Оценка:
Здравствуйте, adontz, Вы писали:

A>Беда в том, что хороший проект должен подразумевать модульность. А это значит, что с наскоку такое не написать и вообще нужна будет некоторая организованность.


Это называется отмазки.

A> Я уже сейчас, просто зная что делает Янус вижу разбиение на 5-6 зависимых модулей.


Что в твоем понимании модули?

A>Такое независимо на коленке не написать. И дело не в деньгах или времени, а в высокой степени организованности.


Т.е. ты согласен с тем то в текущих условиях янус на С++ не написать?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[54]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 09:30
Оценка: 20 (2) +1
Здравствуйте, Павел Кузнецов, Вы писали:

>> И вобще, Паша, покажи класс, перепроектируй какую нибудь подсистему януса по правильному. А?


ПК>Мне жаль, что ты это лично воспринял,


Что лично воспринял? Твои слова:

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

Вот и спроектируй по правильному, чтобы не упирался и мы сразу поймем разницу.
А если не можешь, то не надо тут всех лечить, я не меньше твоего разбираюсь в предмете и не стоит рассказывать какие мы ламеры. Янус работает и им пользуется большое количество народу, а лично ты Паша, с правильным подходом, не написал для сайта ни строчки кода. И никто не написал. Самым успешным был RSDN Desktop — и где он теперь? Из этого можно сделать два вывода: либо все С++сники в тиме ламеры и неумехи, либо С++ значительно меньше подходит для софта вроде сайта, януса, NNTP, их сервисов. А ваш любимый аргумент про кривые руки здесь не прокатит — в тиме практически весь топ по плюсам. Ну так как же так — собрались самые крутые профессионалы по плюсам в рунете и так и не смогли ничего родить?

ПК> я просто имел в виду, что C# панацеей не является,


Этого никто не говорил. А имел ты ввиду совсем другое.

А C#... Сначала, когда только анонсы появились, понравилось. Когда поближе рассмотрел... Извини, — "радости от него (у меня) никакой"

Ну и еще пару конкретных наездов в стиле "C# никуда не годится", лень искать.

ПК> и в реальных относительно крупных проектах ресурсы отнимают более-менее одинаковые вещи, вне зависимости от языка.


У тебя есть опыт написания крупных проектов на дотнете и джаве? У меня есть — сокращение времени разработки где то до 2 раз. Причем чем крупнее проект, тем заметнее эффект.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[35]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 09:30
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Вроде бы должно быть очевидно, что "99.999% всех ошибок еще на стадии компиляции" отловить ни один компилятор не может.


И для доказательства привел код, который никто не компилировал. Блестяще. 5 баллов.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[57]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 03.01.05 12:26
Оценка:
Здравствуйте, AndrewVK, Вы писали:

A>>Беда в том, что хороший проект должен подразумевать модульность. А это значит, что с наскоку такое не написать и вообще нужна будет некоторая организованность.

AVK>Это называется отмазки.

Да, я такой

A>> Я уже сейчас, просто зная что делает Янус вижу разбиение на 5-6 зависимых модулей.

AVK>Что в твоем понимании модули?

Некоторая логически законченная сущность служащая для выполнения узкой задачи, для использования которой не нужно знать подробностей её реализации.
Дурацкое определение вышло
Короче смотри. Вот модуль DataBase. У него есть некоторый интерфейс позволяющий получать список сообщений, идентификатор родительского и проч. и
проч.
Я могу модуль DataBaseAccess заменить на DataBaseMySQL и всё великолепно продолжит работать.

A>>Такое независимо на коленке не написать. И дело не в деньгах или времени, а в высокой степени организованности.

AVK>Т.е. ты согласен с тем то в текущих условиях янус на С++ не написать?

Скорее да, чем нет. Но думаю тут дело не столько в GC, Сколько в метаинформации и вообще некотором скриптовом (неудачный термин, но не знаю как лучше описать) стиле программирования.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[58]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 12:32
Оценка: +1
Здравствуйте, adontz, Вы писали:

A>Некоторая логически законченная сущность служащая для выполнения узкой задачи, для использования которой не нужно знать подробностей её реализации.

A>Дурацкое определение вышло
A>Короче смотри. Вот модуль DataBase. У него есть некоторый интерфейс позволяющий получать список сообщений, идентификатор родительского и проч. и
A>проч.
A>Я могу модуль DataBaseAccess заменить на DataBaseMySQL и всё великолепно продолжит работать.

Такие модули в янусе есть и их отнюдь не 5-6.

A>>>Такое независимо на коленке не написать. И дело не в деньгах или времени, а в высокой степени организованности.

AVK>>Т.е. ты согласен с тем то в текущих условиях янус на С++ не написать?

A>Скорее да, чем нет. Но думаю тут дело не столько в GC, Сколько в метаинформации и вообще некотором скриптовом (неудачный термин, но не знаю как лучше описать) стиле программирования.


Нет там никакого особенного стиля программирования, не выдумывай.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[59]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 03.01.05 12:35
Оценка:
Здравствуйте, AndrewVK, Вы писали:

A>>Скорее да, чем нет. Но думаю тут дело не столько в GC, Сколько в метаинформации и вообще некотором скриптовом (неудачный термин, но не знаю как лучше описать) стиле программирования.


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


Погляди на русификацию и скажи это ещё раз.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[60]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 13:26
Оценка: +1
Здравствуйте, adontz, Вы писали:

A>Погляди на русификацию и скажи это ещё раз.


А что там не так?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[52]: Чем становится C++?
От: Трурль  
Дата: 03.01.05 13:35
Оценка:
Здравствуйте, adontz, Вы писали:

A>Думаю это больш связано с тем, что Janus И прочи альтрнативы мтоды доступа, включая NNTP могут использовать код сайта.

А я думаю основная проблема: http://www.rsdn.ru/Forum/?mid=96825
Автор: AndrewVK
Дата: 06.09.02
Re[55]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 13:43
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Его вобщем то переписать не сложно. Регексы и xslt для плюсов есть, а кроме них кода там немного. И вопрос по открытию исходников форматтера вобщем то тоже можно решить.


Это понятно. Просто понравилось предложение юзать его через КОМ.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[54]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 13:43
Оценка:
Здравствуйте, adontz, Вы писали:

A>И что показывает эта таблица?


Я думаю, у тебя достаточно мозгов на собственный анализ.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[56]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 13:43
Оценка:
Здравствуйте, adontz, Вы писали:

A>Беда в том, что хороший проект должен подразумевать модульность.


Модульность и Паша есть вещи не совместимые. Я бы ожидал монолитного дизайна.

A>Такое независимо на коленке не написать. И дело не в деньгах или времени, а в высокой степени организованности.


Ну, как видишь все живет и процвитает. Причем при жутчайших ограничениях во времени и вообще без денег.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[54]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 13:43
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Мне жаль, что ты это лично воспринял, я просто имел в виду, что C# панацеей не является, и в реальных относительно крупных проектах ресурсы отнимают более-менее одинаковые вещи, вне зависимости от языка.


Про панацею никто не гворит. Но неоспоримые и внушительные преимущества, как говорится на лицо.

А задело твоя реплика о подходах проектировани и Янусе. Тут бы в проу обсудить наличие реального опыта создания подобных открытых проекто и их успешность. А то лясы то многие горазды точить. А вот как дойдет до дла, так одни отмазки в виде умных слов.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[36]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 14:00
Оценка: +1
AndrewVK,

> ПК> Вроде бы должно быть очевидно, что "99.999% всех ошибок еще на стадии компиляции" отловить ни один компилятор не может.


> И для доказательства привел код, который никто не компилировал. Блестяще. 5 баллов.


Дык, компилируй-не комплируй, если "отписаться забыл", то компилятор этого не поймает. Я и свой код такой же могу привести, только его искать или выдумывать придется, а этот уже был открыт в соседнем окне Если бы его скомпилировали, то, полагая, что компилятор отловит 99.999% ошибок, получили бы чувство ложной уверенности.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[57]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 14:10
Оценка:
VladD2,

> A> Беда в том, что хороший проект должен подразумевать модульность.


> Модульность и Паша есть вещи не совместимые. Я бы ожидал монолитного дизайна.


Да уж... Главное в суждениях — информированность. Отсюда произрастает их верность. Например, данное суждение основывается на полном отсутствии информации по крайней мере об одном из объектов. Если у тебя ассоциация с C++ — обязательно монолитный дизайн, то твои нападки на этот язык неудивительны.

> A> Такое независимо на коленке не написать. И дело не в деньгах или времени, а в высокой степени организованности.


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


Если уж перенос Quake на .Net был аргументом в пользу легкости написания игр на последнем, то и Янус можно достаточно тривиально преобразовать в C++/CLI, было бы желание. Главное в последнем — никакого желания, насколько я понимаю, ни у кого нет.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[55]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 14:20
Оценка:
AndrewVK,

> я не меньше твоего разбираюсь в предмете


Я не утверждал обратного. Вопрос в фактическом приложении усилий.

> и не стоит рассказывать какие мы ламеры.


И этого я не говорил. Перечитай успокоившись, что я писал. Или ты хочешь сказать, что проектированию Януса на начальном этапе было уделено много времени? Только что ссылка
Автор: AndrewVK
Дата: 06.09.02
пробегала:

O> <...> не люблю подхода "давайте забацаем софтину, как-нибудь что-нибудь нафигачим".

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


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


Оно мне надо? Отвечаю: нет, не надо.

> <...> А ваш любимый аргумент про кривые руки здесь не прокатит — в тиме практически весь топ по плюсам.


Что значит "ваш"? Я ничего ни о чьих кривых руках не говорил.

> ПК> и в реальных относительно крупных проектах ресурсы отнимают более-менее одинаковые вещи, вне зависимости от языка.


> У тебя есть опыт написания крупных проектов на дотнете и джаве? У меня есть — сокращение времени разработки где то до 2 раз. Причем чем крупнее проект, тем заметнее эффект.


Верю. Вопрос, насколько этот вывод универсален. То есть, будет ли то же самое верно для всех команд, и для всех крупных проектов? Любая более-менее подробная статистика по этому поводу была бы очень интересной.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[55]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 14:28
Оценка: 18 (1)
VladD2,

> задело твоя реплика о подходах проектировани и Янусе.


Не о подходах, а о наличии. Когда Янус только-только начинался, мне он был интересен. Насколько я помню то время, "победил" подход: давайте уж начнем кодировать побыстрее. Наверное, это будет справедливым для большинства открытых проектов...

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


Если это очередная агитация написать новый Янус на C++/Asm/Whatever или присоединиться к существующему проекту, то спасибо, не надо. Мне NNTP хватает (тоже написанного на C#), за что спасибо всем, к этому делу приложившимся, в первую голову der Igel. Полагаю, у Януса есть не меньшее количество благодарных пользователей, но ведь мы-то совсем не об этом?

Если не нравятся отрицательные отзывы о Янусе, то не надо им постоянно тыкать в качестве примера "неоспоримых и внушительных преимуществ"
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[56]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 14:32
Оценка: 1 (1) +1
>> У тебя есть опыт написания крупных проектов на дотнете и джаве? У меня есть — сокращение времени разработки где то до 2 раз. Причем чем крупнее проект, тем заметнее эффект.

> Верю. Вопрос, насколько этот вывод универсален. То есть, будет ли то же самое верно для всех команд, и для всех крупных проектов? Любая более-менее подробная статистика по этому поводу была бы очень интересной.


P.S. В частности, есть подозрения, что сокращение времени разработки для большинства проектов объясняется наличием готовых легкодоступных больших библиотек. В свете этого интересно будет посмотреть на результаты с использованием C++/CLI, из которого доступны все те же библиотеки.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[52]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 03.01.05 15:21
Оценка: +1
Здравствуйте, VladD2, Вы писали:

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

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

С одной стороны — ОО тоже бывает разным... С другой — с чего ты решил, что "ОО" — это всегда однозначно хорошо?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[56]: Чем становится C++?
От: WFrag США  
Дата: 03.01.05 15:49
Оценка:
Здравствуйте, adontz, Вы писали:

A>Беда в том, что хороший проект должен подразумевать модульность. А это значит, что с наскоку такое не написать и вообще нужна будет некоторая организованность. Я уже сейчас, просто зная что делает Янус вижу разбиение на 5-6 зависимых модулей.

A>Такое независимо на коленке не написать. И дело не в деньгах или времени, а в высокой степени организованности.

Не озвучишь модули?
RSDN@Home 1.1.4 beta 3 r233, играет silent
Re[58]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 16:00
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Да уж... Главное в суждениях — информированность. Отсюда произрастает их верность. Например, данное суждение основывается на полном отсутствии информации по крайней мере об одном из объектов. Если у тебя ассоциация с C++ — обязательно монолитный дизайн, то твои нападки на этот язык неудивительны.


Извини, но ты тут не раз защищал монолитный дизайн. А что касается С++, то я на нем приемущественно КОМ-объекты писал, так что...

ПК>Если уж перенос Quake на .Net был аргументом в пользу легкости написания игр на последнем,


С чего бы это? Ребята проверили насколько быстро работает джит и интероп. Убедились, чно довольно шустро. Код в основном остался на С. Из удобства там был только радр на Шарпе. Так что о чем ты я не очень понял.

ПК> то и Янус можно достаточно тривиально преобразовать в C++/CLI, было бы желание.


Языком. Темболее, что С++ и C++/CLI (полностью работающих компиляторов которого к слову у меня лично нет) — это две большие разницы (с) Одесса.

ПК> Главное в последнем — никакого желания, насколько я понимаю, ни у кого нет.


Да ты чё. Ты пошукай на слова переписать (Янус|Janus|Home|Хоум) на. Очень забавно. Раз в 2-3 месяца приходит очередной смелый орел и, сначала, спрашивает почему Янус не написан на ХХХ, потом предлагает переписать его на этом самом ХХХ, ну, и под конец обещет чере ХХХ дней предоставить переписанный вариант.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Блин!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 03.01.05 16:08
Оценка: -1
Здравствуйте, VladD2, Вы писали:

ГВ>>"Более острая реакция" вовсе не означает (увы), что она влечёт за собой исправление ошибок.

VD>Ясно, месе мозахист.

Первый раз вижу, чтобы MS называли "месе"... Эх... век живи, век учись...
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[56]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 16:35
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Не о подходах, а о наличии.


Янус не лучший пример дизайна. Но слова об полном его отсутствии тоже оскорбительны. Начальный дизайн Януса был сделан АВК. Потом я перепроектировал подсистему работы с данными.

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

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


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

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

ПК>Если это очередная агитация написать новый Янус на C++/Asm/Whatever или присоединиться к существующему проекту, то спасибо, не надо.


Не льсти себе. Всем выше крыши хватает Януса и никто не врит в том, что кто-то возьмется и создат конукрентную реализацию темболее на C++/Asm.

Просто надоела аргументация в виде негативных ссылок на успешный и неплохо работающий проект.

ПК> Мне NNTP хватает (тоже написанного на C#), за что спасибо всем, к этому делу приложившимся, в первую голову der Igel.


Ага. Незабудь сказать спасибо МС и C#. Потому как оказалось проще снуля на C# все слабать, чем возиться с рефакторингом Десктопа.

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


Так о чем вы?

ПК>Если не нравятся отрицательные отзывы о Янусе, то не надо им постоянно тыкать в качестве примера "неоспоримых и внушительных преимуществ"


Да тыкаете им вы (ты и Васильев). И уж точно в негативной манере. При этом оба пользуетесь кодом написанным на Шарпе.

Уж действительно чем защищать С++ и находить фатальные недостатки в дотнете и Шарпе, лучше бы сделали что-то ползеное для сайта, ну, или по статейке бы написали. А то мы тут с тобой рассуждаем о проблемах метапрограммирования в С++/Лиспе/C# и т.п., а 80% народу даже не понимают о чем идет речь. Александреску далеко не все читали, и, уверен, что даже те кто читал не все все поняли. Вот и продемонстрировал бы класс, за одно сделав полезное для сайте.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[53]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 16:35
Оценка: +1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>С одной стороны — ОО тоже бывает разным... С другой — с чего ты решил, что "ОО" — это всегда однозначно хорошо?


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

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


А ты не подумал, над тем, что когда код вставляется в проект, то он несколько более тщательно проектируется?

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

Подписка же на события действительно является одним из довольно узких мест. Однако мешает она очень редко, так как:
1. Все же подмисывашся на события вручную обычно очень редко.
2. Во многих случаях время жизни объекта к которому подписывашся равно времени жизни подписчиков и контролировать ничего не нужно.
3. Уж С++ в таких ситуациях ничем не поможет. Точно так же можно складывать мусор в один большой массив и удивляться почему пухнет ворксет процесса.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[56]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 16:35
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Оно мне надо? Отвечаю: нет, не надо.


Скромный вопрос, а что тебе вообще надо? Точить лясы в форуме и удалять еритиков из С++?
Если уж ты член команды и стольк виликоскильный программист и виликий дизайнер, то не учи/укоряй тех кто что-то делает, а сделай что-то сам. Статеки или мелкой утилитки будет достаточно. Тогда сравних их с аналогами можно будет аргументированно рассуждать. А так твои слова выглядят как оскорбительные наезды на людей которые что-то делают.

ПК>Что значит "ваш"? Я ничего ни о чьих кривых руках не говорил.


И говорил и ствил кучу оценок в подобных утверждених.

ПК>Верю. Вопрос, насколько этот вывод универсален. То есть, будет ли то же самое верно для всех команд, и для всех крупных проектов?


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

Но там где речь идет о более-менее прикладном программировани дотнет всегда дает некоторые приемущества. Я еще не видел серьезных программистов имеющих опыт серьезного применения дотнета и утверждающих что никаких приемуществ от него нет. Обратных пруд пруди. Все же противники обычно изучают функциональность дотнета и Шарпа по спорам на форумах и максимум повозившись чуть-чуть в студии.

ПК>Любая более-менее подробная статистика по этому поводу была бы очень интересной.


Статистики по Яве навалом. Дотнет слишком молодой. Можно спрашивать тех кто его применяет. Тоже в общем-то статистика. Но куда проще взять и серьезно попробовать. Так сказать втянуться...
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: Чем становится C++?
От: Lepsik Гондурас https://www.kirdyk.club/
Дата: 03.01.05 16:38
Оценка: -1
Здравствуйте, Дарней, Вы писали:


Д>Как ты думаешь — сколько процентов памяти ты сэкономишь в типичном проекте таким образом?


в моем типичном проекте куб с измерением 10000.

к гадалке не ходе жава здесь отдыхает
Re[59]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 03.01.05 16:54
Оценка:
Здравствуйте, VladD2, Вы писали:

ПК>>Да уж... Главное в суждениях — информированность. Отсюда произрастает их верность. Например, данное суждение основывается на полном отсутствии информации по крайней мере об одном из объектов. Если у тебя ассоциация с C++ — обязательно монолитный дизайн, то твои нападки на этот язык неудивительны.

VD>Извини, но ты тут не раз защищал монолитный дизайн. А что касается С++, то я на нем приемущественно КОМ-объекты писал, так что...
Мда. Ну, не повезло тебе, похоже...

ПК>>Если уж перенос Quake на .Net был аргументом в пользу легкости написания игр на последнем,

VD>С чего бы это? Ребята проверили насколько быстро работает джит и интероп. Убедились, чно довольно шустро. Код в основном остался на С. Из удобства там был только радр на Шарпе. Так что о чем ты я не очень понял.
Ничего не понимаю! (c) Колобки. Так там только радар на Шарпе? А если так — то из-за чего сыр-бор подняли?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[57]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 03.01.05 16:54
Оценка: +1
Здравствуйте, VladD2, Вы писали:

ПК>>Если не нравятся отрицательные отзывы о Янусе, то не надо им постоянно тыкать в качестве примера "неоспоримых и внушительных преимуществ"

VD>Да тыкаете им вы (ты и Васильев). И уж точно в негативной манере. При этом оба пользуетесь кодом написанным на Шарпе.
Дык. Я бы и не тыкал, если бы не регулярные крики "а вот ты возьми Janus, да посмотри..." и т.п. Или ты думаешь, я не понимаю, что в любом софте есть свои проблемы?

VD>Уж действительно чем защищать С++ и находить фатальные недостатки в дотнете и Шарпе, лучше бы сделали что-то ползеное для сайта, ну, или по статейке бы написали. А то мы тут с тобой рассуждаем о проблемах метапрограммирования в С++/Лиспе/C# и т.п., а 80% народу даже не понимают о чем идет речь. Александреску далеко не все читали, и, уверен, что даже те кто читал не все все поняли. Вот и продемонстрировал бы класс, за одно сделав полезное для сайте.

Хм. Что-то в этом призыве есть, кстати.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[37]: Чем становится C++?
От: Lepsik Гондурас https://www.kirdyk.club/
Дата: 03.01.05 17:06
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Пашь, можно прочесть много разных статей, но С++ от этого другим не станет. Большинство языков поддерживает разные стили программирования. Многие из них делают это хорошо. С++ же даже ООП и то делает не лучшим образом. А уж какие нибудь ФП совсем поршиво. Уж извини я все же буду судить о вещах по своим ощущениям возникшим на базе своего опыта, а не на базе мечтаний создателей языка.


Извините, не могли бы вы перечислить софт, написанный на С#, чтобы им поможно было пользоваться, отказавшись от аналогичного, написанно на С++. А также соотношение софта на вашем компьютере, написанного на С++ и на С#.

Пониться как хвалили жаву, но десктопный софт написанный на ней оказывался настолько убогий, что она благополучно ушла в сторону сервлетов. Мне нравится с# но только как замена VB script.

Извините но С# за рамки маркетингового пука он еще не выщел.
Re[53]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 17:13
Оценка: +1
Здравствуйте, Трурль, Вы писали:

A>>Думаю это больш связано с тем, что Janus И прочи альтрнативы мтоды доступа, включая NNTP могут использовать код сайта.

Т>А я думаю основная проблема: http://www.rsdn.ru/Forum/?mid=96825
Автор: AndrewVK
Дата: 06.09.02


А где там проблема?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[56]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 17:13
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

>> и не стоит рассказывать какие мы ламеры.


ПК>И этого я не говорил. Перечитай успокоившись, что я писал.


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

ПК> Или ты хочешь сказать, что проектированию Януса на начальном этапе было уделено много времени?


Достаточно.

ПК> Только что ссылка
Автор: AndrewVK
Дата: 06.09.02
пробегала:

ПК>

O>> <...> не люблю подхода "давайте забацаем софтину, как-нибудь что-нибудь нафигачим".

ПК>Да нет, просто как только я пытаюсь что то нарисовать народ начинает возмущаться, кому нибудь обязательно не понравится. Вон пришлось конфигуратор полностью переписать.


Ты на дату внимание обращай. Сообщение относится ко времени когда януса как такового просто не было, был прототип, на 100% написанный мной и шло определение необходимого функционала. От того кода мало что осталось и совсем не потому что он был плохо спроектирован, просто требования менялись. Если взять конкретно конфигуратор — в начале в янусе было то ли 2, то ли 3 настройки, а сейчас их 112 штук. И результатом его перепроектирования после прототипа стала статья, судя по частоте ее упоминания до сих пор довольно актуальная (это к вопросу о качестве проектирования).

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


ПК>Оно мне надо? Отвечаю: нет, не надо.


Ну конечно. Никому ничего не надо. С++ные гуры просто так ничего не пишут. Пусть дурачки неумелые за них пашут. А NNTP, которым ты пользуешься, между прочим тоже написан на никуда не годном шарпе. И сам сайт тоже на дотнете.
Вобщем аргумент о превосходстве дотнета в рамках написания софта для этого сайта остается в силе . В то что всем, как один плюсовикам не нужно ничего писать я не верю, уж извини. Хотя бы потому что IT много чего сделал, а ведь он не хуже тебя знаком с инструментом, если не лучше. И почему то его мнению о кривости С# по сравнению с С++ и причинах использования дотнета я доверяю больше, чем твоему.

>> <...> А ваш любимый аргумент про кривые руки здесь не прокатит — в тиме практически весь топ по плюсам.


ПК>Что значит "ваш"? Я ничего ни о чьих кривых руках не говорил.


Лень искать. Пусть будет не твой, а ГВ.

>> У тебя есть опыт написания крупных проектов на дотнете и джаве? У меня есть — сокращение времени разработки где то до 2 раз. Причем чем крупнее проект, тем заметнее эффект.


ПК>Верю. Вопрос, насколько этот вывод универсален.


В пределах моей компетенции (сервера приложений, настольные приложения, web-странички) универсален.

ПК> То есть, будет ли то же самое верно для всех команд, и для всех крупных проектов?


Кхм. Намек на кривые руки?

ПК> Любая более-менее подробная статистика по этому поводу была бы очень интересной.


У меня ее нет. У меня есть только моя личная. А у тебя есть?

P.S. Косвенные данные — погляди количество новых релизов серверного софта за 04-05 года, выпускаемого МС и используемую платформу, и сравни с предыдущими годами.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[57]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 17:13
Оценка: +3
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>P.S. В частности, есть подозрения, что сокращение времени разработки для большинства проектов объясняется наличием готовых легкодоступных больших библиотек.


Вот интересно. А почему для С++ за столько лет готовых легкодоступных больших библиотек не создано? Я могу сказать почему — потому что в своей массе библиотеки потрясающе низкого качества и любой сбой в библиотеке с негарантрованным качеством чреват долгими поисками бага и нестабильностью всего приложения. Простой вопрос — можешь ли ты гарантировать работоспособность своего куска кода при использовании библиотеки неизвестного качества — все объясняет.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[56]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 17:13
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

>> задело твоя реплика о подходах проектировани и Янусе.


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


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

ПК> Наверное, это будет справедливым для большинства открытых проектов...


К сожалению нет. Свежий пример — аналогичный проект на GDN. Почитай соответствующий топик у них — занимательно.

ПК>Мне NNTP хватает (тоже написанного на C#), за что спасибо всем,


Так помог бы Славе. А то он и им в одиночки занимается, и сайт пишет.

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


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

ПК>Если не нравятся отрицательные отзывы о Янусе, то не надо им постоянно тыкать в качестве примера "неоспоримых и внушительных преимуществ"


Лично мне не нравится откровенное вранье с его использованием. В частности твои слова о том что основные проблемы с янусом вызваны его дизайном — вранье, это я тебе как краевед говорю. Обсуждать конкретные решения в янусе и их достоинства/недостатки всегда пожалуйста, а вот высасывать из пальца далеко идущие выводы не стоит.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[37]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 17:13
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

>> И для доказательства привел код, который никто не компилировал. Блестяще. 5 баллов.


ПК>Дык, компилируй-не комплируй, если "отписаться забыл", то компилятор этого не поймает.


Следует все таки делать отличие между кодом, который набросан от руки в форум и кодом рабочего проекта. И я уверен что ты прекрасно это понимаешь. Потому и говорю что грязно работаешь.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[10]: Блин!
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 17:18
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

VD>>Ясно, месе мозахист.


ГВ>Первый раз вижу, чтобы MS называли "месе"... Эх... век живи, век учись...


Месье еще и стрелочник.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[59]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 17:25
Оценка:
Здравствуйте, VladD2, Вы писали:

VD> Извини, но ты тут не раз защищал монолитный дизайн.


Ссылки, пожалуйста.

ПК>> Главное в последнем — никакого желания, насколько я понимаю, ни у кого нет.


VD>Да ты чё. Ты пошукай на слова переписать (Янус|Janus|Home|Хоум) на.


Хорошо. Уточню: у меня никакого желания нет. Относительно же переписывания... На C# его тоже хотели переписать, но так это и не сделали.
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[60]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 17:43
Оценка: 1 (1)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Относительно же переписывания... На C# его тоже хотели переписать, но так это и не сделали.


У тебя неверная информация. Большинство решений из Janus 2 благополучно в текущий янус перетекло.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[57]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 17:51
Оценка:
VladD2,

> Все это эволюционный путь развития. Для подобных проектов, по-моему, единственно возможный.


Возможно. Но от от этого его недостатки не исчезают. Еще раз: я не говорю, что Янус — плохо. Я просто обращаю внимание на то, что описанный подход не свободен от своих недостатков, не является панацеей, не является чем-то "более прогрессивным", что уже несколько раз звучало. И против чего, собственно, я и возражаю. Это просто другой подход, применимый в ограниченном количестве случаев. То же самое справедливо и для других процессов разработки.

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


> Так о чем вы?


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

> Уж действительно чем защищать С++ <...>


Тут, извини, есть один нюанс: учитывая количество marketing hype & bullshit сначала вокруг Java, а теперь вокруг C#, немного альтернативных суждений не повредит. Так у людей, знакомых только с одной точкой зрения, есть шанс познакомиться и с другой.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[23]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 17:58
Оценка:
Здравствуйте, VladD2, Вы писали:

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

Вай не надо! А как тормозит это чудо ты видел? Кстате, оно всё же у меня падало
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[21]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 17:58
Оценка:
Здравствуйте, VladD2, Вы писали:

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

Кстате, а на чём написан рантайм нета?

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

А если мало? Влад, я не понимаю, ты живешь в мире, где памяти немерено, где запущенна только твоя программа и у всех пни 4. Я помню ты да же предлагал в коробки с софтом вкладывать стики
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[19]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 17:58
Оценка:
Здравствуйте, VladD2, Вы писали:

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


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


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

Ага, а если сравнить количество C++ и C# софта? Ну ну
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[17]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 17:58
Оценка: :)
Здравствуйте, adontz, Вы писали:

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


VD>>Постоянно слушу от поклонников С++ фразу "Квалифицированный программист должен" или "это делают неофиты" ну и т.п. И не разу не слышал о том, что вот проблемы у нас в проекте. Все таки замечательно. Но как не глянешь в форум по плюсам, так там одни проблемы.


A>А то в .Net форумах рецепты эклеров обсуждают

эклеров? люблю эклеры

A>Прикольно

Взаимно. Пишу себе erp платформу (она так и называется, "платформа") на C++. Всё устраивает, как с точки зрения языка (скорость всё же выше, переносимость, вкусности всякие разные, хотя я там только "компонентную" систему иногда подправляю), так и с позиции архитектуры (вот с этим я по горло)...
Вроде как "конкуренты" SAP с ихнем R/3 и NetWeather (сорьки, если неправильно пишу, всгда произношу НетВиевер, НетБобёр, хотя точно не помню, на чём написан последний, может быть и на явке), Axapta, 1C в конце то концов, всё на C/C++ И вроде как переделывать они особо не рвуться (незнаю насчет Axapta, хотя там ребята грамотные из Нависион, вряд ли побегут делать, что им дядя Билл скажет)...

VD>>Так же забавно, что вокруг столько крутых С++-программистов, в разные MS, Quark, Adobe, Corel (далее следут список из сотен, а то и тысяч успешных IT-компаний) берут исключительно ламеров, потому как у всех и нуих продукты глючат так что плакать хочится. И по какой-то уж совсем не объяснимой причине все эти продукты написанны на С++.

Чаво чаво? Ну глючность продуктов от MS это уже притча, что же ты так их усердно используешь? Тот же Net. Adobe — ну смешно, единственное что валилось у меня, так это пиратский Illustrator 8. Больше ни ни. Corel — надо просто покупать легальный софт, а не крякнутый на коленке. Всё прекрастно работает.

VD>>Кто-нибудь может объяснить этот парадокс? Что вы откажетесь пойти на работу за 70 килобаксов в год в какой-нибудь Adobe? Или может быть Adobe вам не верит? А то я смотрю как валится In Design 3.0 и тихо фигею. А от того как Ворд вылетает уже и фигеть перестал.

A>Может у тебя с компьютером что-то? Как Ворд вылетает я уже очень давно не видел.
У меня так же. Два ворда: 2000 и xp. Еще visio 2003. Ничего себе не валиться, да и повалку я последний раз видел, когда макро вирус лет пять назад подцепил...
А In Design — ну это уже варезный софт постарался.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[20]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 17:58
Оценка:
Здравствуйте, VladD2, Вы писали:

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

Не забуть это им сказать, а то может, они не знают??
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re: Блин!
От: Shady Россия  
Дата: 03.01.05 17:58
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

[поскипаны толковые слова]
Подпишусь под каждым словом!
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[57]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 18:00
Оценка:
VladD2,

> ПК> Верю. Вопрос, насколько этот вывод универсален. То есть, будет ли то же самое верно для всех команд, и для всех крупных проектов?


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


Тпру. Речь не о managed vs. unmanaged, а о C# vs. С++.

> ПК> Любая более-менее подробная статистика по этому поводу была бы очень интересной.


> Статистики по Яве навалом.


Я ничего толкового так и не нашел.

> Но куда проще взять и серьезно попробовать. Так сказать втянуться...


На работе пробуют. "Ежики плакали, кололись, но продолжали жрать кактус".
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[57]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 18:17
Оценка:
AndrewVK,

> Я спокоен. И все что ты писал я прочел. И остаюсь при своем мнении — рассказывать о дизайне и трудозатратах при реализации януса тебе не стоит — хотя бы потому что ты ни разу не видел его код и не представляешь цели и приоритеты его развития.


Хорошо. Мне жаль, что несколько резковато получилось.

> Ну конечно. Никому ничего не надо. С++ные гуры просто так ничего не пишут. Пусть дурачки неумелые за них пашут.


Я с таким высказыванием не согласен.

> А NNTP, которым ты пользуешься, между прочим тоже написан на никуда не годном шарпе. И сам сайт тоже на дотнете.


Дык, "никуда не годным" шарп я и не называл никогда. По-моему, есть разница, сказать "никуда не годный", и "не подходит для моих задач". Авторам NNTP Server, РСДН и Янус — перманентный респект. Но это ж не означает, что у тех или иных продуктов, равно как языков и процессов разработки, ими используемых, нет тех или иных недостатков. Или должно означать?

Мне, например, заявления о легкости тотального рефакторинга на C# кажутся откровенной ерундой, учитывая те же проблемы смены БД или рендера HTML в Янусе, и трудности разработчиков сайта с рефакторингом. И я точно так же знаю, что точно такие же трудности являются главными проблемами в проектах на C++ или других языках.

> Вобщем аргумент о превосходстве дотнета в рамках написания софта для этого сайта остается в силе


Дык, я (хотел написать "никто", но за всех не поручусь) и не утверждал обратного.

> ПК> То есть, будет ли то же самое верно для всех команд, и для всех крупных проектов?


> Кхм. Намек на кривые руки?


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

> ПК> Любая более-менее подробная статистика по этому поводу была бы очень интересной.


> У меня ее нет. У меня есть только моя личная. А у тебя есть?


Вот и у меня нет. Поэтому я больше склонен к скепсису, чем к вере marketing hype & bullshit, коих уже было много относительно той же Java, и которые по всему, что я видел, вопреки заявлениям, (пока?) не оправдались.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[58]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 18:22
Оценка: +2
AndrewVK,

> ПК> P.S. В частности, есть подозрения, что сокращение времени разработки для большинства проектов объясняется наличием готовых легкодоступных больших библиотек.


> Вот интересно. А почему для С++ за столько лет готовых легкодоступных больших библиотек не создано? Я могу сказать почему — потому что в своей массе библиотеки потрясающе низкого качества и любой сбой в библиотеке с негарантрованным качеством чреват долгими поисками бага и нестабильностью всего приложения.


Проблемы не в "нестабильности" или отсутствии библиотек хорошего качества. Этого вполне много. Просто они не упакованы в такой готовый к употреблению набор, которым являются .Net или библиотека Java. Для их использования в своем проекте нужно приложить некоторые усилия. Это и подразумевалось под легкодоступностью.

> Простой вопрос — можешь ли ты гарантировать работоспособность своего куска кода при использовании библиотеки неизвестного качества — все объясняет.


Правильную работу приложения нельзя гарантировать и при использовании полностью "безопасных" библиотек. Примеры возможных пакостей с их стороны тривиальны.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[57]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 18:25
Оценка:
AndrewVK,

> ПК> Если не нравятся отрицательные отзывы о Янусе, то не надо им постоянно тыкать в качестве примера "неоспоримых и внушительных преимуществ"


> Лично мне не нравится откровенное вранье с его использованием. В частности твои слова о том что основные проблемы с янусом вызваны его дизайном — вранье, это я тебе как краевед говорю.


Значит, я был не прав в идентификации причин проблем. Тем не менее, почему-то, вопреки заявлениям, "влет" изменения (смена движка БД, смена рендера HTML) в него не вносятся.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[38]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 18:30
Оценка:
AndrewVK,

>>> И для доказательства привел код, который никто не компилировал. Блестяще. 5 баллов.


> ПК> Дык, компилируй-не комплируй, если "отписаться забыл", то компилятор этого не поймает.


> Следует все таки делать отличие между кодом, который набросан от руки в форум и кодом рабочего проекта. И я уверен что ты прекрасно это понимаешь. Потому и говорю что грязно работаешь.


Так... Есть утверждение:

Что касается "неряшливости"... Я, например, могу довольно часто ошибаться по мелочевке. При этом я без проблем пишу и ну С++, и на C#, так как их компиляторы, возможно, в купе с паттернами безопастного программирования позволяют ловить 99.999% всех ошибок еще на стадии компиляции. При этом я, обычно, сосредоточен на основной задаче и допускаю минимум логических ошибок. Таким образом, в каком-то смысле "неряшливость" очень даже лечится.

Есть конкретный контрпример, показывающий, по-моему очевидную вещь, что компилятор не ловит даже тривиальных ошибок, количество которых заметно больше 0.001%. Это все, что я хотел сказать по этому поводу.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[61]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 03.01.05 18:53
Оценка:
Здравствуйте, AndrewVK, Вы писали:

A>>Погляди на русификацию и скажи это ещё раз.

AVK>А что там не так?

Ну скажем так, на Си++ это выгляделобы весьма иначе.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[59]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 19:19
Оценка: 1 (1)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Проблемы не в "нестабильности" или отсутствии библиотек хорошего качества. Этого вполне много.

ПК>Просто они не упакованы в такой готовый к употреблению набор, которым являются .Net или библиотека Java.

Извини, но данный аргумент у меня вызывает только смех. Какое то совершенно мифическое преимущество. Опять же — а что мешает сделать такой набор на С++ если библиотеки есть? Ну ладно, в дотнете есть МС. А как же быть с Java? Что мешает сделать аналог JCP для С++? Всемирный заговор?

ПК> Для их использования в своем проекте нужно приложить некоторые усилия.


И что это за усилия?

>> Простой вопрос — можешь ли ты гарантировать работоспособность своего куска кода при использовании библиотеки неизвестного качества — все объясняет.


ПК>Правильную работу приложения нельзя гарантировать и при использовании полностью "безопасных" библиотек. Примеры возможных пакостей с их стороны тривиальны.


Ну так приведи пример, когда скажем библиотека компрессии рушит ядро сервера приложений.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[58]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 19:19
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

>> Ну конечно. Никому ничего не надо. С++ные гуры просто так ничего не пишут. Пусть дурачки неумелые за них пашут.


ПК>Я с таким высказыванием не согласен.


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

ПК>Дык, "никуда не годным" шарп я и не называл никогда. По-моему, есть разница, сказать "никуда не годный", и "не подходит для моих задач".


Т.е. речь в этом топике идет о твоих задачах?

ПК> Авторам NNTP Server, РСДН и Янус — перманентный респект. Но это ж не означает, что у тех или иных продуктов, равно как языков и процессов разработки, ими используемых, нет тех или иных недостатков.


Еще раз повторю — я не знаю с чего ты решил что дотнет кто то хочет выставить серебряной пулей. Серебряных пуль нет. Речь о том что на ряде задач C# явно предпочтительнее С++. Янус входит в их(задач) число.

ПК>Мне, например, заявления о легкости тотального рефакторинга на C# кажутся откровенной ерундой,


А зря. Ты бы попробовал, как я тебе предлагал. Вот тогда бы и обсудили основные проблемы. А так получается спор о вкусе устриц с тем кто их не ел.

ПК> учитывая те же проблемы смены БД


Паша, все таки ты забавный чувак. Тебе не смешно что ты мне рассказываешь какие проблемы в янусе? Проблема смены БД в отсутствии того кто напишет реструктуризатор, а не в дизайне януса. Дизайн януса вполне позволяет без особых напрягов сменить БД. Более того — HotDog в свое время переделал его на MSSQL.

ПК> или рендера HTML в Янусе,


Тут вобще не понял о чем ты. Об IE? А при чем тут дизайн януса?

ПК> и трудности разработчиков сайта с рефакторингом.


Я тебе уже назвал главную трудность. Можешь у Славы спросить, если мне не веришь.

ПК> И я точно так же знаю, что точно такие же трудности являются главными проблемами в проектах на C++ или других языках.


Возможно. А вот твое знание проблем в янусе никуда не годится. Отсюда и выводы твои, построенные на этом основании неверны.

>> Вобщем аргумент о превосходстве дотнета в рамках написания софта для этого сайта остается в силе


ПК>Дык, я (хотел написать "никто", но за всех не поручусь) и не утверждал обратного.


в реальных относительно крупных проектах ресурсы отнимают более-менее одинаковые вещи, вне зависимости от языка


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


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

>> ПК> Любая более-менее подробная статистика по этому поводу была бы очень интересной.


>> У меня ее нет. У меня есть только моя личная. А у тебя есть?


ПК>Вот и у меня нет.


Ну у меня по крайней мере есть личный опыт.

ПК> Поэтому я больше склонен к скепсису, чем к вере marketing hype & bullshit, коих уже было много относительно той же Java, и которые по всему, что я видел, вопреки заявлениям, (пока?) не оправдались.


Пробовал писать на джаве?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[58]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 19:19
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Тем не менее, почему-то, вопреки заявлениям, "влет" изменения (смена движка БД, смена рендера HTML) в него не вносятся.


Паша, умоляю тебя, ну не стоит рассуждать о том о чем ты не имеешь никакого представления. В данном случае ты кругом неправ.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[38]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 19:27
Оценка:
Здравствуйте, Lepsik, Вы писали:

L>Извините, не могли бы вы перечислить софт, написанный на С#, чтобы им поможно было пользоваться,


Янус — то из чего я сейчас пишу.
Генератор chm-ов сайта RSDN — генерирует контент для нашего CD.
R#
Автор(ы): Чистяков Влад (VladD2)
Дата: 28.01.2004

Arena Wars — 3D игрушка (RTS).
RegexpRep
Автор(ы): Владислав Чистяков
Дата: 26.10.2002
Аннотация: Статья рассчитана на тех, кто хочет изучить программирование в .Net и язык C#, или хотя бы понять, как можно использовать эту среду, чтобы решить стоит ли этим заниматься. Эта статья также будет полезна начинающим программистам, так как позволяет пройти весь цикл разработки программы. В качестве побочного эффекта вы получите полезную утилиту.
— утилита для массовых регэкс-замен в файлах.
Expresso
Конвертер из RSDN ML в Adoba InDesign — с ее помощью автаматизирована верстка статей для RSDN Magazine.
Печать отчетов для своей бухгалтерии.
Утилита рассылки е-мэйлов (оповещение подписчикам).
Reflector

Кроме того на машине стоит софт частично написанный с применением дотнета:
VS 2003
VS 2005
MS SQL Server 2005 (Юкон).
MSDN 2005
Драйверы от ATI Radion 9800 Pro (на дотнете раписана утилита настройки).

Из чисто анменеджед софта:
MS Office 2003
Windows XP (SP2) (гы-гы фрэймворк входит в дист со вторым сервиспаком).
TOTALCMD.EXE
Roxio Easy Media Creator Home
Referent 2
Araxis Merge 2001 Professional
Adobe Photoshop CS
Tortoise SVN
Разные архиватры и другая мелочевка

L> отказавшись от аналогичного, написанно на С++.


Аналогов в основном не существует. И вообще это уже демагогия. Отказываться от софта я буду исходя из его качества. На С тоже можно писать качественный софт. Вопрос в цене.

L> А также соотношение софта на вашем компьютере, написанного на С++ и на С#.


Это смотря как считать. Да и вообще тяжело это считать уже. Море софта переплелось с дотнетом так, что тяжело понять что в нем менеджед а что нет.

Да и причем тут это? Дотнету 2 года с мелким хвостиком. Плюсам 20 лет. И на сегодня нет никаких причит чтобы писать большинство софта на С++. Просто так сложилось.

L>Пониться как хвалили жаву,


Мне вот не помнится. Помню прессрелизы Сана. А чтобы хвалили программисты или пользователи... что-то не припомню.

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

L>но десктопный софт написанный на ней оказывался настолько убогий,


Чуш полная. Софт оказывается разным. И время бывает разное. То что было в 1997 конечно не блестало. А сейчас многие Явовские программы от плюсовых отличить нельзя. Скачай себе Экплипс и полюбуйся что можно на Яве. Среда к Borland C++ BuilderX тоже на яве написана. Правда как она с точки зрения убоггости сказать не могу, так как не видел ее.

L> что она благополучно ушла в сторону сервлетов. Мне нравится с# но только как замена VB script.


Блин, ну, как надоели эти эти понты. Пришел еще один С++-программист и вставил свое "весомое" слово. Трепанул — обосновывай. А еще лучши иди почитай то что уже наколбасили.

L>Извините но С# за рамки маркетингового пука он еще не выщел.


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

VD>> Извини, но ты тут не раз защищал монолитный дизайн.


ПК>Ссылки, пожалуйста.


Ну, например, вот этотой
Автор: Геннадий Васильев
Дата: 29.12.04
поэме о кривых руках и бравых безпроблемных плюсовиках ты оценил по достоинству. А уж фразы вроде языки рассчитанные на халтуру, так повсеместно сыплются.

ПК>Хорошо. Уточню: у меня никакого желания нет.


Тогда надесь мы больше не услышим заявлений о кривости дизайна данного продукта, так как мы умем только как умем, а ты и на это не способен. Хорошо?

ПК> Относительно же переписывания... На C# его тоже хотели переписать, но так это и не сделали.


Ты бы поглядел CVS и SVN прежде чем языком молоть. Я лично переписал подсистему работы с данными введя виртуальный контрол для представления дерева и созадв ОО-моедль данных с динамической подгрузкой. При это изменилось процентов 40 исходников и общий дизайн приложения.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[54]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 19:27
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:

Т>>А я думаю основная проблема: http://www.rsdn.ru/Forum/?mid=96825
Автор: AndrewVK
Дата: 06.09.02


AVK>А где там проблема?


А Паша любит так дать многозначительную ссылочку. Вроде как фигня, но со стороны выглядит, как нечто серьезное.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[39]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 19:44
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Да и причем тут это? Дотнету 2 года с мелким хвостиком. Плюсам 20 лет. И на сегодня нет никаких причит чтобы писать большинство софта на С++. Просто так сложилось.

Ну вот опять...

VD>Мне вот не помнится. Помню прессрелизы Сана. А чтобы хвалили программисты или пользователи... что-то не припомню.

Ты ж говорил, что не помнил в ветке Java vs C#

VD>И вообще, какой смысл повтоярять одни и те же мифы? В этом форуме добрая половина сообщений о них сделй поиск и читай. Я уже устал по 100-ому разу говорить о ничем неподкрепленных мифах.

А вот повторять мифа о С++ ты не устал...

VD>Среда к Borland C++ BuilderX тоже на яве написана. Правда как она с точки зрения убоггости сказать не могу, так как не видел ее.

Лучше бы ты это не упоминал, это пример как раз показывает, как убога Java...
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[60]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 20:02
Оценка: +1
AndrewVK,

> ПК> они не упакованы в такой готовый к употреблению набор, которым являются .Net или библиотека Java.


> Извини, но данный аргумент у меня вызывает только смех. Какое то совершенно мифическое преимущество. Опять же — а что мешает сделать такой набор на С++ если библиотеки есть?


Нет, просто отсутствие кого-нибудь, кто бы эту работу профинансировал, и снабдил все распространяемые компиляторы готовыми реализациями.

> Ну ладно, в дотнете есть МС. А как же быть с Java?


"В Java" есть Sun и IBM.

> Что мешает сделать аналог JCP для С++? Всемирный заговор?


Некоторое количество ready-to-use библиотек, вполне подъемное без внешнего финансирования, потихоньку образуется в виде boost.

> ПК> Для их использования в своем проекте нужно приложить некоторые усилия.


> И что это за усилия?


Зависит от конкретной библиотеки. Наличие в C#/Java объемных библиотек, поставляемых вместе со средством разработки, и уже настроенных на использование в нем, сильно меняет ситуацию для многих проектов.

> ПК> Правильную работу приложения нельзя гарантировать и при использовании полностью "безопасных" библиотек. Примеры возможных пакостей с их стороны тривиальны.


> Ну так приведи пример, когда скажем библиотека компрессии рушит ядро сервера приложений.


Это не единственный из сценариев, хотя и он вполне достижим несколько в другом проявлении. Например, если библиотека заблокирует цепочку вызова finalizers сборщика мусора или отожрет всю доступную память, или просто тривиально заполнит все пространство на диске мусором.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[61]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:15
Оценка: 2 (1)
Здравствуйте, AndrewVK, Вы писали:

AVK>У тебя неверная информация. Большинство решений из Janus 2 благополучно в текущий янус перетекло.


Кстати, хорошее доказательство того, что эфвалюционныое развитие в купе с рефакторингом и итеративностью на практике оказывается более живуче чем попытки спроектировать все залпом (с нуля).
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[58]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:15
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


ПК>Тпру. Речь не о managed vs. unmanaged, а о C# vs. С++.


Пашь, на дотнете плюсы выглядят как слон в посудной лавке. Они в дотнете только на интероп и годятся и то постоянно все матерятся и посят их выбросить.

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

ПК>Я ничего толкового так и не нашел.


И какие выводы сделал?

ПК>На работе пробуют. "Ежики плакали, кололись, но продолжали жрать кактус".


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

Интересно, а для чего ты на работе можешь применять дотнет? Ты же в Маковской конторе вроде теперь работаешь.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[59]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:15
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Проблемы не в "нестабильности" или отсутствии библиотек хорошего качества. Этого вполне много.


Да? Можно ссылки на хорошие библиотеки сравнимые с FCL или Явовскими? Да фиг бы с ними. А то вот мы пока на плюсах писали, так все время вот такого
Автор: Сергей
Дата: 02.01.05
мнения придерживались. Я вот мужика за пару секунд вычислил, по этому признаку.

ПК> Просто они не упакованы в такой готовый к употреблению набор, которым являются .Net или библиотека Java.


И что-же помешало? Вот в МС то идиоты?! Нет чтобы просто для плюсов библиотечку сбацать. А они, критины, создали дотнет с Шарпом и на них написали все эти библиотеки. Та же фигня и с Саном...

ПК> Для их использования в своем проекте нужно приложить некоторые усилия.


Некоторые? Да, блин, некоторые нужно приложить чтобы какой-нить Map из STL заюзать (я в первый раз часа два трахался). А для того чтобы взять нечто чужоае нужно огого как попатеть. Я могу назвать две библиотеки Буст и WTL с которыми я разобрался за пол часа.

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

ПК> Это и подразумевалось под легкодоступностью.


Гугль/даунлоад/адд-референс/Ф5. А еще лучше, чтобы просто в стандартную библиотеку входили, чтобы просто Ф5 и все.

ПК>Правильную работу приложения нельзя гарантировать и при использовании полностью "безопасных" библиотек. Примеры возможных пакостей с их стороны тривиальны.


Класс! Логика потрясающая! Так как в программе могут быть глюки, то глюки привносимые библиотеками уже нас не интересуют. Изумительно (с).
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:15
Оценка:
Здравствуйте, Shady, Вы писали:

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

S> Не забуть это им сказать, а то может, они не знают??

Они это и сказали. А незнают только те кому не нужно. Парк Маков просто ничтожен по сравнению с PC-юками. Вот и переориентировались. Теперь версии выходят или одновременно или PC-юковая первой.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[58]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:15
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>VladD2,


>> Все это эволюционный путь развития. Для подобных проектов, по-моему, единственно возможный.


ПК>Возможно. Но от от этого его недостатки не исчезают. Еще раз: я не говорю, что Янус — плохо. Я просто обращаю внимание на то, что описанный подход не свободен от своих недостатков,


Ты говоришь совсем не это. Ты с надменностью тыкаешь ссылочками и даешь понять, что вокрут тут ламеры собрались (не чита тебе).

ПК> не является панацеей,


Ссылки на слова о панацее.

ПК> не является чем-то "более прогрессивным",


Являются, являются. Доказательство очень просто. С тиким подходом есть дела, а с твоим только слова и что-то там на работе, что ты и показать то не можешь.

ПК> что уже несколько раз звучало.


Дык мы с АВК делимся опытом, а ты пыташся первернуть все так, будто это все фигня и ничего не дает. При этом ни одного доказанного аргумента. Только ссылки в пустоту.

ПК> И против чего, собственно, я и возражаю.

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

О, как? И мнения ты свого не менял, конечно? А ссылочка на мое сообщение и высказывание, что мол вот где нет проектирования — это ты в хорошем смысле. Да?

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


Ну, ты опровргни если сможшь. А то твои обратные утверждения уж совсем спорны, но ты их явно подтверждать не собирашся.

>> Уж действительно чем защищать С++ <...>


ПК>Тут, извини, есть один нюанс: учитывая количество marketing hype & bullshit сначала вокруг Java, а теперь вокруг C#, немного альтернативных суждений не повредит. Так у людей, знакомых только с одной точкой зрения, есть шанс познакомиться и с другой.


Ну, так познакомь, на практике. А то твой антимаркетингвоый булшыт вряд ли чем-то лучше. Сделай что-то на практике. А то ведь народ до таких глубин не ветки дочитыват ведь. А то поскипал реальное предложение и вроде как небыло ничего.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:15
Оценка:
Здравствуйте, Shady, Вы писали:

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

S>Вай не надо! А как тормозит это чудо ты видел? Кстате, оно всё же у меня падало

Невидел. Видел как тормозил и падал C++ Builder написанный на плюсах. И видел как очень прилично работает Эклипс.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:15
Оценка:
Здравствуйте, Shady, Вы писали:

S>Кстате, а на чём написан рантайм нета?


Самый низкоуровневый на С++. В моно проценов 90% на шарпе остальное на С. Хорошо бы чтобы этим все и ограничивлось.

S>А если мало?


Купи. Или бросай компьютеры если не в состоянии заработать 200 баксов.

S> Влад, я не понимаю, ты живешь в мире, где памяти немерено,


А ее и правда немерянно... у тех кто умеет считать свои деньги. Проще потратить лишних 100 баксов на память, чем тратить сотни тысяч или даже миллионы на разработку прикладного софта на С++.

Ты программист? У тебя зарплата какая?

S> где запущенна только твоя программа


Почему только моя? У меня штук на 20-30 памяти хватает.

S> и у всех пни 4.


Гы. На сегодня предпочитают AMD 64.

S> Я помню ты да же предлагал в коробки с софтом вкладывать стики


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

S>Ага, а если сравнить количество C++ и C# софта? Ну ну


А зачем? Может тогда и возраст сравнить? У плюсов 20 лет, а у Шарпа 2 года...
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[62]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 20:28
Оценка:
Здравствуйте, adontz, Вы писали:

A>>>Погляди на русификацию и скажи это ещё раз.

AVK>>А что там не так?

A>Ну скажем так, на Си++ это выгляделобы весьма иначе.


И все же — что там за подход такой загадочный? То что бардака и каши меньше чем в классическом VC++ном?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[25]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 20:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Невидел. Видел как тормозил и падал C++ Builder написанный на плюсах. И видел как очень прилично работает Эклипс.

Ну дык и упоминай только их, а не это убожество.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[25]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 20:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Невидел. Видел как тормозил и падал C++ Builder написанный на плюсах. И видел как очень прилично работает Эклипс.

Ну так упоминай только их, а не это убожетсво. Его можно приводить в пример только как антипример (во тофталогия)
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[23]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 20:45
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Самый низкоуровневый на С++. В моно проценов 90% на шарпе остальное на С. Хорошо бы чтобы этим все и ограничивлось.

Ну вот же, и зачем тогда C++ хаять, если под без C# C++ бы не ушел...

VD>Купи. Или бросай компьютеры если не в состоянии заработать 200 баксов.

Что мне покупать? У меня то 2 гига того самого. Ты моим клиентам это скажи, они тебя пошлют куда подальше.
Не знаю как твои заказчики, я делаю коробочный софт, и мне непозволительно говорить: а знаете, для нашей программмы надо гиг оперативки, 4 пень, и чтоб не одной посторонней запущенной программы (это я конечно утрирую, но всё же). Знаешь что ответят: да идите вы на х**, мы возьмём софт другой конторы, хоть он и фиговее, зато модернизировать не надо парк машин. У нас в стране очень странно принимают решения, исходят не из качества, а шоб подешевле, да побыстрее.

VD>А ее и правда немерянно... у тех кто умеет считать свои деньги. Проще потратить лишних 100 баксов на память, чем тратить сотни тысяч или даже миллионы на разработку прикладного софта на С++.

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

VD>Ты программист? У тебя зарплата какая?

Я, так сказать, программист/архитектор. Про зарплату — нескромный вопрос, могу ответить, что хватает и многое остаётся.

VD>Почему только моя? У меня штук на 20-30 памяти хватает.

Небуду спорить, я утрировал.

VD>Гы. На сегодня предпочитают AMD 64.

Аналогично.

VD>Ну, надо же с жадностью боросться?

А идея, надеюсь, подход незапетентован? Но с коробочным софтом облом — что сувать? DDR? PC66-100-133?
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[21]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 20:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А зачем? Может тогда и возраст сравнить? У плюсов 20 лет, а у Шарпа 2 года...

Ну а тогда о чём речь вообще? Практики на C# мало, база данных граблей пополняется, как можно сравнивать язык, на котором толком нет крупного софта (ну хорошо, всякие sharepoint идут лесом, я говорю о вордах, базах данных) и язык, где этого навалом. А вдруг на больших проектах из C# и полезут баги?
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[22]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 20:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Они это и сказали. А незнают только те кому не нужно. Парк Маков просто ничтожен по сравнению с PC-юками. Вот и переориентировались. Теперь версии выходят или одновременно или PC-юковая первой.

Мда, ты бывал в дизайнерских студиях, в полиграфии? Вот и я о том же....
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[59]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 20:46
Оценка: 53 (3) :)
AndrewVK,

> ПК>Дык, "никуда не годным" шарп я и не называл никогда. По-моему, есть разница, сказать "никуда не годный", и "не подходит для моих задач".


> Т.е. речь в этом топике идет о твоих задачах?


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

> Еще раз повторю — я не знаю с чего ты решил что дотнет кто то хочет выставить серебряной пулей. Серебряных пуль нет.


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

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


Пока что среды, запретившие пользоваться указателями, демонстрируют сплошные преимущества и никаких недостатков.


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


Уродцы наподобие открытого наследования без виртуального дестркутора не должны иметь права на существование.


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


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


J>По-моему, ты перечислил меморилики. Или я не так понял?

Точно! Никакого. Лики и глюки делают ламеры. А мы то круть яцоподбная! Уря товарищи!


стоимость доведения софта написанного на С++ до качественного состояния настолько велика, что даже монстры позволяют себе тратить такие суммы только на флагмансткие продукты вроде СУБД и OS


не охота вкладывать денег в тотальное обезбаживаение, так как при производстве софта на С/С++ процесс этот становится двольно дорогой


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


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


(C++) программисты прикрываясь разумными в общем-то словами о поддержке разных стилей забивают на дизайн и лепят горбатого объясняя это красивыми словами


И т.п. Дальше лень стало искать.

> Паша, все таки ты забавный чувак. Тебе не смешно что ты мне рассказываешь какие проблемы в янусе? Проблема смены БД в отсутствии того кто напишет реструктуризатор <...>


То же самое явлется типичными проблемами и в продуктах, написанных на C++ Я пока не вижу никакой особой разницы в этом отношении: изменениям мешают "завязки" на окружение. Что там, что там...

>>> Вобщем аргумент о превосходстве дотнета в рамках написания софта для этого сайта остается в силе


> ПК>Дык, я (хотел написать "никто", но за всех не поручусь) и не утверждал обратного.


>

в реальных относительно крупных проектах ресурсы отнимают более-менее одинаковые вещи, вне зависимости от языка


Ну и? Что-то я не вижу, как отсуда следует, что-нибудь типа утверждения об отсутствии "превосходства у дотнета" (равно как и любой подходящей платформы). Дотнет — платформа. C++ и C# — языки.

> ПК> Поэтому я больше склонен к скепсису, чем к вере marketing hype & bullshit, коих уже было много относительно той же Java, и которые по всему, что я видел, вопреки заявлениям, (пока?) не оправдались.


> Пробовал писать на джаве?


Пробовать-то я и на Java, и на C# пробовал (сколько-нибудь большого ничего не писал). "Не вставляет". Заявления относительно Java (пока?) не оправдались те, которые пророчили Java господство на десктопах в ближайшем будущем. Этого не произошло.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[59]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 20:47
Оценка: :)
AndrewVK,

> ПК>Тем не менее, почему-то, вопреки заявлениям, "влет" изменения (смена движка БД, смена рендера HTML) в него не вносятся.


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


Ок. Неправ, так неправ О Янусе — молчок
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[63]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 03.01.05 20:51
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

A>>Ну скажем так, на Си++ это выгляделобы весьма иначе.

AVK>И все же — что там за подход такой загадочный? То что бардака и каши меньше чем в классическом VC++ном?

Типа я бы ты строки из ресурсов грузил
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[58]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:52
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Дык, "никуда не годным" шарп я и не называл никогда.


Ой ли? Да ладно... говорить напрямую и не нужно. Достаточно принебрежительного отношения и сравнения с разными скриптовыми языками. Умные люди (те что сами не попробовали) все и так поймут.

Вообще, прогрес заметен даже с тобой Помнится начиналось все с совсем уж снобизма и нежелания поверить, что на дотнете можно писать "серьезный" софт. А теперь вроде уже отношение помягче. Даже в дотнетных форумах повяляшся. И даже иногда нам с АВК оценки савишь. Вот только за какую-нибудь чушь ВГ ставишь полную еденицу, а нам с АВК пока что только +1. Ну, да лиха беда начало. Будем надеяться, что когда ты вникнешь в дотнет поглубже, то прийдеш к тем же выводам что пришел я некоторое время назад. Тогда и предмет споров сам собой вымрет.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[61]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:52
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Нет, просто отсутствие кого-нибудь, кто бы эту работу профинансировал, и снабдил все распространяемые компиляторы готовыми реализациями.


Ну, ну, проанализируй... почему МС с радостью финансирует создание библиотеки для языка который никто и не знает то, да еще и немеренные деньги в его раскрутку вкладывает, а для С++ за 10 лет нихрена достойного не создал. МФЦ и АТЛ у меня на сегодня ничего крое слез не вызывают.

>> Ну ладно, в дотнете есть МС. А как же быть с Java?


ПК>"В Java" есть Sun и IBM.


А как насчет Sun С++ и IBM Visual Age for C++? Что они совсем критины такой виликий язык менять на яву где чтобы что-то возвратить через параетры нужно раком встать?

ПК>Некоторое количество ready-to-use библиотек, вполне подъемное без внешнего финансирования, потихоньку образуется в виде boost.


Блин. В бусте одни заплатки дыр языка. Что там есть чего нет доля дотнета?

ПК>Зависит от конкретной библиотеки. Наличие в C#/Java объемных библиотек, поставляемых вместе со средством разработки, и уже настроенных на использование в нем, сильно меняет ситуацию для многих проектов.


Да? А я то думл — это все из-за того, что в Яве и Шаре модули ввели. Подключаешь ссылку на библиотеку и все ОК. А оказывается это все дело в МС. Ну, тогда незабудь ответить на вопрос почему МС для С++ всего этого не создал.

ПК>Это не единственный из сценариев, хотя и он вполне достижим несколько в другом проявлении. Например, если библиотека заблокирует цепочку вызова finalizers сборщика мусора или отожрет всю доступную память, или просто тривиально заполнит все пространство на диске мусором.


О. Наслушался про финалайзеры. Паш, да блокировка очереди финалайзара будет видна еще при первом запуске под отладчиком. Я влично вообще не видел подобной проблемы. Она существует только в виде предупреждения у Рихтера и в примерах на этом сайте. А на плюсах можно за три секунды получить испорченную память и годями искать источник ошибки, а окажется что дело было в прицепленной библиотечке.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[40]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:52
Оценка:
Здравствуйте, Shady, Вы писали:

S>А вот повторять мифа о С++ ты не устал...


Блин, я фигею. У меня за плечами 10 лет опыта траха с С/С++. Так что я не про мифы рассказываю, а про реальную практику из реальных проектов.

S>Лучше бы ты это не упоминал, это пример как раз показывает, как убога Java...


Что-то не верится, что Борланд полную лажу прогнал. Ладно, доведется глянуть выскажу свое мнение.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[59]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:52
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ПК>>Тем не менее, почему-то, вопреки заявлениям, "влет" изменения (смена движка БД, смена рендера HTML) в него не вносятся.


AVK>Паша, умоляю тебя, ну не стоит рассуждать о том о чем ты не имеешь никакого представления. В данном случае ты кругом неправ.


Видимо проще объяснить, чем слушать все это снова и снова.

Смена рендера HTML успешно произведена как-только нашлось хоношее решение, и как только нашлось на это время.

Что касается с движком БД, то проблема уперается далеко не в сменую. Проблема в том, что из хороших решений есть только переходн а MSSQL, но он требует закачки довольно нехилого рантайма (около 70 метров для MSSQL 2000) и переписывания реструктуризатора БД (это такая хрень которая по описанию структуры БД автоматически конвертирует ее в нужный формат). В итоге выходит, что нужно реализовать два разных реструктуризатора (для Jet-а и для MSSQL) и поддерживать их в актуальном состоянии.

Это просто большой объем работы на которую нужно потратить много времени. Корень проблемы в том, что АПИ для модификации БД в Джете и MSSQL сильно несовпадают.

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

Так вот, возвращаясь к плюсам, проблема не в том, что при программировании на них появляются сходные проблемы. Проблема в том, что при этом появляются моря других более мелких проблем которые просто не дают дойти до решения более глобальных задач. Мы как бы боремся за качеством на уровене клеток вместо того чтобы работать на более высоком уровне.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[58]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 20:52
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Значит, я был не прав в идентификации причин проблем. Тем не менее, почему-то, вопреки заявлениям, "влет" изменения (смена движка БД, смена рендера HTML) в него не вносятся.


Влет вносятся мелкие изменения. Те что было бы невзможно вносить если бы продукт был плохо спроектирован или реализовывался бы на плюсах силами тех же программистов. Например, когда мне надоело вручную контролировать нужные мне форумы, я сел и за пару часов написал Фича: Приоритеты при сортировке форумов в дереве
Автор: VladD2
Дата: 17.10.04
.

А ты уцепился за изменения которые просто слишком объемны, чтобы за них браться в условиях когда продукт поддерживается по остаточному принципу.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[41]: Чем становится C++?
От: Shady Россия  
Дата: 03.01.05 20:55
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Блин, я фигею. У меня за плечами 10 лет опыта траха с С/С++. Так что я не про мифы рассказываю, а про реальную практику из реальных проектов.

Вот поработай с C# столько же, потом узнаем, знаешь, эйфория проходит однако...

VD>Что-то не верится, что Борланд полную лажу прогнал. Ладно, доведется глянуть выскажу свое мнение.

Скачай триал...
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[61]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 21:03
Оценка:
VladD2,

> VD>> Извини, но ты тут не раз защищал монолитный дизайн.


> ПК> Ссылки, пожалуйста.


> Ну, например, вот этотой
Автор: Геннадий Васильев
Дата: 29.12.04
поэме о кривых руках и бравых безпроблемных плюсовиках ты оценил по достоинству.


1) 1 == "Интересно"
2) Моя трактовка данного сообщения сильно отличается от твоей. Не вижу там никакой "поэмы о кривых руках бравых безпроблемных плюсовиках". Там, на мой взгляд, вполне разумные замечания относительно твоих лозунгов о "гарантированных барьер хотя бы против самых болезненных ошибок".
3) Какое отношение данное сообщение имеет к защите монолитного дизайна?! Или любое возражение тебе == защита монолитного дизайна?

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


Извини, но ты сам их произносишь, характеризуя этот язык. Я же отвечаю, что то, как ты его преподносишь ("спроектированный в расчете на халтуру"), для меня его интересным не делает.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[61]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 21:04
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

>> Извини, но данный аргумент у меня вызывает только смех. Какое то совершенно мифическое преимущество. Опять же — а что мешает сделать такой набор на С++ если библиотеки есть?


ПК>Нет, просто отсутствие кого-нибудь, кто бы эту работу профинансировал, и снабдил все распространяемые компиляторы готовыми реализациями.


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

>> Ну ладно, в дотнете есть МС. А как же быть с Java?


ПК>"В Java" есть Sun и IBM.


А для С++ ни одна крупная контора средств разработки не делает? Или опять всемирный заговор?

>> Что мешает сделать аналог JCP для С++? Всемирный заговор?


ПК>Некоторое количество ready-to-use библиотек, вполне подъемное без внешнего финансирования, потихоньку образуется в виде boost.


Что то уж больно потихоньку. В джаве например в каждый релиз включается довольно много новых библиотек, причем их создатели отнюдь не только Sun и IBM. А учитывая что релизы джавы куда как почаще новых версий стандарта С++ выходят boost плюсам в плане библиотек сильно не поможет.

>> И что это за усилия?


ПК>Зависит от конкретной библиотеки.




ПК> Наличие в C#/Java объемных библиотек, поставляемых вместе со средством разработки, и уже настроенных на использование в нем, сильно меняет ситуацию для многих проектов.


Здорово. Осталось понять что значит настроенных. Вот например в янусе используется ряд сторонних библиотек. Никто их для использования в янусе не настраивал. Я наверное чего то не знаю?

>> Ну так приведи пример, когда скажем библиотека компрессии рушит ядро сервера приложений.


ПК>Это не единственный из сценариев,


Не единственный, но это один из случаев из практики. Итак — в случае дотнета я уверен что ядро будет целым, даже если библиотека с багом. А в случае С++?

ПК>Например, если библиотека заблокирует цепочку вызова finalizers сборщика мусора или отожрет всю доступную память, или просто тривиально заполнит все пространство на диске мусором.


Уж больно надуманный сценарий.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[55]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 21:04
Оценка:
VladD2,

> Т>> А я думаю основная проблема: http://www.rsdn.ru/Forum/?mid=96825
Автор: AndrewVK
Дата: 06.09.02


> AVK> А где там проблема?


> А Паша любит так дать многозначительную ссылочку. Вроде как фигня, но со стороны выглядит, как нечто серьезное.


Смотри, кому отвечал Андрей.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[56]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 03.01.05 21:10
Оценка: +1 :))) :)
Здравствуйте, Павел Кузнецов, Вы писали:

>> Т>> А я думаю основная проблема: http://www.rsdn.ru/Forum/?mid=96825
Автор: AndrewVK
Дата: 06.09.02

>> AVK> А где там проблема?
>> А Паша любит так дать многозначительную ссылочку. Вроде как фигня, но со стороны выглядит, как нечто серьезное.
ПК>Смотри, кому отвечал Андрей.

Я ля гер ком а ля гер Пуля дура — штык молодец
Влад пуляет, Паша колет!
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[59]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 21:10
Оценка:
VladD2,

> Пашь, на дотнете плюсы выглядят как слон в посудной лавке.


По мне C++/CLI внешне, вроде, ничего. Правда, C# поначалу мне тоже таковым показался, так что не будем загадывать...

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


Сила аргументации потрясает.

> ПК> Я ничего толкового так и не нашел.


> И какие выводы сделал?


Что мне оно не надо.

> Кактусы начинают нравится после 30.


На этот счет в данном случае можешь быть спокойным.

> Интересно, а для чего ты на работе можешь применять дотнет? Ты же в Маковской конторе вроде теперь работаешь.


Ребята под Web пишут для Windows-серверов.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[60]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 21:20
Оценка: :)
VladD2,

> ПК> Проблемы не в "нестабильности" или отсутствии библиотек хорошего качества. Этого вполне много.


> Да? Можно ссылки на хорошие библиотеки сравнимые с FCL или Явовскими? Да фиг бы с ними.


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

> А то вот мы пока на плюсах писали, так все время вот такого
Автор: Сергей
Дата: 02.01.05
мнения придерживались. Я вот мужика за пару секунд вычислил, по этому признаку.


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

> ПК> Для их использования в своем проекте нужно приложить некоторые усилия.


> Некоторые? Да, блин, некоторые нужно приложить чтобы какой-нить Map из STL заюзать (я в первый раз часа два трахался)


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

> К тому же речь еще о недоверии к С++-ному коду. Его же обязательно писали "криворукие ламеры".


Не все страдают такими предрассудками.

> ПК> Правильную работу приложения нельзя гарантировать и при использовании полностью "безопасных" библиотек. Примеры возможных пакостей с их стороны тривиальны.


> Класс! Логика потрясающая! Так как в программе могут быть глюки, то глюки привносимые библиотеками уже нас не интересуют. Изумительно (с).


Неверное понимание логики. В библиотеке, в т.ч. и managed, могут быть глюки, отражающиеся на общей работоспособности программы.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[59]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 21:29
Оценка: -1
VladD2,

> ПК> Я просто обращаю внимание на то, что описанный подход не свободен от своих недостатков,


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


Нет.

> А ссылочка на мое сообщение и высказывание, что мол вот где нет проектирования — это ты в хорошем смысле. Да?


Твое сообщение, на которое я давал ссылку, для меня — яркий образец "бардака и отсутсвия дизайна", как ты это изволил назвать; по крайней мере, так как я понял процесс разработки, в нем описанный.

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


> Ну, ты опровргни если сможшь.


В основном, там опровергать нечего. Почти одна риторика. Там, где были технические аргументы, технические же возражения последовали.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[64]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 21:41
Оценка:
Здравствуйте, adontz, Вы писали:

AVK>>И все же — что там за подход такой загадочный? То что бардака и каши меньше чем в классическом VC++ном?


A>Типа я бы ты строки из ресурсов грузил


А в янусе они откуда грузятся?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[60]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 21:41
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

>> Т.е. речь в этом топике идет о твоих задачах?


ПК>Это пример. Между "никуда не годный" и "не подходит для некоторых задач",


Паша, это демагогия. Еще раз напомню что в этом топике не идет речь о твоих задачах, а то что дотнет круче в любых задачах никто не говорил.

ПК>Серебряных пуль может и не пророчат, но отрицать наличие значительного количества спорных утверждений, выдаваемых за истинные, не приходится (к другой стороне это тоже порой применимо). Плюс объявление ряда подходов, не вписывающихся в C#/Java, халтурой, "уличение" людей, делающих выбор в пользу C++, в догматизме, заявления о революции в процессе разразботки благодаря C# и т.п. Против некоторых конкретных подобных заявлений я и возражаю.


[Изречения Влада поскипаны]

Не надо их приводить. Я ведь не Влада защищаю, я не согласен с тобой.

>> Паша, все таки ты забавный чувак. Тебе не смешно что ты мне рассказываешь какие проблемы в янусе? Проблема смены БД в отсутствии того кто напишет реструктуризатор <...>


ПК>То же самое явлется типичными проблемами и в продуктах, написанных на C++ Я пока не вижу никакой особой разницы в этом отношении: изменениям мешают "завязки" на окружение. Что там, что там...


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

>>>> Вобщем аргумент о превосходстве дотнета в рамках написания софта для этого сайта остается в силе


>> ПК>Дык, я (хотел написать "никто", но за всех не поручусь) и не утверждал обратного.


>>

в реальных относительно крупных проектах ресурсы отнимают более-менее одинаковые вещи, вне зависимости от языка


ПК>Ну и?


А то что теперь объясни мне — почему весь софт для этого сайта пишется на дотнете. Разницы ведь в трудозатратах никакой, а С++сников у нас в команде явно больше.

ПК> Что-то я не вижу, как отсуда следует, что-нибудь типа утверждения об отсутствии "превосходства у дотнета" (равно как и любой подходящей платформы). Дотнет — платформа. C++ и C# — языки.


Это грубейшая ошибка — сравнивать C# без учета платформы. Надо понимать что C# создавался под платформу и вне ее смысла особого не имеет.

>> Пробовал писать на джаве?


ПК>Пробовать-то я и на Java, и на C# пробовал (сколько-нибудь большого ничего не писал). "Не вставляет". Заявления относительно Java (пока?) не оправдались те, которые пророчили Java господство на десктопах в ближайшем будущем. Этого не произошло.


Не знаю кто такое пророчил. Преимуществами джавы всегда были надежность и кроссплатформенность. Переводя на русский — это серверный софт. И там присутствие Java очень значительно (правда в России с этим не так все просто). А рассчитывать на то что кроссплатформенное средство будет доминировать в настольном софте мягко говоря опрометчиво.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[22]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 21:41
Оценка:
Здравствуйте, Shady, Вы писали:

S>на котором толком нет крупного софта (ну хорошо, всякие sharepoint идут лесом, я говорю о вордах, базах данных)


Базы данных и ворды теперешние это проекты с десятилетними историями. Переписывать сразу их никто не будет. А проектов в МС на дотнете уже более чем достаточно.

S> и язык, где этого навалом. А вдруг на больших проектах из C# и полезут баги?


Надеешься?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[59]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 21:42
Оценка:
VladD2,

> Вообще, прогрес заметен даже с тобой Помнится начиналось все с совсем уж снобизма и нежелания поверить, что на дотнете можно писать "серьезный" софт.


Ссылки давать будем, или опять "ой ли" обойдемся?

> за какую-нибудь чушь ВГ ставишь полную еденицу, а нам с АВК пока что только +1.


Не ревнуй В .Net полную единицу получил c-smile, первый давший исчерпывающий ответ.

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


Может быть. Если 1) под него будет нормальный с моей точки зрения язык (например, C++/CLI будет удобным в использовании), и 2) его можно будет практически использовать для настольных приложений не только под Windows.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[60]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 21:46
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

>> Пашь, на дотнете плюсы выглядят как слон в посудной лавке.


ПК>По мне C++/CLI внешне, вроде, ничего. Правда, C# поначалу мне тоже таковым показался, так что не будем загадывать...


Т.е. С# не тянет даже на "ничего"?

>> Интересно, а для чего ты на работе можешь применять дотнет? Ты же в Маковской конторе вроде теперь работаешь.


ПК>Ребята под Web пишут для Windows-серверов.


И C# для этого хуже С++ подходит? Нет слов.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[60]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 21:49
Оценка: 54 (1)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Не ревнуй В .Net полную единицу получил c-smile, первый давший исчерпывающий ответ.


Да ладно Паш, не первый раз ведь. Вспомни к примеру твой вопрос про кодировки.

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


ПК>Может быть. Если 1) под него будет нормальный с моей точки зрения язык (например, C++/CLI будет удобным в использовании),


А C# в использовании неудобен?

ПК>и 2) его можно будет практически использовать для настольных приложений не только под Windows.


Тогда и C# можно будет?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[65]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 03.01.05 21:56
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

A>>Типа я бы ты строки из ресурсов грузил

AVK>А в янусе они откуда грузятся?

А откуда в .Net ресурсы? Вон даже статья есть на тему как их сделдать когда их нет
http://www.rsdn.ru/article/dotnet/winres.xml
Автор(ы): Алифанов Андрей
Дата: 25.02.2003
Данная статья описывает утилиту для записи Win32-ресурсов в файлы формата PE. Утилита в первую очередь предназначена для использования в проектах на Visual C# и VB.NET, хотя и не только :-)
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[57]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 03.01.05 21:58
Оценка: 2 (1)
Здравствуйте, WFrag, Вы писали:

WF>Не озвучишь модули?


  1. хранение сообщений
    Модуль позволяет хранить сообщения, добавлять новые, искать сообщения по признакам (идентификатор сообщения, идентификатор нити, подстрока в теле).
    Варианты: MessageDB_MSSQL, MessageDB_MySQL, MessageDB_Access, MessageDB_XML
  2. хранение настроек самой программы
    Модуль предоставляет всем остальным модулям возможность централизованно хранить настройки, а также делать backup/restore всех настроек скопом.
    Варианты: Settings_XML, Settings_MSSQL, Settings_INI
  3. аутенфикация
    Модуль позволяет другим модулям узнавать права доступа текущего пользователя на те или иные сервисы.
    Вариант всего один.
  4. сетевой ввод-вывод
    Модуль позволяет получать и принимать данные с сервера РСДН. В принципе он не должен знать, что именно он получает и принимает
    Варианты: Наверное всего один — HTTP/XML, но наличие TCP/Binary будет только на пользу
  5. модуль обновления
    Модуль сверяет версии данных и скачивает новые или обновлённые. Зависит от предыдущего модуля.
    Вариант наверное всего один.
  6. некоторый интерфейс
    Модуль предоставляет пользовательский интерфейс для управления другими модулями. По уму его самого надо разбить на модули, вот они то дальше и идут (которые важные)
  7. форматирование сообщений
    Некоторый форматер из кодов RSDN в отображаемый формат.
    Варианты: Formatter_HTML, Formatter_RTF
  8. отображение сообщений
    Тесно связан с предыдущим модулем
    Варианты: MessageView_IE, MessageView_Mozilla, MessageView_RTF
  9. WYSIWYG редактор сообщений
    Тесно связан с предыдущими двумя модулями.
    Вариант наверное всего один, так как коды форматирования одни на всех.

Ну это так — что придумалось. я думаю если посидеть, то можно будет ещё несколько модулей напридумывать или заменить уже описанные другими.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[62]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 22:04
Оценка: 2 (2) +1 :)
VladD2,

> <... аргументация деньгами опущена как невалидная ...>


> Блин. В бусте одни заплатки дыр языка. Что там есть чего нет доля дотнета?


Насколько я знаю .Net (а знаю мало, соответственно, список можно проредить, если будут найдены аналоги):

assign, call_traits, compressed_pair, concept check, conversion, date_time (не путать с конкретными классами даты и времени, это концепции, которые могут быть использованы для построения своих классов), dynamic_bitset, enable_if, graph, integer, interval, in_place_factory, typed_in_place_factory, io state savers, iterators, math, minmax, mpl, multi_index, operators, optional, pool (не путать с GC, pool создан для увеличения степени контроля над памятью, а не для уменьшения), preprocessor, property map, python, random, range, rational, static_assert, spirit, string_algo, test, tribool, tuple, type_traits (не путать с reflection, это все работает в compile-time), uBLAS.

> блокировка очереди финалайзара будет видна еще при первом запуске под отладчиком. Я влично вообще не видел подобной проблемы.


Я тоже не страдаю от "диверсий" со стороны используемых мной библиотек, равно как и от других "грабель C++". Но мы ж явно обсуждаем потенциальные возможности, а не реальные проблемы...

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


Теоретически — можно. Но в жизни если и происходит, то ловится не годами, а за несколько часов (день или около того — максимум, что я видел). Бывает достаточно редко, чтобы не влиять на сроки разработки проекта. На практике время отнимают совершенно другие вещи: изменение окружения, изменение логики программы, изменение используемых библиотек и т.п.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[60]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 22:06
Оценка: +3
VladD2,

> Это просто большой объем работы на которую нужно потратить много времени. Корень проблемы в том, что АПИ для модификации БД в Джете и MSSQL сильно несовпадают.

>
> Думаю, невооруженным взглядом ясно, что ни дотнет, ни Шарп, ни проектирование тут непичем. Это впрос нехватики времени и большого объема работы.

Вот и я говорю, что в "плюсах" основное время идет именно на подобные проблемы, а не на "грабли", столь часто тобой здесь поминаемые.

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


Значит, наш с тобой опыт использования "плюсов" различается
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[66]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 22:11
Оценка:
Здравствуйте, adontz, Вы писали:

A>А откуда в .Net ресурсы?


Гы гы гы. Ну ты, Рома, блин, даешь.

A> Вон даже статья есть на тему как их сделдать когда их нет

A>http://www.rsdn.ru/article/dotnet/winres.xml
Автор(ы): Алифанов Андрей
Дата: 25.02.2003
Данная статья описывает утилиту для записи Win32-ресурсов в файлы формата PE. Утилита в первую очередь предназначена для использования в проектах на Visual C# и VB.NET, хотя и не только :-)


Ты статью то читал, на которую ссылку приводишь? Это Win32-ресурсы. А у нета есть еще и свои собственные. И все строки в янусе. как это не странно, хранятся именно в дотнетовских ресурсах.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[67]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 03.01.05 22:14
Оценка:
Здравствуйте, AndrewVK, Вы писали:

A>> Вон даже статья есть на тему как их сделдать когда их нет

A>>http://www.rsdn.ru/article/dotnet/winres.xml
Автор(ы): Алифанов Андрей
Дата: 25.02.2003
Данная статья описывает утилиту для записи Win32-ресурсов в файлы формата PE. Утилита в первую очередь предназначена для использования в проектах на Visual C# и VB.NET, хотя и не только :-)


AVK>Ты статью то читал, на которую ссылку приводишь?


Вообще-то да.

AVK>Это Win32-ресурсы. А у нета есть еще и свои собственные.


Понятно, но я имел ввиду именно первые.

AVK>И все строки в янусе. как это не странно, хранятся именно в дотнетовских ресурсах.


Насколько я читал форум Януса значени строк изначально всегда английские, а на русские менялись через reflection.
Если я чего-то не так понял — звиняйте.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[64]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 22:16
Оценка:
Здравствуйте, adontz, Вы писали:

A>Типа я бы ты строки из ресурсов грузил


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

ПК> Плюс объявление ряда подходов, не вписывающихся в C#/Java, халтурой,


Ненадо песен. Халтурой я называю именно халтуру, а не "другие подход". Халтура это закладывание на частности ради мифического выигрыша в скорости или памяти.

ПК> "уличение" людей, делающих выбор в пользу C++, в догматизме,


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

ПК> заявления о революции в процессе разразботки благодаря C# и т.п.


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

ПК> Против некоторых конкретных подобных заявлений я и возражаю.


[цитаты поскипаны]

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

ПК>Пробовать-то я и на Java, и на C# пробовал (сколько-нибудь большого ничего не писал).


А ты попробуй. И глядишь все догмы сами собой отпадут. Ты не заметил, что аналогичные твоим мысли и слова звучат только от тех кто мельком посмотрел на дотнет и Шарп и практически не слышны от тех кто написал более менее серьезный код (даже если до этого он был апологетом С++)?

ПК> "Не вставляет".


Где-то я это видел... Припоминаю... Видел я много людей научившихся писать двумя пальцами уткнувшись носом в клаву... попытавшись с часок научиться писать в слепую они говорили "Не вставляет...".

Потом помню народ серьезно подсевший на Дум2 патающийся перейти на Кваку тоже самое "Не вставляет...". Причем ежику понятно, что "Не вставляет" только потому, то человек погряз в своих привычках и догмах, и что вся проблема в том, что он просто плохо умеет переучиваться и принимать новые подходы.

ПК> Заявления относительно Java (пока?) не оправдались те, которые пророчили Java господство на десктопах в ближайшем будущем. Этого не произошло.


Да никто особо и не пророчил Яве господство на десктопе. Пророчили закат Виндвс и перход на клоны Юниксов. Вот это действительно неоправдалось.

Так вот, Пашь, поверь мы далеко не упертые фанаты невидящие ничего кроме того во что влюблены. Мы выбрали дотнет только из-за того, что это реально новое слово в программировании. Когда увидим нечто более мощьное и перспективное, то возьмем на вооружение это нечто.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[39]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 22:16
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Есть конкретный контрпример, показывающий, по-моему очевидную вещь, что компилятор не ловит даже тривиальных ошибок, количество которых заметно больше 0.001%. Это все, что я хотел сказать по этому поводу.


Блин, откуда статистика что "количество которых заметно больше 0.001%"? За все время использования дотнета (2.5 года) я лицезрел в реальном проекте пдобную ошибку только раз.

Как ты там говоришь... дайс ссылочку на статистику, плиз.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 22:16
Оценка:
Здравствуйте, Shady, Вы писали:

VD>>Невидел. Видел как тормозил и падал C++ Builder написанный на плюсах. И видел как очень прилично работает Эклипс.

S>Ну дык и упоминай только их, а не это убожество.

Я упоминаю о факте того, что Борланд выбрал Яву вместо плюсов. Это по-моему двольно показательно.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 22:16
Оценка: :))) :)
Здравствуйте, Shady, Вы писали:

S>Ну вот же, и зачем тогда C++ хаять, если под без C# C++ бы не ушел...


А С++ бы небыло без асм-а, а асм-а без машинных кодов. Если бы можно было обойтись без более низкоуровневых технологий, то обошлись бы. В дотнете, как ты понимаешь, есть проблема курицы и яйца. Вопрос в том, что если уже создана управляемая среда, то зачем корячиться на более низком уровне?

S>Что мне покупать? У меня то 2 гига того самого. Ты моим клиентам это скажи, они тебя пошлют куда подальше.


Они у тебя идиоты? Или нищие? Давай телефон я позвоню им объясню, что они могут получить более устойчивый продукт за меньший срок если выкинуть по 100 баксов на пользователя.

Да и не верю я что у платежеспособной конторы машины уровеня P 90 32 Мб.

S>Не знаю как твои заказчики, я делаю коробочный софт,


Ага. А МС делает коленочный софт. То-то они в Лонгхонр напихали дотнета выше крыши?

S>и мне непозволительно говорить: а знаете, для нашей программмы надо гиг оперативки, 4 пень,


Дык и не говори. Скажи реальные характиристики 128 + P3 450 и выше.

S> и чтоб не одной посторонней запущенной программы (это я конечно утрирую, но всё же).


Конечно утрируешь. Я два года назад сидел на P800 и 128 Мб памяти и как-то умудрялся запускать несколько программ. Сейчас сижу на гиге и AMD 3500+.

S> Знаешь что ответят: да идите вы на х**, мы возьмём софт другой конторы, хоть он и фиговее, зато модернизировать не надо парк машин.


Что-то не верю, что возьмут более фигоый и еще не готовый. Ты хоть в какой области код пишешь?

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


Да? То-то у нас продажи топовых процессоров и видиокарт перекрывают показатели по Европе.

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

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


Ох уж эти сказки, ох уж эти сказочники. Что же за супер коробочный софт вы делаете?

VD>>Ты программист? У тебя зарплата какая?

S>Я, так сказать, программист/архитектор. Про зарплату — нескромный вопрос, могу ответить, что хватает и многое остаётся.

Я к тому, что твоя неделя куда дороже 100 баксов обохдится. Если софт коробочный тут еще о чем-то поговорить можно, а если нет, то 512 мег памяти куда дешевле труда прграммиста.

S>А идея, надеюсь, подход незапетентован?


Пока нет.

S> Но с коробочным софтом облом — что сувать? DDR? PC66-100-133?


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

S>Ну а тогда о чём речь вообще?


А ты еще не понял?

S> Практики на C# мало,


Достаточно практики. Более чем.

S> база данных граблей пополняется,


Да нет их практически. Гипотетически есть, но практически замеченных в наступании на оные никого незамечено.

S> как можно сравнивать язык, на котором толком нет крупного софта


1. Софт есть и немальенький.
2. Для сравнения языков достаточно личного опыта. "Крупный" софт тут непричем.

S> (ну хорошо, всякие sharepoint идут лесом,


А чё так?

S> я говорю о вордах, базах данных) и язык, где этого навалом. А вдруг на больших проектах из C# и полезут баги?


Баги есть баги. Они будут всегда. Вопрос в том, насколько просто их ловить и насколько фатальные последсвия от них. И вот тут любой кто серьезно пользовался дотнетом сомневаться не будет. По этим параметрам плюсы отдыхают конкретно, потому как типобезопастность и антиграбельное проектирование видно невооруженным взглядом.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 22:16
Оценка:
Здравствуйте, Shady, Вы писали:

S>Мда, ты бывал в дизайнерских студиях, в полиграфии? Вот и я о том же....


Ты бы хоть в профайл глянул.

И скажу тебе по сикрету, что дизайнерских студий кот наплакал. На них бабки не сделашь. Основные инсталяции Фотошопа — это обычне контроы. Почти везеде нужно кратинку пдрихтовать или буклетик сверстать.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 22:16
Оценка:
Здравствуйте, Shady, Вы писали:

S>Взаимно. Пишу себе erp платформу (она так и называется, "платформа") на C++.


О! Эта задача только на плюсах решается. ЕРП она же только скорость и требует. А бабок у клиентов только тотолько на САП за пару миллионов баксов хватет. А на память уже и не остается.

S>Вроде как "конкуренты" SAP с ихнем R/3 и NetWeather, Axapta, 1C в конце то концов, всё на C/C++


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

SAP написан на доморощенном языке, так называемого четвертого поколения. Бап (если не ошибаюсь) называется. Насколько я слышал довольно тормозная вещь.

Непомню уж Axapta или Навижен, но точно написана на Паскале-подобном (опять же доморощенном) языке.

Вот 1ЭС он точно на С++. Причем тормозит... по черному.

S> И вроде как переделывать они особо не рвуться (незнаю насчет Axapta, хотя там ребята грамотные из Нависион, вряд ли побегут делать, что им дядя Билл скажет)...


Если не идиоты, то не побигут, а попрыгают.

S>Чаво чаво?


Того, того.

S> Ну глючность продуктов от MS это уже притча,


Ага. Например, MSSQL.

S> что же ты так их усердно используешь?


Дык остальные тоже падают и глючат по черному. При этом еще и функциональность меньшую имеют.

S> Тот же Net.


А он славо богу глючит очень редко.

S> Adobe — ну смешно, единственное что валилось у меня, так это пиратский Illustrator 8.


Илюстратор — это вообще песня. Но и другие продукты глючат по страшному. Только Фотошом более менее плилично работает.

S> Больше ни ни. Corel — надо просто покупать легальный софт, а не крякнутый на коленке. Всё прекрастно работает.


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

S>У меня так же. Два ворда: 2000 и xp. Еще visio 2003. Ничего себе не валиться, да и повалку я последний раз видел, когда макро вирус лет пять назад подцепил...


Ды не пользуешся, вот и не вылетает. Включи режим ревизий и как следует поредактируй текст. Потом (если еще не вылетел) подобавляй и поредактируй коментарии. Кстати, тоже еще то занятие.

S>А In Design — ну это уже варезный софт постарался.


А, ну, во всем виноваты пираты. Даже если софт поставлен с сидюка производителя.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[61]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 22:27
Оценка:
AndrewVK,

> [Изречения Влада поскипаны]

>
> Не надо их приводить. Я ведь не Влада защищаю, я не согласен с тобой.

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

По поводу несогласия. С чем конкретно? По поводу дизайна Януса — согласен, зря я вообще об этом начал говорить, т.к. даже о проблемах знаю только понаслышке. Хотя как они описываются, звучит примерно так же, как и проблемы, возникающие в проектах на C++. По поводу реальных проблем в C++, о чем, собственно, и шла речь изначально, пока что конкретных возражений не последовало. Следуют регулярные поминания грабель, когда реальные проблемы совершенно в других вещах.

>>>

в реальных относительно крупных проектах ресурсы отнимают более-менее одинаковые вещи, вне зависимости от языка


> ПК> Ну и?


> А то что теперь объясни мне — почему весь софт для этого сайта пишется на дотнете. Разницы ведь в трудозатратах никакой, а С++сников у нас в команде явно больше.


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

> ПК> Что-то я не вижу, как отсуда следует, что-нибудь типа утверждения об отсутствии "превосходства у дотнета" (равно как и любой подходящей платформы). Дотнет — платформа. C++ и C# — языки.


> Это грубейшая ошибка — сравнивать C# без учета платформы. Надо понимать что C# создавался под платформу и вне ее смысла особого не имеет.


Тогда и в качестве альтернативы нужно брать язык, работающий на той же платформе. Иначе будет "грубейшая ошибка" в другую сторону
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[61]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 22:36
Оценка:
AndrewVK,

>>> Пашь, на дотнете плюсы выглядят как слон в посудной лавке.


> ПК> По мне C++/CLI внешне, вроде, ничего. Правда, C# поначалу мне тоже таковым показался, так что не будем загадывать...


> Т.е. С# не тянет даже на "ничего"?


Перечитал процитированное. Может, я неверно понял вопрос? Очевидно, что интеграция C# с дотнетом, как минимум не хуже, чем у C++/CLI (подозреваю, что, наверное, лучше, но я об этом судить не возьмусь). Мне сам язык не нравится. C++/CLI нравится больше тем, что не выбрасывает "плюсовые" возможности. Если бы был более безопасный, чем "плюсы", язык, действительно, являющийся наследником последних (то есть сохраняющий принятые в нем подходы к дизайну и кодированию), переключился бы не раздумывая.

> ПК> Ребята под Web пишут для Windows-серверов.


> И C# для этого хуже С++ подходит? Нет слов.


Для Web? Очевидно, что лучше. Иначе писали бы на C++. Но сам по себе язык восхищения не вызывает.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[68]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 22:43
Оценка:
Здравствуйте, adontz, Вы писали:

A>Вообще-то да.


AVK>>Это Win32-ресурсы. А у нета есть еще и свои собственные.


A>Понятно, но я имел ввиду именно первые.


А что не так в нетовских ресурсах? Просто другой формат и все. Ты ж заявил что янус не в ресурсах строки хранит.

AVK>>И все строки в янусе. как это не странно, хранятся именно в дотнетовских ресурсах.


A>Насколько я читал форум Януса значени строк изначально всегда английские, а на русские менялись через reflection.


Там статейка есть, про локализацию. Ознакомься, она небольшая.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[62]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 22:43
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

>> А то что теперь объясни мне — почему весь софт для этого сайта пишется на дотнете. Разницы ведь в трудозатратах никакой, а С++сников у нас в команде явно больше.


ПК>Потому что были готовые библиотеки,


Какие?

ПК> средства разработки, ориентированные на разработку именно таких проектов,


Для С++ таких средств нет? Почему?

ПК> окружение и т.п.


Какое окружение? Паш, ты уж извини, но все это вода на киселе, а не причины. Причина же одна — меньшая стоимость разработки. Простой такой факт, который на кривой кобыле не объедешь.

>> Это грубейшая ошибка — сравнивать C# без учета платформы. Надо понимать что C# создавался под платформу и вне ее смысла особого не имеет.


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


Кому нужно? Мне не нужно.

ПК> Иначе будет "грубейшая ошибка" в другую сторону


У С++ есть платформа? Отлично, давай сравнивать вместе с ней. Только вот речь то здесь по большей части о платформе,а не о языке.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[61]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 22:49
Оценка: :)
AndrewVK,

> ПК> Не ревнуй В .Net полную единицу получил c-smile, первый давший исчерпывающий ответ.


> Да ладно Паш, не первый раз ведь. Вспомни к примеру твой вопрос про кодировки.


А что там я кому-то больше поставил?.. Лень искать, честно говоря. Ну, хочешь — поставлю тебе "3", мне не жалко. Я оценкам особого смысла не придаю. Ставлю без особой системы, как рука ляжет. Кста, недавно поймал себя на проставлении оценки IT за "разгром" C++
Автор: IT
Дата: 13.01.04
. Красиво, интересно написал

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


> ПК> Может быть. Если 1) под него будет нормальный с моей точки зрения язык (например, C++/CLI будет удобным в использовании),


> А C# в использовании неудобен?


Мне — нет. Удобнее, чем, скажем, Java, но менее удобен, чем некоторые другие языки. Впрочем, ессно, зависит от задач. Скажем, для Web, наверное, на C# писал бы. Не знаю, не привелось. Для тех приложений, к которым я имею отношение, мне удобнее C++.

> ПК> и 2) его можно будет практически использовать для настольных приложений не только под Windows.


> Тогда и C# можно будет?


Не уверен. Сам язык как-то не вдохновляет. Насколько я вижу, в нем мало средств для повторного использования кода на низком уровне (функции, классы-примеси, шаблоны, возможности для создания своих типов, эквивалентных встроенным, и т.п.), больше ориентация на использование целых компонентов.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[40]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 23:01
Оценка:
VladD2,

> ПК> Есть конкретный контрпример, показывающий, по-моему очевидную вещь, что компилятор не ловит даже тривиальных ошибок, количество которых заметно больше 0.001%. Это все, что я хотел сказать по этому поводу.


> Блин, откуда статистика что "количество которых заметно больше 0.001%"? За все время использования дотнета (2.5 года) я лицезрел в реальном проекте пдобную ошибку только раз.


Какую "такую"? Это был пример. Речь шла о наличии множества тривиальных ошибок, которые не ловятся компилятором. Какое количество из ошибок, обнаруженных в любом релизе Януса, было найдено компилятором? Ессно, ответ 0%, т.к. иначе релиза бы не было. Удаление объекта через базу без виртуального деструктора я тоже помню только один раз. Было это уже несколько лет назад, еще на прошлой работе.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[61]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 23:05
Оценка:
VladD2,

> ПК> Плюс объявление ряда подходов, не вписывающихся в C#/Java, халтурой,


> Ненадо песен. Халтурой я называю именно халтуру, а не "другие подход". Халтура это закладывание на частности ради мифического выигрыша в скорости или памяти.


http://rsdn.ru/Forum/Message.aspx?mid=961589&amp;only=1
Автор: Sergey
Дата: 23.12.04
— Что именно здесь халтура? Да, это не классическое ООП, т.к. нарушается LSP, но в чем халтура-то?

> [цитаты поскипаны]

>
> Ну, и хоть одно утверждение, положа руку на сердце можешь с уверенностью опровергнуть?

Да.

> ПК> Пробовать-то я и на Java, и на C# пробовал (сколько-нибудь большого ничего не писал).


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


Чтобы не повторяться, причины вкратце внизу сообщения: http://www.rsdn.ru/forum/?mid=974044
Автор: Павел Кузнецов
Дата: 04.01.05


> Так вот, Пашь, поверь мы далеко не упертые фанаты невидящие ничего кроме того во что влюблены.


Верю. Просто тебе в программировании, вероятно, важны несколько иные вещи, чем мне. Все дела

> Мы выбрали дотнет только из-за того, что это реально новое слово в программировании.


А говоришь, давай ссылки на сообщения о революциях
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[63]: Чем становится C++?
От: Павел Кузнецов  
Дата: 03.01.05 23:11
Оценка:
AndrewVK,

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


ОК. Тогда мы о разных вещах говорим.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[62]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 23:32
Оценка: +1 :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК> А что там я кому-то больше поставил?..


Нет, поскольку никто больше не ответил. Но вопрос то был аналогичный, притом посложнее. Поскольку на вопрос о сроках тебе бы ответил практически лубой начинающий программер.

ПК> Лень искать, честно говоря. Ну, хочешь — поставлю тебе "3", мне не жалко.


Да нет, мне это без надобности. Просто забавное наблюдение.

ПК> Я оценкам особого смысла не придаю. Ставлю без особой системы, как рука ляжет. Кста, недавно поймал себя на проставлении оценки IT за "разгром" C++
Автор: IT
Дата: 13.01.04
.


Недавно? Сообщению уже год.

ПК> Красиво, интересно написал


Влад то вобщем то же самое пишет, только он не такой классный демагог (в хорошем смысле этого слова).

>> А C# в использовании неудобен?


ПК>Мне — нет. Удобнее, чем, скажем, Java, но менее удобен, чем некоторые другие языки. Впрочем, ессно, зависит от задач.


В такой формулировке вопросов не имею. Просто потому что не знаком с твоими задачами. Если же хочешь поговорить о моих задачах — you are welcome.

>> Тогда и C# можно будет?


ПК>Не уверен. Сам язык как-то не вдохновляет.


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

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


Достаточно. Просто многие вещи делаются в рантайме. А насчет эквивалентным встроенным я не понял.

P.S. Паш, я на полном серьезе — помог бы в плане разработки, заодно и .NET получше узнаешь.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[41]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.01.05 23:32
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Какую "такую"? Это был пример. Речь шла о наличии множества тривиальных ошибок, которые не ловятся компилятором. Какое количество из ошибок, обнаруженных в любом релизе Януса, было найдено компилятором? Ессно, ответ 0%, т.к. иначе релиза бы не было.


Осталось узнать сколько было ошибок до компиляции

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


А сколько в твоей команде было человек, работающих над тем же кодом?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[42]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 23:53
Оценка:
Здравствуйте, Shady, Вы писали:

VD>>Блин, я фигею. У меня за плечами 10 лет опыта траха с С/С++. Так что я не про мифы рассказываю, а про реальную практику из реальных проектов.

S>Вот поработай с C# столько же, потом узнаем, знаешь, эйфория проходит однако...

Да уж 2.5 года работаю. Мне более чем достаточно чтобы взвешено оценить. А эйфории и небыло.

S>Скачай триал...


Ссылка прямая есть?
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[61]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 23:53
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Вот и я говорю, что в "плюсах" основное время идет именно на подобные проблемы, а не на "грабли", столь часто тобой здесь поминаемые.


А я говорю, что и на то, и на то. Причем грабли, веренее увертывание от них, попросту отнимает время от решения основных задач.

ПК>Значит, наш с тобой опыт использования "плюсов" различается


Значит различается.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[56]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 23:53
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Смотри, кому отвечал Андрей.


Сори, обознался. Больно похожая манера давать ссылки на черти знает что.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[60]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 23:53
Оценка: 54 (1)
Здравствуйте, Павел Кузнецов, Вы писали:

>> Вообще, прогрес заметен даже с тобой Помнится начиналось все с совсем уж снобизма и нежелания поверить, что на дотнете можно писать "серьезный" софт.


ПК>Ссылки давать будем, или опять "ой ли" обойдемся?


Да тут на каждое сообщение можно ссылки давать. Например:
Re[41]: Опять С++ vs С#
Автор: Павел Кузнецов
Дата: 11.11.04

Re[42]: Опять С++ vs С#
Автор: Павел Кузнецов
Дата: 08.12.04

Re[55]: Чем становится C++?
Автор: Павел Кузнецов
Дата: 03.01.05


>> за какую-нибудь чушь ВГ ставишь полную еденицу, а нам с АВК пока что только +1.


ПК>Не ревнуй


Да ты вроде не девушка. Просто забавна тактика.

ПК> В .Net полную единицу получил c-smile, первый давший исчерпывающий ответ.


Да, да. Как шас помню в восемнадцатом году. Ну, да фигня это просто показательно в общей конве. Вроде как пыташся выглядеть беспрестрастно, но реально как то невыходит. Это как у Жванецкого...

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


ПК>Может быть. Если 1) под него будет нормальный с моей точки зрения язык (например, C++/CLI будет удобным в использовании),


И это пройдет если не упрешся специально.

ПК> и 2) его можно будет практически использовать для настольных приложений не только под Windows.


Вот с этим сложнее. На плюсах тоже как-то хреновенько выходят кросплатфрмные ГУИ. Все наровят свою либку-обертку сделать, а выходит как всегда средняя температура по больнице. Хотя тоже со временем появится. Был бы спрос. Логичнее всего было бы наверно Авалон кросплатформны сделать. Он ведь только на примитивы завязан. Хотя копирайты могут испортить малину.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[66]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 23:53
Оценка:
Здравствуйте, adontz, Вы писали:

A>А откуда в .Net ресурсы? Вон даже статья есть на тему как их сделдать когда их нет

A>http://www.rsdn.ru/article/dotnet/winres.xml
Автор(ы): Алифанов Андрей
Дата: 25.02.2003
Данная статья описывает утилиту для записи Win32-ресурсов в файлы формата PE. Утилита в первую очередь предназначена для использования в проектах на Visual C# и VB.NET, хотя и не только :-)


Ты бы хоть обратил внимание на приставку "win" в названии файла. Ну, и прочел бы http://gzip.rsdn.ru/article/dotnet/resources.xml
Автор(ы): Павел Румянцев, Владислав Чистяков
Дата: 17.01.2004
В статье рассматриваются способы создания управляемых (managed) ресурсов, описываются классы, обеспечивающие доступ к ресурсам, а также разбирается работа методов этих классов. Приводится информация о физической организации управляемых ресурсов.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[68]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 23:53
Оценка:
Здравствуйте, adontz, Вы писали:
...
Я плякаль.

A>Насколько я читал форум Януса значени строк изначально всегда английские, а на русские менялись через reflection.

A>Если я чего-то не так понял — звиняйте.

Сдается мне, что ты и не вникал. Строки грузятся из русурсы на основании информации о локали и настроек Хоума. Другой вопрос нафиг вообще нужно было англофицировать Хоум.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[62]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 23:53
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>3) Какое отношение данное сообщение имеет к защите монолитного дизайна?! Или любое возражение тебе == защита монолитного дизайна?


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

Про монолитный дизайн ты заикался не раз. Помнится я как-то с кем-то парой слов об нем обмолвился и упомянул давний флэйм мач вс. Линукс, и ты долго не унимался. Но вот ссылку так влет найти не могу.

ПК>Извини, но ты сам их произносишь, характеризуя этот язык.


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

ПК> Я же отвечаю, что то, как ты его преподносишь ("спроектированный в расчете на халтуру"), для меня его интересным не делает.


Ну, да сам никогда не халтурил (даже случайно) и другим не давал. Незнаю почему, но вот у таких уверенных обычно и находятся потом, такие злобные баги третьего порядка. Типа "- Нафиг с поинтерами химичил? — А я не ошибаюсь...".
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[63]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 23:53
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>VladD2,


>> <... аргументация деньгами опущена как невалидная ...>


>> Блин. В бусте одни заплатки дыр языка. Что там есть чего нет доля дотнета?


ПК>Насколько я знаю .Net (а знаю мало, соответственно, список можно проредить, если будут найдены аналоги):


ПК>assign, call_traits, compressed_pair, concept check, conversion, date_time (не путать с конкретными классами даты и времени, это концепции, которые могут быть использованы для построения своих классов), dynamic_bitset, enable_if, graph, integer, interval, in_place_factory, typed_in_place_factory, io state savers, iterators, math, minmax, mpl, multi_index, operators, optional, pool (не путать с GC, pool создан для увеличения степени контроля над памятью, а не для уменьшения), preprocessor, property map, python, random, range, rational, static_assert, spirit, string_algo, test, tribool, tuple, type_traits (не путать с reflection, это все работает в compile-time), uBLAS.


Да, уж. Не здорово ты дотнет знаешь. Почи все перечисленное тобой есть или в языке или в библиотеках. Исключения составляют graph и фичи связанные с метапрограммированием. Что касается последнего, то есть и CodeSmith и R# и метаинформация в сборках, и генерация кода в рантайме/компайлтайме и много чего еще. Все эти "concept check" и "static_assert" рядом с возможностями R# не лежали. Я вот сегодня сделал автоматическую генерацию конструкторов для всех классов АСТ. Фига два ты подобное на плюсах сбацаешь. Даже на ОпенС++ будет затруднительно. Спириты же вообще отдыхают по сравнению с любым постраителем парсеров и кроме как красивой игрушкой больше ничем не являтся.

ПК>Я тоже не страдаю от "диверсий" со стороны используемых мной библиотек, равно как и от других "грабель C++".


Ну, это сказка в которую я не поверю.

ПК>Но мы ж явно обсуждаем потенциальные возможности, а не реальные проблемы...


Вы возможно. Я гворю исключительно о том, что вижу на практике.

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


ПК>Теоретически — можно.


Ну, не нужно, а... Практически. И очень реально. Сам имел нехилые проблемы от КОМ-а. А исходничков то не ма.

ПК> Но в жизни если и происходит, то ловится не годами, а за несколько часов (день или около того — максимум, что я видел).


Ну, ты крут. Вот только два но. 1. Я лично вылавливал две недели одну тревильную (казалось бы) ошибку. Причем посодил ее не я. 2. На дотнете я больеше получаса на поиск ошибки обычно не трачу. Ну, тяжело добиться ошибки второго/третьего порядка. Нет испорченой памяти, нет выходов за пределы массивов. Везеде нормальные исключения с колстэками. И оптимизатор не наровит извратить код как бог черепаху.

ПК> Бывает достаточно редко, чтобы не влиять на сроки разработки проекта.


Ну, да. До тех пор пока не начали его сдовать. А как ближе к релизу, так... где там Баундчекер?... Какой критин... и т.п.

ПК> На практике время отнимают совершенно другие вещи: изменение окружения, изменение логики программы, изменение используемых библиотек и т.п.


Ну, да. А на то чтобы проектировать время жизни объекто, используемые обертки, контроль кода ты времени и усилий не тратишь? Классно! Просто ты привык к этому грузу и не представляешь как можно жить без него. Вот ты тут не раз приводил Питон в качестве примера языка на котором писать проще. Так вот Шарп это очень близкая вещь, только статически типизированная и со скорость близкой к плюмам.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[60]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.01.05 23:53
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

>> Интересно, а для чего ты на работе можешь применять дотнет? Ты же в Маковской конторе вроде теперь работаешь.


ПК>Ребята под Web пишут для Windows-серверов.


Ну, тогда выбор ПХП — это самое разумное.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[42]: Чем становится C++?
От: Павел Кузнецов  
Дата: 04.01.05 00:04
Оценка: +1
AndrewVK,

> ПК> Какую "такую"? Это был пример. Речь шла о наличии множества тривиальных ошибок, которые не ловятся компилятором. Какое количество из ошибок, обнаруженных в любом релизе Януса, было найдено компилятором? Ессно, ответ 0%, т.к. иначе релиза бы не было.


> Осталось узнать сколько было ошибок до компиляции


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

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


> А сколько в твоей команде было человек, работающих над тем же кодом?


Около десяти. Сделавший ошибку, просто не знал о том, зачем деструкторы делаются виртуальными. После того, как узнал, больше таких ошибок, насколько мне известно, не делал. Т.е., как и говорил jazzer, это вопрос квалификации.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[61]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.01.05 00:11
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А то что теперь объясни мне — почему весь софт для этого сайта пишется на дотнете. Разницы ведь в трудозатратах никакой, а С++сников у нас в команде явно больше.


Как нет? По-моему, Паша нам постоянно дает понять, что Шарп "не тянет". Так что у плюсов явные приемущества.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[63]: Чем становится C++?
От: Павел Кузнецов  
Дата: 04.01.05 00:23
Оценка:
VladD2,

> Про монолитный дизайн ты заикался не раз. Помнится я как-то с кем-то парой слов об нем обмолвился и упомянул давний флэйм мач вс. Линукс, и ты долго не унимался. Но вот ссылку так влет найти не могу.


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

> ПК> Я же отвечаю, что то, как ты его преподносишь ("спроектированный в расчете на халтуру"), для меня его интересным не делает.


> Ну, да сам никогда не халтурил (даже случайно) и другим не давал.


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

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

C# — не тот случай. Его обстругали значительно более радикально. Generics уже, правда, добавили. Если еще подобавляют, может, и будет иметь смысл на него еще посмотреть...
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[62]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.01.05 00:40
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>http://rsdn.ru/Forum/Message.aspx?mid=961589&amp;only=1
Автор: Sergey
Дата: 23.12.04
— Что именно здесь халтура? Да, это не классическое ООП, т.к. нарушается LSP, но в чем халтура-то?


Это хорошо, что ты ссылки пасешь. А халтура там:

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


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

>> Ну, и хоть одно утверждение, положа руку на сердце можешь с уверенностью опровергнуть?


ПК>Да.


Что-то незаметно. Вся тавоя тактика сводится к тому, что ты ставишь их под сомнения не высказывая открытого несогласия и когда тебе говорят, что ты с ними не согласен, то ты сразу просишь привести ссылки где ты это говорил. Тактика конечно забавная...
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[64]: Чем становится C++?
От: Павел Кузнецов  
Дата: 04.01.05 00:48
Оценка: +1
VladD2,

> ПК>Насколько я знаю .Net (а знаю мало, соответственно, список можно проредить, если будут найдены аналоги):

>
> ПК>assign, call_traits, compressed_pair, concept check, conversion, date_time (не путать с конкретными классами даты и времени, это концепции, которые могут быть использованы для построения своих классов), dynamic_bitset, enable_if, graph, integer, interval, in_place_factory, typed_in_place_factory, io state savers, iterators, math, minmax, mpl, multi_index, operators, optional, pool (не путать с GC, pool создан для увеличения степени контроля над памятью, а не для уменьшения), preprocessor, property map, python, random, range, rational, static_assert, spirit, string_algo, test, tribool, tuple, type_traits (не путать с reflection, это все работает в compile-time), uBLAS.
>
> Да, уж. Не здорово ты дотнет знаешь. Почи все перечисленное тобой есть или в языке или в библиотеках.

.Net — не язык, если речь не идет о MSIL. А так... По пунктам, пожалуйста. Одно, случайно попавшее, заметил сам: dynamic_bitset.

> Все эти "concept check" и "static_assert" рядом с возможностями R# не лежали.


R# мы не обсуждаем. Препроцессоры можно к любому языку прикрутить.

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


Все зависит от задач. Для простеньких вещей генераторы парсеров — overkill.

> ПК> Я тоже не страдаю от "диверсий" со стороны используемых мной библиотек, равно как и от других "грабель C++".

>
> Ну, это сказка в которую я не поверю.

Я тоже не во все верю, что ты говоришь. Остается agree to disagree.

> 1. Я лично вылавливал две недели одну тревильную (казалось бы) ошибку. Причем посодил ее не я.


Да, иногда бывает. Я сравнительно недавно описывал как раз такую: http://rsdn.ru/Forum/Message.aspx?mid=650616&amp;only=1
Автор: Павел Кузнецов
Дата: 22.05.04
Одна из трех за последние более чем пол-года. Эта была самой долгой в диагностике, часа 3-4, наверное. В сумме с остальными двумя можно увеличить до одного дня. Я готов столько накинуть на любой проект ради тех вещей, которые мне нравятся в C++. Никаких особых страданий по этому поводу я не испытываю: ошибки, как ошибки.

Значительно больше неприятностей доставляют логические ошибки, когда при проектировании пропускается какой-нибудь существенный use case, и нужно затрагивать некоторые аспекты дизайна, тяжело поддающиеся изменению. Тогда, да, приходится напрячься. Но плюс-минус то же самое будет и в C#/Java/Whatever.

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


Да, это положительные стороны. Для меня их недостаточно, чтобы скомпенсировать отрицательные.

> ПК> Бывает достаточно редко, чтобы не влиять на сроки разработки проекта.


> Ну, да. До тех пор пока не начали его сдовать. А как ближе к релизу, так... где там Баундчекер?... Какой критин... и т.п.


У себя в проектах я такого не наблюдаю.

> ПК> На практике время отнимают совершенно другие вещи: изменение окружения, изменение логики программы, изменение используемых библиотек и т.п.


> Ну, да. А на то чтобы проектировать время жизни объекто, используемые обертки, контроль кода ты времени и усилий не тратишь? Классно! Просто ты привык к этому грузу и не представляешь как можно жить без него. Вот ты тут не раз приводил Питон в качестве примера языка на котором писать проще.


Проще далеко не всегда. Маленькие вещи — да, проще. Но в основном не из-за безопасности, а из-за 1) динамической типизации; 2) более быстрого цикла разработки (не нужно компилировать, линковать и т.п.). Когда проект дорастает до определенных размеров, становится заметно сложнее. Плюс, Шарпу до Питона по части многих возможностей, меня интересующих, еще расширяться нужно.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[61]: Чем становится C++?
От: Павел Кузнецов  
Дата: 04.01.05 00:53
Оценка:
VladD2,

>>> Интересно, а для чего ты на работе можешь применять дотнет? Ты же в Маковской конторе вроде теперь работаешь.


> ПК> Ребята под Web пишут для Windows-серверов.


> Ну, тогда выбор ПХП — это самое разумное.


Почему? Я, когда искал себе вебовскую примочку, сначала пытался найти на .Net. Отчаявшись заставить найденное работать, попробовал фигулину, написанную на PHP. Т.к. с ней проблем почти не возникло, на ней и остановился. Пока полет нормальный.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[63]: Чем становится C++?
От: Павел Кузнецов  
Дата: 04.01.05 01:06
Оценка:
AndrewVK,

> ПК> Я оценкам особого смысла не придаю. Ставлю без особой системы, как рука ляжет. Кста, недавно поймал себя на проставлении оценки IT за "разгром" C++
Автор: IT
Дата: 13.01.04
.


> Недавно? Сообщению уже год.


А увидел я его недавно

> ПК> Красиво, интересно написал


> Влад то вобщем то же самое пишет, только он не такой классный демагог (в хорошем смысле этого слова).


Ну, я ж не по существу поставил, а потому что форма понравилась

>>> А C# в использовании неудобен?


> ПК>Мне — нет. Удобнее, чем, скажем, Java, но менее удобен, чем некоторые другие языки. Впрочем, ессно, зависит от задач.


> В такой формулировке вопросов не имею. Просто потому что не знаком с твоими задачами. Если же хочешь поговорить о моих задачах — you are welcome.


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

> Язык в дотнете не имеет поределяющего значения.


Дык, вот и мне кажется, что если C++/CLI доведут до ума, то .Net для меня, догматика , не будет потерян.

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


> Достаточно. Просто многие вещи делаются в рантайме.


Дык, я большой фанат жесткой статической типизации...

> А насчет эквивалентным встроенным я не понял.


Ну, в C++ легко можно клепать типы, с точки зрения языка почти такие же, как int. В том числе, работающие с такой же эффективностью. Для этого все есть: и наследование "value" классов, и шаблоны, и пресловутые "свободные" функции и т.п. В C# я для подобных вещей мало что нашел.

> P.S. Паш, я на полном серьезе — помог бы в плане разработки, заодно и .NET получше узнаешь.


Спасибо, я подумаю. Кстати, сейчас, пожалуй впервые появилась возможность хоть что-то в этом направлении сделать: раньше подходящие машины были только на работе, дома как-то всякое старье держал... Правда, боюсь, в стеке есть много задач, которые имело бы смысл до залезания в сайт сделать... В любом случае, сайт поднять дома уже давно хотел, хотя бы, чтобы попробовать прикрутить несколько удобств для модерирования. В общем, надеюсь таки попробовать хоть это сделать.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[61]: Чем становится C++?
От: Павел Кузнецов  
Дата: 04.01.05 01:19
Оценка: -1
VladD2,

>>> Вообще, прогрес заметен даже с тобой Помнится начиналось все с совсем уж снобизма и нежелания поверить, что на дотнете можно писать "серьезный" софт.


> ПК>Ссылки давать будем, или опять "ой ли" обойдемся?


> Да тут на каждое сообщение можно ссылки давать. Например:

> Re[41]: Опять С++ vs С#
Автор: Павел Кузнецов
Дата: 11.11.04


1) Не катит, т.к. речь идет не о возможности написания "серьезного" софта вообще, а о некоторых недостатках/неудобствах написания игр на C#.
2) В контексте обсуждения речь шла о C#. Против написания игр на дотнете, но с использованием языков, более приспособленных для контроля распределением памяти (например, C++/CLI), ничего не имею.

> Re[42]: Опять С++ vs С#
Автор: Павел Кузнецов
Дата: 08.12.04


И? Время сборки мусора для первого поколения существенно меньше? А второго хоть на сколько-то меньше? И, снова-таки, причем здесь возможность написания "серьезного" софта?

> Re[55]: Чем становится C++?
Автор: Павел Кузнецов
Дата: 03.01.05


Где там хоть слово о возможности написания "серьезного софта"?

>>> за какую-нибудь чушь ВГ ставишь полную еденицу, а нам с АВК пока что только +1.


> ПК>Не ревнуй


> Да ты вроде не девушка. Просто забавна тактика.


Тебе тоже оценок мало? И тебе "3" поставил, раз это для тебя что-то особое значит. Вообще, я ставлю оценки там, где возникает такое желание (последнее время, правда, сдерживаюсь от смайликов и минусов, т.к., судя по всему, некоторые это воспринимают негативно). Никакой "тактики" в оценки я не вкладываю.

> ПК> и 2) его можно будет практически использовать для настольных приложений не только под Windows.


> Вот с этим сложнее.


Ну, тогда (пока?) не судьба. Нам нужно и под Мак, и под Винду. И (пока что?) хочется, чтобы использовалось максимум встроенных платформенных контролов, а не свои рисовались, как в Java или Опере, например.

> На плюсах тоже как-то хреновенько выходят кросплатфрмные ГУИ.


Ну, мы особо не жалуемся, вроде, с этой частью все в порядке Больше вопросов о том, как ту или иную фичу сделать, чтобы всем удобно было. Да и какие фичи нужны, и в каком виде, тоже вопрос еще тот. Вот это, да, проблемы, на которые идет время.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[63]: Чем становится C++?
От: Павел Кузнецов  
Дата: 04.01.05 01:26
Оценка:
VladD2,

> халтура там:

>

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


> Нормальный дизайн заключался бы в создании специальнго компарера и универсальной фукнции сортировки. А этои слва... ну ты понял.


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

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


Потому что я не соглашаюсь с частными утверждениями, обычно приводя аргументы, а ты порой приписываешь мне высказывания (обычно о "глобальных" вещах), которых я не делал.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[64]: Чем становится C++?
От: alexeiz  
Дата: 04.01.05 02:27
Оценка: 2 (2) +1
"Павел Кузнецов" <5834@users.rsdn.ru> wrote in message
news:974092@news.rsdn.ru
> VladD2,
>> ...
> Скажем, если бы C++ остался бы тем же, что сейчас, но пресловутая
> арифметика указателей была бы вынесена в какой-нибудь "unsafe",
> наверное, был бы "за" (хотя, имхо, есть более удачные альтернативы).

Какие нибудь подвИги в этом направлении есть? Мне такая идея жутко импонирует (выделить кривые фичи, уходящие корнями глубоко в C в отдельное подмножество, использовать которое можно лишь явно его указывая, типа "unsafe"). Я обычно слежу за документами WG21-C++, но что-то ничего подобного пока не видел. Так-же хотелось бы узнать и про более удачные альтернативы.

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

> использования наработанных в C++ приемов.

Естественно с сохранением. Сказать честно, то, что дало C++ толчек популярности в свое время теперь является наибольшим препятствием C++, которое не дает ему продвигаться вперед. Это совместимость с C на уровне исходного кода. Проблема даже не в том, что C++ из-за этого теряет в своей мощности, а в том, что люди не хотят отходить от C-стиля программирования. Stroustrup об этом говорил в одном из интервью. Я сам слышал подобные мысли от Sutter'а. Но слова почему-то не приводят к действиям. Я думаю WG21 очень сильно недооценивает человеческую природную инертность в этом смысле. Я вижу просто горы программистов (с 10 летним опытом и более, один из которых даже в свое время работал над компилятором C++), которые не знают основных идиом C++ (вот так!). Или, вот, читаешь документы WG21 или boost, и работаешь с реальным кодом, написанным реальными людьми, — это небо и земля. Это как подняться на Олимп и спуститься в грязные лачуги. (А по некоторым постингам из форума C++ я понял, что те, кто в них сидят, выходить не собираются. Что только стоит "мы против lexical_cast!" But I digress.)

А выдели все это барахло в отдельный подраздел, что-то вроде extern "C Compat", сломай совместимость один раз с возможностью с небольшими трудозатратами отпортировать существующий код, и дальше можно развивать язык в двух направлениях: "true C++" & "C Compat". Тут-то люди и захотят научиться true C++, потому как кому охота будет признать, что он до сих пор сидит в "C Compat" подмножестве языка. Ущемлённая гордость заставит выучить C++ и отказаться от привычных "грязных" методов из C.

Но... с одной стороны подобное развитие событий очень желательно, а с другой маловероятно. Чуствую я, что "кишка тонка" у Страуструпа и Ко (или кто там сейчас наиболее активный в WG21?). Страуструп (я использую его имя как обобщенный образ) в свое время "убил дракона", сейчас же он сам этот дракон. Уже на него организуются походы. Java, C#, D имеют в этом смысле успех, отрубая у него некоторое количество голов. Но, как ты очень правильно выразился, ни один из них не "вставляет." Не родился еще dragon slayer version next. Хотя я очень надеюсь, что C++/CLI (точнее C++/CLI + STL.NET) будет катализатором для этого рождения. Основание я вижу в том, что в C++/CLI делаются попытки (пусть и неявные) вынести работу в стиле C в отдельный подкласс языка. Кстати, он уже положительно влияет на стандарт C++ (nullptr, enum class), за что ему большой плюс.
Posted via RSDN NNTP Server 1.9
Re[65]: Чем становится C++?
От: Дарней Россия  
Дата: 04.01.05 08:24
Оценка: +1
Здравствуйте, alexeiz, Вы писали:

A>А выдели все это барахло в отдельный подраздел, что-то вроде extern "C Compat", сломай совместимость один раз с возможностью с небольшими трудозатратами отпортировать существующий код, и дальше можно развивать язык в двух направлениях: "true C++" & "C Compat". Тут-то люди и захотят научиться true C++, потому как кому охота будет признать, что он до сих пор сидит в "C Compat" подмножестве языка. Ущемлённая гордость заставит выучить C++ и отказаться от привычных "грязных" методов из C.


Собственно, это все уже есть. Называются эти ветки C# и MC++ Просто не все еще хотят это признать.
В C# хватает минусов, никто не спорит. Над исправлением самых неприятных работают. Некоторые, возможно, так и останутся.. за отсутствие нормального const надо просто руки дизайнерам рубить
Но, в любом случае — начало положено.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[59]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.01.05 09:29
Оценка: :)
Здравствуйте, VladD2, Вы писали:

>>> Все это эволюционный путь развития. Для подобных проектов, по-моему, единственно возможный.

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

Хммм... А ты уверен, что не путаешь ПК и меня?

ПК>> не является панацеей,

VD>Ссылки на слова о панацее.

ПК>> не является чем-то "более прогрессивным",

VD>Являются, являются. Доказательство очень просто. С тиким подходом есть дела, а с твоим только слова и что-то там на работе, что ты и показать то не можешь.
Это не доказательство. Это передёргивание. Или — подмена понятий, или ещё чёрт-те что... В общем — в огороде бузина, а Киеве дядька.

>>> Уж действительно чем защищать С++ <...>

ПК>>Тут, извини, есть один нюанс: учитывая количество marketing hype & bullshit сначала вокруг Java, а теперь вокруг C#, немного альтернативных суждений не повредит. Так у людей, знакомых только с одной точкой зрения, есть шанс познакомиться и с другой.
VD> <..> А то твой антимаркетингвоый булшыт вряд ли чем-то лучше. <...>

Sapienti sat, Влад. А кто не-sapienti, тому ни цифры, ни бумаги, ни программы ничего не докажут.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[59]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.01.05 09:29
Оценка: :)
Здравствуйте, VladD2, Вы писали:

ПК>>На работе пробуют. "Ежики плакали, кололись, но продолжали жрать кактус".

VD>Не жрать, а грызть. Но сути дела это не меняет. Кактусы начинают нравится после 30.
Любопытное наблюдение... Мне 33, а кактусы, почему-то, так и не начали нравиться?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[27]: Чем становится C++?
От: Shady Россия  
Дата: 04.01.05 09:54
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я упоминаю о факте того, что Борланд выбрал Яву вместо плюсов. Это по-моему двольно показательно.

Мдя. Посмотри ты на это чудо, не смеши ей богу.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[25]: Чем становится C++?
От: Shady Россия  
Дата: 04.01.05 09:54
Оценка: +2 -1
Здравствуйте, VladD2, Вы писали:

VD>Они у тебя идиоты? Или нищие? Давай телефон я позвоню им объясню, что они могут получить более устойчивый продукт за меньший срок если выкинуть по 100 баксов на пользователя.

Ну ёлки, уже ругаться хочется. Давай, обзвони всех моих "потенциальных" покупателей, 10 000 в Москве набереться...

VD>Да и не верю я что у платежеспособной конторы машины уровеня P 90 32 Мб.

За то вполне п3-800. А моя программа это тебе не калькулятор, она сама по себе ресурсы жрёт, яж не хочу, чтоб пока клиент запускал мою прогу, он мог бутерброд схавать (пинок в сторону rsdn@home).

VD>Ага. А МС делает коленочный софт. То-то они в Лонгхонр напихали дотнета выше крыши?

Батенька, вы видели этот Лонгхорн? Я нет, а когда он выйдет? Во-во, а я выпускаю софт сейчас.

VD>Дык и не говори. Скажи реальные характиристики 128 + P3 450 и выше.

Если бы так, на сервера на C# выйдет гиг оперативки + АМД64.

VD>Конечно утрируешь. Я два года назад сидел на P800 и 128 Мб памяти и как-то умудрялся запускать несколько программ. Сейчас сижу на гиге и AMD 3500+.

Да, а я пол года назад. Знаешь как мне хорошо было с rsdn@home?

VD>Что-то не верю, что возьмут более фигоый и еще не готовый. Ты хоть в какой области код пишешь?

Erp. Управление предприятием. Возьмут тот софт, где меньше всего геммороя на единичную жопу пользователя.

VD>Да? То-то у нас продажи топовых процессоров и видиокарт перекрывают показатели по Европе.

Смешно

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

Те же сказки про невозможность разработки на C++. Всё, что ты перечислил, приминимо и к C++.

VD>Ох уж эти сказки, ох уж эти сказочники. Что же за супер коробочный софт вы делаете?

Мне еще раз написать?

VD>Я к тому, что твоя неделя куда дороже 100 баксов обохдится. Если софт коробочный тут еще о чем-то поговорить можно, а если нет, то 512 мег памяти куда дешевле труда прграммиста.

Для кого 512 дешевле? Еще раз повторяю — софт коробочный. Цена так же адекватна. А стоимость софта для больших контор не важен.

VD>Да это проблема. Ну, да можно купон на 50 баксов сувать. При этом на них же задрать цену.

Сразу видно экономическое образование...
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[23]: Чем становится C++?
От: Shady Россия  
Дата: 04.01.05 09:54
Оценка: :))
Здравствуйте, AndrewVK, Вы писали:

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


S>>на котором толком нет крупного софта (ну хорошо, всякие sharepoint идут лесом, я говорю о вордах, базах данных)


AVK>Базы данных и ворды теперешние это проекты с десятилетними историями. Переписывать сразу их никто не будет. А проектов в МС на дотнете уже более чем достаточно.

"Отмазки" (с)

S>> и язык, где этого навалом. А вдруг на больших проектах из C# и полезут баги?


AVK>Надеешься?

Всем сердцем.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[24]: Чем становится C++?
От: Shady Россия  
Дата: 04.01.05 09:54
Оценка: +4 -1
Здравствуйте, VladD2, Вы писали:

S>>Мда, ты бывал в дизайнерских студиях, в полиграфии? Вот и я о том же....


VD> Ты бы хоть в профайл глянул.

Ну а что тогда бред пишешь?

VD>И скажу тебе по сикрету, что дизайнерских студий кот наплакал. На них бабки не сделашь. Основные инсталяции Фотошопа — это обычне контроы. Почти везеде нужно кратинку пдрихтовать или буклетик сверстать.

Тьфу, я чуть не поперхнулся! Ты о КАКОЙ стране говоришь? О России? То да, тут у всех софт за 80 рэ. На западе, чтоб картинку подретушировать используют не Фотошоп, а что подешевле, они не идиоты, выкладывать 649$.

Знаешь что, действительно, у тебя наблюдается тенденция абсолютизма:
вот не получилось у тебя с С++, значит всё, язык хуже всех на свете для всех. Если ты редактор и у тебя в издательстве нет Маков, значит всё, не у кого их нет и т.д. и т.п.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[19]: Чем становится C++?
От: Shady Россия  
Дата: 04.01.05 09:54
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>О! Эта задача только на плюсах решается. ЕРП она же только скорость и требует. А бабок у клиентов только тотолько на САП за пару миллионов баксов хватет. А на память уже и не остается.

Проблема в том, что у нас много С++ программистов, C# нема, или олухи. Вот и пишем на C++ и довольны.

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

А нахрена мне это знать?

VD>Непомню уж Axapta или Навижен, но точно написана на Паскале-подобном (опять же доморощенном) языке.

Не надо, axapta на C/C++.

VD>Вот 1ЭС он точно на С++. Причем тормозит... по черному.

Хех, а сколько копий это чуда?

VD>Если не идиоты, то не побигут, а попрыгают.

Вот не надо всё обобщать, если будут писать не на C# то всё, погибель неминуема?

VD>Того, того.

Ты софт покупай легальный, всё будет путём.

VD>Дык остальные тоже падают и глючат по черному. При этом еще и функциональность меньшую имеют.

Не надо, вполне можно на OO тексты набирать.

VD>А он славо богу глючит очень редко.

А на чём написан? Ой, на С++. Так ведь всё, что на С++ — вымрет, ой ой ой...

VD>Илюстратор — это вообще песня. Но и другие продукты глючат по страшному. Только Фотошом более менее плилично работает.

Не, ну прям сказки. Последний CS пиратский валился от наших шрифтов, может в этом дело?

VD> Ты это тем кто с ним реально работает не рассказывай. А то они убьют ненароком. И будут оправданы судом, так как когда суд услышит про 18 патчь, то скажут что так и надо.

А я с ним реально и работал.

VD>Ды не пользуешся, вот и не вылетает. Включи режим ревизий и как следует поредактируй текст. Потом (если еще не вылетел) подобавляй и поредактируй коментарии. Кстати, тоже еще то занятие.

Попробую. Кстате, добавь в rsdn@home что-нибудь в избраное на последней ревизии. Во во...

VD>А, ну, во всем виноваты пираты. Даже если софт поставлен с сидюка производителя.

Был бы с него, сказки бы про глючность не рассказывал. Может валиться ваш плугин для индиза на .Net? А прикинь, если б индиз был бы на gdi+? Во во...
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[63]: Чем становится C++?
От: Shady Россия  
Дата: 04.01.05 10:16
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Типа "- Нафиг с поинтерами химичил? — А я не ошибаюсь...".

Класс, себе в цитатник положу!
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[64]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.01.05 12:05
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

>> Язык в дотнете не имеет поределяющего значения.


ПК>Дык, вот и мне кажется, что если C++/CLI доведут до ума, то .Net для меня, догматика , не будет потерян.


Не думаю что его появление что то кардинально изменит.

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


>> Достаточно. Просто многие вещи делаются в рантайме.


ПК>Дык, я большой фанат жесткой статической типизации...


А я большой фанат компонентных сред. А там один черт статикой ничего не разрулишь.

>> А насчет эквивалентным встроенным я не понял.


ПК>Ну, в C++ легко можно клепать типы, с точки зрения языка почти такие же, как int. В том числе, работающие с такой же эффективностью.


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

ПК> Для этого все есть: и наследование "value" классов,


Во встроенных типах где то используется наследование? Забавно было бы поглядеть как ты от int отнаследуешься.

ПК> и шаблоны, и пресловутые "свободные" функции и т.п. В C# я для подобных вещей мало что нашел.


А там все есть. Свободные функции там не нужны, поскольку нет свободных типов. Для чего шаблоны для встроенных типов вобще неясно. Единственное что нужно от языка — перегрузка операторов, а это в шарпе есть.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[43]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.01.05 12:05
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


А как же Янус? Ты думаешь его только гуру писали?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[26]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.01.05 12:05
Оценка: 1 (1) +1
Здравствуйте, Shady, Вы писали:

VD>>Они у тебя идиоты? Или нищие? Давай телефон я позвоню им объясню, что они могут получить более устойчивый продукт за меньший срок если выкинуть по 100 баксов на пользователя.

S>Ну ёлки, уже ругаться хочется. Давай, обзвони всех моих "потенциальных" покупателей, 10 000 в Москве набереться...

Интересно, что ж это за софт такой? Как называется? Если это коробка, то никаких причин скрывать его название я не вижу.

VD>>Ага. А МС делает коленочный софт. То-то они в Лонгхонр напихали дотнета выше крыши?

S>Батенька, вы видели этот Лонгхорн? Я нет, а когда он выйдет? Во-во, а я выпускаю софт сейчас.

МС уже выпустил достаточно софта на дотнете.

VD>>Конечно утрируешь. Я два года назад сидел на P800 и 128 Мб памяти и как-то умудрялся запускать несколько программ. Сейчас сижу на гиге и AMD 3500+.

S>Да, а я пол года назад. Знаешь как мне хорошо было с rsdn@home?

Как же так — контора, выпускающая коробочный ERP (!!!), а ты на такой дохлой тачке работал.

VD>>Что-то не верю, что возьмут более фигоый и еще не готовый. Ты хоть в какой области код пишешь?

S>Erp. Управление предприятием. Возьмут тот софт, где меньше всего геммороя на единичную жопу пользователя.

Да? Я еше могу поверить Паше, поскольку он занимался маленькими игрушками. Но если это действительно система класса ERP, то проекты начинаются минимум от 150К. При таких суммах затраты на технику ничтожны (обычно апгрейд для такого проекта где то от 2 до 5 килобаксов). В ERP, устанавливаемую на P90 я не верю, поскольку рынок этот знаю ну очень хорошо (довелось побывать с обоих сторон — и разработчиком, и начальником IT-подразделения). Поэтому не рассказывай сказки, такие нищие конторы никому не интересны и ориентироваться на них глупо (и ERP честный им не нужен, не доросли).

VD>>Ох уж эти сказки, ох уж эти сказочники. Что же за супер коробочный софт вы делаете?

S>Мне еще раз написать?

А ты так и не ответил.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[24]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.01.05 12:05
Оценка: +1
Здравствуйте, Shady, Вы писали:

AVK>>Базы данных и ворды теперешние это проекты с десятилетними историями. Переписывать сразу их никто не будет. А проектов в МС на дотнете уже более чем достаточно.

S>"Отмазки" (с)

От чего?

S>>> и язык, где этого навалом. А вдруг на больших проектах из C# и полезут баги?


AVK>>Надеешься?

S>Всем сердцем.

Оно и заметно.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
У, б-б-аталия-то!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.01.05 12:29
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, например, вот этотой
Автор: Геннадий Васильев
Дата: 29.12.04
поэме о кривых руках и бравых безпроблемных плюсовиках ты оценил по достоинству.


Первоисточник (выделение злонамеренно изменено):

ГВ>А виртуальный барьер против ошибок Null Reference (даже не самих ошибок, а последствий в виде краха программы) как раз и подталкивает к их совершениею куда как больше, чем "вседозволенность" C++. Потому что ничто так не подталкивает к ошибкам, как иллюзия защиты от них. Забегая вперёд, скажу, что это же справедливо и для C++.


Тыыкс... И где же здесь о "бравых беспроблемных плюсовиках"?



Давненько я самоцитированием не занимался.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[66]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.01.05 12:29
Оценка: -1
Здравствуйте, Дарней, Вы писали:

A>>А выдели все это барахло в отдельный подраздел, что-то вроде extern "C Compat", сломай совместимость один раз с возможностью с небольшими трудозатратами отпортировать существующий код, и дальше можно развивать язык в двух направлениях: "true C++" & "C Compat". Тут-то люди и захотят научиться true C++, потому как кому охота будет признать, что он до сих пор сидит в "C Compat" подмножестве языка. Ущемлённая гордость заставит выучить C++ и отказаться от привычных "грязных" методов из C.


Д>Собственно, это все уже есть. Называются эти ветки C# и MC++ Просто не все еще хотят это признать.

Д>В C# хватает минусов, никто не спорит. Над исправлением самых неприятных работают. Некоторые, возможно, так и останутся.. за отсутствие нормального const надо просто руки дизайнерам рубить
Д>Но, в любом случае — начало положено.

Это самое "начало" было положено ещё во времена раскрутки Java. И что?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[27]: Чем становится C++?
От: Shady Россия  
Дата: 04.01.05 12:30
Оценка: :))) :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Интересно, что ж это за софт такой? Как называется? Если это коробка, то никаких причин скрывать его название я не вижу.

Софт разрабатывается, оффициального названия нет, есть кодовое "платформа". Мой работодатель не позволяет мне раскрывать больше информации.

AVK>МС уже выпустил достаточно софта на дотнете.

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

AVK>Как же так — контора, выпускающая коробочный ERP (!!!), а ты на такой дохлой тачке работал.

Это было ДОМА. А ДОМА у меня ДВА компа и ОДИН ноутбук. Просто один из компов был п3 800. Который я специально не модернизировал, чтобы использовать как тест стенд в своих ЛИЧНЫХ разработках. Остальные компьютеры у меня с пнями4 и гигами оперативки, уверяю

AVK>Да? Я еше могу поверить Паше, поскольку он занимался маленькими игрушками. Но если это действительно система класса ERP, то проекты начинаются минимум от 150К. При таких суммах затраты на технику ничтожны (обычно апгрейд для такого проекта где то от 2 до 5 килобаксов). В ERP, устанавливаемую на P90 я не верю, поскольку рынок этот знаю ну очень хорошо (довелось побывать с обоих сторон — и разработчиком, и начальником IT-подразделения). Поэтому не рассказывай сказки, такие нищие конторы никому не интересны и ориентироваться на них глупо (и ERP честный им не нужен, не доросли).

Я не буду спорить. У нас erp идёт с несколькими уникальными фичами, которые очень напрягают аппаратуру. Если их делать на C#, то они вообще сдохнут. Писать критические участки на С++ то же думали, но их много, получиться каша.

AVK>А ты так и не ответил.

Ну хорошо, делаем платформу управление предприятием, да не простую, а золотую. Из-за ряда уникальных фич она сильно напрягает компы, так что от C++ не убежишь.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[25]: Чем становится C++?
От: Shady Россия  
Дата: 04.01.05 12:30
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>От чего?

Да так, от того. Не вериться, что двух лет не хватило, чтоб хоть аутлук перенести на net.

AVK>Оно и заметно.

Если честно, мне C# очень даже импонирует, на нём классно быстро писать компоненты под win, какие-то программы. Хороший язык, но в данный момент я его не могу применять. Вот JIT улучшат, вот тогда посмотрим.

"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[67]: Чем становится C++?
От: Дарней Россия  
Дата: 04.01.05 12:52
Оценка: -1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Это самое "начало" было положено ещё во времена раскрутки Java. И что?


ты сначала попробуй из Явы вызвать плюснутый код (и наоборот). Вот тогда и будешь чтокать.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[44]: Чем становится C++?
От: Павел Кузнецов  
Дата: 04.01.05 13:56
Оценка: +1 -1
AndrewVK,

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


> А как же Янус? Ты думаешь его только гуру писали?


Я ж сказал, надежного.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[68]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.01.05 14:10
Оценка:
Здравствуйте, Дарней, Вы писали:

ГВ>>Это самое "начало" было положено ещё во времена раскрутки Java. И что?

Д>ты сначала попробуй из Явы вызвать плюснутый код (и наоборот). Вот тогда и будешь чтокать.

Странный какой-то критерий. Если на то пошло, то и asm — суть не более, чем ветка C++.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[65]: Чем становится C++?
От: Павел Кузнецов  
Дата: 04.01.05 14:27
Оценка: 3 (1) +3
AndrewVK,

> ПК> Дык, я большой фанат жесткой статической типизации...

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

В этом и разница. Мне компонентность сама по себе нужна мало.

>>> А насчет эквивалентным встроенным я не понял.


> ПК>Ну, в C++ легко можно клепать типы, с точки зрения языка почти такие же, как int. В том числе, работающие с такой же эффективностью.


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


Пример:
class my_int : arithmetic< my_int, totally_ordered< my_int > >
{
public:
   my_int& operator +=( my_int );
   my_int& operator -=( my_int );
   my_int& operator *=( my_int );
   my_int& operator /=( my_int );

   bool operator ==( my_int ) const;
   bool operator < ( my_int ) const;
   bool operator > ( my_int ) const;

private:
   int value;
};

Наследуясь от arithmetic и totally_ordered я получаю все остальные арифметические операторы и операторы сравнения. На C++ приведенный my_int будет работать +- с эффективностью int.

Если я правильно понимаю, в C#, для реализации value-классов, вроде того, что выше, придется заниматься copy-paste вместо повторного использования.

> ПК> Для этого все есть: и наследование "value" классов,


> Во встроенных типах где то используется наследование? Забавно было бы поглядеть как ты от int отнаследуешься.


Нет, от int не отнаследуешься. А вот от my_int, что выше — запросто.

> ПК> и шаблоны, и пресловутые "свободные" функции и т.п. В C# я для подобных вещей мало что нашел.


> А там все есть. Свободные функции там не нужны, поскольку нет свободных типов.


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

Пример: тебе нужно записывать один библиотечный класс в поток, определенный в другой библиотеке; ни один из классов модифицировать, естественно, нельзя. Достаточно написать что-нибудь вроде:
std::ostream& operator <<( std::ostream&, OtherClass const& );

Что характерно, решения типа создания какого-нибудь класса с соответствующей статической функцией не подходят, т.к. в этом случае для твоего класса не будет работать значительное количество используемых тобой везде шаблонов, которые понятия не имеют о новом классе, зато прекрасно знают, что класс в поток выводится при помощи operator <<.

> Для чего шаблоны для встроенных типов вобще неясно.


Это ты, вероятно, математику не пытался делать. Скажем, если у тебя есть шаблон Vector3, параметризуемый типом элемента, то в разных случаях тебе достаточно просто параметризовать его типами int, float, double или my_int, my_rational, my_big_number и т.п. Иначе придется заниматься copy-paste. То же самое с многочисленными функциями, коих в математике нужно много, и далеко не все из них предоставляются языком/стандартной библиотекой.

Это просто пример, естественно есть много других use cases.

> Единственное что нужно от языка — перегрузка операторов, а это в шарпе есть.


Мне — не единственное. Если бы мне было нужно только это, я бы к C# относился заметно положительнее.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[66]: Чем становится C++?
От: Павел Кузнецов  
Дата: 04.01.05 14:53
Оценка:
Дарней,

> A> А выдели все это барахло в отдельный подраздел, что-то вроде extern "C Compat" <...>


> Собственно, это все уже есть. Называются эти ветки C# и MC++


MC++... Ты много знаешь удачных примеров использования MC++? К тому же, он уже deprecated, не успев как следует распространиться. Если ты о C++/CLI, то это тоже не совсем так: это одноплатформенные расширения C++.

C#... Речь шла о языке, сохраняющем принятые в C++ идиомы. C# здесь и рядом не лежал. Ни полноценных шаблонов, ни детерменированного разрушения объектов, ни "свободных" функций, ни многого другого.

> за отсутствие нормального const надо просто руки дизайнерам рубить


И этого тоже.

> Но, в любом случае — начало положено.


Влияние C++ несомненно, впрочем, как и некоторых других языков, но вот утверждать, что это является развитием C++ явно неверно. Это начало совсем другому языку, со своими, другими, чем в C++, идиомами.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[54]: Чем становится C++?
От: Трурль  
Дата: 04.01.05 15:45
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А где там проблема?

Стандартизовать протокол я не собираюсь, более того, в ближайшее время все измениться.

Re[24]: Чем становится C++?
От: eugals Россия  
Дата: 04.01.05 18:10
Оценка: :)
Здравствуйте, Shady, Вы писали:

VD>>Ну, надо же с жадностью боросться?

S>А идея, надеюсь, подход не запетентован?
Есть способ кардинальнее.
При выпуске второго сервиспака для XP, помимо включения туда dotnetfx-а, мелкософту нужно было просто захардкодить в кернел ограничение, чтобы ось не стартовала на машинах c <= 1000 мегов оперативки!

Эх, жаль в свое время не догадался продать MS-овцам эту мысль...
Впрочем, вероятно ещё не всё потеряно...
... << RSDN@Home 1.1.4 @@subversion >>
Re[55]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.01.05 21:56
Оценка:
Здравствуйте, Трурль, Вы писали:

AVK>>А где там проблема?

Т>

Стандартизовать протокол я не собираюсь, более того, в ближайшее время все измениться.


Ну так ты на дату сообщения смотри — это стадия преальфы. Говорить что то о стандартах тогда было просто рано. Де-факто протокол практически не изменился. Так что это не мешает.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[28]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.01.05 22:14
Оценка:
Здравствуйте, Shady, Вы писали:

AVK>>Интересно, что ж это за софт такой? Как называется? Если это коробка, то никаких причин скрывать его название я не вижу.

S>Софт разрабатывается, оффициального названия нет, есть кодовое "платформа". Мой работодатель не позволяет мне раскрывать больше информации.

Здорово. Софта нет, клиентов нет, но далеко идущие выводы мы уже сделали. Эдак я тоже из пальца высосать могу — мы вот платформу выкатили и ни один клиент на системные требования не пожаловался.

AVK>>МС уже выпустил достаточно софта на дотнете.

S>Второй круг. Вроде уже обсуждали? Я имел ввиду настольный софт, не бизнес. Ворд/Фотошоп/Браузер и т.д. Ничего этого нет.

Мало ли что ты имел ввиду. Самый дорогой софт — серверный. А все остальное подтянется по необходимости.

AVK>>Как же так — контора, выпускающая коробочный ERP (!!!), а ты на такой дохлой тачке работал.

S>Это было ДОМА. А ДОМА у меня ДВА компа и ОДИН ноутбук. Просто один из компов был п3 800. Который я специально не модернизировал, чтобы использовать как тест стенд в своих ЛИЧНЫХ разработках. Остальные компьютеры у меня с пнями4 и гигами оперативки, уверяю

А, ну то есть ты янус специально запускал на самом дохлом компе. Месье мазохист?

S>Я не буду спорить. У нас erp идёт с несколькими уникальными фичами, которые очень напрягают аппаратуру. Если их делать на C#, то они вообще сдохнут.


И что это за уникальные фичи ты конечно не скажешь

AVK>>А ты так и не ответил.

S>Ну хорошо, делаем платформу управление предприятием, да не простую, а золотую. Из-за ряда уникальных фич она сильно напрягает компы, так что от C++ не убежишь.

Мы вот тоже таку платформу делаем. И вот что удивительно — все упирается в БД, а не в процессор. Хотя фич уникальных у нас предостаточно.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[26]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.01.05 22:14
Оценка:
Здравствуйте, Shady, Вы писали:

AVK>>От чего?

S>Да так, от того. Не вериться, что двух лет не хватило, чтоб хоть аутлук перенести на net.

А его никто пока не переносил.

AVK>>Оно и заметно.

S>Если честно, мне C# очень даже импонирует,

Не верю .

S> на нём классно быстро писать компоненты под win, какие-то программы. Хороший язык, но в данный момент я его не могу применять. Вот JIT улучшат, вот тогда посмотрим.


Для ERP качество JIT на данный момент более чем, ты уж поверь человеку, этой самой ERP уж 10 лет занимающемся.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[29]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 04.01.05 22:21
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Самый дорогой софт — серверный.


Самый дорогой или самый прибыльный?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[29]: Чем становится C++?
От: Shady Россия  
Дата: 04.01.05 22:30
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Здорово. Софта нет, клиентов нет, но далеко идущие выводы мы уже сделали. Эдак я тоже из пальца высосать могу — мы вот платформу выкатили и ни один клиент на системные требования не пожаловался.

Слушай, не делай сам далеко идущих выводов. У меня есть опыт.

AVK>Мало ли что ты имел ввиду. Самый дорогой софт — серверный. А все остальное подтянется по необходимости.

А чо за отмазки ей богу. Ну хорошо, где сервеная ОС на .Net, где базы данных? Что-то не видно на горизонте...

AVK>А, ну то есть ты янус специально запускал на самом дохлом компе. Месье мазохист?

Ну что за десткие придирки ей богу?

AVK>И что это за уникальные фичи ты конечно не скажешь

Конечно.

AVK>Мы вот тоже таку платформу делаем. И вот что удивительно — все упирается в БД, а не в процессор. Хотя фич уникальных у нас предостаточно.

Ну и какие? Раз выкатили, напиши, по сайту ничего отличающего ваш продукт от других на рынке я не нашел, даже последнюю версию скачал, заценить.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[27]: Чем становится C++?
От: Shady Россия  
Дата: 04.01.05 22:30
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А его никто пока не переносил.

Не понял, а что так?

AVK>Не верю .

Вот класс, человеку говоришь, а в его воспаленном мозгу всё равно одна мысля бегает: "кругом враги!".
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[30]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.01.05 22:41
Оценка:
Здравствуйте, Shady, Вы писали:

AVK>>Здорово. Софта нет, клиентов нет, но далеко идущие выводы мы уже сделали. Эдак я тоже из пальца высосать могу — мы вот платформу выкатили и ни один клиент на системные требования не пожаловался.

S>Слушай, не делай сам далеко идущих выводов. У меня есть опыт.

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

AVK>>Мало ли что ты имел ввиду. Самый дорогой софт — серверный. А все остальное подтянется по необходимости.

S>А чо за отмазки ей богу. Ну хорошо, где сервеная ОС на .Net, где базы данных?

Эти вещи за 2 года не пишутся.

AVK>>А, ну то есть ты янус специально запускал на самом дохлом компе. Месье мазохист?

S>Ну что за десткие придирки ей богу?

Детские придирки это когда ты всем тут рассказываешь как тормозит янус, когда ты его запускаешь на дохлой машине.

AVK>>И что это за уникальные фичи ты конечно не скажешь

S>Конечно.

Тогда отметаем.

AVK>>Мы вот тоже таку платформу делаем. И вот что удивительно — все упирается в БД, а не в процессор. Хотя фич уникальных у нас предостаточно.

S>Ну и какие? Раз выкатили, напиши, по сайту ничего отличающего ваш продукт от других на рынке я не нашел, даже последнюю версию скачал, заценить.

Ты это о чем???
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[28]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.01.05 22:41
Оценка:
Здравствуйте, Shady, Вы писали:

AVK>>А его никто пока не переносил.

S>Не понял, а что так?

А зачем?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[31]: Чем становится C++?
От: Shady Россия  
Дата: 04.01.05 22:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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

Ну извеняйте, расскажу, могут уволить или того хуже, у меня NDA однако.

AVK>Эти вещи за 2 года не пишутся.

Ну хорошо хорошо.

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

Ну тогда указывайте в системных рекомендациях pentium 4 2048 mb DDR 400 ram чес слово, если п3 800 дохлая машина...

AVK>Тогда отметаем.

Отметай, не жалко.

AVK>>>Мы вот тоже таку платформу делаем. И вот что удивительно — все упирается в БД, а не в процессор. Хотя фич уникальных у нас предостаточно.

AVK>Ты это о чем???
Что у вас за фичи уникальные? По описанию/юзанью вашего софта я их не увидел, это не издевательство, я серьёзно, конкурента, так сказать, узнать
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[65]: Чем становится C++?
От: Павел Кузнецов  
Дата: 05.01.05 03:43
Оценка: 12 (2)
alexeiz,

>> Скажем, если бы C++ остался бы тем же, что сейчас, но пресловутая арифметика указателей была бы вынесена в какой-нибудь "unsafe", наверное, был бы "за" (хотя, имхо, есть более удачные альтернативы).


> Какие нибудь подвИги в этом направлении есть?


Мне ничего сколько-нибудь перспективного не попадалось. И, думаю, вряд ли будет: теперь к сохранению существующей семантики обязывает не только и не столько совместимость с C, сколько совместимость с C++...

> Так-же хотелось бы узнать и про более удачные альтернативы.


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

Допустим, можно сделать указатель по-умолчанию "безопасным", а при наличии какого-нибудь модификатора — "опасными":
Obj*     obj = new Obj;        // "безопасный" указатель
Obj raw* unsafe_pointer = obj; // "опасный" указатель

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

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

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

В таком случае "безопасные" указатели семантически отличась бы от ссылок, пожалуй, только тем, что могли бы быть нулевыми.

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

И т.д., и т.п.

К сожалению, вряд ли что-нибудь подобное когда-нибудь войдет в C++ — полагаю, это все мечты о каком-то другом языке, который когда-нибудь, возможно, получит шансы на жизнь...

> выдели все это барахло в отдельный подраздел, что-то вроде extern "C Compat", сломай совместимость один раз с возможностью с небольшими трудозатратами отпортировать существующий код, и дальше можно развивать язык в двух направлениях: "true C++" & "C Compat".


Может быть... Но, к сожалению, такой подход очень дорог на практике. Фактически, это означает наличие в одном компиляторе двух: компилятора "старого" C++, и компилятора "нового" C++. Т.е., например, любой разработчик нового компилятора будет вынужден "пахать" вдвойне, что резко снизит привлекательность языка для создателей компиляторов и инструментальных средств. C++ в теперешнем виде, и без добавления к нему второго языка, находится на этой грани, если не за ней. Плюс возникает множество тонких моментов, связанных с возможностью вызова "старого" кода из "нового", и наоборот.

Почему-то мне кажется, что единственно реальным вариантом значительного изменения C++ является создание нового языка, (максимально) совместимого с C++ на уровне объектной модели.

К сожалению, у этого нового языка будет очень мало шансов на хоть какое-нибудь распространение, если не выполнится хотя бы одно из условий:
При этом, без выполнения второго условия, как я понимаю, новый язык должен позволять, действительно, легко переносить на него программы с C++ и, возможно, C.

> Java, C#, D имеют в этом смысле успех, отрубая у него некоторое количество голов. Но, как ты очень правильно выразился, ни один из них не "вставляет."


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

> Не родился еще dragon slayer version next. Хотя я очень надеюсь, что C++/CLI (точнее C++/CLI + STL.NET) будет катализатором для этого рождения.


Присоединяюсь: очень хочется надеяться...
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[69]: Чем становится C++?
От: Дарней Россия  
Дата: 05.01.05 04:47
Оценка: +2
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Странный какой-то критерий. Если на то пошло, то и asm — суть не более, чем ветка C++.


Удобный интероп с асмом — это одна из фич, которая сделала С столь популярным.
Почему-то многие забывают, что сам по себе язык в наше время — этого совсем недостаточно, необходим еще и интероп с унаследованным кодом. Без него даже самый крутейший язык обречен на забвение.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[67]: Чем становится C++?
От: Дарней Россия  
Дата: 05.01.05 04:51
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>MC++... Ты много знаешь удачных примеров использования MC++? К тому же, он уже deprecated, не успев как следует распространиться.


Собственно, он так и задумывался. Единственная его задача — это интеграция унаследованного С++ кода и .NET, и в таком качестве он проживет еще очень долго.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[25]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.01.05 05:02
Оценка:
Здравствуйте, eugals, Вы писали:

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


VD>>>Ну, надо же с жадностью боросться?

S>>А идея, надеюсь, подход не запетентован?
E>Есть способ кардинальнее.
E>При выпуске второго сервиспака для XP, помимо включения туда dotnetfx-а, мелкософту нужно было просто захардкодить в кернел ограничение, чтобы ось не стартовала на машинах c <= 1000 мегов оперативки!

E>Эх, жаль в свое время не догадался продать MS-овцам эту мысль...

E>Впрочем, вероятно ещё не всё потеряно...

Дарю addon к идее — сервиспак должен ставиться на память определённой марки: Kingston MS certified. Кстати, тогда и проблема софтверного корсарства (каперства и иже с ними) пропадёт сама собой.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[68]: Чем становится C++?
От: Павел Кузнецов  
Дата: 05.01.05 05:07
Оценка: 1 (1)
Дарней,

> ПК> MC++... Ты много знаешь удачных примеров использования MC++? К тому же, он уже deprecated, не успев как следует распространиться.


> Собственно, он так и задумывался. Единственная его задача — это интеграция унаследованного С++ кода и .NET, и в таком качестве он проживет еще очень долго.


Все то же самое на C++/CLI делается намного легче и быстрее. Некоторое время назад Microsoft проводили исследование, есть ли вообще достаточное количество кода на MC++, чтобы заботиться его поддержкой. Чем закончилось — без понятия. Планировавшаяся поддержка на тот момент заключалась в написании инструмента, преобразующего код на MC++ в код на C++/CLI. Этим транслятором на тот момент занимался Стэнли Липпман. Так что MC++ можно преспокойно сказать R.I.P. Никаких "долго", насколько мне известно, не ожидается. "И это правильно, товарищи"

Или у тебя есть какая-то другая информация?
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[32]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 09:37
Оценка:
Здравствуйте, Shady, Вы писали:

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

S>Ну извеняйте, расскажу, могут уволить или того хуже, у меня NDA однако.

Тогда не стоит вобще об этом упоминать.

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

S>Ну тогда указывайте в системных рекомендациях pentium 4 2048 mb DDR 400 ram чес слово, если п3 800 дохлая машина...

Зачем?

AVK>>>>Мы вот тоже таку платформу делаем. И вот что удивительно — все упирается в БД, а не в процессор. Хотя фич уникальных у нас предостаточно.

AVK>>Ты это о чем???
S>Что у вас за фичи уникальные? По описанию/юзанью вашего софта я их не увидел, это не издевательство, я серьёзно, конкурента, так сказать, узнать

Ты о каком софте вобще речь ведешь?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[33]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 09:44
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Тогда не стоит вобще об этом упоминать.

Я вроде всё доходчиво писал, фичи тяжелые, что ты от меня хочешь? Чтобы я тебе еще и исходны коды показал?

AVK>Зачем?

У тебя же п3 800 — дохлая машина для Януса, ну вот я и посмеялся.

AVK>>>>>Мы вот тоже таку платформу делаем. И вот что удивительно — все упирается в БД, а не в процессор. Хотя фич уникальных у нас предостаточно.

AVK>>>Ты это о чем???
S>>Что у вас за фичи уникальные? По описанию/юзанью вашего софта я их не увидел, это не издевательство, я серьёзно, конкурента, так сказать, узнать

AVK>Ты о каком софте вобще речь ведешь?

О твоей платформе, или у тебя их много? Если у тебя их нема , тогда зачем пишешь:

Мы вот тоже таку платформу делаем. И вот что удивительно — все упирается в БД, а не в процессор. Хотя фич уникальных у нас предостаточно.

Как я понял, ты из Паруса, делаешь конструктор на .Net.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[34]: Чем становится C++?
От: Дарней Россия  
Дата: 05.01.05 10:28
Оценка: :)
Здравствуйте, Shady, Вы писали:

S>Я вроде всё доходчиво писал, фичи тяжелые, что ты от меня хочешь? Чтобы я тебе еще и исходны коды показал?


Мне вот одно интересно. У вас там "толстый клиент" что ли? Если нет — откуда тогда берется нагрузка на клиентской части?
Есть конечно и другой вариант — распределение общей нагрузки по клиентским машинам, нечто вроде SETI.HOME. Но в этом случае мощность клиентских машин тоже значения иметь не должна.
В общем, як дети, честное слово. А у меня дома — вооот такая машинка... но я тебе не покажу
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[69]: Чем становится C++?
От: Дарней Россия  
Дата: 05.01.05 10:36
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Все то же самое на C++/CLI делается намного легче и быстрее. Некоторое время назад Microsoft проводили исследование, есть ли вообще достаточное количество кода на MC++, чтобы заботиться его поддержкой. Чем закончилось — без понятия. Планировавшаяся поддержка на тот момент заключалась в написании инструмента, преобразующего код на MC++ в код на C++/CLI. Этим транслятором на тот момент занимался Стэнли Липпман. Так что MC++ можно преспокойно сказать R.I.P. Никаких "долго", насколько мне известно, не ожидается. "И это правильно, товарищи"


Если нет данных — значит, трактуем это исследование в свою пользу? Уродлив он конечно... но для написания оберток MC++ хватает, а больше от него ничего и не требуется.
C++/CLI пока еще не дошел до практического применения, так что делать любые выводы рано. Хотя из того, что я видел — есть у меня подозрение, что он станет еще более overcomplicated, чем C++ и даже MC++. Мало добавлять в язык новые фичи, надо еще и удалять старые, которые создают слишком много проблем. Так что сияющее будущее для него крайне маловероятно.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[34]: Чем становится C++?
От: Дарней Россия  
Дата: 05.01.05 10:42
Оценка:
Здравствуйте, Shady, Вы писали:

S>У тебя же п3 800 — дохлая машина для Януса, ну вот я и посмеялся.


"Но в песне ты не понял совсем ничего" (С) ДДТ

Проблема Януса — не в том, что он написан на .NET. Его проблема в том, что он некоммерческий и ни у кого не доходят руки по нормальному его оптимизировать.
В аналогичных условиях С++ прога просто не дошла бы даже до альфа-стадии. (хотя почему "бы"... конкурентов пока не наблюдается )
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[34]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 10:48
Оценка:
Здравствуйте, Shady, Вы писали:

AVK>>Тогда не стоит вобще об этом упоминать.

S>Я вроде всё доходчиво писал, фичи тяжелые, что ты от меня хочешь? Чтобы я тебе еще и исходны коды показал?

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

S>>>Что у вас за фичи уникальные? По описанию/юзанью вашего софта я их не увидел, это не издевательство, я серьёзно, конкурента, так сказать, узнать


AVK>>Ты о каком софте вобще речь ведешь?

S>О твоей платформе, или у тебя их много? Если у тебя их нема , тогда зачем пишешь:

Видишь ли, не думаю что ты ту платформу, что мы сейчас делаем, видел.

S>Как я понял, ты из Паруса, делаешь конструктор на .Net.


Конструктор на .NET? И где же ты его видел?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[35]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 10:59
Оценка:
Здравствуйте, Дарней, Вы писали:

S>>Я вроде всё доходчиво писал, фичи тяжелые, что ты от меня хочешь? Чтобы я тебе еще и исходны коды показал?

Д>Мне вот одно интересно. У вас там "толстый клиент" что ли? Если нет — откуда тогда берется нагрузка на клиентской части?
Он полу толстый. В текущей модной терминологии он smart Большая нагрузка будет на сервер конечно, для клиента это фигня. Выбор пал на С++, так как на некой "виртуальной" конфигурации по рассчетам и замерам, у нас выходило на 20-30% больше одновременно обрабатываемых пользователей.

Д>Есть конечно и другой вариант — распределение общей нагрузки по клиентским машинам, нечто вроде SETI.HOME. Но в этом случае мощность клиентских машин тоже значения иметь не должна.

Нагрузка распределяется между серверами дейтсвительно как в Seti

Д>В общем, як дети, честное слово. А у меня дома — вооот такая машинка... но я тебе не покажу

Это не ко мне, просто пошли бредовые придирки, "а что это ты на п3 800 запускал, ты что бедный?", а потом, "а нафига ты всё же на п3 800 запускал, тебе что в падлу было на п4?".
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[35]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 10:59
Оценка: +2 -1
Здравствуйте, Дарней, Вы писали:

S>>У тебя же п3 800 — дохлая машина для Януса, ну вот я и посмеялся.

Д>"Но в песне ты не понял совсем ничего" (С) ДДТ
Это "Мальчики мажоры" с альбома "Я получил эту роль"? А разве там не

Но в песне не понял ты увы ничего.

?

Д>Проблема Януса — не в том, что он написан на .NET. Его проблема в том, что он некоммерческий и ни у кого не доходят руки по нормальному его оптимизировать.

Да какая разница в чем проблема Януса? Я просто обранил фразу: "как мне хорошо было с Янусом на п3 800", потом пошли дохлые наезды, и я офигел от слов, что п3 800 дохлая машина...

Д>В аналогичных условиях С++ прога просто не дошла бы даже до альфа-стадии. (хотя почему "бы"... конкурентов пока не наблюдается )

Незнаю, Янус — это своеобразный ньюс реадир, таких OS на C++ навалом (Thunderbird к примеру).
Просто нет опытных массовиков затейников со свободным временем в разделе С++. Влад и Андрей — они оба опытные, вот они и подняли проект. Если двое опытных людей в С++ со свободным временем найдутся, то они и сделают. Да и потом зачем? Показать "крутость" языка С++, а кому это надо? Люди, пишущие на нём софт от него не фанатеют. Тут только Влад всё время пытается его втоптать в грязь, а мне фиолетово.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[35]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 11:04
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Не знаю. Либо ты рассказываешь о чем собственно речь, либо вобще не надо это поминать. А то таким манеров я тоже могу насочинять с три короба.

Да что ж такое, ладно, не верь. Ничего я не делаю.

AVK>Видишь ли, не думаю что ты ту платформу, что мы сейчас делаем, видел.

Ну ёлки,

ты рассказываешь о чем собственно речь, либо вобще не надо это поминать

логика надеюсь понятна?

AVK>Конструктор на .NET? И где же ты его видел?

Так я тебя и спрашиваю человеческим языком, что за "платформу" ты делаешь.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[36]: Чем становится C++?
От: Дарней Россия  
Дата: 05.01.05 11:22
Оценка:
Здравствуйте, Shady, Вы писали:

S>Он полу толстый. В текущей модной терминологии он smart Большая нагрузка будет на сервер конечно, для клиента это фигня. Выбор пал на С++, так как на некой "виртуальной" конфигурации по рассчетам и замерам, у нас выходило на 20-30% больше одновременно обрабатываемых пользователей.


Если отвлечься от модной терминологии, то все-таки толстый?

S>Нагрузка распределяется между серверами дейтсвительно как в Seti


Так между серверами, или между клиентскими машинами?

S>Это не ко мне, просто пошли бредовые придирки, "а что это ты на п3 800 запускал, ты что бедный?", а потом, "а нафига ты всё же на п3 800 запускал, тебе что в падлу было на п4?".


Глупо ожидать от некоммерческого софта, что кто-то будет его оптимизировать под не-мэйнстримные машины.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[36]: Чем становится C++?
От: Дарней Россия  
Дата: 05.01.05 11:29
Оценка:
Здравствуйте, Shady, Вы писали:

S>Но в песне не понял ты увы ничего.


неважно. давно уже его не слушал

S>Незнаю, Янус — это своеобразный ньюс реадир, таких OS на C++ навалом (Thunderbird к примеру).


один — это не навалом. А мне вот только SharpReader вспомнился.

S>Если двое опытных людей в С++ со свободным временем найдутся, то они и сделают. Да и потом зачем? Показать "крутость" языка С++, а кому это надо? Люди, пишущие на нём софт от него не фанатеют. Тут только Влад всё время пытается его втоптать в грязь, а мне фиолетово.


А чего это ты скопом записал всех оппонентов в раздел "не знают С++"? У тебя есть какие-то точные данные на эту тему?
Никто и не пытается его в грязь втаптывать. Это просто отдельные... э... излишне приверженные С++ личности начинают топать ногами при любой критике в адрес С++
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[36]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 12:07
Оценка:
Здравствуйте, Shady, Вы писали:

AVK>>Видишь ли, не думаю что ты ту платформу, что мы сейчас делаем, видел.

S>Ну ёлки,
S>

S>ты рассказываешь о чем собственно речь, либо вобще не надо это поминать

S>логика надеюсь понятна?

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

AVK>>Конструктор на .NET? И где же ты его видел?

S>Так я тебя и спрашиваю человеческим языком, что за "платформу" ты делаешь.

Зачем тебе?
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[37]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 16:55
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Если отвлечься от модной терминологии, то все-таки толстый?

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

Д>Так между серверами, или между клиентскими машинами?

Серверами конечно

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

От некомерческого софта вообше что-либо глупо ожидать.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[37]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 16:55
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>один — это не навалом. А мне вот только SharpReader вспомнился.

Уже два На самом деле больше, на линюхе я еще два видел Просто лень в гугле рыться...

S>>Если двое опытных людей в С++ со свободным временем найдутся, то они и сделают. Да и потом зачем? Показать "крутость" языка С++, а кому это надо? Люди, пишущие на нём софт от него не фанатеют. Тут только Влад всё время пытается его втоптать в грязь, а мне фиолетово.

Д>А чего это ты скопом записал всех оппонентов в раздел "не знают С++"? У тебя есть какие-то точные данные на эту тему?
Непонял этого выражения? Где я записал всех оппонентов в раздел "не знают С++"?

Д>Никто и не пытается его в грязь втаптывать. Это просто отдельные... э... излишне приверженные С++ личности начинают топать ногами при любой критике в адрес С++

? У нас разные представления о зачинщиках (я может то же в этом отметился, тут даже ветка моя есть, хотя это всего лишь был вопрос), но вроде уже притча есть, как Влад C# защищяет
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[37]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 16:55
Оценка: +1 -1
Здравствуйте, AndrewVK, Вы писали:

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

Ты то же. Вот твоя ничем не подкрепленноя цитата:

Мы вот тоже таку платформу делаем. И вот что удивительно — все упирается в БД, а не в процессор. Хотя фич уникальных у нас предостаточно.

Я этим поинтересовался, в ответ перекидывание стрелок.

AVK>Зачем тебе?

Да господи, ну я не могу, уже 4-5 постов не о чём. Вот ты говоришь делаешь "платформу" на .Net, говоришь, что тебя устраивает очень даже Jit, производительность и т.д. Я спрашиваю, расскажи поподробнее, что ты делаешь. Или сразу уж пиши: не хочу, не буду. А то

А то таким манеров я тоже могу насочинять с три короба.

"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[38]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 17:27
Оценка: +1
Здравствуйте, Shady, Вы писали:

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

S>Ты то же.

Нет, я выводов не делаю.

S> Вот твоя ничем не подкрепленноя цитата:

S>

S>Мы вот тоже таку платформу делаем. И вот что удивительно — все упирается в БД, а не в процессор. Хотя фич уникальных у нас предостаточно.

S>Я этим поинтересовался, в ответ перекидывание стрелок.

Неа. Это не перекидывание стрелок, это демонстрация неаргументированности твоей позиции.

AVK>>Зачем тебе?

S>Да господи, ну я не могу, уже 4-5 постов не о чём.

Сам виноват.

S> Вот ты говоришь делаешь "платформу" на .Net, говоришь, что тебя устраивает очень даже Jit, производительность и т.д.


Да.

S> Я спрашиваю, расскажи поподробнее, что ты делаешь.


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

S>

S>А то таким манеров я тоже могу насочинять с три короба.


Вот именно. Это я не про себя, это я про твои высказывания. Делаешь сильные выводы, а аргументов, кроме неких мифических уникальных фич нету. Хочешь привести конкретные примеры, где JIT не справляется — приводи. А махать красным флагом не надо, защитников святого имени С++ здесь и без тебя хватает.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[39]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 17:40
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Нет, я выводов не делаю.

Хех, явно нет, но не явно (учитывая контекс) ты делаешь.

AVK>Неа. Это не перекидывание стрелок, это демонстрация неаргументированности твоей позиции.

У тебя аналогичная позиция. Точка.

AVK>Сам виноват.

"Сам дурак"? (не помню из какого кинофильма)

AVK>Платформу для ERP. Интересуют конкретные вещи — спрашивай, по возможности отвечу. А закатывать здесь конспект на десятки килобайт обо все что в проекте присутствует в надежде что что то тебя заинтересует я не буду.

Я уже спрашивал, я тебя не просил писать конспекты, я элементарно интересуюсь, что у вас там за "фишки".

AVK>Вот именно. Это я не про себя, это я про твои высказывания. Делаешь сильные выводы, а аргументов, кроме неких мифических уникальных фич нету. Хочешь привести конкретные примеры, где JIT не справляется — приводи. А махать красным флагом не надо, защитников святого имени С++ здесь и без тебя хватает.

Понятно что про меня, "ясен пень", ты думал, я не понял? Где я опускал Jit? Где воздвигал С++? То что C# кушает больше памяти — это факт, доказаный лучшими "собаководами". Что ты такой нервный ей богу, я даже писал, что C# мне самому нравиться, но в моей ситуации не подходит (я сказал почему, так у меня сама erp предоставляет ран таймовые фишки, а если к этому рантаймы пришпиндорить слой net, то производительность падает), ты даже в это не поверил
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[40]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 18:04
Оценка: +1
Здравствуйте, Shady, Вы писали:

AVK>>Нет, я выводов не делаю.

S>Хех, явно нет, но не явно (учитывая контекс) ты делаешь.

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

AVK>>Неа. Это не перекидывание стрелок, это демонстрация неаргументированности твоей позиции.

S>У тебя аналогичная позиция. Точка.

Однако я не пишу сюда пафосные письма о том что С++ никуда не годится.

AVK>>Платформу для ERP. Интересуют конкретные вещи — спрашивай, по возможности отвечу. А закатывать здесь конспект на десятки килобайт обо все что в проекте присутствует в надежде что что то тебя заинтересует я не буду.

S>Я уже спрашивал, я тебя не просил писать конспекты, я элементарно интересуюсь, что у вас там за "фишки".

У нас там много фишек. Даже их перечисление займет много места. Еще раз — что конкретно тебя интересует в контексте производительности JIT?

AVK>>Вот именно. Это я не про себя, это я про твои высказывания. Делаешь сильные выводы, а аргументов, кроме неких мифических уникальных фич нету. Хочешь привести конкретные примеры, где JIT не справляется — приводи. А махать красным флагом не надо, защитников святого имени С++ здесь и без тебя хватает.

S>Понятно что про меня, "ясен пень", ты думал, я не понял? Где я опускал Jit?

у нас erp идёт с несколькими уникальными фичами, которые очень напрягают аппаратуру. Если их делать на C#, то они вообще сдохнут.
...
Из-за ряда уникальных фич она сильно напрягает компы, так что от C++ не убежишь.


S> Что ты такой нервный ей богу,

Забавно это слышать от тебя. Я, значит нервный, а ты с холодным умом пишешь подобные штучки:

Вот класс, человеку говоришь, а в его воспаленном мозгу всё равно одна мысля бегает: "кругом враги!".


S> я даже писал, что C# мне самому нравиться, но в моей ситуации не подходит


Увы, но ты здесь не обладаешь таким авторитетом, чтобы тебе верили на слово (я тоже не обладаю). Либо подтверждай свои слова фактами, либо не трепись почем зря.

S> (я сказал почему, так у меня сама erp предоставляет ран таймовые фишки, а если к этому рантаймы пришпиндорить слой net, то производительность падает), ты даже в это не поверил


А если я скажу что у меня кое какой код на шарпе работает на порядок быстрее аналога, писанного на классическом компиляторе, ты поверишь? Думаю нет, хотя это чистая правда.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[41]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 18:18
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

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

Вот необоснованные обвинения я не люблю: пожалуйста, приведи мне мои топики, где много пафоса

AVK>Так что твои предположения не соотвествуют действительности.

Ды ты вообще ничего не пишешь, тебя здесь нет.

AVK>Однако я не пишу сюда пафосные письма о том что С++ никуда не годится.

Где я писал пафосные письмо? Давай, кидай ссылочки, я жду.

AVK>У нас там много фишек. Даже их перечисление займет много места. Еще раз — что конкретно тебя интересует в контексте производительности JIT?

Ну например в этом контексте, хочеться хоть одну "фишку" увидеть, а то прошу-прошу...

AVK>

у нас erp идёт с несколькими уникальными фичами, которые очень напрягают аппаратуру. Если их делать на C#, то они вообще сдохнут.
AVK>...
AVK>Из-за ряда уникальных фич она сильно напрягает компы, так что от C++ не убежишь.

Это что понт? У нас проблемы с быстродействием C# были из-за gc.

AVK>Забавно это слышать от тебя. Я, значит нервный, а ты с холодным умом пишешь подобные штучки:

AVK>

Вот класс, человеку говоришь, а в его воспаленном мозгу всё равно одна мысля бегает: "кругом враги!".

Конечно с холодным Ну действительно, "кругом враги".

AVK>Увы, но ты здесь не обладаешь таким авторитетом, чтобы тебе верили на слово (я тоже не обладаю). Либо подтверждай свои слова фактами, либо не трепись почем зря.

Хоспади, мне что

закатывать здесь конспект на десятки килобайт обо все что в проекте присутствует

чтобы убедите тебя, что нам C# не подощел.

AVK>А если я скажу что у меня кое какой код на шарпе работает на порядок быстрее аналога, писанного на классическом компиляторе, ты поверишь? Думаю нет, хотя это чистая правда.

А вот думать за меня не надо пожалуйста. Ну действительно, ну что ты меня "врагом народа" считаешь, ей богу? Приведи мне этот код, мне очень интерестно на него посмотреть.
Я тебе не враг, я желею, что C# не подошел, но такова жизнь, у меня даже есть топик по erp и C# (где-то в проектировании), где я там опускал C#?, я да же соглашался с его выбором.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[38]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 05.01.05 18:25
Оценка: :)
Здравствуйте, Shady, Вы писали:

S>но вроде уже притча есть, как Влад C# защищяет


И имя у него в легендах звучное "рыцарь в зелёном скафандре". То ли Робин Гуд, то ли Дон Кихот
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[42]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 18:44
Оценка:
Здравствуйте, Shady, Вы писали:

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

S>Вот необоснованные обвинения я не люблю: пожалуйста, приведи мне мои топики, где много пафоса

Собственно вот:
Re[27]: Чем становится C++?
Автор: Shady
Дата: 04.01.05

Смайлики на этом сообщении говорят о том что не я один так думаю.

AVK>>Так что твои предположения не соотвествуют действительности.

S>Ды ты вообще ничего не пишешь, тебя здесь нет.



AVK>>Однако я не пишу сюда пафосные письма о том что С++ никуда не годится.

S>Где я писал пафосные письмо? Давай, кидай ссылочки, я жду.

Повторяешься. Видать нервничаешь.

AVK>>У нас там много фишек. Даже их перечисление займет много места. Еще раз — что конкретно тебя интересует в контексте производительности JIT?

S>Ну например в этом контексте, хочеться хоть одну "фишку" увидеть, а то прошу-прошу...

Понятно, конкретных вопросов нет. Так и запишем.

AVK>>

у нас erp идёт с несколькими уникальными фичами, которые очень напрягают аппаратуру. Если их делать на C#, то они вообще сдохнут.
AVK>>...
AVK>>Из-за ряда уникальных фич она сильно напрягает компы, так что от C++ не убежишь.

S>Это что понт?

Не знаю. Я про понт не говорил. Я говорил про выводы, ен подкрепленные аргументами.

AVK>>Забавно это слышать от тебя. Я, значит нервный, а ты с холодным умом пишешь подобные штучки:

AVK>>

Вот класс, человеку говоришь, а в его воспаленном мозгу всё равно одна мысля бегает: "кругом враги!".

S>Конечно с холодным Ну действительно, "кругом враги".

Это был намек на то что хамить не следует.

AVK>>Увы, но ты здесь не обладаешь таким авторитетом, чтобы тебе верили на слово (я тоже не обладаю). Либо подтверждай свои слова фактами, либо не трепись почем зря.

S>Хоспади, мне что
S>

S>закатывать здесь конспект на десятки килобайт обо все что в проекте присутствует

S>чтобы убедите тебя, что нам C# не подощел.

А зачем народу знать о том что C# в вашем проекте не подошел, при том что ты не рассказываешь об этом проекте ничего? Какой смысл было вобще про это говорить?

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


А вот не приведу, начальника не разрешает

S>Я тебе не враг,


Я тоже.

S> я желею, что C# не подошел, но такова жизнь, у меня даже есть топик по erp и C# (где-то в проектировании), где я там опускал C#?, я да же соглашался с его выбором.


Извини, но за твоим творчеством я не слежу.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[70]: Чем становится C++?
От: alexeiz  
Дата: 05.01.05 18:47
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, Павел Кузнецов, Вы писали:


ПК>>Все то же самое на C++/CLI делается намного легче и быстрее. Некоторое время назад Microsoft проводили исследование, есть ли вообще достаточное количество кода на MC++, чтобы заботиться его поддержкой. Чем закончилось — без понятия. Планировавшаяся поддержка на тот момент заключалась в написании инструмента, преобразующего код на MC++ в код на C++/CLI. Этим транслятором на тот момент занимался Стэнли Липпман. Так что MC++ можно преспокойно сказать R.I.P. Никаких "долго", насколько мне известно, не ожидается. "И это правильно, товарищи"


Д>Если нет данных — значит, трактуем это исследование в свою пользу?


А в чём сомнения? Стэн свой транслятор успешно написал. Синтакс managed extensions for C++ по большей части однозначно переводится в C++/CLI.

>Уродлив он конечно... но для написания оберток MC++ хватает, а больше от него ничего и не требуется.

Д>C++/CLI пока еще не дошел до практического применения, так что делать любые выводы рано.

Уже сейчас в рамках, того что вышло с beta 1, компилятор VC++ поддерживает C++/CLI в достаточной мере, чтобы перекрыть возможности MC++.

>Хотя из того, что я видел — есть у меня подозрение, что он станет еще более overcomplicated, чем C++ и даже MC++.


В каком-то смысле C++/CLI — это продолжение идеологии C++ на мир CLI (тавтологию сказал ). Ничего там сложного нет. C++ фичи распостраняются на managed мир. Для тех, кто не видел в глаза MC++, C++/CLI должен показаться достаточно логичным и законченным (кстати, в следующей версии компилятора, когда так называемая unified type system будет до конца реализована, managed и unmanaged миры станут во многом мало различимы).

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


В каком смысле? Найдутся люди, что предпочтут MC++? Или ты думаешь, что компилятор C++/CLI так и не будет закончен?
Re[43]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 18:53
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Собственно вот:

AVK>Re[27]: Чем становится C++?
Автор: Shady
Дата: 04.01.05

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

AVK>Повторяешься. Видать нервничаешь.

Аш руки трясуться

AVK>Понятно, конкретных вопросов нет. Так и запишем.

Конкретных фич нема, так и запишем

AVK>Не знаю. Я про понт не говорил. Я говорил про выводы, ен подкрепленные аргументами.

У тебя таких так же нет. Ну я не смог вытащить не одного во всяком случаи...

AVK>Это был намек на то что хамить не следует.

? А вот это уже точно из пальца высосано. А хамишь мне кстате ты, но я тебя лицом в это не тыкал.

AVK>А зачем народу знать о том что C# в вашем проекте не подошел, при том что ты не рассказываешь об этом проекте ничего? Какой смысл было вобще про это говорить?

Ты так же про свой проект ничего не говоришь, вообще, ничегошеньки.

AVK>А вот не приведу, начальника не разрешает

Ну и "молчи" тогда

AVK>Я тоже.

Я рад но по наездам и обвинениям не видно

AVK>Извини, но за твоим творчеством я не слежу.

Эту "шпильку" я пропущу, ок?
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[43]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 18:59
Оценка:
Здравствуйте, AndrewVK, Вы писали:

Вообще полный офтоп у нас получился.
Давай переходить на конструктивный разговор?

Где твои проект выигрывает при применении C#?
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[44]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 19:21
Оценка:
Здравствуйте, Shady, Вы писали:

AVK>>Re[27]: Чем становится C++?
Автор: Shady
Дата: 04.01.05

AVK>>Смайлики на этом сообщении говорят о том что не я один так думаю.
S>Батенька, вы телепат? Или у вас модераторов есть такие функции, как показывать, к чему смайлики? Бред...

Опять хамишь.

AVK>>Не знаю. Я про понт не говорил. Я говорил про выводы, ен подкрепленные аргументами.

S>У тебя таких так же нет.

У меня вобще выводов нет, не забыл?

S> Ну я не смог вытащить не одного во всяком случаи...


И не должен был смочь.

AVK>>Это был намек на то что хамить не следует.

S>? А вот это уже точно из пальца высосано. А хамишь мне кстате ты, но я тебя лицом в это не тыкал.

Да что ты? Примеры будут?

AVK>>А зачем народу знать о том что C# в вашем проекте не подошел, при том что ты не рассказываешь об этом проекте ничего? Какой смысл было вобще про это говорить?

S>Ты так же про свой проект ничего не говоришь, вообще, ничегошеньки.

Так я его и в пример не привожу.

AVK>>Я тоже.

S>Я рад но по наездам и обвинениям не видно

Ты несогласие со своей точкой зрения воспринимаешь как наезд? Печально.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[44]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 19:25
Оценка:
Здравствуйте, Shady, Вы писали:

S>Где твои проект выигрывает при применении C#?


Мдя. Ты думаешь на такой вопрос возможно ответить внятно? Моментов много, многие я так сразу и не вспомню. Ну например механика деплоймента.
На неконкретные вопросы конкретно я ответить не смогу. Вот например на конкретный вопрос — были ли проблемы с производительностью или GC ответ дать можно.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[45]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 19:25
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


AVK>>>Re[27]: Чем становится C++?
Автор: Shady
Дата: 04.01.05

AVK>>>Смайлики на этом сообщении говорят о том что не я один так думаю.
S>>Батенька, вы телепат? Или у вас модераторов есть такие функции, как показывать, к чему смайлики? Бред...

AVK>Опять хамишь.

Опять бредовый вывод

Печально.


AVK>У меня вобще выводов нет, не забыл?

Тебя вобще тут нет. Ах да, опять скажешь, что хамлю.

AVK>И не должен был смочь.

Ну тогда и не лезь ты мне в душу своими придирками.

AVK>Да что ты? Примеры будут?

Делать мне что ли нефига (в отличии от тебя), запоминать каждый твой выпад и записывать его на листочик, что никогда не забыть Это то же хамство, не так ли?

AVK>Так я его и в пример не привожу.

Ладно, "горбатого могли исправит". Разговор не о чём ей богу.

AVK>Ты несогласие со своей точкой зрения воспринимаешь как наезд? Печально.

"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[45]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 19:27
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Мдя. Ты думаешь на такой вопрос возможно ответить внятно? Моментов много, многие я так сразу и не вспомню.

Какие у тебя фичи повязаны на C# (если ты конечно с 10 захода наконец что-то про них напишешь).

AVK>Ну например механика деплоймента.

А где тут выигрышь?

AVK>Вот например на конкретный вопрос — были ли проблемы с производительностью или GC ответ дать можно.

Ответь и по производительности, и по GC. Интерестно.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[46]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 19:44
Оценка:
Здравствуйте, Shady, Вы писали:

AVK>>Опять хамишь.

S>Опять бредовый вывод

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

AVK>>И не должен был смочь.

S>Ну тогда и не лезь ты мне в душу своими придирками.

Не нервничай, никто тебе в душу не лезет. Спокойней относись к тому что кто то с тобой не согласен и не переноси несогласие со своей точкой зрения на свою душу, личность и прочая.

AVK>>Да что ты? Примеры будут?

S>Делать мне что ли нефига (в отличии от тебя), запоминать каждый твой выпад и записывать его на листочик, что никогда не забыть

Понятно, примеров привести не можешь.

AVK>>Ты несогласие со своей точкой зрения воспринимаешь как наезд? Печально.

S>

Согласен
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[46]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 19:44
Оценка:
Здравствуйте, Shady, Вы писали:

AVK>>Мдя. Ты думаешь на такой вопрос возможно ответить внятно? Моментов много, многие я так сразу и не вспомню.

S>Какие у тебя фичи повязаны на C# (если ты конечно с 10 захода наконец что-то про них напишешь).

У меня все фичи повязаны на C#, поскольку на данный момент это основной язык разработки.

AVK>>Ну например механика деплоймента.

S>А где тут выигрышь?

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

AVK>>Вот например на конкретный вопрос — были ли проблемы с производительностью или GC ответ дать можно.

S>Ответь и по производительности, и по GC. Интерестно.

Нет, не возникало пока, хотя стресс-тесты делали с нагрузкой, превыщающей требования ТЗ на порядок. Порядка 150 суперпользователей сервер 2xXeonDP 1.8 с гигом памяти тянул вполне приемлемо. Единственный косяк по производительности, который был это SharpZipLib, используемый при компрессии ViewState, который оказался ужасно медленным при больших нагрузках.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[47]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 19:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Не нервничай, никто тебе в душу не лезет. Спокойней относись к тому что кто то с тобой не согласен и не переноси несогласие со своей точкой зрения на свою душу, личность и прочая.

Что советую и тебе.

AVK>Понятно, примеров привести не можешь.

Понимай как хочешь. Ах да, не хами, ок?
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[48]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 20:12
Оценка:
Здравствуйте, Shady, Вы писали:

AVK>>Не нервничай, никто тебе в душу не лезет. Спокойней относись к тому что кто то с тобой не согласен и не переноси несогласие со своей точкой зрения на свою душу, личность и прочая.

S>Что советую и тебе.

Зачем? Я не считаю что ты лезешь мне в душу.

AVK>>Понятно, примеров привести не можешь.

S>Понимай как хочешь. Ах да, не хами, ок?

Ссылок на мое хамство я так и не дождался
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[49]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 20:16
Оценка: -2
Здравствуйте, AndrewVK, Вы писали:

AVK>Ссылок на мое хамство я так и не дождался

Ты что, совсем непонятливый? Ах да, заранее извени за хамство
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[49]: Чем становится C++?
От: Shady Россия  
Дата: 05.01.05 20:17
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

Всё ладно, надоело запаться, "мир, дружба, жвачка"? Если я там где-то хамил, извени.
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[24]: Чем становится C++?
От: alexeiz  
Дата: 06.01.05 01:36
Оценка:
Для тех, кто не согласен или сомневается, вот небольшой tutorial о том, как анализировать working set of .NET приложений: http://blogs.msdn.com/akhune/archive/2004/06/11/153734.aspx. Настоятельно рекомендую попробовать эти методы на своём любимом приложении.
Re[65]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 04:18
Оценка:
Здравствуйте, alexeiz, Вы писали:

...

Я вот тоже долго ждал когда С++ начнут причесывать. Сегодня уже не жду. Понял, что никогда. Все похоже будет только еще хуже. Фичи будут сувать до потери пульса, а на сбалансированнось и непротиворичивость никто обращать внимания похоже не будет.

A>ни один из них не "вставляет."


Значит просто пока не вкурил.

A> Не родился еще dragon slayer version next. Хотя я очень надеюсь, что C++/CLI (точнее C++/CLI + STL.NET) будет катализатором для этого рождения. Основание я вижу в том, что в C++/CLI делаются попытки (пусть и неявные) вынести работу в стиле C в отдельный подкласс языка. Кстати, он уже положительно влияет на стандарт C++ (nullptr, enum class), за что ему большой плюс.


Ой зря вы надеетесь на C++/CLI.
1. Для программирования анменеджед-приложений он врядли когда будет приспособлен.
2. В чистых режимах (пьюр и сэйф) он будет урезан практически до возможностей Шарпа.
3. Для создания дотнет-ных приложений все навороты С++ без надобности. Код на МС++ и C++/CLI выглядит ужасно засусоренным и практически ничего не дает.

В итоге C++/CLI — это замечательная маркетинговая уловка призванная привести на платформу дотнета непримиримых С++-ников (тех кто не хочет или не может изменить привычки).

По делу C++/CLI можно будет использовать в основном как средство портирования С++-ного кода (ну, и средство облегченного создания оберток). Вот только почему-то народ дико не любит такие решения и всеврмя старается портировать все на Шарп.

ЗЫ

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

Метапрограммирование возможно и без шаблонов. Причем вы еще окажетесь меньше связанными условностями. Один фиг 99% С++-программистов способны только потреблять плоды метапрограммирования, а сами приктически не способны на подобные финты ушами.

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

ПК>Если ты о C++/CLI, то это тоже не совсем так: это одноплатформенные расширения C++.


C++/CLI имет два режима в кторых он порождает чистый мсильные сборки. Как минимум один из режимов будет позволять переносить сборки на любую совместимую платфрму (например, на Моно). Так что фигня это. А скомпилировать можно и из под виртуальной машины (если уж очень виндовс не любишь).

ПК>C#... Речь шла о языке, сохраняющем принятые в C++ идиомы.


С целью? Тут вот человек говорит что С++-ники пишут в С-стиле. Зачем добиваться того же для Шарпа?

ПК> C# здесь и рядом не лежал.


Правильно рядом лежал С++. Так и будет воляться.

ПК> Ни полноценных шаблонов, ни детерменированного разрушения объектов, ни "свободных" функций, ни многого другого.


Догмы, догмы. Все же пора попробовать... глядишь они и развеются.


>> Но, в любом случае — начало положено.


ПК>Влияние C++ несомненно, впрочем, как и некоторых других языков, но вот утверждать, что это является развитием C++ явно неверно.


А кто это утверждает?

ПК> Это начало совсем другому языку, со своими, другими, чем в C++, идиомами.


Ну, уж совсем другим это ты загнул. Из всех имеющихся языков он пажалуй ближе всего к хорошим сторонам С++.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[69]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 04:18
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК> Чем закончилось — без понятия.


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

ПК>В таком случае "безопасные" указатели семантически отличась бы от ссылок, пожалуй, только тем, что могли бы быть нулевыми.


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

ПК>Кроме того, для "безопасных" указателей влет вводится опциональная сборка мусора, которую с "низкоуровневыми" указателями организовать несколько сложнее...


Вот это фиг. Для эффективной сборки мусора нельзя вообще допускать взятие адреса у частей обекта. Тот же дотнет допускает такие действия только в двух случаях:
1. Указатель находится в стэке.
2. Основной объект зафиксирован (не может быть передвинут ЖЦ).

Причем в умных местах пишут, что даже указатель в стэке серьезно снижает производительность. Так что то что сделано в МС++ и C++/CLI — это и есть разумное, рельное решение. Другое врят ли появится.

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


Вот именно. Думаю, ты и сам понимашь, что Шарп не с дури такой кокой он есть.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[64]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 04:18
Оценка:
Здравствуйте, Shady, Вы писали:

VD>>Типа "- Нафиг с поинтерами химичил? — А я не ошибаюсь...".

S>Класс, себе в цитатник положу!

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

ПК>>>На работе пробуют. "Ежики плакали, кололись, но продолжали жрать кактус".

VD>>Не жрать, а грызть. Но сути дела это не меняет. Кактусы начинают нравится после 30.
ГВ>Любопытное наблюдение... Мне 33, а кактусы, почему-то, так и не начали нравиться?

Шутук.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[47]: Чем становится C++?
От: Дарней Россия  
Дата: 06.01.05 05:04
Оценка: 16 (1)
Здравствуйте, AndrewVK, Вы писали:

AVK>Единственный косяк по производительности, который был это SharpZipLib


Рекомендую Crypto++ сжатие там тоже есть
пусть и unmanaged, но библиотека отличная и никаких косяков за ней замечено не было
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[38]: Чем становится C++?
От: Дарней Россия  
Дата: 06.01.05 05:10
Оценка:
Здравствуйте, Shady, Вы писали:

S>Здравствуйте, Дарней, Вы писали:


Д>>Если отвлечься от модной терминологии, то все-таки толстый?

S>Он полу-толстый, нет для него терминологии Какая-то часть логики происходит на клиенте, при отсутсвии связи с сервером, всё на нём происходит. Но это сделано так хитро, что код бизнес логики не разрывается на клиентскую и серверную часть. Так что это смарт всё же — при соединении с сервером некоторые операции происходят на нём, при отсутствии соединения, на клиенте, но затем перепроверяются на сервере.

Д>>Так между серверами, или между клиентскими машинами?

S>Серверами конечно

Честно говоря, не вижу ничего уникального. Аналогичный подход в КИС используется на фирме, где я раньше работал — уже лет 8 как используется, если не больше.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[38]: Чем становится C++?
От: Дарней Россия  
Дата: 06.01.05 05:12
Оценка:
Здравствуйте, Shady, Вы писали:

S>Уже два На самом деле больше, на линюхе я еще два видел Просто лень в гугле рыться...


угу. слово sharp я не просто так выделил.

S>Непонял этого выражения? Где я записал всех оппонентов в раздел "не знают С++"?


Прямо вот здесь:

Если двое опытных людей в С++ со свободным временем найдутся, то они и сделают


S>? У нас разные представления о зачинщиках (я может то же в этом отметился, тут даже ветка моя есть, хотя это всего лишь был вопрос), но вроде уже притча есть, как Влад C# защищяет


Правильно делает
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[71]: Чем становится C++?
От: Дарней Россия  
Дата: 06.01.05 05:16
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>В каком-то смысле C++/CLI — это продолжение идеологии C++ на мир CLI (тавтологию сказал ). Ничего там сложного нет. C++ фичи распостраняются на managed мир. Для тех, кто не видел в глаза MC++, C++/CLI должен показаться достаточно логичным и законченным (кстати, в следующей версии компилятора, когда так называемая unified type system будет до конца реализована, managed и unmanaged миры станут во многом мало различимы).


посмотрим. Хотя меня все равно грызут сомнения, что из попытки скрестить ежа с ужом может получиться хоть что-то путное.

A>В каком смысле? Найдутся люди, что предпочтут MC++? Или ты думаешь, что компилятор C++/CLI так и не будет закончен?


Я думаю, что писать что-то серьезное на нем все равно не будут. Ибо не имеет смысла.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[68]: Чем становится C++?
От: Павел Кузнецов  
Дата: 06.01.05 05:25
Оценка: +3 -1
VladD2,

> ПК> Если ты о C++/CLI, то это тоже не совсем так: это одноплатформенные расширения C++.


> C++/CLI имет два режима в кторых он порождает чистый мсильные сборки. Как минимум один из режимов будет позволять переносить сборки на любую совместимую платфрму (например, на Моно).


CLI — это и есть та единственная платформа, на которую ориентирован C++/CLI. .Net и Mono — ее реализации.

> ПК> C#... Речь шла о языке, сохраняющем принятые в C++ идиомы.


> С целью? Тут вот человек говорит что С++-ники пишут в С-стиле. Зачем добиваться того же для Шарпа?


От C# ничего добиваться не надо. Речь идет о другом языке, поддерживающем идиомы C++.

> ПК> Это начало совсем другому языку, со своими, другими, чем в C++, идиомами.


> Ну, уж совсем другим это ты загнул. Из всех имеющихся языков он пажалуй ближе всего к хорошим сторонам С++.


У всех свое видение хороших (равно как и плохих) сторон C++. В моем — C# большую часть из них оставил за бортом, т.к. во многом потерял черты C++, ориентированные на усиление статической типизации (const, ссылки, шаблоны и т.п.).
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[67]: Чем становится C++?
От: Павел Кузнецов  
Дата: 06.01.05 05:46
Оценка: +1
VladD2,

> ПК>В таком случае "безопасные" указатели семантически отличась бы от ссылок, пожалуй, только тем, что могли бы быть нулевыми.


> Ну, вот ты и домечтался до ссылочных типов.


Ссылки C++ и ссылочные типы C# — две большие разницы.

> В самом деле зачем вообще нужны взятие адреса и разыменаование если компилятор и так понимает где объект, а где ссылка на него?


Мне все равно, что там понятно компилятору. Для меня более важным является понятность кода для человека. Например, если считать, что следующее является фрагментом кода из языка, в котором есть разделение на ссылочные и value-типы:
void f(T a)
{
   T b = a;
   b.x = 10;

   // чему здесь равно a.x?
}

Ответ зависит от того, что из себя представляет T.

В общем, мне намного больше нравится, если не определение типа определяет копирующую/ссылочную семантику использования, а это происходит более явно, по месту:
void f(T const& a)
{
   T b = a;
   b.x = 10;

   // очевидно, что a.x не изменилось
}

другой вариант:
void f(T const& a)
{
   T& b = a; // так сделать нельзя
   b.x = 10;
}

третий вариант:
void f(T a)
{
   T& b = a;
   b.x = 10;

   // очевидно, что a.x == 10
}

А если еще и шаблоны вспомнить, и представить, что это все дело внутри шаблонов... Ах, ну да, в C# же нет полноценных шаблонов...

> ПК> Кроме того, для "безопасных" указателей влет вводится опциональная сборка мусора, которую с "низкоуровневыми" указателями организовать несколько сложнее...


> Вот это фиг.


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

> Так что то что сделано в МС++ и C++/CLI — это и есть разумное, рельное решение. Другое врят ли появится.


Уже давно существует. Реализации сборки мусора для C/C++ появились раньше, чем CLI/.Net в планах нарисовался. Естественно, пользоваться ими менее комфортно, чем более тесно интегрированными с языком. Но и мы обсуждали не C++, а другой, воображаемый язык, который вполне мог бы отличаться от C++, позволяя более легко ввести сборку мусора.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[66]: Чем становится C++?
От: Павел Кузнецов  
Дата: 06.01.05 06:10
Оценка: 1 (1) +1 :)
VladD2,

> Ой зря вы надеетесь на C++/CLI.

> 1. Для программирования анменеджед-приложений он врядли когда будет приспособлен.

Ну так и C# это вряд ли светит...

> 2. В чистых режимах (пьюр и сэйф) он будет урезан практически до возможностей Шарпа.


Но с детерменированным разрушением объектов, шаблонами, свободными функциями, и более развитой объектной моделью. Что уже немало.

> В итоге C++/CLI — это замечательная маркетинговая уловка призванная привести на платформу дотнета непримиримых С++-ников (тех кто не хочет или не может изменить привычки).


Уже давались
Автор: Павел Кузнецов
Дата: 20.11.04
ссылки...

Yes, managed code is the direction we are going in moving forward for all the places where it makes sense. However extrapolating that to mean C# is simply not true. We are spending a lot of resources to make sure C++ is a primary development language on the .Net platform and are seeing a lot of internal adoption of C++ to write managed code inside of Microsoft. In the RTM version the primary focus of MC++ is to enable you take integrate easily with existing code, but in future releases you will see us focusing much more on making C++ take up the traditional role it serves role as the high end language for system level programming and for expert level programming on the .Net platform.

Вкратце: Майкрософт не планирует переводить основные разработки на C#. Основная часть приложений Майкрософт делается и будет делаться на C++. Для этих нужд C++/CLI и создан. А маркетинг... Это скорее то, что сопутствует C# или Java
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[28]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 07:02
Оценка:
Здравствуйте, Shady, Вы писали:

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


AVK>>Интересно, что ж это за софт такой? Как называется? Если это коробка, то никаких причин скрывать его название я не вижу.

S>Софт разрабатывается, оффициального названия нет, есть кодовое "платформа". Мой работодатель не позволяет мне раскрывать больше информации.

ERP с 10000 клиентов не имеющих денег на железо пятилетней давности, да еще и не выпущенная еще.

В общем, ты чем мозги нам пудрить приглоси сюда своего начальника. Глядишь он что-то обяснит, или сам поймет.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[29]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 07:02
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здорово. Софта нет, клиентов нет,


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

AVK>>Самый дорогой софт — серверный.


A>Самый дорогой или самый прибыльный?


Это зависит от того покупаеш ты его или продаешь.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[32]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 07:02
Оценка:
Здравствуйте, Shady, Вы писали:

S>Что у вас за фичи уникальные? По описанию/юзанью вашего софта я их не увидел, это не издевательство, я серьёзно, конкурента, так сказать, узнать


Сдается мне твоей случай как раз тот о котором тут так часто любят рассказывать С++-програмиисты (особнно ГВ).

Нравится мне твоя самоувереннсоть. У тебя сложные фичи, а сотсальные щи лаптем хлебают. Хотя да... у тебя же этот... как его... опыт.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[26]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 07:02
Оценка:
Здравствуйте, Shady, Вы писали:

S>Вот JIT улучшат, вот тогда посмотрим.


Думаю, что ты даже приблизительно не соизмеряешь скорость джита и те проблемы производительности которые вы вносите в свои приложения просто выбором не очень оптимальных стратегий или алгоритмов. А уж столько вы теряете на дизайне...
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 07:02
Оценка: -2
Здравствуйте, Shady, Вы писали:

VD>> Ты бы хоть в профайл глянул.

S>Ну а что тогда бред пишешь?

[офтоп]
Интересно, Паша у нас плюсы ставит всегда когда хамство в мою сторону заметит, или это чисто случайные совпадения?
[/офтоп]

Ну, да кто из нас бредит, думаю, видно не вооруженным взглядом. Вот10000 клиентов в Моске у еще не выпущенной ERP-системы — это форменный бред. Я бы даже сказал бред сивой кобылы.

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

VD>>И скажу тебе по сикрету, что дизайнерских студий кот наплакал. На них бабки не сделашь. Основные инсталяции Фотошопа — это обычне контроы. Почти везеде нужно кратинку пдрихтовать или буклетик сверстать.

S>Тьфу, я чуть не поперхнулся! Ты о КАКОЙ стране говоришь? О России? То да, тут у всех софт за 80 рэ. На западе, чтоб картинку подретушировать используют не Фотошоп, а что подешевле, они не идиоты, выкладывать 649$.

Про пиратов и про Россию даже говорить нечего. Тут количество маков недотягивает и до долей прцента.

S>Знаешь что, действительно, у тебя наблюдается тенденция абсолютизма:

S>вот не получилось у тебя с С++,

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

S> значит всё, язык хуже всех на свете для всех. Если ты редактор и у тебя в издательстве нет Маков, значит всё, не у кого их нет и т.д. и т.п.


Блни, провидец. Ты лучше чем сомневаться в чужих словах сначала научись врать складно. А то у меня живот болит от смеха с тех пор как я твои посты про 10000 неродившихся клинтов и страшную буржуинскую тайту прочел.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[64]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 07:02
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


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

ПК>Потому что я не соглашаюсь с частными утверждениями,


А, ну, да. Поспорить о том 90% или 99.999. Вот это достойный спор.

ПК> обычно приводя аргументы,


Ненадо песен. Аргументы эти за аргументы воспринимают только те кто сами от уровня плюсов оторваться не могут.

ПК> а ты порой приписываешь мне высказывания (обычно о "глобальных" вещах), которых я не делал.


А, ну, ну.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[65]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 07:02
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>.Net — не язык, если речь не идет о MSIL. А так... По пунктам, пожалуйста. Одно, случайно попавшее, заметил сам: dynamic_bitset.


Обучать тебя в интерактивном режие дотнету у меня нет времени. Прочти рихтера, статей с нашего сайта, думаю 90% вопросов исчезнут сами собой.

>> Все эти "concept check" и "static_assert" рядом с возможностями R# не лежали.


ПК>R# мы не обсуждаем.


А что мешает?

ПК> Препроцессоры можно к любому языку прикрутить.


И что позволят тебе пользоваться убогим препроцессорм С++ (если ты не понял — это я и о шаблонах) и не взять на вооружение кода более мощьные вещи?

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


ПК>Все зависит от задач. Для простеньких вещей генераторы парсеров — overkill.


Чущь. Я с успехом применял их и для примитивного парсинга. Это быстрее и удобнее чем вознят со спиритом. Чтобы создать парсер нужно знать теорию и для использования спирита, и для использования кокора. Так что затраты сил идентичны. А вот результат всегда лучше у генератора.

>> 1. Я лично вылавливал две недели одну тревильную (казалось бы) ошибку. Причем посодил ее не я.


ПК>Да, иногда бывает. Я сравнительно недавно описывал как раз такую: http://rsdn.ru/Forum/Message.aspx?mid=650616&amp;only=1
Автор: Павел Кузнецов
Дата: 22.05.04


Неоткрывается.

ПК>Одна из трех за последние более чем пол-года. Эта была самой долгой в диагностике, часа 3-4, наверное. В сумме с остальными двумя можно увеличить до одного дня. Я готов столько накинуть на любой проект ради тех вещей, которые мне нравятся в C++. Никаких особых страданий по этому поводу я не испытываю: ошибки, как ошибки.


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

ПК>Значительно больше неприятностей доставляют логические ошибки, когда при проектировании пропускается какой-нибудь существенный use case,


Я уже устал повторять... но логические ошибки и ошибки проектировани тоже проще устранять на более высокоуровневх языках нежели на С++. Я за последние 4 дня перелопатил весь R# 6 раз. На плюсах мне такое и не снилось. Давича для удаления старого (рукописного кода) добавил в CodeAnalizet (ГУИёвую утилиту из R#-а) рефактроинг на базе XPath запросов. Писал это дело часа 3... потом за 0.6 секунды решил задачу. Вот кстати, запросик:

//class[rs:IsInheritedFrom('RSParser.CodeDom.AstNode') and @Name != 'RProject' and @Name != 'RCompileUnit']//ctor[not(./CustomAttributeSections/attribute-section/AttributeDeclarations/attribute[@Name = 'Handwork'])]/Statements


Выбирает весь код (если он есть) конструкторов не помеченных атрибутом Handwork классов наследников RSParser.CodeDom.AstNode кроме RCompileUnit и RProject.

Попробуй ради хомхмы повторить это на плюсах.

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

ПК> и нужно затрагивать некоторые аспекты дизайна, тяжело поддающиеся изменению. Тогда, да, приходится напрячься. Но плюс-минус то же самое будет и в C#/Java/Whatever.


Отнюдь. Плюсы оттдыхают в каенном веке.

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


ПК>Да, это положительные стороны. Для меня их недостаточно, чтобы скомпенсировать отрицательные.


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

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

>> Ну, да. До тех пор пока не начали его сдовать. А как ближе к релизу, так... где там Баундчекер?... Какой критин... и т.п.


ПК>У себя в проектах я такого не наблюдаю.


Значит до релиза еще есть время.

ПК>Проще далеко не всегда. Маленькие вещи — да, проще.


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

ПК> Но в основном не из-за безопасности, а из-за 1) динамической типизации;


А я то болван, все по старинке пытаюсь максимально жить со статической. Правда, Паша, в том, что динамичекая типизация и тому подобные вещи — это вынужденный компромис дизайна. И обойти его не всилах ни ты, ни я (ни на С++, ни на Лиспе). И тут наличие качественного рантайма конечно способствует упрощению жизни. Однако во многих случаях рарод занимается распихиваением приведений типов по всему коду только от безграмотности. Всякие итераторы и посетители решают 90% проблем даже без дженериков. А уж с ними и вообще подобные проблемы становятся проблемой кривых рук. Ну, а разу уж речь о кривых руках, то я предпочту, чтобы за ними (даже если это мои руки) следил бескомпромисных рантайм, а не надзиратель проверяющий применение паттернов.

ПК> 2) более быстрого цикла разработки (не нужно компилировать, линковать и т.п.).


От тут немгу не согласиться. Это несомненно правда. И те кто не прониклись даже не представляют насколько ускоряется цикл!

ПК> Когда проект дорастает до определенных размеров, становится заметно сложнее.


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

ПК> Плюс, Шарпу до Питона по части многих возможностей, меня интересующих, еще расширяться нужно.


Это каких же? Никак отсуствие строгой типизации, обязательного объявления переменных, десятикрантый проигрыш в скорости?
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[64]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 07:02
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


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

ПК>Еще раз: ошибался, халтурил и т.п. Но мне интересны языки, предоставляющие больше возможностей, а не усекающие их ради "безопасности".


Ой ли? А не ты ли обертываешь все указатели в обертки? Что же это за ограничение такое, снимающее с тебя рутину?...

ПК> "Безопасность" появляется на горизонте при прочих равных, чего в данном случае и близко не наблюдается.


Расскажи нам про "близко не наблюдается" и "при прочих равных" ты все время упрекаешь меня в том, что я за тебя домысливаю. Вот как раз тот случай. Ты вроде как высказался негативно о чем-то. И это что-то явно C# + дотнет. Но прямо ведь ты не говоришь. Ну, давай или выскжись прямо, или скажи, как всегда "ничего подобного я не говорил/думлал" и мы все поймем, что это просто "слова в небо".

ПК>Скажем, если бы C++ остался бы тем же, что сейчас, но пресловутая арифметика указателей была бы вынесена в какой-нибудь "unsafe", наверное, был бы "за" (хотя, имхо, есть более удачные альтернативы). Плюс еще ряд улучшений не повредил бы. Но с сохранением возможности использования наработанных в C++ приемов.


А ты уверен что верно оценивашь количество того что нужно удалить из С++ (вынести в ансэйф)? Я вот уже 100%-но уверен, что проще недостающие вещи добавить в C#. Ведь практически все проблемы С++ в нем устранены.

ПК>C# — не тот случай.


Чем же? Поведай нам незнайкам. Как же мы умудряемся писать на нем быстрее и качественее? Может мы не знаем некий "дзен"?

ПК>Его обстругали значительно более радикально. Generics уже, правда, добавили. Если еще подобавляют, может, и будет иметь смысл на него еще посмотреть...


Ай, снобизмом тянет... Так, все же может ты выключишь этот снбизм и перечислишь что тебе нехватает в C# кроме метапрограммирования на шблонах (условимся, что R# уже сейчас дает значительно больше в этой области чем они)? Да, подключение реализаций (в том числе и к вэлью типам) R# тоже реализаует элементарно. Так что там тебе еще мешает? conast для локальных переменных? Несмешите мои тапочки.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[27]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 06.01.05 09:55
Оценка: +1
Здравствуйте, VladD2, Вы писали:

S>>Вот JIT улучшат, вот тогда посмотрим.

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

Я не знаком с Shady, но ИМХО, Влад, ты несколько поспешно делаешь свои предположения. Или, это уже выводы?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[65]: Чем становится C++?
От: Павел Кузнецов  
Дата: 06.01.05 14:35
Оценка: +2
VladD2,

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


> Ну, и про отсуствие необходимости в компонетных фичах ты тоже не говорил?


Нет. Последнее, что я по этому поводу помню, касалось отсутствия у меня необходимости в компонентности самой по себе.

> Или ни они ли делают модульность реальной?


Не только они.

> Или мы за модульность монолитного типа? На уровне исходников?


И это тоже. Но обычно предпочитаю оборачивать модули своих программ в DLL (без COM).

> ПК> Еще раз: ошибался, халтурил и т.п. Но мне интересны языки, предоставляющие больше возможностей, а не усекающие их ради "безопасности".


> Ой ли? А не ты ли обертываешь все указатели в обертки?


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

> ПК> "Безопасность" появляется на горизонте при прочих равных, чего в данном случае и близко не наблюдается.


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


Я уже устал это перечислять. Писал больше одного раза в данной теме в прямых ответах на твои сообщения, чего именно мне не хватает в C# или Java.

> ПК> C# — не тот случай.


> Чем же?


Тем, что не сохраняет наработанные в C++ идиомы: "с сохранением возможности использования наработанных в C++ приемов. C# — не тот случай.".

> ПК> Его обстругали значительно более радикально. Generics уже, правда, добавили. Если еще подобавляют, может, и будет иметь смысл на него еще посмотреть...


> Ай, снобизмом тянет...




> Так, все же может ты выключишь этот снбизм и перечислишь что тебе нехватает в C# кроме метапрограммирования на шблонах (условимся, что R# уже сейчас дает значительно больше в этой области чем они)?


1) R# меня (по крайней мере, пока) не интересует, так же как и другие дополнительные препроцессоры, т.к. не распространен в достаточной степени, чтобы быть доступным везде, где доступен сам язык.

2) В C# мне не хватает большей ориентированности на статическую, а не динамическую, типизацию (да, и const тоже), плюс поддержки многих идиом, которые мне нравятся в C++. Для последних нужны: свободные функции, детерменированное разрушение объектов, шаблоны, явные ссылки и указатели, а не разделение на ссылочные и value-типы, композиция классов множественным наследованием и наследованием от шаблонов безо всяких виртуальных функций, стало быть и полноценные шаблоны.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[66]: Чем становится C++?
От: Павел Кузнецов  
Дата: 06.01.05 14:51
Оценка: 20 (2)
VladD2,

> ПК> .Net — не язык, если речь не идет о MSIL. А так... По пунктам, пожалуйста. Одно, случайно попавшее, заметил сам: dynamic_bitset.


> Обучать тебя в интерактивном режие дотнету у меня нет времени. Прочти рихтера, статей с нашего сайта, думаю 90% вопросов исчезнут сами собой.


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

> ПК> Я сравнительно недавно описывал как раз такую: http://rsdn.ru/Forum/Message.aspx?mid=650616&amp;only=1
Автор: Павел Кузнецов
Дата: 22.05.04


> Неоткрывается.


Наверное, из-за чудес с доменами. Можно попробовать так: http://www.rsdn.ru/Forum/Message.aspx?mid=650616&amp;only=1
Автор: Павел Кузнецов
Дата: 22.05.04
или так: http://gzip.rsdn.ru/Forum/Message.aspx?mid=650616&amp;only=1
Автор: Павел Кузнецов
Дата: 22.05.04


> ПК>Одна из трех за последние более чем пол-года. Эта была самой долгой в диагностике, часа 3-4, наверное. В сумме с остальными двумя можно увеличить до одного дня. Я готов столько накинуть на любой проект ради тех вещей, которые мне нравятся в C++. Никаких особых страданий по этому поводу я не испытываю: ошибки, как ошибки.


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


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

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


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

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


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

> ПК> Плюс, Шарпу до Питона по части многих возможностей, меня интересующих, еще расширяться нужно.


> Это каких же? Никак отсуствие строгой типизации, обязательного объявления переменных, десятикрантый проигрыш в скорости?


В данном случае речь шла о приемах функционального программирования, по которым Питон, на мой взгляд, далеко "обходит" C#.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[68]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.01.05 21:05
Оценка: -2
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>VladD2,


>> ПК>В таком случае "безопасные" указатели семантически отличась бы от ссылок, пожалуй, только тем, что могли бы быть нулевыми.


>> Ну, вот ты и домечтался до ссылочных типов.


ПК>Ссылки C++ и ссылочные типы C# — две большие разницы.


С этим никто не спорит. Просто ты в своих поисках идиала в плотную подобрался к ссылкам в C#.

>> В самом деле зачем вообще нужны взятие адреса и разыменаование если компилятор и так понимает где объект, а где ссылка на него?


ПК>Мне все равно, что там понятно компилятору.


Дык чем меньше шума в коде, тем проще его воспринимать.

ПК> Для меня более важным является понятность кода для человека. Например, если считать, что следующее является фрагментом кода из языка, в котором есть разделение на ссылочные и value-типы:

ПК>
ПК>void f(T a)
ПК>{
ПК>   T b = a;
ПК>   b.x = 10;

ПК>   // чему здесь равно a.x?
ПК>}
ПК>

ПК>Ответ зависит от того, что из себя представляет T.

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

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

ПК>В общем, мне намного больше нравится, если не определение типа определяет копирующую/ссылочную семантику использования, а это происходит более явно, по месту:

ПК>
ПК>void f(T const& a)
ПК>{
ПК>   T b = a;
ПК>   b.x = 10;

ПК>   // очевидно, что a.x не изменилось
ПК>}
ПК>

ПК>другой вариант:
ПК>
ПК>void f(T const& a)
ПК>{
ПК>   T& b = a; // так сделать нельзя
ПК>   b.x = 10;
ПК>}
ПК>

ПК>третий вариант:
ПК>
ПК>void f(T a)
ПК>{
ПК>   T& b = a;
ПК>   b.x = 10;

ПК>   // очевидно, что a.x == 10
ПК>}
ПК>


Это потому что ты привык к этому убожеству. Еще раз повторюсь... все это мусорный шум мешающий воспринимать реальную суть приложения.

В реальном программировании 98% объектов являются ссылочными (я не шучу). Те что что являются вэлью-типми обычно имеют выраженный вэлью-характер. С ними обычно работаешь очень похоже на встроенные примитивы вроде int. Например, для работы с датами используется структура DateTime. У нее просто нет модифицирующих операций. Все операции возвращают новое значение. Так что ошибиться невозможно. И это характерно для большинства структур.

Ну, а что до твоих примеров, то подставь любой примитивный тип и ты получишь в С++ ту же проблему, что и поисывал в Шарпе.

ПК>А если еще и шаблоны вспомнить,

ПК> и представить, что это все дело внутри шаблонов...

То ничего ровным счетом не изменится.

ПК> Ах, ну да, в C# же нет полноценных шаблонов...


Ах, ну, да... Как же не наехать при случае?

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

>> ПК> Кроме того, для "безопасных" указателей влет вводится опциональная сборка мусора, которую с "низкоуровневыми" указателями организовать несколько сложнее...


>> Вот это фиг.


ПК>Не "фиг", а читаем любую книжку по сборке мусора.


Хоть обчитайся. Фиг он и в Африе фиг.

ПК> Вводится не напрягаясь.


Чушь. Очень напрягаясь и приводит к большому количеству ограничений. Иначе получаются уроды "о которых пишут в крижках".

ПК> По сути, главным ограничением для введения сборки мусора в C++ (с формальной точки зрения) является возможность маскировать указатели, скажем, записывая их в файл, а потом считывая.


По сути ты опять начинашь говорить о проблеме которую знаешь очень поверхностно. Я к сожалению тоже не большой спец в ней. Но даже то что зная на сегодня я наводит меня на мысль, что создать качественную реализацию ЖЦ очень тяжело (а скорее невозможно) без существенного ограничения адресной арифметики. И что реализации ЖЦ от МС или Сана — это одни из самых качественных реализаций из имеющихся. И ребята из этих контор знают что делают. Вот что пишит один сведующий товарищь по поводу ссылок в Роторе:

Interior References

For convenience, we allow the stack to reference an object by the address of one of its members instead of its beginning. It makes ByRef implementation convenient. This complicates the mark phase because GC can’t set the bit of the DWORD pointed to by the reference anymore. An extra argument passed by the code manager to GC tells GC that the reference may be interior and GC will search through its data structure to locate the beginning of the object. Since this is a costly process, only stack locations are allowed to contain interior references.


>> Так что то что сделано в МС++ и C++/CLI — это и есть разумное, рельное решение. Другое врят ли появится.


ПК>Уже давно существует. Реализации сборки мусора для C/C++ появились раньше, чем CLI/.Net в планах нарисовался. Естественно, пользоваться ими менее комфортно, чем более тесно интегрированными с языком.


Да нельзя ими пользоваться. Задница это. Эксперементы свободных художников, так сказать. А нужно решение промышленного качества. И когда над таковым начинают работать, то плучается нечто вроде ЖЦ в дотнете или Яве. И все потому что есть рельные сложности, а не от криврукости или скудоумия. У разработчиков С++ таких ресурсов попросту нет. А крутые конторы вроде IBM и МС на подобные исследования грантов вроде в последнее время не даеют.

ПК> Но и мы обсуждали не C++, а другой, воображаемый язык, который вполне мог бы отличаться от C++, позволяя более легко ввести сборку мусора.


Дык, чудак ты человек, я тебе и говорю, что есть реальные проблемы в реализации ЖЦ. И они начинают давлеть на дизайн языка/рантайма. Дотнет и C# — это компромис. Причем очень достойный. Сделать лучше конечно всегда можно. Но нужно понимать, что это архи-сложно.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Блин!
От: Шахтер Интернет  
Дата: 07.01.05 21:04
Оценка: +1
Здравствуйте, Alex Reyst, Вы писали:

AR>Здравствуйте, Павел Кузнецов, Вы писали:


ПК>>Да-да! А еще ножи бывают настоящие, "опасные", а бывают пластиковые, "безопасные"


AR>Пластиковые ножи, искусственные елки, безалкогольное пиво и технология .NET — вот что ведет человечество к надувным резиновым женщинам и биологическому краху!

AR>

Смех смехом, но всё вышеперечисленное -- действительно знаки разложения и деградации современного общества. Лучший способ защититься от изнасилований -- кастрировать всех мужчин при рождении. Что нам поборники .Net и предлагают.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[19]: Чем становится C++?
От: Шахтер Интернет  
Дата: 07.01.05 21:04
Оценка: +1 -1
Здравствуйте, VladD2, Вы писали:

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


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


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


Не свисти. Сказки будешь рассказывать в другом обществе.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[28]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.01.05 21:58
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Я не знаком с Shady, но ИМХО, Влад, ты несколько поспешно делаешь свои предположения.


В самый раз.

ГВ>Или, это уже выводы?


Диагноз.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[29]: Чем становится C++?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 08.01.05 09:34
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>Я не знаком с Shady, но ИМХО, Влад, ты несколько поспешно делаешь свои предположения.

VD>В самый раз.

Ну да... на RSDN-философия свои нормы относительно своевременности преположений.

ГВ>>Или, это уже выводы?

VD>Диагноз.

Не занимайся самолечением.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[43]: Чем становится C++?
От: LSL  
Дата: 09.01.05 12:11
Оценка:
Здравствуйте, VladD2, Вы писали:

ПК>> Generic programming куда?


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


Пытаюсь разобраться что такое "статическая/динамическая типизация".

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

Например, C# и Java требуют явно указать тип при приведении "сверху вниз", C++ не требует. Он менее типизирован, но всё равно считается сильно типизированным.

Также слышал про "статическое/динамическое связывание" — время, когда происходит отождествление типа с методом. Статическое — во время компиляции, динамическое — во время выполнения. Благодаря динамическому связыванию существует полиморфизм. И опять же и в C# и в C++ есть динамическое связывание.

Что же такое "статическая/динамическая типизация". ?

Если я что-то напутал, поправь. Пытаюсь разобраться...
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[41]: Чем становится C++?
От: Astaroth Россия  
Дата: 09.01.05 12:19
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>В итоге, похоже, поближе познакомлюсь с PHP


О да, потрясающий язык Мечта халявщика
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re[7]: Блин!
От: Дарней Россия  
Дата: 10.01.05 04:42
Оценка: +1 :)
Здравствуйте, Шахтер, Вы писали:

Ш>Смех смехом, но всё вышеперечисленное -- действительно знаки разложения и деградации современного общества.


Ты будешь смеяться, но то же самое говорилось уже много раз за историю человечества — по совершенно разным поводам. Вероятно, сейчас мы находимся в крайней степени деградации и разложения, по сравнению с прошлым
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[42]: Чем становится C++?
От: Павел Кузнецов  
Дата: 11.01.05 01:05
Оценка:
VladD2,

> ПК> Пока что у меня к C# интерес исключительно академический, соответственно, особенно тратить время на упражнения с ним не хочется.

>
> Дык столько время тратится в баталях по его поводу... причем в основном идут обсуждения мифов. Глядишь 80% сналось бы само собой.

Вот, дошли руки
Автор: Павел Кузнецов
Дата: 10.01.05
до C#... Честно говоря, после массированной рекламной компании я ожидал большего... Впрочем, пока не исключается вариант, что я чего-то не то в нем сделал. Любые предложения по исправлению кода с целью уменьшения тормозов — welcome.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[7]: Все глубже и ширше
От: Alex Reyst Россия  
Дата: 11.01.05 05:03
Оценка: 27 (5) +3
Здравствуйте, Шахтер, Вы писали:

Ш>>Смех смехом, но всё вышеперечисленное -- действительно знаки разложения и деградации современного общества. Лучший способ защититься от изнасилований -- кастрировать всех мужчин при рождении. Что нам поборники .Net и предлагают.


Смех смехом, но если серьезно...

В развитии любой профессии всегда имеет место переход от искусства к ремеслу.
То, что было уделом мастеров-одиночек, постепенно становится массовым промыслом — как в результате общего прогресса технологий, так и в результате обычного увеличения численности так называемых sapiens'ов. В местах, доступных ранее лишь отчаянным альпинистам, вырастают башни фуникулеров; мастерство огранки бриллиантов ставится на конвейер, и безымянные тети пытаются заменить собой Фаберже.

Однако, как известно, при увеличении численности населения общее количество ума на планете не прибавляется (шутка со значительной долей истины). И некий "средний уровень интеллекта по профессии" неизбежно падает. Так что развитие "рабочих инструментов" в сторону упрощения их использования, увеличения мощности и соответствующего ограничения гибкости — закономерно и неизбежно. А уж считать плюсы/минусы от последствий этого явления — дело десятое, и я не понимаю, почему это становится предметом многочисленных holy wars. Подняться на гору на фуникулере легче, но не везде можно поставить фуникулер. Безопасность альпиниста находится на его собственном попечении — а безопасность поднимающегося на фуникулере зависит от производителя тросов, двигателей; и т.д., и т.п.
В любом случае, места на планете пока хватает всем. В крайнем случае, если уж альпинистов зажмут окончательно, могу предложить совершенно свежую горку — 22 км — на Марсе .

Единственное, что меня действительно раздражает — простота использования современных инструментов провоцирует неоправданное "чувство величия" и мастерства там, где им и не пахло. Накидавший десяток разноцветных кнопочек на форму шкет мнит себя создателем "крутой аппликухи". У меня это в первую очередь ассоциируется с надписями "Киса и Ося здесь были" и побитыми бутылками в местах, в которых еще недавно "не ступала нога идиота". Ощущения омерзительные.
Все, что здесь сказано, может и будет использоваться против меня...
Re[20]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.01.05 02:25
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Не свисти. Сказки будешь рассказывать в другом обществе.


С тобой я просто общаться не желаю. Адью...
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[67]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.01.05 21:37
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Влад, это уже просто абзац. Сначала ты просишь перечислить, что именно есть в boost, чего нет в .Net. После того, как я это делаю, ты просто отмахиваешься. Если тебе есть, что сказать по этому поводу — скажи. В противном случае лучше молчать.


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

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

Если хочешь напишу тебе программу которая сгенерирует списк классов фрэймворка и ты попыташся найти им соотвествие в бусти или СТЛ. Как тебе такая перспективка?

>> ПК> Я сравнительно недавно описывал как раз такую: http://rsdn.ru/Forum/Message.aspx?mid=650616&amp;only=1
Автор: Павел Кузнецов
Дата: 22.05.04


>> Неоткрывается.


ПК>Наверное, из-за чудес с доменами. Можно попробовать так: http://www.rsdn.ru/Forum/Message.aspx?mid=650616&amp;only=1
Автор: Павел Кузнецов
Дата: 22.05.04
или так: http://gzip.rsdn.ru/Forum/Message.aspx?mid=650616&amp;only=1
Автор: Павел Кузнецов
Дата: 22.05.04


Так открывается, но я уже потерял контекст. О чем ты?

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


Нет. Не врено. И объем ошибок, и их критичность, и друдность их обраружения в менеджед коде намного ниже. Особенно это хорошо ощущается кодгда после года программирования на Шарпе пыташся слабать нечто на С++. Возникает чувство что тебе отрезали крылья.

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


Ну, то-есть ошибка ловилась не 4 часа, а прожила в проекте много лет и никто не мог ее не то что поймать, но даже обраружить примерное место? И кому ты пыташся внушать, что проблем нет?

ПК>То есть к "найти свою ошибку в сто раз проще" это вообще не относится.


Возможно. Но ты возьмешся спорить с этим утверждением?

ПК>Я прекрасно представляю пределы возможностей автоматизированных средств анализа кода. Большинство вещей, на которые у меня идет время при разработке на C++, находится за этими пределами. Обычно это непонимание, что одна функция на самом деле представляет собой две или более семантически различных операции.


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

ПК> По формальным признакам, какая из операций должна быть в каком из мест, где используется данная функция, определить невозможно.


Кому как. Я открываю Рефлектор и прошу показать мне список мест откуда функция вызывается.

ПК> Соответственно, чтобы перелопатить код, нужно пройтись по каждому из случаев, и "глазками" определить, какая из новых двух функций должна использоваться в каждом из случаев.


Не. Глазками — это не наш метод.

>> Это каких же? Никак отсуствие строгой типизации, обязательного объявления переменных, десятикрантый проигрыш в скорости?


ПК>В данном случае речь шла о приемах функционального программирования, по которым Питон, на мой взгляд, далеко "обходит" C#.


Примеры, в студию, чего можно сделать функционального на питоне, и нельзя на Шарпе 2.0.

ЗЫ

Вообще-то я думал познакомпвшись с обобщенными делегатами ты такие фразы бросать не будель.

В Питоне есть только одно приемущество (а может и недостаток) там поддержка коллекций встроена в язык и имеется более краткий синтаксис для работы с ними. Судя по твоим словам о том, что встраивать в язык то что можно сделать библиотеками не верно, я делаю выводы о двойных стандартах.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[68]: Чем становится C++?
От: Павел Кузнецов  
Дата: 13.01.05 03:58
Оценка: 6 (1) +2
VladD2,

> ПК> Сначала ты просишь перечислить, что именно есть в boost, чего нет в .Net. После того, как я это делаю, ты просто отмахиваешься.


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


В общем "Пастернака я не читал", но:

В бусте одни заплатки дыр языка.

и

Почи все перечисленное тобой есть или в языке или в библиотеках. Исключения составляют graph и фичи связанные с метапрограммированием.


Многое из перечисленного — далеко не "мелкие классы", а целые библиотеки.

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


> Ну, то-есть ошибка ловилась не 4 часа, а прожила в проекте много лет и никто не мог ее не то что поймать, но даже обраружить примерное место?


Никто и не пытался, т.к. раньше эта ошибка не проявлялась. Нашли и устранили, как только она начала проявляться.

> ПК> То есть к "найти свою ошибку в сто раз проще" это вообще не относится.


> Возможно. Но ты возьмешся спорить с этим утверждением?


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

> ПК> Большинство вещей, на которые у меня идет время при разработке на C++, находится за этими пределами. Обычно это непонимание, что одна функция на самом деле представляет собой две или более семантически различных операции.


> И эта проблема в Шарпе не так страшна. Есть рефакторинг, код чище <...>


Будет ли "код чище" не от языка зависит, а от автора. В смысле, конечно, неряшливому программисту в C++ есть где разойтись и накрутить чего попало, но и аккуратному C++ дает как минимум не меньше возможностей для "красивой" организации своего кода, чем C# или Java. Я предпочитаю по возможности работать с последними вне зависимости от используемого языка.

> ПК> По формальным признакам, какая из операций должна быть в каком из мест, где используется данная функция, определить невозможно.

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

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

> ПК> В данном случае речь шла о приемах функционального программирования, по которым Питон, на мой взгляд, далеко "обходит" C#.


> Примеры, в студию, чего можно сделать функционального на питоне, и нельзя на Шарпе 2.0.


Вопрос не в может/не может, а в легкости реализации и использования. В противном случае можно вспомнить реализацию лямбда-выражений шаблонами C++ и утверждать, что C++ поддерживает функциональное программирование не хуже Питона Одно даже отсутствие в C# "свободных" функций здорово осложняет функциональщину, т.к. функции автоматически перестают быть first class citizens.

Далее, пример:
def transpose (m):
   zip(*m)

>>> transpose([[1,2,3], [4,5,6]])
[(1, 4), (2, 5), (3, 6)]


Или ленивые вычисления (ну-ка, насколько легко, если вообще возможно, организовать такую краткость записи и простоту работы с подобными вещами на C#?):
>>> (_ + 5)(5)
10
>>> (5 + _)(5)
10
>>> (5 * _)(5)
25
>>> (_ * 5)(5)
25
>>> ((5 + _) * 5)(3)
40
>>> ((5 + _) * _)(3)(5)
40
>>> ((5 + _) * _)(3, 5)
40


Далее — по ссылкам:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/161403
http://www.xoltar.org/languages/python.html
http://www.norvig.com/python-lisp.html

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


В Питоне, как ты можешь видеть выше, и библиотеками можно сделать в плане функциональщины побольше, чем в C#.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[69]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.01.05 23:53
Оценка: 1 (1)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>В общем "Пастернака я не читал", но:


ПК>

В бусте одни заплатки дыр языка.

ПК>и
ПК>

Почи все перечисленное тобой есть или в языке или в библиотеках. Исключения составляют graph и фичи связанные с метапрограммированием.


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

ПК>Многое из перечисленного — далеко не "мелкие классы", а целые библиотеки.


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

Вот интересно, ты слышал когда нибудь о IOC-контейнерах?

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

ПК>Никто и не пытался, т.к. раньше эта ошибка не проявлялась. Нашли и устранили, как только она начала проявляться.


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

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

ПК>Будет ли "код чище" не от языка зависит, а от автора.


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

ПК> В смысле, конечно, неряшливому программисту в C++ есть где разойтись и накрутить чего попало,


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

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


Я Явой?

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

>> ПК> По формальным признакам, какая из операций должна быть в каком из мест, где используется данная функция, определить невозможно.

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

ПК>Это ровным счетом ничего не скажет, какая же из двух новых функций должна вызываться в том месте, пока код вокруг старого вызова не будет проанализирован программистом.


Ну, писать надо так чтобы часами не думать над строчкой кода.

ПК>Вопрос не в может/не может, а в легкости реализации и использования.


Дык о проблемах в легкости ты даже боиш заикаться. Все какими-то намеками...

ПК> В противном случае можно вспомнить реализацию лямбда-выражений шаблонами C++ и утверждать, что C++ поддерживает функциональное программирование не хуже Питона


Да уж. То что это так не даже ты не возьмешся утверждать.

ПК> Одно даже отсутствие в C# "свободных" функций здорово осложняет функциональщину, т.к. функции автоматически перестают быть first class citizens.


Ну, то что это домыслы я уже не раз говорил. По жизни, нет никакой разницы между статическими методами и функциями.

ПК>Далее, пример:

ПК>
ПК>def transpose (m):
ПК>   zip(*m)
ПК>

ПК>
>>>> transpose([[1,2,3], [4,5,6]])
ПК>[(1, 4), (2, 5), (3, 6)]
ПК>


Ну, и в чем тут проблема?

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

Сори если чего не так понял, во всех этих трехбуквенных именах я не силен...
using System;
using System.Collections.Generic;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        int[] intArray = { 1, 3, 5, 8 };
        string[] atrArray = { "one", "two", "three", "eight" };

        FuncLib.PrintList(FuncLib.Zip<int, string>(intArray, atrArray));
    }
}

Консольный вывод:
[(1, one), (3, two), (5, three), (8, eight)]


Код реализации требуемой лабуды:
/// <summary>
/// Класс предназначенный для объеденения двух элементов в 
/// один логический.
/// </summary>
public class Tuple<T1, T2>
{
    public Tuple() { }
    public Tuple(T1 elem1, T2 elem2)
    {
        Elem1 = elem1;
        Elem2 = elem2;
    }

    public T1 Elem1;
    public T2 Elem2;

    public override string ToString()
    {
        return "(" + Elem1 + ", " + Elem2 + ")";
    }
}

public static class FuncLib
{
    /// <summary>
    /// Реализация Zip для двух аргументов.
    /// </summary>
    public static IEnumerable<Tuple<T1, T2>> Zip<T1, T2>(
        IEnumerable<T1> list1, IEnumerable<T2> list2)
    {
        IEnumerator<T1> en1 = list1.GetEnumerator();
        IEnumerator<T2> en2 = list2.GetEnumerator();

        while (en1.MoveNext() && en2.MoveNext())
            yield return new Tuple<T1, T2>(en1.Current, en2.Current);
    }

    /// <summary>
    /// Печать элементов списка в Питоновском стиле.
    /// </summary>
    public static void PrintList<T>(IEnumerable<T> list)
    {
        StringBuilder sb = new StringBuilder();

        sb.Append("[");

        foreach (T value in list)
        {
            string str = value as string;
            sb.Append(value);
            sb.Append(", ");
        }

        if (sb[sb.Length - 1] == ' ')
            sb.Length -= 2;

        sb.Append("]");
        Console.WriteLine(sb);
    }
}


ПК>Или ленивые вычисления


А что они в Питоне есть? Ну, да итераторы и стэки всегда легко и эффективно решали проблему линивых вычислений.

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

ПК> (ну-ка, насколько легко, если вообще возможно, организовать такую краткость записи и простоту работы с подобными вещами на C#?):

ПК>
>>>> (_ + 5)(5)
ПК>10
>>>> (5 + _)(5)
ПК>10
>>>> (5 * _)(5)
ПК>25
>>>> (_ * 5)(5)
ПК>25
>>>> ((5 + _) * 5)(3)
ПК>40
>>>> ((5 + _) * _)(3)(5)
ПК>40
>>>> ((5 + _) * _)(3, 5)
ПК>40
ПК>


Я не очень понимаю смысла этих выражений. Я все же не Питоне не работал.

ПК>Далее — по ссылкам:

ПК>http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/161403
ПК>http://www.xoltar.org/languages/python.html
ПК>http://www.norvig.com/python-lisp.html

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

Мне вот интересно, можно ли на Питоне "выглядывать" из функционалов как это можно в Руби и Шарпе:
static void Main(string[] args)
{
    int[] intArray = { 1, 3, 5, 8 };
    string[] atrArray = { "one", "two", "three", "eight" };

    FuncLib.PrintList(FuncLib.Zip<int, string>(intArray, atrArray));

    int innerVar = 10;
    Console.WriteLine(Test(intArray, delegate(int elem) { return elem * innerVar; }));

}

delegate int Operation(int arg);

static int Test(IEnumerable<int> list, Operation operation)
{
    int sum = 0;
    foreach (int var in list)
        sum += operation(var);

    return sum;
}


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


ПК>В Питоне, как ты можешь видеть выше, и библиотеками можно сделать в плане функциональщины побольше, чем в C#.


Да не особо-то, как ты можешь видеть выше.

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

Естественно Шарп не ФЯ. И было бы странно если универсальный язык был бы в этом плане круче чем ФЯ. Но то что есть выглядит очень неплохо.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[70]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.01.05 00:55
Оценка: +1 -1
Здравствуйте, VladD2, Вы писали:

VD>И уверяю тебя объем библиотек на много больше чем у плюсов.


Однако тот же Янус до сих пор использует меню, которое неправильно рисуется. Про жуткие проблемы с фокусом и вообще модальными окнами я и не говорю. Это от обилия библиотек или как?
Надеюсь утверждать, что GUI библиотек по сравнению с остальными пишеться мало ты не станешь.
Вообще утверждать, что у языка которому пара лет от роду объём библиотек больше, чем у плюсов нелепо.

VD>Вот интересно, ты слышал когда нибудь о IOC-контейнерах?


И я не слышал. А ещё неуловимого Джо никто не поймал, потому что он нафиг никому не нужен
IOC это для меня input-output completion. Ничего другого MSDN не выдаёт.

VD>В общем, сравнение библиотек явно не пойдет плюсам на пользу. А их качества и подавно. По удосбтсву плюсовые библиотеки просто чудовшьны. Попросуй найти хотя бы аналоги примитивным классам из пространства имен System.IO. Да все что нужно можно "нагрести", но черт возьми насколько же это все убого и неудобно!


В System.IO некоторая логическая группа (а меня спросить — свалка) классов. В Си++ этот набор не нужен, там всё делается по-другому.
Как минимум всегда есть два варианта Platform Specific и Portable.

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


Случается. Но у меня это в 99% случаев это проблемы совместимости со скачанными из Интернета удобными часами от Васи Пупкина, которые вешают глобальный хук на всё подряд невесть зачем.

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


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

ПК>>Будет ли "код чище" не от языка зависит, а от автора.

VD>Боюсь тебя огорчить, но и от языка тоже. Хотя, безусловно, от авторов это зависит не меньше.

Например сейчас пишу на C# и мне трудно подбирать имена переменным. Naming Convention классов и переменных во многом пересекается, хотя писать что-то связанное с СОМ одно удовольствие.

ПК>> В смысле, конечно, неряшливому программисту в C++ есть где разойтись и накрутить чего попало,

VD>И "ряшлевому" тоже. Возможно идеальному программисту все не почем. Но я вот таких еще не встречал. Кстати, и ты, и я к их числу тоже не принадлежим. Возможно ты более акуратен, а умудряюсь избегать гор проблем применением жустких паттернов, но все это только снижает риск. Причем за одно это резко снижает производительность. Ну, и опять же 100%-нл квалифицированные кадры это низбыточная мечта. В Москве уже хорошего дотнет-ного программиста за 1000 баксов хрен найдешь, а С++-ника и подавно.

1000 баксов говоришь? Еду к вам
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[71]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.01.05 03:07
Оценка:
Здравствуйте, adontz, Вы писали:

A>Однако тот же Янус до сих пор использует меню, которое неправильно рисуется.


Что значит не правильно? В Эксплорере тоже не правильно?

A> Про жуткие проблемы с фокусом и вообще модальными окнами я и не говорю.


Правильно. Не говори. Нет их.

A> Это от обилия библиотек или как?


Я не очень понял о чем ты.

A>Надеюсь утверждать, что GUI библиотек по сравнению с остальными пишеться мало ты не станешь.


Зачем? Правда для 3-ух летнего дотнета их уже намного больше чем для С++. Во втором фрэймворке есть вообще полноценные МС Офисные меню и тулбары. Как ты понимашь нахаляву.

A>Вообще утверждать, что у языка которому пара лет от роду объём библиотек больше, чем у плюсов нелепо.


И тем не менее это так. Нет, может объем кода который можно нарыть и сопоставим. Но вот охват явно шире длу дотнета.

VD>>Вот интересно, ты слышал когда нибудь о IOC-контейнерах?


A>И я не слышал. А ещё неуловимого Джо никто не поймал, потому что он нафиг никому не нужен

A>IOC это для меня input-output completion. Ничего другого MSDN не выдаёт.

Нет. IOC — это Inversion of Control. Вот цитата из одной статьй опубликованной в нашем журнале "Технология Клиент-Сервер":

Концепция, лежащая в основе инверсии управления, часто выражается "голливудским принципом": "Не звоните мне, я вам сам позвоню". IoC переносит ответственность за выполнение действий с кода приложения на фреймворк. В отношении конфигурирования это означает, что если в традиционных контейнерных архитектурах наподобие EJB, компонент может вызвать контейнер и скзать:"где объект Х, нужный мне для работы?", то в IoC сам контейнер выясняет, что компоненту нужен объект Х, и предоставляет его компоненту во время исполнения. Контейнер делает это, основываясь на подписях методов (таких, как свойства JavaBean) и, возможно, конфигурационных данных в формате XML.


A>В System.IO некоторая логическая группа (а меня спросить — свалка) классов. В Си++ этот набор не нужен, там всё делается по-другому.


И я знаю как.

A>Как минимум всегда есть два варианта Platform Specific и Portable.


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

A>Например сейчас пишу на C#


Вау! Что-то меняется в этом ире.

A> и мне трудно подбирать имена переменным. Naming Convention классов и переменных во многом пересекается,


Это с непривычки. Нужно просто сделать две вещи:
1. Изучить Соглашения по оформлению кода команды RSDN
Автор: RSDN Team
Дата: 25.03.04
.
2. Научиться давать имена не переменным, а переменным в разрезе пространства имен, класса, переменной. Другими словами нужно отучиться впихивать в имя переменной весь смысл и выносить его в класс и простраство имен. Особенно это примечательно с энумами. Вместо myTypeSomeValue нужно давать имя MyType.SomeValue.

A> хотя писать что-то связанное с СОМ одно удовольствие.


Э... А какой кайф писать код без оглядуи на ком... Ух!!! Как сказал Дон Бокс дотнет — это КОМ на стеройдах. И я с ним согласен. Поддержка компонентного подхода в дотнете просто потрясающая. И никаких конфликтов с зяком или рантаймом.

A>1000 баксов говоришь?


Минимум. Народ из топа получает куда больше.

A>Еду к вам


Ну, если морду бить не будешь , то приезжай. Винца выпьем погутарим в живую.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[70]: Чем становится C++?
От: eugals Россия  
Дата: 14.01.05 07:30
Оценка: 21 (1)
Здравствуйте, VladD2, Вы писали:

VD>Мне вот интересно, можно ли на Питоне "выглядывать" из функционалов как это можно в Руби и Шарпе:

VD>
VD>static void Main(string[] args)
VD>{
VD>    int[] intArray = { 1, 3, 5, 8 };
VD>    int innerVar = 10;
VD>    Console.WriteLine(Test(intArray, delegate(int elem) { return elem * innerVar; }));

VD>}

VD>delegate int Operation(int arg);

VD>static int Test(IEnumerable<int> list, Operation operation)
VD>{
VD>    int sum = 0;
VD>    foreach (int var in list)
VD>        sum += operation(var);

VD>    return sum;
VD>}
VD>

можно:
def Test(list, operation):
    return sum(map(operation, list))
innerVar = 10
print Test((1, 3, 5, 8), lambda elem: elem * innerVar)

или даже так (в стиле Руби), хотя это "is not Python way":
print Test((1, 3, 5, 8), innerVar.__mul__)
... << RSDN@Home 1.1.4 beta 3 rev. 215>> (WinAmp: молчит)
Re[72]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.01.05 13:34
Оценка:
Здравствуйте, VladD2, Вы писали:

A>>Однако тот же Янус до сих пор использует меню, которое неправильно рисуется.

VD>Что значит не правильно? В Эксплорере тоже не правильно?

Выделение в MenuBar У вас не стандартное


A>> Про жуткие проблемы с фокусом и вообще модальными окнами я и не говорю.

VD>Правильно. Не говори. Нет их.

Однако они есть. Например так.
Выбрать Сервис\Синхронизация с сервером. Во время синхронизации нажать "отмена" (окно синхронизации остаёться почти навечно)
Если потом выбрать Сервис\Подписка на форумы, то оно будет модальным для обоих окон, хотя как показал Spy++ эти два окна никак не связаны.

VD>Зачем? Правда для 3-ух летнего дотнета их уже намного больше чем для С++. Во втором фрэймворке есть вообще полноценные МС Офисные меню и тулбары. Как ты понимашь нахаляву.


Они не особо-то managed и не ясно сколько займёт MsoCommandBar redistributable и кому он будет нужен такой большой учитывая, что такие монстры мало кому нужны.

A>>Как минимум всегда есть два варианта Platform Specific и Portable.

VD>И оба требуют долгих часов лазенья по справке и Интернеру если ты не знаком с библиотекой. А тут все од рукой и очень удобно.

Как раз portable никаких часов не требует. Он стандартен для стандартных библиотек Си++.

A>>Например сейчас пишу на C#

VD>Вау! Что-то меняется в этом мире.

Был выбор Си++/C# для конкретной задачи. Для конкретной же задачи С# оказался удобнее, хотя уже сейчас, на начальных этапах я вижу, что у Си++ возможностей было больше.

VD>1. Изучить Соглашения по оформлению кода команды RSDN
Автор: RSDN Team
Дата: 25.03.04
.

ОК.

VD>2. Научиться давать имена не переменным, а переменным в разрезе пространства имен, класса, переменной. Другими словами нужно отучиться впихивать в имя переменной весь смысл и выносить его в класс и простраство имен. Особенно это примечательно с энумами. Вместо myTypeSomeValue нужно давать имя MyType.SomeValue.


Ты будешь удивлён, но в Си++ тоже есть namespace'ы Так что с этим проблем нет
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[73]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.01.05 14:00
Оценка:
Здравствуйте, adontz, Вы писали:

A>Выделение в MenuBar У вас не стандартное


Рома, этой версии януса наверное уже года полтора. Меджиковское меню давным давно не используется.

A>Они не особо-то managed и не ясно сколько займёт MsoCommandBar redistributable

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

Не говори того, чего не знаешь. Тулбары в дотнете менеджед.
... << RSDN@Home 1.1.4 beta 3 rev. 281>>
AVK Blog
Re[74]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.01.05 14:34
Оценка:
Здравствуйте, AndrewVK, Вы писали:

A>>Выделение в MenuBar У вас не стандартное

AVK>Рома, этой версии януса наверное уже года полтора. Меджиковское меню давным давно не используется.

Позавчера скачал Янус с сайта в связи с рисованием иконок.

A>>Они не особо-то managed и не ясно сколько займёт MsoCommandBar redistributable

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

АВК, ты понял вообще, что я и Влад обсуждаем?
Влад сказал, что в Framework 1.0 будет поддержка тулбаров из MS Office, а онги совсем не managed. Я выразил сомнение, что такой траглодит кому-то нужен.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[75]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.01.05 14:43
Оценка:
Здравствуйте, adontz, Вы писали:

A>Позавчера скачал Янус с сайта в связи с рисованием иконок.


Видать не тот.


A>>>Они не особо-то managed и не ясно сколько займёт MsoCommandBar redistributable

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

A>АВК, ты понял вообще, что я и Влад обсуждаем?


А ты?

A>Влад сказал, что в Framework 1.0 будет поддержка тулбаров из MS Office,

Во втором фрэймворке есть вообще полноценные МС Офисные меню и тулбары.

... << RSDN@Home 1.1.4 beta 3 rev. 281>>
AVK Blog
Re[76]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.01.05 15:14
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>


Один хрен. Пункт сервис должен быть вдавленным, а не подсвеченным.

AVK>А ты?

A>>Влад сказал, что в Framework 1.0 будет поддержка тулбаров из MS Office,
AVK>

Во втором фрэймворке есть вообще полноценные МС Офисные меню и тулбары.

Ну да, во втором. У меня опчатка. Но суть в том, что будут именно офисные, а они unmanaged.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[40]: Чем становится C++?
От: WolfHound  
Дата: 14.01.05 16:16
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Так потому и нельзя. Это приводит к серьезным проблемам.

На пример?
AVK>Например для тебя не секрет, что в дотнете массив производного типа автоматически кастится к базовому.
Это касается только референс типов.
Давно пытался массив структур свести к массиву object'ов? Вот попробуй...
            int[] a = new int[10];
            object[] o = a;

error CS0029: Cannot implicitly convert type 'int[]' to 'object[]'

AVK>А теперь представь что произойдет если структуры можно будет наследовать?
Короче этот аргумент мимо кассы.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[41]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.01.05 19:59
Оценка:
Здравствуйте, WolfHound, Вы писали:

AVK>>Так потому и нельзя. Это приводит к серьезным проблемам.

WH>На пример?

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

AVK>>Например для тебя не секрет, что в дотнете массив производного типа автоматически кастится к базовому.

WH>Это касается только референс типов.

Да. Но в этом случае элемент масива всегда указатель, т.е. им6ет фиксированный размер.

WH>Давно пытался массив структур свести к массиву object'ов? Вот попробуй...

WH>
WH>            int[] a = new int[10];
WH>            object[] o = a;
WH>

error CS0029: Cannot implicitly convert type 'int[]' to 'object[]'


Разумеется. Размер массива потому что в этом случае разный.
... << RSDN@Home 1.1.4 beta 3 rev. 283>>
AVK Blog
Re[77]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.01.05 19:59
Оценка:
Здравствуйте, adontz, Вы писали:

A>Один хрен. Пункт сервис должен быть вдавленным, а не подсвеченным.


Да что ты? А у меня почему то он в эксплорере подсвеченый:


AVK>>А ты?

A>>>Влад сказал, что в Framework 1.0 будет поддержка тулбаров из MS Office,
AVK>>

Во втором фрэймворке есть вообще полноценные МС Офисные меню и тулбары.

A>Ну да, во втором. У меня опчатка. Но суть в том, что будут именно офисные, а они unmanaged.

Рома, ну зачем ты так уверенно говоришь то, чего не знаешь? Да, будут офисные. Нет, чисто managed.
... << RSDN@Home 1.1.4 beta 3 rev. 283>>
AVK Blog
Re[78]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.01.05 20:37
Оценка:
Здравствуйте, AndrewVK, Вы писали:

A>>Один хрен. Пункт сервис должен быть вдавленным, а не подсвеченным.

AVK>Да что ты? А у меня почему то он в эксплорере подсвеченый:
AVK>

Потому что если ты разбирался с Visual Styles API то мог заметить, что в теме Luna Blue для меню способы отрисовки вообще не определены и поэтому рисуется всё как попало. Без тем всё нормально, так же как и в Luna Silver, что впрочем скорее случайно.
Более того, чтоб не морочить друг другу голову темами запусти MSWord и убедись, что в MenuBar пункт выдвигается вперёд, но не подсвечивается.
Вобщем поведение, когда подсвечивается пункт MenuBar стандартным не является.

AVK>Рома, ну зачем ты так уверенно говоришь то, чего не знаешь? Да, будут офисные. Нет, чисто managed.


Текущие MsoCommandBar не managed. Вот вопрос — а будут ли их переписывать или сделают managed обёртку? При ответе на вопрос исходить из вопросов цены.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[79]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.01.05 20:54
Оценка:
Здравствуйте, adontz, Вы писали:

A>>>Один хрен. Пункт сервис должен быть вдавленным, а не подсвеченным.

AVK>>Да что ты? А у меня почему то он в эксплорере подсвеченый:
AVK>>

A>Потому что если ты разбирался с Visual Styles API то мог заметить, что в теме Luna Blue для меню способы отрисовки вообще не определены и поэтому рисуется всё как попало. Без тем всё нормально, так же как и в Luna Silver, что впрочем скорее случайно.


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

A>Более того, чтоб не морочить друг другу голову темами запусти MSWord и убедись, что в MenuBar пункт выдвигается вперёд, но не подсвечивается.


У меня Word 2003, там вобще все совершенно иначе. Но хоть бы и так — почему нужно ориентироваться на MSWord? А почему к примеру не на Maxthon?

A>Вобщем поведение, когда подсвечивается пункт MenuBar стандартным не является.


А никто стандартность и не обещал.

AVK>>Рома, ну зачем ты так уверенно говоришь то, чего не знаешь? Да, будут офисные. Нет, чисто managed.


A>Текущие MsoCommandBar не managed.


А с чего ты взял что в фреймворке MsoCommandBars используются?

A> Вот вопрос — а будут ли их переписывать или сделают managed обёртку?


Их уже переписали.
... << RSDN@Home 1.1.4 beta 3 rev. 283>>
AVK Blog
Re[80]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.01.05 23:32
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


У меня Luna Silver и всё как надо.

AVK>Вот если вобще темы отключить, то будет как ты говоришь — вдавленный. Но почему мы должны ориентироваться на интерфейс без тем?


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

AVK>У меня Word 2003, там вобще все совершенно иначе. Но хоть бы и так — почему нужно ориентироваться на MSWord? А почему к примеру не на Maxthon?


Я просто привёл пример. Есть куча других программ с тем-же поведением.

A>>Вобщем поведение, когда подсвечивается пункт MenuBar стандартным не является.


AVK>А никто стандартность и не обещал.


А вот это странно. Зачем менять привычный интерфейс, не добавляя при этом функциональности? Тогда можно меню поместить вниз, а статусную строку наверх. Работать-то будет, но зачем так делать?

AVK>А с чего ты взял что в фреймворке MsoCommandBars используются?


Влад сказал что в 2.0 будут именно офисные.

AVK>Их уже переписали.


До офисных им ещё плыть и плыть.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[81]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.01.05 23:52
Оценка: +1
Здравствуйте, adontz, Вы писали:

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


A>У меня Luna Silver и всё как надо.




AVK>>Вот если вобще темы отключить, то будет как ты говоришь — вдавленный. Но почему мы должны ориентироваться на интерфейс без тем?


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


Думаю не все с тобой согласятся.

AVK>>У меня Word 2003, там вобще все совершенно иначе. Но хоть бы и так — почему нужно ориентироваться на MSWord? А почему к примеру не на Maxthon?


A>Я просто привёл пример. Есть куча других программ с тем-же поведением.


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

AVK>>А никто стандартность и не обещал.


A>А вот это странно. Зачем менять привычный интерфейс,


Для меня привычным является именно тот, который сейчас реализован, поскольку он полностью совпадает с системным.

A> не добавляя при этом функциональности? Тогда можно меню поместить вниз, а статусную строку наверх. Работать-то будет, но зачем так делать?


Не знаю. А зачем так делать?
Что же касается отрисовки — ты сам очень хороший пример привел. В 2003 офисе менюхи и не подсвеченные и не вдавленные, а свои собственные. Думаешь в МС идиоты работают?

AVK>>А с чего ты взял что в фреймворке MsoCommandBars используются?


A>Влад сказал что в 2.0 будут именно офисные.


Офисные значит такие же как в офисе, неужели непонятно?

AVK>>Их уже переписали.


A>До офисных им ещё плыть и плыть.


Ты их видел? Тогда расскажи в каком месте им еще плыть.
... << RSDN@Home 1.1.4 beta 3 rev. 283>>
AVK Blog
Re[82]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 15.01.05 01:13
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

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

AVK>Думаю не все с тобой согласятся.

Я знаю уже как минимум одного человека который не согласиться

A>>А вот это странно. Зачем менять привычный интерфейс,

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

А вот у меня он с ситемным не совпадает и потому и не привычен.

AVK>Что же касается отрисовки — ты сам очень хороший пример привел. В 2003 офисе менюхи и не подсвеченные и не вдавленные, а свои собственные. Думаешь в МС идиоты работают?


Думаю что Янус и Офис делают разные люди и если полёт фантазии создателей офиса имеет под собой научную основу, то в Янусе как кому в голову пришло так и сделали. В таких случаях лучше не делать себе комплимент и не думать что самый лучший в мире вкус у тебя, а просто прочитать какой-нибудь стандарт на GUI (у того же MS их навалом) и чётко следовать рекомендациям. произведение искусства конечно не выйдет, но по крайней мере некоторое базовое удобство работы будет обеспечено.
Я просто не хочу опять скатываться на ругание Януса, но и так многострадальный, но это тот проект "за стеклом" по которому многие судят о .Net и как ни крути интерфейс у Януса оставляет желать лучшего.

AVK>Офисные значит такие же как в офисе, неужели непонятно?


Вообще-то нет

AVK>Ты их видел? Тогда расскажи в каком месте им еще плыть.

В плане предоставления аналогичного API для внешних расширений.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[73]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.05 01:40
Оценка:
Здравствуйте, adontz, Вы писали:

A>Выделение в MenuBar У вас не стандартное


У меня все ОК.

A>>> Про жуткие проблемы с фокусом и вообще модальными окнами я и не говорю.

VD>>Правильно. Не говори. Нет их.

A>Однако они есть. Например так.

A>Выбрать Сервис\Синхронизация с сервером. Во время синхронизации нажать "отмена" (окно синхронизации остаёться почти навечно)
A>Если потом выбрать Сервис\Подписка на форумы, то оно будет модальным для обоих окон, хотя как показал Spy++ эти два окна никак не связаны.

Нажал... синхронизация остановилась после очередного шага.

A>Они не особо-то managed и не ясно сколько займёт MsoCommandBar redistributable и кому он будет нужен такой большой учитывая, что такие монстры мало кому нужны.


Когда как. Но по мне это не важно. Главное, что они есть и они удобны.

A>Ты будешь удивлён, но в Си++ тоже есть namespace'ы Так что с этим проблем нет


Ты будешь удивлен, но я знаю. Вот только редко можно увидить код использующий возможности распределения имен.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[77]: Чем становится C++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.05 01:40
Оценка:
Здравствуйте, adontz, Вы писали:

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


AVK>>


A>Один хрен. Пункт сервис должен быть вдавленным, а не подсвеченным.


Кому должен? Я вот открыл Вынькомандер и Нотпэд... в обоих программах мени ведут себя точно так же как в Янусе. Да и пофигу мне кто кому должен. Выглядит прилично, использовать удобно. Остальные притензии идут в лес.

A>Ну да, во втором. У меня опчатка. Но суть в том, что будут именно офисные, а они unmanaged.


Я не утверждал что они именно из Офиса. Я имевл виду, что они такие же как в Офисе. Вот сейчас бросил беглый взгляд на них... Похоже, что они как раз чисто менеджед. Только отрисовываются через GDI и плюют на GDI+. Наследуются они от ScrollableControl и даже не перекрывают CreateHandle.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[83]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.01.05 12:19
Оценка:
Здравствуйте, adontz, Вы писали:

A>>>А вот это странно. Зачем менять привычный интерфейс,

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

A>А вот у меня он с ситемным не совпадает и потому и не привычен.


Ну что ж, могу тебе только посочувствовать.

AVK>>Что же касается отрисовки — ты сам очень хороший пример привел. В 2003 офисе менюхи и не подсвеченные и не вдавленные, а свои собственные. Думаешь в МС идиоты работают?


A>Думаю что Янус и Офис делают разные люди и если полёт фантазии создателей офиса имеет под собой научную основу, то в Янусе как кому в голову пришло так и сделали.


Здорово. Т.е. то что можно МС, другим нельзя . Обоснования будут?

A> В таких случаях лучше не делать себе комплимент и не думать что самый лучший в мире вкус у тебя,


Я так не думаю. И вобще — все вобщем то скопированно полностью с XPшного меню, никакой самодеятельности тут нет. А то что не поддерживаются сразу два стиля — и старый и новый, так и Офис тоже их не поддерживает (и не только он, надо заметить).

A>Я просто не хочу опять скатываться на ругание Януса, но и так многострадальный, но это тот проект "за стеклом" по которому многие судят о .Net и как ни крути интерфейс у Януса оставляет желать лучшего.


Пока что ты не привел ни единого аргумента почему это так.

AVK>>Ты их видел? Тогда расскажи в каком месте им еще плыть.

A>В плане предоставления аналогичного API для внешних расширений.

Давай конкретно — какого API, существующего в офисном тулбаре, не хватает в нетовском?
... << RSDN@Home 1.1.4 beta 3 rev. 283>>
AVK Blog
Re[84]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 15.01.05 14:33
Оценка:
Здравствуйте, AndrewVK, Вы писали:

A>>А вот у меня он с ситемным не совпадает и потому и не привычен.

AVK>Ну что ж, могу тебе только посочувствовать.

Понимаешь. Если бы Янус использовал системное меню котрое везде рисовалось бы так как в целевой системе стандартно это одно. Но ты выбрал какую-то одну модель, довольно новую и не очень качественную, и теперь утверждаешь что это истина в последней инстанции. Я вот KDE и GNome поглядел, там тоже менюбар не подсвечивается.

AVK>>>Что же касается отрисовки — ты сам очень хороший пример привел. В 2003 офисе менюхи и не подсвеченные и не вдавленные, а свои собственные. Думаешь в МС идиоты работают?

A>>Думаю что Янус и Офис делают разные люди и если полёт фантазии создателей офиса имеет под собой научную основу, то в Янусе как кому в голову пришло так и сделали.
AVK>Здорово. Т.е. то что можно МС, другим нельзя . Обоснования будут?

Если кратко, то QUOD LICET JOVI NON LICET BOVI.
Если подробнее, то MS имеет экпертов в UI, а команда разработчиков Януса нет, поэтому MS может отсечь ситуации, когда интуиция разработчика подвела, а конанда разработчиков Януса не может.

A>>Я просто не хочу опять скатываться на ругание Януса, но и так многострадальный, но это тот проект "за стеклом" по которому многие судят о .Net и как ни крути интерфейс у Януса оставляет желать лучшего.

AVK>Пока что ты не привел ни единого аргумента почему это так.

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

AVK>>>Ты их видел? Тогда расскажи в каком месте им еще плыть.

A>>В плане предоставления аналогичного API для внешних расширений.
AVK>Давай конкретно — какого API, существующего в офисном тулбаре, не хватает в нетовском?

application.CommandBars.Add("MyBar")

из внешнего Си++/VB6/Delphi/WSH приложения
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[85]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.01.05 16:18
Оценка:
Здравствуйте, adontz, Вы писали:

A>>>А вот у меня он с ситемным не совпадает и потому и не привычен.

AVK>>Ну что ж, могу тебе только посочувствовать.

A>Понимаешь. Если бы Янус использовал системное меню


Он и использует системное меню. Открой исходники и убедись.

A> ты выбрал какую-то одну модель, довольно новую и не очень качественную,


Я как то больше МС в вопросах юзабилити доверяю, нежели тебе.

A> и теперь утверждаешь что это истина в последней инстанции.


Цитату в студию где я такое утверждал.

A> Я вот KDE и GNome поглядел, там тоже менюбар не подсвечивается.


GNOME


AVK>>Здорово. Т.е. то что можно МС, другим нельзя . Обоснования будут?


A>Если кратко, то QUOD LICET JOVI NON LICET BOVI.

A>Если подробнее, то MS имеет экпертов в UI, а команда разработчиков Януса нет, поэтому MS может отсечь ситуации, когда интуиция разработчика подвела, а конанда разработчиков Януса не может.

Но стиль, используемый в янусе, придумала команда разработчиков МС

AVK>>Пока что ты не привел ни единого аргумента почему это так.


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


Это просто ошибка в программе. Но ее никто не исправляет по одной простой причине — всем на это наплевать.

AVK>>>>Ты их видел? Тогда расскажи в каком месте им еще плыть.

A>>>В плане предоставления аналогичного API для внешних расширений.
AVK>>Давай конкретно — какого API, существующего в офисном тулбаре, не хватает в нетовском?

A>application.CommandBars.Add("MyBar")


A>из внешнего Си++/VB6/Delphi/WSH приложения


Ну и? Что это означает в контексте дотнетовского компонента?
... << RSDN@Home 1.1.4 beta 3 rev. 283>>
AVK Blog
Re[83]: Чем становится C++?
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.01.05 05:22
Оценка: +1
Здравствуйте, adontz, Вы писали:
A>Думаю что Янус и Офис делают разные люди и если полёт фантазии создателей офиса имеет под собой научную основу, то в Янусе как кому в голову пришло так и сделали. В таких случаях лучше не делать себе комплимент и не думать что самый лучший в мире вкус у тебя, а просто прочитать какой-нибудь стандарт на GUI (у того же MS их навалом)
А вот в этом месте я бы хотел, чтобы меня ткнули носом в этот "навалом". Последнее, что я читал на эту тему, было датировано 1997 годом и относилось к новому стандарту визардов.
Причем сама МС, судя по всему, не считает эти стандарты сколь-нибудь осмысленными. Ни одна из упоминаемых в стандарте метрик не выполняется, например, студийным генератором инсталлеров. Может быть, я просто пропустил что-то очевидное, и весь мир давно уже пользуется новой версией этого общедоступного стандарта?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[85]: Чем становится C++?
От: Дарней Россия  
Дата: 17.01.05 06:08
Оценка:
Здравствуйте, adontz, Вы писали:

A>Если подробнее, то MS имеет экпертов в UI, а команда разработчиков Януса нет, поэтому MS может отсечь ситуации, когда интуиция разработчика подвела, а конанда разработчиков Януса не может.


То-то у них диалог выбора файла так долго был неизменяемого размера. Эксперты, ептыть
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[42]: Чем становится C++?
От: WolfHound  
Дата: 17.01.05 07:45
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Например размер структуры при наследовании может изменится.

И?
AVK>А поскольку массивы структур это просто непрерывные куски памяти
Я знаю.
AVK>и массивы могут каститься к базовому типу,
Массивы референс типов. А для валью типов это делать совсем не нужно.
AVK>то будут проблемы
Не будут.
AVK>(ну либо надо при обращении к элементу проверять реальный тип массива в рантайме, что совсем не здорово).
А с массивами референс типов так и происходит...
                Base[] b = new Derived[1];
                b[0] = new Base();//Тут будет исключение

System.ArrayTypeMismatchException: Attempted to access an element as a type incompatible with the array.


WH>>Это касается только референс типов.

AVK>Да.
А мы вроде про валью типы говорим.

AVK>Разумеется. Размер массива потому что в этом случае разный.

Нет. Это по тому что типы принципиально не совместимые.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[84]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 17.01.05 10:28
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>А вот в этом месте я бы хотел, чтобы меня ткнули носом в этот "навалом". Последнее, что я читал на эту тему, было датировано 1997 годом и относилось к новому стандарту визардов.


А набор контролов с 95-го не особо-то и менялся, а базовые (checkbox, radiobox, edit, combobox) наверное и раньше были.

S>Причем сама МС, судя по всему, не считает эти стандарты сколь-нибудь осмысленными. Ни одна из упоминаемых в стандарте метрик не выполняется, например, студийным генератором инсталлеров.


Который MSI генерирует? Там новое что-то. Install Shield делает вполне стандартный интерфейс.

S>Может быть, я просто пропустил что-то очевидное, и весь мир давно уже пользуется новой версией этого общедоступного стандарта?


Нет, просто на эти стандартны все клали и кладут, а потом спрашивают — а чего это у нас интерфейс некузявый?
Из нескольких сотен программ, которые попадали мне в руки приличным в плане расстановки контролов интерфейсом обладали штук 5 наверное.
Вот и вопрос — что делать? Сказать "А мы что? Лучше других?" и повинуясь закону стада тоже забить на всё, создавая интерфейсы, где галочка справа от текста или таки потрудиться (а труд между прочим не малый) и расставить всё как полагается?
Ведь по сути в Visual Studio нет (в том-то всё и дело, что нет) редактора ресурсов позволяющего удобно рисовать стандарные (в плане размеров) интерфейсы. Стандартная рамка в 7DLU ничем не поможет в расстановке элементов внутри, а сетка вообще бесполезна. Надо было просто Edit/Checkbox/... окружить рамкой в 2DLU и GroupBox в 2/13/2/2, но этого никто не сделал и сейчас я, убедившись что радикально уже ничего меняться не будет, беру в зубы бумажку и калькулятор (тут по сценарию идёт церемония награждения меня ) и как 10 лет назад начинаю рисовать интерфейс вручную вбивая координаты.

Давай так, чтоб не быть голословным
Дай мне ссылку на скачку (trial) любой программы (в разумных пределах конечно, у меня dial-up всё таки. Ну скажем до 2.5Mb) и я с большой вероятностью найду ошибку в интерфейсе.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[85]: Чем становится C++?
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.01.05 10:56
Оценка: +1
Здравствуйте, adontz, Вы писали:
Ага. То есть нету никакого навала.
A>Который MSI генерирует? Там новое что-то. Install Shield делает вполне стандартный интерфейс.
Да ну прямо сразу так и стандартный. Тоже врут. А обнаружили мы это ровно тогда, когда нарисованная дизайнером (по спецификации МС) картинка не легла в диалог.
A>Дай мне ссылку на скачку (trial) любой программы (в разумных пределах конечно, у меня dial-up всё таки. Ну скажем до 2.5Mb) и я с большой вероятностью найду ошибку в интерфейсе.
Не, давай чтоб не быть голословным, ты мне пришлешь ссылку на те самые стандарты, о которых ты тут упоминаешь. Мне почему-то кажется, что банальная VS, к примеру, нарушает любой из них практически в каждом окне.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[86]: Чем становится C++?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 17.01.05 11:15
Оценка:
Здравствуйте, Sinclair, Вы писали:


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


Для начала это
http://msdn.microsoft.com/library/en-us/dnwue/html/welcome.asp
Конкретнее например это
http://msdn.microsoft.com/library/en-us/dnwue/html/ch14e.asp
Но это конечно только начало (скажем дрямо подготовительная группа детсада).
Есть ещё методики позволяющие выбрать, когда надо выбирать Checkbox, а когда 2 radiobox, а когда combobox с двумя элементами и ещё много чего.

S>Мне почему-то кажется, что банальная VS, к примеру, нарушает любой из них практически в каждом окне.


Ещё-бы. Она же как минимум наполовину managed (что знаю из Spy++), а в managed мире
Forms Desinger вычисляет всё в довльно странных единицах — сделать стандартный (со стандартными размерами 7DLU рамка, 14DLU высота элемента и т.д.) интерфейс нельзя. Выходят дробные координаты.
Автор: adontz
Дата: 15.01.05
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[86]: Чем становится C++?
От: Дарней Россия  
Дата: 17.01.05 11:22
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Не, давай чтоб не быть голословным, ты мне пришлешь ссылку на те самые стандарты, о которых ты тут упоминаешь. Мне почему-то кажется, что банальная VS, к примеру, нарушает любой из них практически в каждом окне.


Простенькая задачка — как задать порядок обхода элементов в редакторе диалогов? Я нашел только один способ, в МСДНе описано — надо нажать Ctrl+D.
Похоже, что других способов просто нет
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[43]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.01.05 14:44
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>
WH>                Base[] b = new Derived[1];
WH>                b[0] = new Base();//Тут будет исключение

В рантайме. Т.е. нужна дополнительная проверка на совпадение типов при каждом обращении к элементам, то совсем не здорово. Для реф-типов это еще можно пережить, а вот для value-типов никуда не годится, поскольку весь смысл в них пропадает.
Ну хорошо, не нравятся тебе массивы - вот еще проще:
[c#]
struct Base {}

struct Derived
{
    int fld;
}

void Foo(Base b)
{
    // Здесь нужно точно знать размер, занимаемый b в стеке
    ...
}

...
Foo(new Derived());

В таком коде либо опять придется анализировать метаинформацию в рантайме при каждом вызове, либо собьется стек.

WH>>>Это касается только референс типов.

AVK>>Да.
WH>А мы вроде про валью типы говорим.

Т.е. ты предлагаешь наследование для структур добавить, а кастинг value-массивов запретить? Уже криво, и при том все равно ничего не решает.
... << RSDN@Home 1.1.4 beta 3 rev. 293>>
AVK Blog
Re[87]: Чем становится C++?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.01.05 15:23
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Простенькая задачка — как задать порядок обхода элементов в редакторе диалогов? Я нашел только один способ, в МСДНе описано — надо нажать Ctrl+D.

Д>Похоже, что других способов просто нет

Порядок обхода имеешь ввиду tab order? Тогда View->Tab order.
... << RSDN@Home 1.1.4 beta 3 rev. 293>>
AVK Blog
Re[88]: Чем становится C++?
От: Дарней Россия  
Дата: 18.01.05 04:24
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Порядок обхода имеешь ввиду tab order? Тогда View->Tab order.


Если ты про C#, то верно. Но я говорил про редактор диалогов, а не форм. В VC++ этого пункта меню просто нет
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[89]: Чем становится C++?
От: Sergey Россия  
Дата: 18.01.05 08:06
Оценка:
Hello, Дарней!
You wrote on Tue, 18 Jan 2005 04:24:35 GMT:

AVK>> Порядок обхода имеешь ввиду tab order? Тогда View->Tab order.


Д> Если ты про C#, то верно. Но я говорил про редактор диалогов, а не форм.

Д> В VC++ этого пункта меню просто нет

А в редакторе диалогов самый удобный способ поменять tab order — вообще не
использовать редактор реусерсов, а открыть ресурсный файл как текстовый и
переставить строки в нужном порядке

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[90]: Чем становится C++?
От: Дарней Россия  
Дата: 18.01.05 09:04
Оценка:
Здравствуйте, Sergey, Вы писали:

S>А в редакторе диалогов самый удобный способ поменять tab order — вообще не

S>использовать редактор реусерсов, а открыть ресурсный файл как текстовый и
S>переставить строки в нужном порядке

так вот он какой, самый удобный интерфейс
особенно весело при этом, что в VS6 файл ресурсов открыть в виде текста не так то просто
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[91]: Чем становится C++?
От: Sergey Россия  
Дата: 18.01.05 10:11
Оценка:
Hello, Дарней!
You wrote on Tue, 18 Jan 2005 09:04:10 GMT:

S>> А в редакторе диалогов самый удобный способ поменять tab order — вообще

S>> не использовать редактор реусерсов, а открыть ресурсный файл как
S>> текстовый и переставить строки в нужном порядке

Д> так вот он какой, самый удобный интерфейс

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

Д> особенно весело при этом, что в VS6 файл ресурсов открыть в виде текста

Д> не так то просто

Как раз в шестерке — просто и быстро. Глобальный поиск по идентификатору,
даблклик на найденом — и файл открыт на нужной строчке. Вот в 7/7.1 они,
гады, эту "дырку" прикрыли.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[92]: Чем становится C++?
От: Дарней Россия  
Дата: 18.01.05 12:04
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Как раз в шестерке — просто и быстро. Глобальный поиск по идентификатору,

S>даблклик на найденом — и файл открыт на нужной строчке. Вот в 7/7.1 они,
S>гады, эту "дырку" прикрыли.

и это по твоему "просто" и "интуитивно"?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[93]: Чем становится C++?
От: Sergey Россия  
Дата: 18.01.05 12:16
Оценка:
Hello, Дарней!
You wrote on Tue, 18 Jan 2005 12:04:05 GMT:

S>> Как раз в шестерке — просто и быстро. Глобальный поиск по

S>> идентификатору, даблклик на найденом — и файл открыт на нужной строчке.
S>> Вот в 7/7.1 они, гады, эту "дырку" прикрыли.

Д> и это по твоему "просто" и "интуитивно"?


И где это я произносил слово "интуитивно"? Я до такого "шотката" открытия
ресурсного файла как текста не сразу додумался. А насчет просто — да, это
просто. Потому что думать уже не надо.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.