Re[53]: C+ vs C#
От: Дарней Россия  
Дата: 15.02.06 09:31
Оценка: 3 (1)
Здравствуйте, Sheridan, Вы писали:

C>>>4. Приложения для систем без .NET Framework.

Д>>а ты сможешь написать прогу на С++ для системы, в которой нет компилятора С++?
S>Некорректное сравнение.

C>>>6. Кросс-платформенные приложения (не надо про Mono).

Д>>а почему это вдруг не надо? Чтобы не разрушать твою стройную систему доказательств?
S>Нет. Потомучто уродец. Впрочем как и папа...

Как там RSDN@Linux поживает?
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[61]: C+ vs C#
От: Cyberax Марс  
Дата: 15.02.06 09:31
Оценка:
Vermicious Knid wrote:
> Я как бы в курсе, хотя уже где-то год прошел с тех пор как я их
> последний раз применял(да и вообще C++).Действительно абстрактные классы
> есть, но ведь ограничений скажем так несколько больше чем в C#. Например
> в конструкторе Base::Base ты вызвать squaсk не сможешь. Плюс в C# можно
> объявить еще и абстрактное свойство, не только метод.
А в C# уже есть деструкторы?
В конструкторе я вызвать squack тоже могу при желании (хотя, хотя какой
в этом смысл)?

> Да и объективно говоря C++ даже исходя из синтаксиса объявления

> "абстрактных" классов не может претендовать на более высокий уровень
> поддержки этой возможности.
В чем оно кардинально от C# отличается? Или слово "abstract" делает язык
более высокоуровневым?

> C>2. Интерфейсы:

> Это фикция. Это те же абстрактные классы, а не интерфейсы(только не надо
> сюда приплетать множественное наследование). Те же самые ограничение
> плюс совершенно другая смысловая нагрузка. Для интерфейсов в нормальном
> языке существуют определенные правила, которые не должны нарушаться. В
> C++ это как всегда исключительно вопрос самодисциплины.
И что?

Я не вижу проблем с программированием на С++ в стиле C#/Java — куча
библиотек так работает (начиная с COM). C# будет "посахаристее", но
кардинально ничего не добавляет.

> Опять фикция. На этот раз еще большая. На практике в C++ такой подход

> никто не применяет. Если кто-то применяет, могу только посочувствовать.
Это значит, что просто никому особо не надо. Тем более, что в C#
свойства — это просто сахар над get-,set- функциями и не добавляет
ничего семантически нового.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[54]: C+ vs C#
От: Sheridan Россия  
Дата: 15.02.06 09:43
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Как там RSDN@Linux поживает?


Если мне дадут "псевдосервер" rsdn (чтобы xml синхронизации отдавал) то как сеточку дома подниму между новым и старым компом то начну девелопить. А то и сам напишу этот псевдоrsdn... Инета то дома нету...

[RSDN@Home][1.2.0][alpha][643]
[Возможность украсть создает вора. [Ф. Бэкон]]
Matrix has you...
Re[63]: C+ vs C#
От: Vermicious Knid  
Дата: 15.02.06 09:50
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Не можешь отличить private от protected?


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

И вообще более продуктивно искать возможность сделать что-то, чем искать возможность не делать. Сказать, "ах этот поганный C# не позволяет делать абстрактные методы приватными, да ну его к черту!", — это слишком легко и как минимум глупо.

А если конкретно о private методах, то мне вот например почему-то не приходила мысль, что это может быть полезно, хотя абстрактные классы использую постоянно.
Re[2]: C++ vs basic
От: Sheridan Россия  
Дата: 15.02.06 10:02
Оценка: :)

Доолго первый минус шол...
Заняты наверно все

[RSDN@Home][1.2.0][alpha][643]
[Многознание уму не учит. [Гераклит]]
Matrix has you...
Re[64]: C+ vs C#
От: Cyberax Марс  
Дата: 15.02.06 10:05
Оценка:
Vermicious Knid wrote:
> Ну ты же просил что-то *подобное*. На мой взгляд protected вполне
> удовлетворяет этому определению, в той или иной степени.
Ну так кто мешает его поставить?

> И вообще более продуктивно искать возможность сделать что-то, чем искать

> возможность не делать. Сказать, "ах этот поганный C# не позволяет делать
> абстрактные методы приватными, да ну его к черту!", — это слишком легко
> и как минимум глупо.
В С++ приватные виртуальные методы помогают документированию:
http://www.cuj.com/documents/s=8000/cujcexp1812hyslop/hyslop.htm

> А если конкретно о private методах, то мне вот например почему-то не

