Re[5]: C# - from indians by indians
От: hi_octane Беларусь  
Дата: 22.05.15 12:50
Оценка: +7 :))) :)
S>>Ну и начиная с рослина всякие проверки типа таких пишутся на раз-два.
M>Я хочу использовать дизайн языка а не ковырять очередное поделие от микрософта. Понимаете вы мне все время говорите — "а вот пара дней помучать задницу, и вы разродитесь решением". Меня такой подход не устраивает потому что для меня ЯП это не вещь в себе а инструмент для решения определенной задачи. И я не собираюсь вникать в эти индусские идеи чтобы исправить индусские баги. Это детский сад. Мне нужен approach на уровне дизайна языка, в C# его нет.
Мы точно ещё в контексте С++? А то я не уверен что язык в котором всё может быть приведено к byte* и заполнено ценнейшими данными, является взрослым решением с тем approach на уровне дизайна языка, который вам нужен.

M>Это касается не только конкретно этой фичи но и кучи других вещей. Напр. множественное наследование. В дизайне языка просто отсутствуют rules которые помогли бы формировать корректный код. Вместо это вас отправляют к каким-то паттернам, стайл копам и прочей чуши. Это просто бред

В C# может и много чего нет, и я сам любитель покритиковать, но в нём дофига всякого и есть. Последний раз когда мне реально понадобилось множественное наследование в C# — выкрутился через генерацию partial классов. Кроме этого есть ещё PostSharp, Nemerle, и другие интересные способы решить проблему множественного наследования.

M>Вы просто не работали с индусами.

M>>>C# поощряет такой подход на уровне дизайна. С++ наоборот может подсказать новичку, что "вот так менять гравитацию" нельзя на уровне синтаксиса.
Ну если в контексте индусов, то честно говоря я не представляю что это за задачи такие в которых const что-то решает по сравнению с проверкой кода через контракты. В C++ нам далеко не индус организовал два delete одному указателю. Плавающий баг тихарился годами и был найден случайно когда код в связи с ростом проекта попал в цикл и memory manager взбрыкнул. А до того были странности выполнения зависящие от звёзд на небе. Как там, approach на уровне дизайна языка, говорите?

S>>Геттер без сеттера + init-метод?

M>Это слишком жесткая связка. Я не хочу ограничивать себя readonly методом. Очередная недороботка C# по дизайну. Очень грустно программировать на подобных языках
Прокачивайте чувство юмора, мне вот весело И снова, вы ещё в ракете не смотрели JavaScript на сервере не писали, там в сумерках вложенных каллбэков настоящая жара начинается
Re[2]: C# - from indians by indians
От: Mazay Россия  
Дата: 24.05.15 06:55
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Потому что в реальной жизни Раджеш просто выпилит const...


И получит кучу ошибок компиляции, поскольку на константном объекте можно звать только константные методы.
Главное гармония ...
Re: C# - from indians by indians
От: 0x7be СССР  
Дата: 24.05.15 07:39
Оценка: +1 :))) :))
Здравствуйте, mapnik, Вы писали:

M>Очень правильный механизм "защиты от дурака".

M>Discuss, господа, discuss
Раз в С++ есты защита от дурака, значит предполагается что на нам будут писать дураки.
Так какой там язык для индусов? :trollface:
Re[2]: C# - from indians by indians
От: greenpci  
Дата: 24.05.15 08:13
Оценка:
Здравствуйте, DreamMaker, Вы писали:

DM>и да, у меня ~18 лет на С++ и 4 на шарпе. и таких как я немало. а вот чтобы человек с шарпа перешел на плюсы и радовался — что-то о таком не слышал.


Будем знакомы. Уже три года как на плюсах после 5ти на шарпе. Причем выбор не случайный, сам к этому шел.
Re[6]: C# - from indians by indians
От: Ops Россия  
Дата: 24.05.15 09:05
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>В C++ нам далеко не индус организовал два delete одному указателю.

А кто вообще организовал delete указателю не в библиотечном коде? Оно такое нафиг не нужно.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[7]: C# - from indians by indians
От: hi_octane Беларусь  
Дата: 24.05.15 09:59
Оценка:
Ops>А кто вообще организовал delete указателю не в библиотечном коде? Оно такое нафиг не нужно.
Свои пулы (memory regions) объектов под задачи. Эволюционировали с простейших кусков памяти привязанных к задаче до поддержки вложенности, сериализации и передачи вместе с задачей на другую ноду кластера. В общем-то предположение правильное — вполне библиотечный код.
Re[3]: C# - from indians by indians
От: SkyDance Земля  
Дата: 24.05.15 10:06
Оценка: +7
M>Раджеш не выпилит const (иначе выпилят его) и он не знает про const_cast. Раджеш справедливо

Ох, ну что за наивность. Первым же делом Раджеш вставит обычный C-style cast, и вся эта красивая константность исчезнет.
Re[8]: C# - from indians by indians
От: Ops Россия  
Дата: 24.05.15 10:29
Оценка: :)
Здравствуйте, hi_octane, Вы писали:

