На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (32) « Первая ... 25 26 [27] 28 29 ...  31 32  ( Перейти к последнему сообщению )  
> Язык для обучения программированию
    Цитата swf @
    Хотела отсортировать список по убыванию

    sorted(arr, reverse=True)
      Цитата Qraizer @
      За обучение программированию в ВУЗах следует топить в первую очередь как раз в направлении обучения технологиям, и только во вторую очередь их применениям на практике в рамках какого-либо языка. Какого именно, не так важно, но безусловно, чем больше потенциал у языка, тем лучше. Это позволит сосредотачиваться на важном в обоих сферах, и в теории, и на практике, вместо того, чтобы расслаивать теорию по разным направлениям её реализации в разных языках.
      В этом смысле Паскаль давно себя, конечно, изжил. Технологий там кот наплакал, и дальше азов, которые и школьнику не составит труда понять и освоить, он практики не предоставит.

      Можно согласиться.

      Цитата
      Я не знаю ещё одного языка, на грамматике которого можно легко реализовать такое огромное множество теоретических паттернов (я сейчас не за GoF или что-либо подобное), особенно вкупе с поддержкой со стороны Стандартной библиотеки.

      Может быть разберем пару примеров для более предметного разговора?

      Цитата
      Даже о Java сказать того же нельзя, там сразу уже надо знать гораздо больше, чтоб хоть что-то работающее написать.

      Почему ты так думаешь? По-моему у Java порог вхождения как раз ниже.
        Цитата Qraizer @
        Я не знаю ещё одного языка, на грамматике которого можно легко реализовать такое огромное множество теоретических паттернов (я сейчас не за GoF или что-либо подобное), особенно вкупе с поддержкой со стороны Стандартной библиотеки.
        Знаешь. Это D. Причем в D есть паттерны, которые пока в плюсах не реализуешь, например миксины. Плюсы, на самом деле, довольно бедный язык.
        Сообщение отредактировано: applegame -
          Цитата swf @
          Хотела отсортировать список по убыванию:
          a[:] = sorted(a[::-1])
          Нет, всё равно по возрастанию

          Так это очевидно же. Ты берёшь перевёрнутый список и его сортируешь :) Надо одним из этих способов:
          ExpandedWrap disabled
            a[::-1] = sorted(a)
            a = reversed(sorted(a))
            a = sorted(a, reverse=True)
            Чётъ слабенько, видать, Wound изрядно навёл шороху.
            Цитата D_KEY @
            Почему ты так думаешь? По-моему у Java порог вхождения как раз ниже.
            Потому что так и есть. Не ниже. В простейшем Джавном хелоуворде тебе придётся объяснить как минимум на две концепции больше, чем в простейшем Плюсовом. Чуть более сложный хеллоугай, чтоб запрашивал имя и приветствовал, если написать правильно (сиречь с обработкой ошибок), будет если не длиннее, то значительно менее понятным без витиевато упрощённого объяснения. Ещё чуть более сложный с запросом возраста, опять длиннее. И так постоянно.
            Цитата applegame @
            Знаешь. Это D. Причем в D есть паттерны, которые пока в плюсах не реализуешь, например миксины.
            Знаю, что не D. Ты регулярно приводишь примеры из D якобы нереализуемого на C++, но всё что до сих пор приводилось, оказывалось лукавством. Моё отношение к примесям я как-то уже приводил. Мне непонятен сам профит от этой концепции в Плюсах. В D, вероятно, он есть, спорить не буду, с Шарпах да Джаве она весьма симпатична, у них нет множественного наследования реализаций, в Плюсах оно есть, и если вдруг приспичит, симулируются они влёгкую. Аргумент с примесями выглядит так же, как "у вас в языке нет сборщика мусора", так что самый разумный ответ на примеси такой же, как и на сборщик: "а нахрена он нам?".

            Добавлено
            В целом я могу согласиться лишь с тем, что Плюсы более многословны по сравнению с D. Но считать ли это недостатком, вопрос субъективный, причём зависящий от контекста. В неком контексте оно недостаток, то же самое в чуть другом – уже нет. В общем случае чем точнее ты выражаешь свои мысли компилятору, тем лучше, т.к. тем меньше вероятность, что он поймёт тебя неверно и сделает то, что ты сказал, а не то, что хотел получить. Пример с C legacy cast уже классика. В этом смысле "многословность" Плюсов можно сравнить с практикой по вождению, когда экзаменуемый вслух комментирует все свои действия экзаменатору. На обучении это только благо. В дальнейшем никто так не делает, ...но иногда лучше б делал, если поглядеть записи с регистраторов на ютубчике. С этой точки зрения, если уж отвергать Плюсы, я скорее за Джаву как язык для обучения программирования, чем за Котлин.
              Qraizer, а если бы ты знал толком только C++, в следствии чего все концепции из других языков переводил бы в голове на плюсы и интерпретировал исключительно сквозь призму C++ и его подходов, то что помогло бы тебе это понять?

              Добавлено
              Цитата Qraizer @
              В простейшем Джавном хелоуворде тебе придётся объяснить как минимум на две концепции больше, чем в простейшем Плюсовом.

              Давай поэкспериментируем?
              Сообщение отредактировано: D_KEY -
                Цитата Qraizer @
                Ты регулярно приводишь примеры из D якобы нереализуемого на C++
                В плюсы уже завезли статическую рефлексию? И я имел в виду не примеси, а строковые миксины, в D - это замена макросам, хоть и неуклюжая.
                Вот тебе задача: получить список всех функций-членов произвольного класса.
                Или, например, сделать аналог opDispatch.

                Добавлено
                Цитата applegame @
                Вот тебе задача: получить список всех функций-членов произвольного класса.

                Решение на D, оно несколько неполное, но поверь, раздербанить можно любой тип на мельчайшие составляюшие:
                https://glot.io/snippets/fq6iq48un9

                Народ в плюсах жесточайшими путями умудряется кое-как итерировать поля PODов, и сильно гордится этим - https://habr.com/ru/post/344206/ :lol:
                Сообщение отредактировано: applegame -
                  Цитата applegame @
                  Народ в плюсах жесточайшими путями умудряется кое-как итерировать поля PODов, и сильно гордится этим - https://habr.com/ru/post/344206/

                  А мне вот такая итерация по enum-ам нравится. Да, костыль, но клёвый :D
                    Цитата OpenGL @
                    Цитата applegame @
                    Народ в плюсах жесточайшими путями умудряется кое-как итерировать поля PODов, и сильно гордится этим - https://habr.com/ru/post/344206/

                    А мне вот такая итерация по enum-ам нравится. Да, костыль, но клёвый :D

                    А что в нем клёвого? Список идентификаторов в enum-е получить можно?
                      Цитата applegame @
                      Список идентификаторов в enum-е получить можно?

                      Ты про это:
                      ExpandedWrap disabled
                        constexpr auto color_names = magic_enum::enum_names<Color>();
                        // color_names -> {"RED", "BLUE", "GREEN"}
                        // color_names[0] -> "RED"

                      ?
                        Цитата applegame @
                        А что в нем клёвого?

                        Довольно изящное решение на мой взгляд.

                        Цитата applegame @
                        Список идентификаторов в enum-е получить можно?

                        И список enum_ов, и их строковые представления, и каст в строку и обратно с проверками, и всё это constexpr.
                          Цитата D_KEY @
                          Ты про это:
                          Да, про это.
                          Цитата OpenGL @
                          Довольно изящное решение на мой взгляд.
                          Покопался в коде и нашел, как там вытаскиваются имена из энума. Это решается не при помощи языковых конструкций, а довольно грубым хаком, а именно расковыриванием значения макроса __PRETTY_FUNCTION__ (__FUNCSIG__ в Visual Studio), который мало того, что является не частью языка, а расширением некторых компиляторов, так еще и никак не стандартизирован.
                          В итоге в коде появляются магические константы, меняющиеся в зависимости от компилятора:
                          ExpandedWrap disabled
                            template <typename E>
                            constexpr auto n() noexcept {
                              static_assert(is_enum_v<E>, "magic_enum::detail::n requires enum type.");
                            #if defined(MAGIC_ENUM_SUPPORTED) && MAGIC_ENUM_SUPPORTED
                            #  if defined(__clang__)
                              constexpr std::string_view name{__PRETTY_FUNCTION__ + 34, sizeof(__PRETTY_FUNCTION__) - 36};
                            #  elif defined(__GNUC__)
                              constexpr std::string_view name{__PRETTY_FUNCTION__ + 49, sizeof(__PRETTY_FUNCTION__) - 51};
                            #  elif defined(_MSC_VER)
                              constexpr std::string_view name{__FUNCSIG__ + 40, sizeof(__FUNCSIG__) - 57};
                            #  endif
                              return static_string<name.size()>{name};
                            #else
                              return std::string_view{}; // Unsupported compiler.
                            #endif
                            }

                          То бишь, если слегка поменяется формат этого макроса, все поломается. И ты это называешь изящным решением? :lol:

                          Плюсы становятся всё хуже и хуже, нагромождение новых синтаксических конструкций, вот что это такое?
                          ExpandedWrap disabled
                            constexpr std::string_view name{..., ...};

                          почему не так?
                          ExpandedWrap disabled
                            constexpr std::string_view name(..., ...);
                          Сообщение отредактировано: applegame -
                            Цитата applegame @
                            Покопался в коде и нашел, как там вытаскиваются имена из энума. Это решается не при помощи языковых конструкций, а...

                            Так это невозможно сделать при помощи языковых конструкций. На данный момент.

                            А тебе сразу сказали, что это костыль :D

                            Но в плане интерфейса довольно неплохо сделано.

                            Добавлено
                            Что-то мы ушли от темы обучения...
                              Цитата D_KEY @
                              Так это невозможно сделать при помощи языковых конструкций. На данный момент.

                              А тебе сразу сказали, что это костыль
                              Костыль костылю рознь. Это не только костыль, но еще и небезопасный хак.

                              Добавлено
                              Цитата D_KEY @
                              Что-то мы ушли от темы обучения...
                              Ну можно сделать вывод, что C++ крайне плох, как первый язык. А лично я бы сказал, что он просто плох и учить его нужно только из-за того, что он пока востребован на рынке.
                              Кстати тот же D прост в обучении, можно с него начинать. Но маргинальность языка - серьезный аргумент против.
                                Цитата applegame @
                                Ну можно сделать вывод, что C++ крайне плох, как первый язык.

                                Ну я то с этим согласен :)

                                Цитата
                                А лично я бы сказал, что он просто плох и учить его нужно только из-за того, что он пока востребован на рынке.

                                Нуу... Есть люди, которым он заходит. Почему бы им его не учить? Имеют право.

                                Цитата
                                Кстати тот же D прост в обучении, можно с него начинать. Но маргинальность языка - серьезный аргумент против.

                                Именно.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (32) « Первая ... 25 26 [27] 28 29 ...  31 32


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