> приходила мысль, что это может быть полезно, хотя абстрактные классы
> использую постоянно.
Учите С++.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[64]: C+ vs C#
От: alexeiz  
Дата: 15.02.06 10:23
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

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


A>>Не можешь отличить private от protected?


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


Дело в том, что на C# выразить инкапсуляцию в полной мере не удаётся. По твоей логике, раз нельзя, значит и не надо увлекаться.

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


Не спеши с выводами. CLI использует разные модели доступа к членам класса внутри и извне модуля. Какое безобразие можно сотворить с комбинациями public private, internal public, private protected и т.д., наверное, несравнимо с друзьями (тем не менее друзей таким способом нельзя реализовать). В данном случае нужно говорить не о хорошо/плохо спроектированном языке, а о гранулярности контроля над его поведением.

VK>И вообще более продуктивно искать возможность сделать что-то, чем искать возможность не делать. Сказать, "ах этот поганный C# не позволяет делать абстрактные методы приватными, да ну его к черту!", — это слишком легко и как минимум глупо.


Когда стоит выбор между двумя языками, ты выберешь тот, который даёт тебе больший контроль и гибкость или меньший?

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


Давно известная идея в C++. В мир C# она только-только приходит. Но только она не может быть реализована в полной мере. Эта ситуация характерна для C#. Многие полезные идеи из C++ не имеют (или имеют ограниченное) в нём представления.
Re[2]: C++ vs basic
От: alexeiz  
Дата: 15.02.06 10:26
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Именно так.


Опять же, какой basic? Конкретизируй.
Re[63]: C+ vs C#
От: Vermicious Knid  
Дата: 15.02.06 10:34
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>
C>struct Base
C>{
C>      Base() { do_squack(); }
C>      void squack() { do_squack(); }
C>protected:
C>      virtual void do_squack()=0;
C>}
C>

C>С точностью до синтаксиса.

Это не валидный код и не рабочий пример, учите C++.

Во-первых отсутствует точка с запятой после объявления класса(очередной маразм C++).

Во-вторых если считать первое опечаткой и добавить собственно код:
#include <iostream>

struct Base
{
    Base() { do_squack(); }
    void squack() { do_squack(); }
protected:
    virtual void do_squack()=0;
};

struct Derived : Base
{
protected:
    virtual void do_squack()
    {
        std::cout<<"squack!";
    }
};

int main()
{
    Base * base = new Derived();
}

gcc, и msvc7.1 его компилировать отказались(msvc7.1 просто не слинковал, gcc не понравился вызов do_squack в конструкторе). comeau online справедливо выдал warning.

Грязным хаком оказалось следующее(lol):
// .. код поскипан
    Base()
    {
        squack();
    }

В результате как и следовало ожидать имеем runtime-error "pure virtual method called" в обоих случаях. О результате этого эксперимента я знал зараннее, просто потому, что таков механизм работы виртуальных функций 99% известных мне реализаций C++.

В C# такой код почему-то считается штатной ситуацией и нормально работает. Зачем — это уже третий вопрос, но мне однажды это пригодилось.
Re[58]: C+ vs C#
От: Кодёнок  
Дата: 15.02.06 10:41
Оценка: 3 (2)
Здравствуйте, alexeiz, Вы писали:

A>Все примены из Nemerle идут лесом. Сравнивать C++ с функциональным языком, это слоны и бегемоты. Подумай тот ли язык программирования ты выбрал, если тебе приходится писать функциональный код. Здесь идет сравнение с C# — основным языком программирования для .NET.


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

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

3. В указанных мной примерах не ни одного элемента, свойственных лишь функциональным языкам. Вообще тему о ФЯ ты поднял не к месту. Я лишь продемонстрировал, что такое замыкания, и что в C++ их нет и эмулировать никакими ухищрениями в принципе нельзя. Зато замыкания есть в других (императивных) языках, к примеру, в Python.

Жду реализации Sort более краткой и понятной, чем это сделано с использованием элементов функционального программирования.

A>Опять в том же стиле. Ты не понимаешь о чём речь. Никто не пытается сказать, что всё можно сделать на C++ (легко).


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

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


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

Кё>>Факт в том, что в других языках есть нужные и полезные возможности, которых в С++ нет.

A>Где?

Что где? Где рефлешн без изменения синтаксиса объявлений и привлечения DDL? Где замыкания? Там, в документации. А если вспомнить, что Nemerle прочат в C# 4.0, то тут нельзя не упомянуть метапрограммирование с ествественным синтаксисом, вывод типов, функциональные типы, pattern matching.
Re[3]: C++ vs basic
От: Sheridan Россия  
Дата: 15.02.06 10:43
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Опять же, какой basic? Конкретизируй.