_>Свои пулы (memory regions) объектов под задачи. Эволюционировали с простейших кусков памяти привязанных к задаче до поддержки вложенности, сериализации и передачи вместе с задачей на другую ноду кластера. В общем-то предположение правильное — вполне библиотечный код.


Не, я под "библиотечным" имел в виду RAII примитивы. Использовать delete где-то кроме них сегодня довольно странно. Оно, конечно, можно, для какой-нибудь хардкорной оптимизации, но тогда надо об этом помнить и писать везде аршинными буквами.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: C# - from indians by indians
От: Figaro Россия  
Дата: 25.05.15 02:08
Оценка:
Здравствуйте, DreamMaker...

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

P.S. Это о знании языков и их возможностях...
avalon/1.0.442
Re[3]: C# - from indians by indians
От: DreamMaker  
Дата: 25.05.15 10:59
Оценка:
Здравствуйте, greenpci, Вы писали:

G>Будем знакомы. Уже три года как на плюсах после 5ти на шарпе. Причем выбор не случайный, сам к этому шел.


a задачи какие? если что-то низкоуровневое, то да, возможно оправданно.
иначе — мазохизм хождения по костылям.
In P=NP we trust.
Re: C# - from indians by indians
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 25.05.15 11:58
Оценка: +3
Здравствуйте, mapnik, Вы писали:

M>Простейший пример оператор const в С++ в применении к функциям (Constant Member Functions).

class World {
public:
    World(){
        //initialize world's physics and geometry with default values
        setupWorld(defaultGravity, defaultSize, defaultBorderBehaviour);
    }
    ~World();

    hkpWorld*    getWorld() const { 
    //Yellow!!!
        //I'm Rajesh, I got Phd in India and now I'm going to fix one bug!
        
        hkpWorldCinfo worldInfo = new...;
        //let's change gravity from 9.8f to 10 because...
        worldInfo.m_gravity = 10;

        (const_cast<World*>(this))->physicsWorld =  new hkpWorld(worldInfo);
    return new hkpWorld(worldInfo); 
    };
    ...

private:
    ...
    hkpWorld *        physicsWorld;
    ...
};


ААААА, C++ говнище!!! Мало того что const нифига не помог, так еще и утечку памяти создал. Срочно бросайте все этот дерьмовый язык.


А если серьезно, то иди читай букварь прежде чем писать подобные темы.
Re[4]: C# - from indians by indians
От: greenpci  
Дата: 25.05.15 12:06
Оценка: 1 (1)
Здравствуйте, DreamMaker, Вы писали:

DM>a задачи какие? если что-то низкоуровневое, то да, возможно оправданно.

DM>иначе — мазохизм хождения по костылям.

Распределенные вычисления HPC. Использует всю память и считает по несколько дней, поэтому дотнет для задачи не подходит. Хотя все остальные части продукта, как UI, например, реализованы на дотнете.
Re[3]: C# - from indians by indians
От: greenpci  
Дата: 25.05.15 12:14
Оценка: +1 -2 :)
Здравствуйте, Figaro, Вы писали:

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


Шарп неплохой язык, но он наполнен людьми, которые не любят технологии и программирование, а используют его только для заработка. И я их понимаю, ведь платят хорошо и работу найти легче. Один мой коллега дотнетчик с пятилетним стажем, как-то, прервал мои рассуждение о BidEndian и LittleEndian. Как оказалось, он не знал сколько битов в байте и многое другое в этом направлении. Тем не менее, он успешный программист в своей нише и ему хорошо платят.
Re[6]: C# - from indians by indians
От: greenpci  
Дата: 25.05.15 13:05
Оценка: +1
Здравствуйте, hi_octane, Вы писали:

_>В C# может и много чего нет, и я сам любитель покритиковать, но в нём дофига всякого и есть. Последний раз когда мне реально понадобилось множественное наследование в C# — выкрутился через генерацию partial классов. Кроме этого есть ещё PostSharp, Nemerle, и другие интересные способы решить проблему множественного наследования.


Делается с помощью интерфейса и extension methods на этот интерфейс. Потом класс наследует интерфейс и еще один класс и вот тебе множественное наследование в C#.
Re: C# - from indians by indians
От: omgOnoz  
Дата: 25.05.15 21:58
Оценка:
Здравствуйте, mapnik, Вы писали:

  Скрытый текст
M>Господа, я не уверен было уже или нет. Думаю что да, прошу прощения за возможное повторение.
M>Читаю подобные темы и неудержимо тянет на гомерический хохот
M>http://rsdn.ru/forum/dotnet/6006483.flat.1
Автор: Sinix
Дата: 07.04.15

M>http://rsdn.ru/forum/dotnet/6053731.flat.1
Автор: Sinix
Дата: 20.05.15


M>"С# такая няшечка, в нем столько красивых рюшечек...". Все это в целом мило, но что насчет реально нужных фич, которые имеют действительно сильные проверенные временем ОО-языки?

M>Простейший пример оператор const в С++ в применении к функциям (Constant Member Functions).

M>Пример на С#:


