На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 446 447 [448] 449 450 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата korvin @
    Цитата D_KEY @
    Прочти уже про примитивные типы в яве/шарпе. В последнем так и свои типы-значения создавать можно.
    А отличается тем, что про яву - это твои фантазии :)

    И ты прочитай про окружения. =/ И расскажи, как в яве передать int по ссылке.

    В яве нет такого механизма, как явные ссылки. Вот тебе шарп:
    ExpandedWrap disabled
      using System;
       
      public class HelloWorld {
         static public void change(ref int x)
         {
            x += 100;
         }
         static public void Main() {
            int x = 10;
            Console.WriteLine (x);
            change(ref x);
            Console.WriteLine (x);      
         }
      }


    Добавлено
    Цитата korvin @
    Вывод-то какой?

    Надо читать документацию ;)

    Цитата
    Мы же уже выяснили, что наличие mutable рушит весь этот псевдоконтракт.

    Нет, не рушит. Контракт заключается не в отсутствии физических изменений, а в отсутствии логических.
      Цитата D_KEY @
      В яве нет такого механизма, как явные ссылки.

      Вот тебе шарп:

      Дык ну да же! Потому я и называю int иммутабельными данными, но переменные типа int конечно же мутабельны. Т.е. это значит, что переменную типа int можно изменить только в ее лексическом окружении. В отличие от делфи и плюсов (и C#). Видимо MS это сделало ради совместимости с плюсовым кодом.
        Цитата korvin @
        Зачем?
        Тяжелый случай...
        ExpandedWrap disabled
          int func(Window w);
        Скажи мне, изменяет эта функция параметр w или не изменяет?
        ExpandedWrap disabled
          procedure proc(const w: Window);
        А эта? паскаль давно не трогал, в синтаксисе могу напутать
        Сообщение отредактировано: trainer -
          Цитата D_KEY @
          Нет, не рушит. Контракт заключается не в отсутствии физических изменений, а в отсутствии логических.

          Что в лоб, что по лбу. :wall:

          Да откуда ты знаешь, что там автор задумывал как логическое, а что -- как физическое, может он все поля запихнул в mutable. Или например унаследовался от класса, в котором const-метод, а ему вдруг зачем-то захотелось изменять логическое состояние, взял и перекрыл методы, создал новые поля для хранения логического состояния, и сделал их все mutable, чтобы сигнатуры методов совпадали с родительскими. Вот и накрылся контракт медным тазом.

          Добавлено
          Цитата trainer @
          ExpandedWrap disabled
            int func(Window w);
          Скажи мне, изменяет эта функция параметр w или не изменяет?

          Не знаю и не вижу зачем мне это знать. Мне как-то достаточно прочитать документацию по этой функции (раз имя такое ни о чем не говорящее), что бы узнать зачем она нужна и соответственно когда ее применять. Что она там изменяет -- мне, вероятно, пофиг.
            Цитата korvin @
            Да откуда ты знаешь, что там автор задумывал как логическое, а что -- как физическое, может он все поля запихнул в mutable.
            Да и на здоровье. Меня интересует только внешнее проявление. А внутри он там может хоть вприсядку плясать.
              Цитата trainer @
              ExpandedWrap disabled
                procedure proc(const w: Window);
              А эта? паскаль давно не трогал, в синтаксисе могу напутать

              аналогично с предыдущей. Не напутал

              Добавлено
              Цитата trainer @
              Да и на здоровье. Меня интересует только внешнее проявление. А внутри он там может хоть вприсядку плясать.

              Так и в чем проблема тогда?
                Цитата korvin @
                Мне как-то достаточно прочитать документацию по этой функции (раз имя такое ни о чем не говорящее), что бы узнать зачем она нужна и соответственно когда ее применять.

                Цитата trainer @
                А если не написано - надо читать документацию или лезть в реализацию


                Добавлено
                Цитата korvin @
                Так и в чем проблема тогда?
                В том, что в Delphi const для ссылочных типов вовсе не const
                  Цитата korvin @
                  Потому я и называю int иммутабельными данными, но переменные типа int конечно же мутабельны. Т.е. это значит, что переменную типа int можно изменить только в ее лексическом окружении. В отличие от делфи и плюсов (и C#). Видимо MS это сделало ради совместимости с плюсовым кодом.

                  В яве примитивные типы аналогичны шарповским. А вот ref отсутствует.
                  Сообщение отредактировано: D_KEY -
                    Цитата trainer @
                    В том, что в Delphi const для ссылочных типов вовсе не const

                    Нет, он const, просто это не тот const о котором ты думаешь, я уже приводил пример выше какой это const, это
                    ExpandedWrap disabled
                      void func (Obj & const x)

                    вот этот const вроде.

                    Добавлено
                    Цитата D_KEY @
                    В яве примитивные типы аналогичны шарповским. А вот ref отсутствует.

                    :wall:

                    И так... В яве примитивные типы аналогичны шарповым, но передать их по ссылке как в шарпе нельзя.
                    В яве примитивные типы не такие, как в питоне, но в питоне их тоже нельзя передать по ссылке.

                    Просто букет взаимоисключающих параграфов, не находишь?
                    Может приведешь наглядное отличие питона от явы в этом отношении?
                      Цитата korvin @
                      Мне как-то достаточно прочитать документацию по этой функции
                      Чтение документации - это хорошо и правильно. Особенно если она есть. Как человек, участвующий в разработке большого проекта, могу тебе сказать, что:
                      1) документацию надо писать
                      2) она иногда устаревает.

                      Добавлено
                      Цитата korvin @
                      Нет, он const, просто это не тот const о котором ты думаешь
                      Я догадываюсь, о чем ты. Только я работаю с экземпляром типа. А как оно там внутри устроено - ссылка в стек пихается или еще что-то - мне безразлично. Зачем мне разбираться в деталях реализации?
                        Цитата trainer @
                        Да и на здоровье. Меня интересует только внешнее проявление. А внутри он там может хоть вприсядку плясать.

                        Т.е. то, что у const-метода можут быть внешнее проявление, тебя не смущает?
                          Кстати, вдогонку
                          Цитата korvin @
                          раз имя такое ни о чем не говорящее

                          Да на здоровье:
                          ExpandedWrap disabled
                            int GetWindowId(Window w);

                          ExpandedWrap disabled
                            procedure Lock(const w: Window);

                          Они меняют параметр w?
                            Цитата korvin @
                            Т.е. то, что у const-метода можут быть внешнее проявление, тебя не смущает?

                            Это никого не смущает.
                              Цитата korvin @
                              у const-метода можут быть внешнее проявление, тебя не смущает?
                              В смысле - может выводить что-то в std::cout? не смущает.
                                korvin, я не пойму, ты что пытаешься сказать? Что человек может сломать const? Так он что угодно может сломать. Хотя, конечно, да, эти высокоуровневые функциональные языки для чокнутых профессоров, ничего длиннее хелловордов не писавших и не представляющих себе работу инженера, всё обеспечивают, ага. Только никому на МПХ не нужны.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 446 447 [448] 449 450 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.5794 ]   [ 14 queries used ]   [ Generated: 29.07.26, 08:31 GMT ]