1. C++ / Говнокод #24843

    −7

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    /*
    Newtoo — разработка полноценного браузерного движка с нуля в 2018?
    Так уж получилось, что в мире есть всего 4 популярных браузерных движка,
    которые настолько сложны, что сами разработчики не знают и половины их
    кодовой базы, и настолько продвинутые по технологиям, что начать их догонять —
    пустая трата времени. 
    
    А так ли это на самом деле? Мой проект создан, чтобы повторить подвиги
    современных браузерных движков и проверить, насколько ли реально создать
    достойную альтернативу крупным проектам, история которых начинается с
    девяностых годов. Мой новый движок создается с нуля, а значит его история
    начинается — сегодня.
    ...
    Те ошибки, которые были допущены на начальных стадиях разработки
    остаются в проекте до конца. Самый яркий пример этому — умные
    указатели в C++ — это еще более сложный синтаксис, большой оверхед
    при работе, создании и удалении умных указателей. Кроме того, есть
    очень много типов умных указателей и нужно знать, какой когда использовать,
    ведь у каждого есть свои сюрпризы ньюансы. Посмотрите на этот файл из
    WebKit. Когда видишь такой код, синтаксис умных указателей, пытаешься
    успокоится и дышать ровно, но такого рода код — это весь вебкит с ног до
    головы. В моем движке нет таких недостатков.
    */
    
    Node* NodeListControlled::insertAt(unsigned long index, Node* child)
    {
        // mControl == vector<Node*>
        mControl.insert(mControl.begin() + index, child);
    
        return child;
    }

    Дело Попова, Бабушкина и иже с ними живёт!

    У умных указателей оверхед большой, а вот List со вставкой за O(n) — это не недостаток, это фича.
    А ещё там NamedNodeMap с тем же линейным поиском и практически полное игнорирование
    передачи по ссылке — компилятор умный, авось, заоптимизирует как-нибудь.

    https://sohabr.net/habr/post/424881/
    https://github.com/FlightBlaze/Newtoo

    Запостил: gost, 01 Октября 2018

    Комментарии (2) RSS

    Добавить комментарий