M>
M>public sealed class World
M>{
M>    ...
M>    private hkpWorld physicsWorld;
M>    ...
    
M>    public World()
M>    {
M>        //initialize world's physics and geometry with default values
M>        setupWorld(defaultGravity, defaultSize, defaultBorderBehaviour);
M>    }

M>    ...
M>    public hkpWorld getWorld()
M>    {
M>        //Yellow!!!
M>        //I'm Rajesh, I got Phd in India and now I'm going to fix one bug!
        
M>        hkpWorldCinfo worldInfo = new...;
M>        //let's change gravity from 9.8f to 10 because...
M>        worldInfo.m_gravity = 10;
M>        physicsWorld = new hkpWorld(worldInfo);
M>        ...
M>        //Hello, I'm mapnik and I see this code
M>        //FUUUUUUCK!!!
M>        return physicsWorld;
M>    }
M>    ...
M>}
M>


M>И пример на С++, не допускающий подобного:


M>
M>class World {
M>public:
M>    World(){
M>        //initialize world's physics and geometry with default values
M>        setupWorld(defaultGravity, defaultSize, defaultBorderBehaviour);
M>    }
M>    ~World();

M>    //No Radjesh you can't :)))            
M>    hkpWorld*    getWorld() const { return physicsWorld; };
M>    ...

M>private:
M>    ...
M>    hkpWorld *        physicsWorld;
M>    ...
M>};
M>


M>Очень правильный механизм "защиты от дурака".


M>Discuss, господа, discuss


В Java прекрасно живется без всяких const методов. Существование const в С++ ни как не мешает "выстрелить в ногу".
Re[5]: C# - from indians by indians
От: Aртём Австралия жж
Дата: 26.05.15 05:47
Оценка: :)
Здравствуйте, greenpci, Вы писали:

G>Распределенные вычисления HPC. Использует всю память и считает по несколько дней, поэтому дотнет для задачи не подходит.

Чем же не подходит, ну кроме масдайности? Неужели MS-й JIT таки писан Раджешом, и потому сливает сановскому JIT-у по производительности?

G> UI, например, реализованы на дотнете.

А вот за масдайность гуя надо руки отбивать.
Re[6]: C# - from indians by indians
От: greenpci  
Дата: 26.05.15 12:29
Оценка:
Здравствуйте, Aртём, Вы писали:

Aё>Чем же не подходит, ну кроме масдайности? Неужели MS-й JIT таки писан Раджешом, и потому сливает сановскому JIT-у по производительности?


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

Джит прекрасно написан, я уверен. Но, до предела оптимизированное сишное приложение, все равно, делает меньше работы. Поэтому работает быстрее и жрет меньше памяти.

G>> UI, например, реализованы на дотнете.

Aё>А вот за масдайность гуя надо руки отбивать.

Зря. Атлассиан пишет SourceTree на WPF и ничего.
Re[7]: C# - from indians by indians
От: Aртём Австралия жж
Дата: 27.05.15 11:37
Оценка: -1
Здравствуйте, greenpci, Вы писали:

G>Джит прекрасно написан, я уверен. Но, до предела оптимизированное сишное приложение, все равно, делает меньше работы. Поэтому работает быстрее и жрет меньше памяти.

Я бы не был уверен насчёт жита дотнета- взять хотя бы его неспособность житить лишь горячие участки. Насчёт до предела оптимизаций- Matematica написана на Java и умеет CUDA, т.е. работает быстрее, а память- не ресурс.
Re[8]: C# - from indians by indians
От: Sinix  
Дата: 27.05.15 12:02
Оценка: 3 (2) +1
Здравствуйте, Aртём, Вы писали:

Aё>Я бы не был уверен насчёт жита дотнета- взять хотя бы его неспособность житить лишь горячие участки. Насчёт до предела оптимизаций- Matematica написана на Java и умеет CUDA, т.е. работает быстрее, а память- не ресурс.


Hotspot jit во многом нужен из-за отсутствия value types в яве. Без них разница с шарпом непринципиальна (что как бы очевидно, в рамках времени, отводимого на jit, ничего сильно пристойного всё равно не сделать). Для частных случаев с .net 4.5 есть profile guided optimisation, для cuda есть AleaGPU, т.е. не в этом счастье.

Тут в другом проблема: старые реализации jit не были заточены под числомолотилки. Плюс, начиная с второго дотнета и вплоть до winphone8/win8 clr не развивался от слова никак.

В свежих релизах с .NetCore и RyuJit положение потихоньку выправляется, особенно с учётом .net native и возможности трансляции в llvm. Но, очевидно, в ближайщую пару релизов ничего сильно не изменится — сначала надо переползти толком на новые платформы, ничего сильно не потеряв. Дальше — будем посмотреть.
Re[8]: C# - from indians by indians
От: greenpci  
Дата: 27.05.15 13:29
Оценка:
Здравствуйте, Aртём, Вы писали:

Aё>Я бы не был уверен насчёт жита дотнета- взять хотя бы его неспособность житить лишь горячие участки. Насчёт до предела оптимизаций- Matematica написана на Java и умеет CUDA, т.е. работает быстрее, а память- не ресурс.


КУДА на подойдет, это же GPU, как я понимаю. У этого приложения распределение идет на workers и облако.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.