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

    Я очень люблю писать с помощью рекурсии и на паскале - удобно для меня.
    Но насколько это замедляет программу - другой вопрос.

    Добавлено
    Цитата swf @
    А как долго в кодескульпторе это будет храниться?
    И куда оно сохраняется?

    Про кодескульптор мне кто-нибудь ответит?
    Не поняла принцип его работы.
    Зарегаться там нельзя, но ссылки сохраняют написанный код.
    И как долго эти ссылки будут рабочие?
    Сообщение отредактировано: swf -
      Я про кодескульптор ничего не знаю. Он вообще странный, не для всего стандартного импорт поддерживает, например.

      На других подобных ресурсов ссылки живут бесконечно.
        Кстати, я не сетую, а, наоборот, радуюсь! у строки метод можно вызвать прямо в консольном приложении.
        Это большой плюс :)
          Цитата swf @
          Когда у меня на прологе лекция, посвящённая различным сортировкам, я за одну лекцию показываю все сортировки, которые они долбили полсеместра на структурах данных.
          Не лекция, а стенд-ап какой-то.

          Ага, небось по классике показываете и быструю сортировку, которая на самом деле не быстрая :D
            И ещё сверхбыструю. Они хорошо на рекурсию ложатся.
            Но самый улёт - жутко алгоритмичная сортировка пузырёк. Натянуть на неё рекурсию - всё равно что сову на глобус.
            Мне в этом году заданья удалённо сдавали, одна девочка в комментариях к пузырьку написала: Ну вот зачем такое сложное-то задавать?! :D

            Обнаружила, что у питоновских списков функцией del можно удалять нулевой элемент (голову!)и сохранять хвост как новый список.
            Офигеть.
            Ничто не мешает мне работать со списками как в прологе.
            (Замедлит ли это программу - другой вопрос. У пролога всё очень оптимизировано и заточено под рекурсию).
            Ну я как бы развлекаюсь с новым языком, изучаю его возможности.
            Питон - мегакрутой язык :beer:
              >у питоновских списков функцией del можно удалять нулевой элемент (голову!)и сохранять хвост как новый список.

              Во многих случаев в Python этого в явном виде не делают, а просто используют срезы alist[1:] или без хвостика - alist[:-1]
                Цитата MBo @
                >у питоновских списков функцией del можно удалять нулевой элемент (голову!)и сохранять хвост как новый список.

                Во многих случаев в Python этого в явном виде не делают, а просто используют срезы alist[1:] или без хвостика - alist[:-1]

                Спасибо, MBo, прямо вовремя: уже собралась извращаться, на питоне как на прологе писать.
                Прямо изготовилась :jokingly:
                Значит надо срезы изучить.

                ЗЫ. С одной стороны, столько нужных дел в сторону подвинула из-за питона, с другой стороны - прикольно.
                Изучение нового языка поднимает настроение, как ни странно.

                Добавлено
                Сколько по питону хорошей литературы!
                Погуглила индексы и срезы и сразу нашла:
                https://pythonworld.ru/osnovy/indeksy-i-srezy.html
                  В Прологе список это настоящий список (данные + ссылка на хвост), В Питоне - это аналог массива. Поэтому удаление первого элемента или любого интервала в списке сопровождается переписыванием этого массива.

                  Для списка в Питоне допустимы команды
                  del a[i] # Удаление элемента
                  del a[i:j] # Удаление диапазона
                  del a[:i] # Удаление начала списка
                  del a[i:] # Удаление конца списка
                  del a[i:j:k] # Удаление среза

                  Точно, как реализовано, не знаю, но скорее всего команда пробегает по списку и перемещает в начало те элементы, индексы которых не попадают в срез.
                  Сообщение отредактировано: amk -
                    Да, конечно, реализация списка другая. В Прологе элементы списка не нумерованы, чтобы, скажем, удалить не первый элемент, до него нужно ещё дойти.

                    Со срезами обнаружила, что отрицательный и положительный шаг обрабатывается по разным правилам.
                    Если шаг положительный, то начальное значение (н.з) может быть больше конечного (к.з).
                    Последний элемент имеет индекс -1, можно брать диапазон, скажем, от 0 до -1:
                    a[0:-1:+1]
                    А если шаг отрицательный, то всё: н.з. должно быть больше к.з.
                    Например, идём в обратном порядке от последнего элемента до первого (не включая):
                    a[-1:0:-1] - не работает.
                    Это очень странно.
                    Вместо одного правила нужно запоминать два.
                    И где: в работе с основной структурой для представления данных.
                      Цитата swf @
                      Например, идём в обратном порядке от последнего элемента до первого (не включая):
                      a[-1:0:-1] - не работает.
                      Это очень странно.

                      В каком смысле не работает?
                      ExpandedWrap disabled
                        >>> a = [1, 2, 3, 4, 5]
                        >>> a[-1:0:-1]
                        [5, 4, 3, 2]
                        А ещё можно присваивать диапазоны. a[1:4] = sorted(a[1:4]), например, отсортирует второй, третий и четвёртый элемент. Или даже так: a[::2] = sorted(a[::2]), и оно, очевидно, отсортирует между собой каждый второй элемент.
                          Цитата D_KEY @
                          Цитата swf @
                          Например, идём в обратном порядке от последнего элемента до первого (не включая):
                          a[-1:0:-1] - не работает.
                          Это очень странно.

                          В каком смысле не работает?
                          ExpandedWrap disabled
                            >>> a = [1, 2, 3, 4, 5]
                            >>> a[-1:0:-1]
                            [5, 4, 3, 2]

                          Заработало :wacko:
                          Вот что форум.сорс.ру животворящий делает :D
                          Ладно, буду экспериментировать дальше, если за компом не усну.

                          Добавлено
                          Цитата OpenGL @
                          А ещё можно присваивать диапазоны. a[1:4] = sorted(a[1:4]), например, отсортирует второй, третий и четвёртый элемент. Или даже так: a[::2] = sorted(a[::2]), и оно, очевидно, отсортирует между собой каждый второй элемент.

                          Сортировка встроенная, это правильно :)
                              Освежить тему мнением, что ли...
                              ИМХО следует разделять понятия "обучить программированию" и "обучить языку". С моей точки зрения, научить языку сродни вызубрить разговорник. Говорить сможешь, но точно выверенные за тебя кем-то другим фразы, понимать сможешь только чёткие паттерны, а выразить что-то своё или поговорить с первым попавшимся носителем языка не получится. Гораздо эффективнее будет не словарный запас наращивать, а изучать правила словообразования и грамматики. Тогда даже со скудным набором слов общение будет куда живее и внятнее.
                              За обучение программированию в ВУЗах следует топить в первую очередь как раз в направлении обучения технологиям, и только во вторую очередь их применениям на практике в рамках какого-либо языка. Какого именно, не так важно, но безусловно, чем больше потенциал у языка, тем лучше. Это позволит сосредотачиваться на важном в обоих сферах, и в теории, и на практике, вместо того, чтобы расслаивать теорию по разным направлениям её реализации в разных языках.
                              В этом смысле Паскаль давно себя, конечно, изжил. Технологий там кот наплакал, и дальше азов, которые и школьнику не составит труда понять и освоить, он практики не предоставит. Какой язык выбрать вместо... конечно Плюсы. Я не знаю ещё одного языка, на грамматике которого можно легко реализовать такое огромное множество теоретических паттернов (я сейчас не за GoF или что-либо подобное), особенно вкупе с поддержкой со стороны Стандартной библиотеки. Плюс к этому ещё то, что его не требуется знать глубоко, чтобы писать хорошие приложения. Даже имея лишь базовую теоретическую подготовку и базовые же, изучаемые буквально за минуты, синтаксические конструкции, можно писать эффективные решения в рамках изученного материала. Даже о Java сказать того же нельзя, там сразу уже надо знать гораздо больше, чтоб хоть что-то работающее написать. Конечно, изучать Плюсы во всю глубину нужно долго, но это если такую цель перед собой ставить, вопрос лишь в том, а надо ли. И ответить на этот вопрос может для себя каждый студен сам, язык не принуждает.
                                Нашла ошибку в уч. пособии, докопалась :D
                                Цитата
                                >>>a[1:4:-1]
                                []
                                В последнем примере получился пустой список, так как START < STOP, а STEP отрицательный.

                                В a[-1:0:-1] START тоже меньше STOP, а STEP отрицательный.

                                Правильно:
                                В последнем примере получился пустой список, так как START и STOP неотрицательные, STEP отрицательный и START < STOP.

                                Добавлено
                                Цитата Qraizer @
                                Освежить тему мнением, что ли...
                                ИМХО следует разделять понятия "обучить программированию" и "обучить языку". С моей точки зрения, научить языку сродни вызубрить разговорник. Говорить сможешь, но точно выверенные за тебя кем-то другим фразы, понимать сможешь только чёткие паттерны, а выразить что-то своё или поговорить с первым попавшимся носителем языка не получится. Гораздо эффективнее будет не словарный запас наращивать, а изучать правила словообразования и грамматики. Тогда даже со скудным набором слов общение будет куда живее и внятнее.
                                За обучение программированию в ВУЗах следует топить в первую очередь как раз в направлении обучения технологиям, и только во вторую очередь их применениям на практике в рамках какого-либо языка. Какого именно, не так важно, но безусловно, чем больше потенциал у языка, тем лучше. Это позволит сосредотачиваться на важном в обоих сферах, и в теории, и на практике, вместо того, чтобы расслаивать теорию по разным направлениям её реализации в разных языках.
                                В этом смысле Паскаль давно себя, конечно, изжил. Технологий там кот наплакал, и дальше азов, которые и школьнику не составит труда понять и освоить, он практики не предоставит. Какой язык выбрать вместо... конечно Плюсы. Я не знаю ещё одного языка, на грамматике которого можно легко реализовать такое огромное множество теоретических паттернов (я сейчас не за GoF или что-либо подобное), особенно вкупе с поддержкой со стороны Стандартной библиотеки. Плюс к этому ещё то, что его не требуется знать глубоко, чтобы писать хорошие приложения. Даже имея лишь базовую теоретическую подготовку и базовые же, изучаемые буквально за минуты, синтаксические конструкции, можно писать эффективные решения в рамках изученного материала. Даже о Java сказать того же нельзя, там сразу уже надо знать гораздо больше, чтоб хоть что-то работающее написать. Конечно, изучать Плюсы во всю глубину нужно долго, но это если такую цель перед собой ставить, вопрос лишь в том, а надо ли. И ответить на этот вопрос может для себя каждый студен сам, язык не принуждает.

                                Будущее за языками высокого уровня.
                                Языки типа плюсов займут свою нишу - системное программирование.
                                Только сишники и будут знать, как сортировку написать.
                                :)

                                Добавлено
                                Хотела отсортировать список по убыванию:
                                a[:] = sorted(a[::-1])
                                Нет, всё равно по возрастанию <_<

                                Добавлено
                                Ну как-то так, на первый случай
                                операции со списками
                                https://py3.codeskulptor.org/#user305_IQVPcuka0U_0.py
                                Сообщение отредактировано: swf -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (32) « Первая ... 24 25 [26] 27 28 ...  31 32


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0604 ]   [ 16 queries used ]   [ Generated: 25.04.24, 06:11 GMT ]