Задать вопрос
  • Как устроен list() в Python?

    @res2001
    Developer, ex-admin
    Когда вы программируете на питоне не важно как реализован список внутри, главное, чтобы он выполнял то, что от него требуется.
    Он вполне мог бы быть реализован и как связный списк. Такая реализация не отменяет операцию взятия элемента по индексу.
    Взятие элемента по индексу в питоне, это совсем не взятие элемента по индексу в массиве Си.
    Все операции в питоне (в т.ч. и взятие элемента по индексу) просто вызывают соответствующие функции обработчики. В функциях может быть какая угодно логика от Сишного взятия элемента по индексу, до прохождения списка до нужного элемента и т.п.
    Реализация каждого типа в питоне заполняет структуру указателей на функции, реализующих питоновские операции для этого типа. Вы выйдите на эту структуру, если дальше продолжите раскопки PyObject_VAR_HEAD.

    PS: Ваши выводы, основанные на структуре питоновского списка, верны.
    Для студента 1 курса очень не плохо!
    Ответ написан
    Комментировать
  • Как устроен list() в Python?

    15432
    @15432
    Системный программист ^_^
    https://docs.python.org/2/faq/design.html#how-are-...

    How are lists implemented in CPython?¶
    CPython’s lists are really variable-length arrays, not Lisp-style linked lists. The implementation uses a contiguous array of references to other objects, and keeps a pointer to this array and the array’s length in a list head structure.

    This makes indexing a list a[i] an operation whose cost is independent of the size of the list or the value of the index.

    When items are appended or inserted, the array of references is resized. Some cleverness is applied to improve the performance of appending items repeatedly; when the array must be grown, some extra space is allocated so the next few times don’t require an actual resize.

    Короче динамический массив. Непрерывный массив указателей на объекты
    Ответ написан
    1 комментарий
  • Стоит ли читать 2 книги по программированию параллельно?

    @d-sem
    Стоит. Даже более того. Со временем можно прийти к тому что на книжной полке с десяток книг с закладками, которые вначале бегло просматриваются, а потом читаются и перечитываются по мере необходимости. Очень интересно наблюдать профессоров старой школы с большими библиотеками. У них часто именно такой режим чтения: читать, делать пометки, возвращаться снова.

    А каша зависит от индивидуальной организации мышления. Кто-то может, кто-то нет. Из хорошего - это тренируется.
    Ответ написан
    Комментировать
  • Как происходит чистка памяти в Python?

    sswwssww
    @sswwssww
    Если не осталось ссылок на объект в памяти(счетчик ссылок на объект = 0 (на самом деле не совсем 0, но это уже связано со внутренними механизмами интерпретатора, это нас волновать не должно)) - объект удаляется сборщиком мусора. За удаление объектов вам переживать не стоит.
    Т.е. в вашем примере, ссылки на объект еще остались (a = x[4]), поэтому автоматически не происходит удаление объекта.
    Ответ написан
    2 комментария
  • Куда устанавливаются пакеты через pip?

    @alikk_python
    Кратко о себе
    Если используете PyCharm то там в настройках интерпретатора вы должны поставить python, в котором она установлена. По крайней мере на Linux это так, если вы используете не PyCharm то можете переустановить python, у меня на windows такое бывало.
    Ответ написан
    1 комментарий
  • Куда лучше поступать для обучения на программиста?

    @Altroa
    Вообще, вуз не играет определяющей роли в твоих навыках. С точки зрения инфраструктуры, т.е. дальнейшей карьеры, концентрации айти компаний в районе и городе, окружение, на мой взгляд, из твоего списка выигрывают 2 вуза - СпбГУ и НГУ. Сам закончил НГУ и уже 16 лет работаю в айти. Конечно, за 16 лет программа в универах поменялась, но в целом эти универы пока держат марку и армия айтишников растет с каждым годом. На западе про НГУ ничего не знают, да и про Новосибирск тоже :-). А вот Питер на слуху.

    В общем, в какой бы ты вуз не пошел, все будет зависеть от твокго интереса и желания учиться
    Ответ написан
    Комментировать
  • Куда лучше поступать для обучения на программиста?

    @B4TRUH4
    Ахахахах, чел, точь в точь такая же ситуация, как у тебя) Как говорится в одной пословице: все дороги ведут в икит)))
    Ответ написан
    3 комментария
  • Что должен знать любой программист помимо изучения языка программирования?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Меня всегда поражали люди, которые не имея вообще никаких знаний сразу выбирают себе область и составляют обширный план, начинающийся с ООП, имеющий в середине бд, и заканчивающийся переменными.
    Нет, чисто теоретически, изучить всю абстрактную теорию в таком порядке можно... Но на практике это нереально.
    Я программировал 3 года в школе. Потом 5 лет в универе. И только к концу 4 курса я понял, что хочу работать в сфере мобильной разработки. До этого меня штырило от всего - OpenGL? Дайте два, будем пробовать. Cuda? Пофиг, что видюха ноута не поддерживает, почитаю пока, потом когда-то забахаю. Lisp? Круто, выносит мозг. Компиляторы? Круууто, магия, хотеть, пишем свой! И так далее, и тому подобное. Я отдавался каждому языку, который встречался на пути.
    Так что подумайте, правда ли вы знаете всё об этой сфере и о других, чтобы понимать, где вы хотите работать.

    Вначале нужны алгоритмы. Любая программа это алгоритм. Нужно понимание архитектуры ЭВМ. Нужно хотя бы базовое понимание ОС. Нужны знания в каком-то языке. Лучше в двух-трёх. Потом всё прикладное. БД, фреймворки, паттерны и прочее.
    Ответ написан
    3 комментария
  • Порядок вызова конструкторов при наследовании?

    @Mercury13
    Программист на «си с крестами» и не только
    Вызов конструктора Parent считается частью вызова конструктора Child. И он происходит раньше, чем конструирование всех полей, добавленных в Child — и уж тем более до тела Child::Child.
    Ответ написан
    7 комментариев
  • Почему прыгает температура CPU?

    Zoominger
    @Zoominger Куратор тега Железо
    System Integrator
    А он точно греется? Руку суньте при повышении температуры от датчиков - тепло там или нет? Процессор нагружается? Если да, проверьте антивирусом, мало ли, майнер завёлся.
    Ответ написан
    6 комментариев
  • Книги, советы, курсы по архитектуре приложений?

    @red-barbarian
    Открою секрет )
    Пишите тесты. Тесты невозможно написать на плохую архитектуру. Делая новый класс, думайте как будете его тестировать. У вас сразу появится стремление выполнять половину принципов SOLID. (даже если вы их не знаете). Стремление сделать классы лаконичными. С хорошим интерфейсом. Стремление разбивать приложение на компоненты.
    Про это много есть статей. тестируемость и архитектура.
    Затем можно почитать какие-нибудь книжки. Для начала Роберта Мартина PPP - дословно не помню) но три пи легко можно найти и перевод. (он для C# вроде, но книга классная)
    Попробуйте TDD. В работе возможно она не будет нужна, но ухватить идею как создается хороший интерфейс можно.
    Затем постоянно себе напоминать, что код пишется для программиста (не для компилятора). Т.е. код это объяснение другому (более тупому))) программисту как это работает. Из этого: хорошие названия - 80% успеха. Остальное архитектура и проч.
    Читать код. Свой, чужой, бест практики.
    То что свой код бесит - это нормально. Плохо если старый код нравится - значит рост прекратился. Это тревожный звоночек.
    Итого.
    1)Начинайте свой рост с умения писать тестируемый код.
    2) когда почувствуете жжение нехватки опыта в конкретных механизмах (паттернах, принципах) начинайте читать книги.
    3) пишите код для тупых программистов (это скромность)
    4) быть вне зоны комфорта это нормально.
    5+) Почитывайте книги Чистый код Мартина и Совершенный Код Макконнелла (те главы которые вам "заходят")
    Удачи в умении сделать сложное простым.)
    Ответ написан
    1 комментарий
  • Книги, советы, курсы по архитектуре приложений?

    hack504
    @hack504
    Вроде все работает, все более менее оптимизировано, но мне все равно кажется, что мой код ужасен. ПРОСТО УЖАСЕН.

    В принципе, не существует идеального кода, просто банально потому, что насчет этого существуют как минимум два разных мнения.
    Что бы проверить, насколько код ужасен - внедрите новую фичу в ваш проект - если это сделать сложно, без изменения нынешней структуры, тогда вам нужен Рефакторинг, что как бы и подразумевает, что вы будете улучшать именно архитектуру. Рефакторинг можно применять до бесконечности, наделяя архитектуру новыми плюсами и новыми минусами.

    Практический опыт важнее теории. По крайней мере изучение архитектуры уже предполагает наличие опыта
    Ответ написан
    2 комментария
  • Книги, советы, курсы по архитектуре приложений?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Начните с хрестоматийного трёхтомника Роберта Мартина "Чистый код", "Чистая архитектура" и "Идеальный программист".
    Ответ написан
    Комментировать
  • Ошибка atikmdag.sys с последующим BSOD'ом?

    @Welgen
    Люблю железо
    Первое что стоит сделать - переустановить драйвер. Полностью, мануал тут, вы не первый столкнулись https://pc-consultant.ru/rabota-na-komp-yutere/ati...
    Ответ написан
    2 комментария
  • Лучшие антивири для Windows 10?

    AntonSopranov
    @AntonSopranov
    Живу и работаю, пишу проги как хобби
    NOD32 - норм вариант, и бесплатный , а так касперский и др.веб, лично долгое время отдавал предпочтение касперскому, но сейчас на nod
    Ответ написан
    1 комментарий
  • Где используются умные указатели?

    @Griglapidus
    C++/Qt
    В целом они нужны что бы ненужно было думать об освобождении ресурсов вручную.
    unique_ptr - просто хранит динамический объект, когда будет уничтожен unique_ptr он автоматически освободит память с этим объектом.
    shared_ptr нужен когда есть несколько объектов работающих с одним экземпляром. shared_ptr указывающие на один и тот же объект сами считают свое количество и память будет очищена при уничтожении последнего.
    weak_ptr нужен если существует два объекта хранящих умные указатели друг на друга. Если их обоих сделать shared_ptr то программа не очистит память при попытке удалить один из них, так как уйдет в бесконечную рекурсию в попытке удалить их. Для решения есть weak_ptr он просто следит за своим объектом и не мешает его удалению, но может принять право владения если не будет других shared_ptr.
    Ответ написан
    1 комментарий
  • Как повысить свой архитектурный навык в программировании?

    @McBernar
    Вам нужен ментор/тимлид/код-ревьюер. Это самый быстрый и рабочий способ.
    Ответ написан
    4 комментария
  • Не стартуют иксы. Terminated with error (1)?

    Zoominger
    @Zoominger
    System Integrator
    Решив установить себе kali сразу понял, что все гладко не пойдет.

    Астрологи объявили неделю Kali.
    Количество вопросов про Kali утроилось.

    Ан нет, это каникулы.
    Нет, кроме шуток, если вы хотите серьёзно с этим поработать, то идите лучше на LOR, тут явно не на один час ковыряний.
    Ответ написан
  • Оправданно ли использование static в моем случае?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Подскажите, как лучше поступить в моем случае?

    Узнать чем статические методы класса отличаются от обычных методов.
    Узнать, что кроме указателей на функции бывают указатели на функции-члены.
    Понять, чем из этого лучше воспользоваться в твоём случае.
    Ответ написан
    3 комментария