Конференция "Прочее" » Чем вам лично не нравится CPP?
 
  • Юрий Зотов © (28.08.08 19:05) [20]
    Тут как-то пример приводили...

    int func(int x, int y) {
     return x - y;
    }


    int i = 1;
    int f = func(i, i++);


    Чему будет равно f ?
  • Юрий © (28.08.08 19:07) [21]
    > [20] Юрий Зотов ©   (28.08.08 19:05)

    0 ?
  • @!!ex © (28.08.08 19:10) [22]
    > [20] Юрий Зотов ©   (28.08.08 19:05)

    0 по идее?

    А вообще это пример дурного кода. ИМХО.


    > [19] Ega23 ©   (28.08.08 19:04)

    в принципе это не такая уж и проблема, скорее дело привычки(ИМХО), да и инклюды имеет несколько преимуществ перед uses.
  • Ega23 © (28.08.08 19:12) [23]

    > в принципе это не такая уж и проблема, скорее дело привычки(ИМХО)


    Про grep я в курсе. Но - неудобно.
  • Юрий Зотов © (28.08.08 19:18) [24]
    > Юрий ©   (28.08.08 19:07) [21]

    Зависит от порядка вычисления выражений (аргументов при вызове функции), а он стандартом языка не регламентирован. В итоге может получиться, что один и тот же исходный код, но откомпилированный разными компиляторами, будет давать разные результаты. Что ужасно.

    > @!!ex ©   (28.08.08 19:10) [22]

    Конечно, это пример дурного кода. Даже ОЧЕНЬ дурного кода. Но если язык позволяет писать такой код, то это тоже очень плохо.
  • @!!ex © (28.08.08 19:22) [25]
    > Зависит от порядка вычисления выражений (аргументов при
    > вызове функции), а он стандартом языка не регламентирован.
    > В итоге может получиться, что один и тот же исходный код,
    > но откомпилированный разными компиляторами, будет давать
    > разные результаты. Что ужасно.

    Хм... Почему?
    Вроде бы ++ после переменной говорит о том, что она будет инкрементирована ПОСЛЕ того, как будет использовани ее значение. Нет?
  • Юрий Зотов © (28.08.08 19:24) [26]
    > @!!ex ©   (28.08.08 19:22) [25]

    Предположим, сначала вычисляется второй параметр. Тогда чему будет равен первый?
  • @!!ex © (28.08.08 19:32) [27]
    > [26] Юрий Зотов ©   (28.08.08 19:24)

    Так он в этот момент еще не использован, значит не вычисляется.. разве нет?
  • @!!ex © (28.08.08 19:32) [28]
    Хотя ++i дает уже не предсказуемый вариант... согласен...
  • Юрий Зотов © (28.08.08 19:40) [29]
    > @!!ex ©   (28.08.08 19:32) [27]

    1. Вычисляется значение ВТОРОГО аргумента. Оно будет равно 1.
    2. Переменная i УЖЕ использована (для вычисления значения второго аргумента) и поэтому будет инкрементирована СРАЗУ после вычисления выражения.
    3. Первый аргумент получится равным 2.
    4. Результат будет равен 1.

    Если же сначала вычисляется ПЕРВЫЙ аргумент, то результат будет равен нулю.
  • Сергей М. © (28.08.08 19:50) [30]

    > Мне интересны ваши мысли. Я прокомментирую по ходу


    А мне неинтересны "походные" комментарии моих мыслей)
    Явился тут, "панимаишь", какой-то ЗентаАбсента с откровенным запахом дилетанта, но при этом "профипонтами") ..
  • Asteroid © (28.08.08 20:54) [31]
    >  Чем вам лично не нравится CPP?
    Отсутствием аналога "function of object", замороченностью с header-ами, отсутствием дельфийски-удобного редактора кода =)
  • palva © (28.08.08 21:03) [32]

    > Отсутствием аналога "function of object"

    А разве статический метод не аналог ?
  • ketmar © (28.08.08 21:10) [33]
    >[16] @!!ex © (2008-08-28 18:54:00)
    >Помойму вполне адекватный язык…

    угу. с недосборщиком недомусора, да.

    >[21] Юрий © (2008-08-28 19:07:00)
    >0 ?

    it depends. порядок вычисления операндов не специфицирован, постэффекты тоже. может быть func(1, 1), может func(2, 1).

    >[25] @!!ex © (2008-08-28 19:22:00)
    >Вроде бы ++ после переменной говорит о том, что она будет инкрементирована ПОСЛЕ
    >того, как будет использовани ее значение.

    угу. только компилер может решить, что второй операнд вычислить стоит первым. а ++ увеличивает значение сразу, а не после того, как всё выражение вычислено.

    >[31] Asteroid © (2008-08-28 20:54:00)
    >отсутствием дельфийски-удобного редактора кода =)

    дада, это особенно! почему в g++ IDE не встроили?! %-)

    зыж а мне вот нравится ровно одним: наличием Qt. за Qt я даже согласен простить цпп врождённый идиотизм.

    ---
    All Your Base Are Belong to Us
  • VirEx © (28.08.08 21:15) [34]
    > Чем вам лично не нравится CPP?

    тем, что не компилируется в Delphi 7
  • Asteroid © (28.08.08 21:19) [35]
    > А разве статический метод не аналог ?
    Не аналог, доступ к не-статическим полям мне никто не обеспечит; если же объявлять каждую требуемую переменную как volatile....уж лучше обойтись без function of object =)
    В принципе это реализуемо, но....хотелось бы нативную поддержку.
  • KilkennyCat © (28.08.08 22:39) [36]

    > Сергей М. ©   (28.08.08 19:50) [30]
    >
    >
    > > Мне интересны ваши мысли. Я прокомментирую по ходу
    >
    >
    > А мне неинтересны "походные" комментарии моих мыслей)
    > Явился тут, "панимаишь", какой-то ЗентаАбсента с откровенным
    > запахом дилетанта, но при этом "профипонтами") ..


    Присоединяюсь.
    Добавлю, что если кому-то интересны чьи-то мысли и он хочет их узнать, то просьба должна быть более вежлива. Иначе это похоже на просьбу получить в челюсть.
  • Alkid (28.08.08 22:42) [37]

    > Asteroid ©   (28.08.08 21:19) [35]

    Есть похожий аналог:

    class A
    {
    public:
      void f1();
      void f2();
    }
    ;

    typedef  void (A::*ClassAFuncPtr)() ; // тип указатель на функцию-член класса A

    void main()
    {
     A a;

     ClassAFuncPtr ptr = &A::f1;

     (a.*ptr)(); // вызываем f1 для a

     ptr = &A::f2;

     (a.*ptr)(); // вызываем f2 для a
    }

  • Alkid (28.08.08 22:50) [38]
    А теперь что мне не нравится в С++:

    1. Система include`ов, отсутствие нормальной модульности.
    2. Наличие нескольких темных моментов (типа приведенного примера с неустановленным порядком вычисления), которые дают возможность прострелить себе ногу. Но, вцелом, эти все страшилки больше  для примеров годятся. В реальных проектах на такое ни разу не напарывался.
    3. Тяжкое наследие С.
    4. Нет reflection.
    5. Нет лямбд с замыканиями.
    6. Нет *нормального* метапрограммирования. Всякие шаблонные извраты не в счёт.

    Это так, навскидку. О том, что мне в С++ не нравится я могу говорить часами :)
  • oxffff © (28.08.08 23:32) [39]
    А мне нравится С++.
    Мне даже ABAP нравится.
    И IL и С# нравится также.
    И другие языки с которыми имел дело.
 
Конференция "Прочее" » Чем вам лично не нравится CPP?
Есть новые Нет новых   [134442   +10][b:0][p:0.001]