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

    а ваш & -- и есть параметризованный тип, равно как и *

    Именно :yes:

    Цитата
    вот тебе без переменных (связанных с исследуемыми значениями):
    ExpandedWrap disabled
      (define t (make-hash))
       
      (hash-set! t 'x 0)       ; обычный
      (hash-set! t 'a (box 0)) ; ссылочный
       
      (hash-set! t 'y (hash-ref t 'x))
      (hash-set! t 'b (hash-ref t 'a))
       
      (hash-set! t 'x 1)
      (set-box! (hash-ref t 'a) 1)
       
      (print (hash-ref t 'y))         ; => 0
      (print (unbox (hash-ref t 'b))) ; => 1

    и никаких переменных для x, y, a, b

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

    Добавлено
    Цитата korvin @
    Цитата D_KEY @
    Объекты при передачи по значению не идентичны(хотя могут быть равны). Ты создаешь копию.
    Вообще, если речь об ООП, то передавать по значению тебе будет нужно крайне редко. Поэтому такое неявное копирование(и срезы) запрещают.

    ну собственно ЧТД

    Ну значит то, что ты хотел доказать, никак не противоречит тому, что говорил тебя я и остальные участники.
      Цитата korvin @
      С++ никогда не стал бы так популярен

      Давно свой предсказамусовский шарик от пыли протирал? ))
        Цитата Мяут-Настоящий @
        Цитата korvin @
        а ваш & -- и есть параметризованный тип, равно как и *

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

        На множество значений, набор операций & и * влияния не оказывает, т.е. это модификатор типа

        Он не оказывает влияние на тип, он порождает новый тип: "ссылка на объект класса T" или "указатель на объект класса T".
          Цитата MyNameIsIgor @
          Даже C99 далеко до плюсов по части построения абстракции. Лично меня убивает наповал даже такая банальщина, как отсутствие пространств имён - это же финиш полный!!!

          я упомянул С99 вовсе не по этой причине, а по причине невозможности так просто напрямую юзать С99-код из плюсов, там какие-то конфликты есть, а уж ОбжС более абстрактен, чем плюсы, мне хватило небольшого знакомства с Xcode и QtCreator, чтоб понять это (хотя да, у Xcode давняя история, попробую Visual C++, потом скажу), не смотря на то, что ОбжС -- просто библиотека, а С++ -- отдельный язык
          Сообщение отредактировано: korvin -
            Цитата korvin @
            Цитата Мяут-Настоящий @
            Ололо, C++ вообще родился из фреймворка многопоточности, написанного Страуструпом в Bell Labs для C. И объемы кода тут не причем, просто реализация получилась достаточно удачной, чтобы ее продолжили развивать

            при отсутствии необходимости юзать С код С++ никогда не стал бы так популярен

            Ошибаешься, множество проектов начинали на С++. По причине того, что подходил или С, или С++, все остальное было хуже. А С++ лучше С.
            Собственно это и продолжается до сих пор, поскольку D, Go и другие попытки занять туже нишу пока малопригодны для практического использования.

            Добавлено
            Цитата korvin @
            не смотря на то, что ОбжС -- просто библиотека

            У тебя очень странные понятия о библиотеках.
            Сообщение отредактировано: D_KEY -
              Цитата Мяут-Настоящий @
              Это почему?

              На множество значений, набор операций & и * влияния не оказывает, т.е. это модификатор типа

              это по определению, вид этих типов (* -> *), а то, что это типы -- сказал Qraizer и я с ним тут не спорю

              * оказывает (. vs ->)

              Добавлено
              Цитата Мяут-Настоящий @
              Давно свой предсказамусовский шарик от пыли протирал? ))

              чтоб анализировать прошлое, он не нужен, да =/
                Цитата D_KEY @
                Он не оказывает влияние на тип, он порождает новый тип: "ссылка на объект класса T" или "указатель на объект класса T".

                Кажется мы уже об этом спорили. Тогда почему дизайн C++ явно разрешает такое:

                ExpandedWrap disabled
                  #include <iostream>
                   
                  template<typename T>
                  void f(T& t) {
                    std::cout << "ref\n";
                  }
                   
                  template<typename T>
                  void f(T* t) {
                    std::cout << "ptr\n";
                  }
                   
                  struct A {};
                   
                  int main() {
                   A a;
                   f(a);
                   f(&a);
                  }


                Почему во втором случае вызывается вторая функция c T=A, а не первая с T=A*

                Добавлено
                Цитата korvin @
                чтоб анализировать прошлое, он не нужен, да =/

                Ты вообще какие-то параллельные вселенные анализируешь :)
                  Цитата D_KEY @
                  А С++ лучше С.

                  скажи это разработчикам ядер всех *никсов + Plan 9. вот в QNX да, там вроде С++ часто юзается, хотя за ядро не скажу, жаль тут нет его разработчиков. а так только вечнодогоняющая, кривая венда, да полузаброшенный BeOS и его потомки
                    Цитата korvin @
                    скажи это разработчикам ядер всех *никсов + Plan 9.

                    Модули ядра Sun Cluster вполне себе написаны на C++ :) Да и сам он - адская мешанина из C и C++ :)
                      Цитата Мяут-Настоящий @
                      Почему во втором случае вызывается вторая функция c T=A, а не первая с T=A*

                      Потому, что это перегрузка функций ;)

                      Добавлено
                      Цитата korvin @
                      Цитата D_KEY @
                      А С++ лучше С.

                      скажи это разработчикам ядер всех *никсов + Plan 9. вот в QNX да, там вроде С++ часто юзается, хотя за ядро не скажу, жаль тут нет его разработчиков. а так только вечнодогоняющая, кривая венда, да полузаброшенный BeOS и его потомки

                      Зачем мне это им говорить? Для ОС возможностей С достаточно, накопленного кода и методик больше, опыта тоже. Так почему же им не использовать С?
                        Цитата D_KEY @
                        Я в очередной раз не понял твоего ответа. Ты тут все задаешь явным образом. Никаких неявных ссылочных типов я тут не вижу.

                        box -- ссылочный тип, ссылочные типы тем и отличаются, что для изменеия какого-то их поля нужно вызывать accessor, они не изменяются сами по присваиванию, т.к. переменные тут не при чем, только значения и их типы при чем
                          Цитата D_KEY @
                          Для ОС возможностей С достаточно, накопленного кода и методик больше, опыта тоже. Так почему же им не использовать С?

                          Отсутствие менеджеров контекста (умное слово из книги по питону выучил :P) вымораживает. Я тут на курс по разработке линуксятки ходил, копрокод в итоговой лабе вымораживает:
                          ExpandedWrap disabled
                            int lpt_init_device(struct lpt_device* dev, dev_t devno, unsigned long base,
                                        int irq) {
                                char err;
                             
                                /*Allocate buffers and set up pointer*/
                                dev->buffer = kmalloc(BUFFER_SIZE, GFP_KERNEL);
                                dev->end = dev->wp = dev->buffer;
                             
                                /*Task wait queue*/
                                init_waitqueue_head(&dev->lock);
                                
                                /*Init char device*/
                                cdev_init(&dev->cdev, &lpt_fops);
                                dev->cdev.owner = THIS_MODULE;
                                dev->cdev.ops = &lpt_fops;
                                err = cdev_add (&dev->cdev, devno, 1);
                             
                                if (err) {
                                    printk(KERN_NOTICE "Error %d adding lpt_device device", err);
                             
                                    kfree(dev->buffer);
                                    return -ENODEV;
                                }
                             
                                /*Init base*/
                                dev->base = base;
                             
                                if (! request_region(base, 3, "lpt")) {
                                    printk(KERN_INFO "lpt: can't get I/O port address 0x%lx\n",
                                            base);
                                    kfree(dev->buffer);
                                    cdev_del(&dev->cdev);
                             
                                    return -ENODEV;
                                }
                             
                                /*Set up interrupts and bh*/
                                tasklet_init(&dev->task, lpt_tasklet, (unsigned long) dev);
                                dev->irq = irq;
                             
                                if(! request_irq(irq, lpt_irq_handler, 0, "lpt", (void*) dev)) {
                                    printk(KERN_INFO "lpt: can't get irq0x%d\n",
                                            irq);
                             
                                    /*Cleanup*/
                                    kfree(dev->buffer);
                                    cdev_del(&dev->cdev);
                                    release_region(dev->base, 3);
                             
                                    return -ENODEV;
                                }
                             
                                lpt_put(dev, LPT_CTL, 0x10);
                             
                                printk(KERN_NOTICE "Registered lpt_device (%d;%d) @0x%lx irq%d",
                                    MAJOR(devno), MINOR(devno), base, irq);
                             
                                return 0;
                            }
                            Цитата D_KEY @
                            Зачем мне это им говорить? Для ОС возможностей С достаточно, накопленного кода и методик больше, опыта тоже. Так почему же им не использовать С?

                            ну тогда не нужно бросаться такими общими фразами =)
                              Цитата korvin @
                              ну тогда не нужно бросаться такими общими фразами =)

                              Да, но как это отменяет тот факт, что C++ лучше C?
                                Цитата Мяут-Настоящий @
                                Модули ядра Sun Cluster вполне себе написаны на C++ :) Да и сам он - адская мешанина из C и C++ :)

                                то-то санкам пришлось продаться... =)))) ну ладно, это просто подколка =) OpenSolaris, я смотрю, бурно развивается? =)))

                                Добавлено
                                Цитата Мяут-Настоящий @
                                умное слово из книги по питону выучил

                                кстати, у питона вроде неплохо с юзанием С-кода (сколько там модулей написано на С?). впрочем, может это просто совпадение... =))

                                Добавлено
                                Цитата Мяут-Настоящий @
                                Да, но как это отменяет тот факт, что C++ лучше C?

                                так, что его почти не юзает для написания ОС => как минимум в одной нише он не лучше // КО
                                а попытки его таки заюзать ничем особо хорошим не обернулись =)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 188 189 [190] 191 192 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.3497 ]   [ 14 queries used ]   [ Generated: 1.08.26, 01:14 GMT ]