Какая разница... Ну скажем вижуал...

[RSDN@Home][1.2.0][alpha][643]
[Люди не могли бы жить, если бы боги не дали бы им дара забвения. [Еврипид]]
Matrix has you...
Re[4]: C++ vs basic
От: Pyromancer  
Дата: 15.02.06 11:06
Оценка: -1
Здравствуйте, Sheridan, Вы писали:

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


A>>Опять же, какой basic? Конкретизируй.


S>Какая разница... Ну скажем вижуал...


не поминай нечистого
Re[64]: C+ vs C#
От: Cyberax Марс  
Дата: 15.02.06 11:08
Оценка: -1
Vermicious Knid wrote:
> C>С точностью до синтаксиса.
> Это не валидный код и не рабочий пример, *учите C++*.
Код валидный. Будет вполне нормальный pure virtual call.

> Во-первых отсутствует точка с запятой после объявления класса(очередной

> маразм C++).
А кто сказал, что код завершен?

> gcc, и msvc7.1 его компилировать отказались(msvc7.1 просто не слинковал,

> gcc не понравился вызов do_squack в конструкторе). comeau online
> справедливо выдал warning.
Gcc 4.0.2 скомпилировал и предупреждением. При запуске — справедливый
pure virtual call.

Обходится приемом "Base From Member":
http://boost.org/libs/utility/base_from_member.html
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[2]: C++ vs basic
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 15.02.06 11:19
Оценка: +2 -1
Здравствуйте, Sheridan, Вы писали:

S>Именно так.


Троллим потихоньку?
Займись лучше чем полезным
Re[62]: C+ vs C#
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 15.02.06 11:25
Оценка: -1
Здравствуйте, Cyberax, Вы писали:

C>Это значит, что просто никому особо не надо. Тем более, что в C#

C>свойства — это просто сахар над get-,set- функциями и не добавляет
C>ничего семантически нового.

И вообще не понятно зачем они нужны.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[58]: C+ vs C#
От: Кодёнок  
Дата: 15.02.06 11:36
Оценка: +1
Здравствуйте, alexeiz, Вы писали:

A>Но C++ — это язык не для новичка. Про новичков вопрос отдельный. C++ в настоящее время больше ориентирован на профессионалов.


Жаль что эти профессионалы часто путают привычность с понятностью и читабельностью, наличие фичи в языке с возможностью решать те же задачи другими средствами (или с возможностью сделать кривую эмуляцию), и пытаются писать на новых языках как на известным им. А ещё небрежно бросают "а что вы хотели, С++ ведь надо изучать", абсолютно не обращая внимание, что на это надо минимум год в режиме полного рабочего дня в проекте, где будут возникать разноплановые задачи, и что перспективы такой траты времени всё более и более сомнительны.
Re[3]: C++ vs basic
От: Sheridan Россия  
Дата: 15.02.06 12:17
Оценка: :))
Здравствуйте, Alxndr, Вы писали:

A>Троллим потихоньку?

A>Займись лучше чем полезным

Дада, на Qt пишу потихоньку...

[RSDN@Home][1.2.0][alpha][643]
[Важнейшая задача цивилизации — научить человека мыслить. [Т. Эдисон]]
Matrix has you...
Re[54]: C+ vs C#
От: slavdon  
Дата: 15.02.06 12:25
Оценка: +1 -1
Здравствуйте, Дарней, Вы писали:

Д>Как там RSDN@Linux поживает?

Его не будет.
--
silent
Re[55]: C+ vs C#
От: __MasteR__ Россия  
Дата: 15.02.06 12:52
Оценка:
Здравствуйте, Sheridan, Вы писали:

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


Д>>Как там RSDN@Linux поживает?


S>Если мне дадут "псевдосервер" rsdn (чтобы xml синхронизации отдавал) то как сеточку дома подниму между новым и старым компом то начну девелопить. А то и сам напишу этот псевдоrsdn... Инета то дома нету...


Давай-давай, я даже посодействовать могу. Очень хотел бы видеть такое под Линуксом.
Re[56]: C+ vs C#
От: Sheridan Россия  
Дата: 15.02.06 12:56
Оценка: :))
Здравствуйте, __MasteR__, Вы писали:

__M>Давай-давай, я даже посодействовать могу. Очень хотел бы видеть такое под Линуксом.


Будет
У меня идея-фикс: сделать такого клиента, который обойдет RSDN@Home
Дабы доказать что шарп не рулит.

[RSDN@Home][1.2.0][alpha][643]
[Лучший способ защититься — не уподобляться. [Марк Аврелий]]
Matrix has you...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.