Контакты
Местоположение
Россия, Самарская обл., Самара

Достижения

Все достижения (5)

Наибольший вклад в теги

Все теги (34)

Лучшие ответы пользователя

Все ответы (30)
  • Почему нельзя создать массив произвольной длины в С++?

    RabraBabr
    @RabraBabr
    Если коротко исторически так сложилось.

    В который раз встречаю человека который упорно не желает пользоваться STL. При том это какое то иррациональное нежелание.

    А теперь длинно.

    Хочешь плохому научу?
    Выделяй память malloc'ом, а когда надо изменить размер "массива", пользуйся realloc'ом. Можешь так же как в встроенном массиве пользоваться [] для обращения к элементам массива.

    Дальше напиши какую нибудь серьезную программу тыщ хотя бы на 20 строк. И в один прекрасный день узнай, что она крашится в самом неожиданном месте, хотя раньше все работало. Далее две бессонных недели, с красными глазами проведи с отладчиком в поисках неуловимого бага. После чего совершенно случайно найди место где вылазишь за пределы массива или обращаешься к неинициализированной памяти. Вот после этого станет понятно, что так жить нельзя. И вот все это безобразие размазанное по всему коду надо собрать в одном месте. И все проверки и инициализацию делать там. А где это в одном месте? Правильно написать собственный класс, там и конструктор есть для инициализации по умолчанию и [] перегрузить можно, что бы всякие проверки делать и деструктор, что бы за собой прибрать. А потом тебе захочется, что бы твой класс работал с разными типами данных и ты перепишешь его на шаблонах.

    А теперь загляни в стандартную библиотеку. Поздравляю все это уже давно сделали за вас гораздо лучше и со множеством приятных плюшек. Тысячи программистов прошли этот путь за более чем 40 лет. Так зачем, зачем проходить этот путь еще раз? У вас, что есть запасная жизнь? Берите и пользуйтесь готовым. C++ имеет тысячи подходящих инструментов. Пользуйтесь ими. Так нет каждый новый адепт хватает кирку и лопату и бежит строить днепрогэс. Не надо построили уже до вас. Вы в стандартной библиотеки поищите оно там есть.
    Ответ написан
  • Чем Классы отличаются от обычных функций?

    RabraBabr
    @RabraBabr
    ООП это не управление сложностью как многие тут напишут. Это сущность другого уровня абстракции. Вы смешали в одну кучу сущности из разных уровней.
    Вот смотрите - в физическом мире есть микромир с электронами, протонами, фотонами и не знаю там чем еще. Он работает по своим законам квантовой механики. Есть макромир уровня вещей самолетов, яблок, деревьев. Он работает по законам Ньютоновской механики. Есть мир космогонии уровня звезд галактик черных дыр. Он работает по Теориям Эйнштейна. Видите как просто. Мы прошлись по трем уровням абстракции материального мира самого низкого до самого высокого.
    Так же и в мире информации есть самые низкие уровни машинных кодов, регистров и отдельных битов. А есть более высокие уровни функций, еще более высокие уровни классов и даже еще более высокие уровни абстракций. Так вот ваша задача рассортировать все те сущности, что вы привели правильно по разным уровням. А у вас все в одной куче: операторы, переменные, классы. И не надо высшему миру знать о низшем ничего. Тогда все будет правильно.
    Беда программирования в том, что очень мощные инструменты доступны всем. Вот представь мед лабораторию с микроскопами, скальпелями пробирками и другим оборудованием. Туда не каждого пустят. В программировании же каждый может нажать кнопку скачать и начать творить всякую фигню. Пришить пятую ногу собаке, вырастить ей ухо на спине и рога на лбу. Была такая книга - "Многоярусный мир". Там один товарищ специализировался на таких уродцах. Вот потом эти уродцы начинают мстить их создателю.
    Так вот нормальный программист попав в этот мир уродцев, зачастую впадает в ступор. Зачем так делать? Ну то есть делать можно все, что угодно. Но не нужно. Его задача уменьшать энтропию вселенной, а не увеличивать.
    Ответ написан
  • Как понять что перед вами Senior Developer?

    RabraBabr
    @RabraBabr
    Конечно нужно дать ему написать пузырек на бумажке. И вот если он молча встанет и уйдет или там начнет в удивлении разводить руками -"Ребят ну вы че?". То это нам не надо.

    А вот если он напишет его, то перед нами студент второго (или какого?) курса. Потому, что он прекрасно помнит его, так как делал лабу по нему пару недель назад. Тогда хватайте быка за рога. Переходите дальше, что там? Двоичные деревья? Потом пусть про очереди LIFO и FIFO. Потом про матричные вычисления (заодно уровень математики проверить). Потом кривые Безье, далее заливка Фонгом (ведь есть же у них компьютерная графика). Потом пройдитесь по ООП, наследование там полиформизм, поговорите про абстракции. Потом по паттернам - фабрики, медиатор, синглтон (вот антипаттернам). Далее можно про операционки, кольца безопасности. Потом пройтись по криптографии. Обязательно по базам данных, интернет протоколам TCP/IP. Узнать может ли он в OpenGL. В программирование шейдеров. Что там еще я забыл? А как же? Вот! Малое и большое О, графы, html 5 (по высоконагруженным системам на ангуляре не надо), asm, холиварные безусловные переходы, git, юнит тесты. Ну по железу там можно по основам, автоматы Мура/Миля, регистры. Можно даже еще круче на самом низком уровне про то как работает транзистор - p-n-p переходы. А и самое главное пусть напишет нейросеть, ну и конечно же в блокчейн.

    Вот если после 6-ти часового собеседования он не сломается и не сбежит. То надо добить его тестовыми заданиями. Ну там по пол часа на каждое. Пусть напишет, игру, поднимет клиент серверное приложение ну и там не знаю, векторный редактор напишет.

    Да из такого студента наверное через несколько лет вполне себе неплохой сеньор помидор может выйти.
    Ответ написан
  • Зачем и когда нужно использовать указатели в C++?

    RabraBabr
    @RabraBabr
    Ну что же. попробуем в указатели.
    Когда то давно, когда деревья были высокими, а трава сочнее и зеленее, на одной красивой планете - да можно было и без указателей. Автоматические переменные неплохо работали в стеке (ага иди гугли про стек и какой он маленький и про знаменитый его оверфлоу). В общем ответь на вопрос, много ли этого стека? Стало все не так романтично, объемы данных росли программы усложнялись , а программист ручками в куче (ага гугли про кучу) с помощью malloc'а выделял память. А что бы он знал где он выделяет память нужны указатели (ну как адрес квартиры - где проживают переменные Ивановы?). вот указатели в общем этот адрес и хранят. Только выяснилось, что программист плохо ручками память выделяет. Например в 20 метровую однушку он может захотеть поселить табор из 300 закарпатских цыган. И согласись получится неприятность.

    Вот в c++ память выделяется new и delete - это операторы такие. Сами посчитают сколько цыган куда и адресок вернут, а когда надо всех ненужных выселят. Только лучше и веселее не стало, память всегда течет, а указатели всегда висят. А где там в какой квартире Ивановы, а где Петровы вообще не понять И куда тот табор делся? А может и не делся.

    Оппа у нас же в c++ парадигма ООП и классы (гуглим классы). А в классах всегда конструктор и деструктор (гуглим), и они вызываются автоматически когда объект (экземпляр класса) создается и когда уничтожается. Так может new положим в конструктор, а delete в деструктор? И назовем все это хозяйство std::auto_ptr. И пусть он сам за памятью следит, а программиста будем бить по рукам за ручное выделение памяти

    Беда, печаль однако. Лучше жить не стало. и виной тому конструктор копирования (вот опять гуглим). Тогда придумали семантику перемещения r-value ссылки и кучу новых умных указателей вот просвещайся https://ru.cppreference.com/w/cpp/memory
    Если пройдешь по ссылке то увидишь много новых и интересных слов например аллокаторы или неинициализированные хранилища.

    И я надеюсь мой юный друг, что ты уже понял, что до джуна тебе еще очень и очень много непонятных слов. Вот когда сможешь shared_ptr свелосипедить, тогда свелосипедь себе еще и резюме и вперед на собеседования.
    Ответ написан
  • Создаю OpenSourse проект на С++ ниже - нужны единомышленники, где мне таких искать?

    RabraBabr
    @RabraBabr
    Хочу создать программу для составления алгоритма

    Моя твоя не понимать.

    https://github.com/rustamkremcheev/AlgoIDEA

    Но там пусто. Нет там реально пусто - This repository is empty.

    мне нужна помощь.

    Вы хотите, что бы мы вам программу написали? Ну так заинтересуйте. Самый простой способ Я вам свою ставку в час назову и если все устраивает запилю вам проект.

    Хотите Бесплатно? Ну блин прежде чем носиться со своими мегапрожектами хотя бы дизайн документ на ТРИ странички составте. Не надо сочинение как я провел лето на 100 листов натягивать как наши школы и универы учат. Три несчастных страницы с сухой выжимкой хватит. Коротко четко и по делу. Авось кто то и клюнет. Потом по ходу проекта разрастется может быть в многотомник, если не помрет прежде.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (4)