The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

07.07.2017 10:43  Обзор проблем в коде на C/C++, вызванных неопределённым поведением компилятора

Джон Регир (John Regehr), профессор университета штата Юта, участвующий в разработке Clang и занимающийся исследованиями в области неопределённого поведения программ, подготовил полезный для разработчиков обзор ситуаций, при которых поведение программы становится неопределенным и приводит к получению проблем с использованием памяти и указателями при сборке разными компиляторами. В статье не только описаны возникающие проблемы, но и предложены способы для их выявления, а также оценена эффективность применения для обнаружения неопределённого поведения типовых отладочных инструментов, таких как Address Sanitizer (ASAN), UndefinedBehaviorSanitizer (UBSan), MemorySanitizer (MSan), ThreadSanitizer (aka TSan) и Valgrind.

  1. Главная ссылка к новости (https://blog.regehr.org/archiv...)
  2. OpenNews: Дэниэл Бернштейн выступил с инициативой создания Си-компилятора для защищённого ПО
  3. OpenNews: Оптимизация кода компилятором может привести к появлению проблем безопасности в приложениях
  4. OpenNews: В DNS-сервере BIND устранен серьёзный сбой, возникший из-за изменений в оптимизаторе GCC
  5. OpenNews: Разработчики Mozilla столкнулись с проблемой производительности в GCC 4.5
  6. OpenNews: Линус Торвальдс выступил с резкой критикой GCC 4.9.0
Лицензия: CC-BY
Тип: английский / Практикум
Ключевые слова: undefinedbehavior, debug, memory, gcc, clang
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, A.Stahl (ok), 11:12, 07/07/2017 [ответить] [показать ветку] [···]    [к модератору]
  • +31 +/
    Во-первых -- 3 галлона пива господину Регеру за очень краткие и ёмкие кусочки кода.
    Во-вторых г-н Регер показал, что UB это обычно результат наркоманского кода.
    Арифметика указателей? Ок, все мы её в той или иной мере используем, но нужно знать и меру.
    Самое важное правило (все новички о нём знают[сами для себя и выводят], а вот люди с опытом часто забывают) -- код должен быть простым и понятным. В 21 веке компиляторы лучше оптимизируют под платформу чем человек. Поэтому нужно писать простой и понятный код. Эффективный код -- удел компилятора. Да, некоторые моменты (обход прямоугольной матрицы и т.п.) до сих пор актуальны, но это не усложняет код и вполне вписывается в концепцию здравого смысла.
     
     
  • 2.2, Zoolander (?), 11:38, 07/07/2017 [^] [ответить]    [к модератору]
  • +/
    Как думаете, почему профессионалы подвержены болезни усложнения кода? У них крыша едет? Или они думают, что все могут в памяти держать?
     
     
  • 3.3, Iaaa (ok), 11:45, 07/07/2017 [^] [ответить]     [к модератору]
  • +3 +/
    Тоже вижу слишком часто неоправданное усложнение Может не солидно , что я как... весь текст скрыт [показать]
     
  • 3.4, A.Stahl (ok), 12:04, 07/07/2017 [^] [ответить]    [к модератору]  
  • +16 +/
    Многие профессионалы сталкиваются с ситуацией, когда они сами пишут и проектируют.
    Соответственно они это делают как им удобно.
    Вот, например, я -- терпеть не могу шаблоны. STL использую, но сам не пишу. Это такой мой "бзик". Также я не уловил прелесть смартпоинтеров. У меня и с обычными указателями никаких проблем нет. Нахрена мне умные?
    А вот теперь представь, что я  -- тимлимд (а я на плюсах ~10 лет пишу, так что опыт имеется и на такую должность вполне могу упасть). И как себя будет чувствовать молодёжь, которая ни асма ни Си не нюхала? Я со своими требованиями буду для них "придурок, усложняющий код, когда можно написать auto". И они будут правы. И я буду прав. Вот так.
    Это разница в поколениях и мировоззрениях. Классическая проблема отцов-сыновей.
     
     
  • 4.7, Crazy Alex (ok), 12:15, 07/07/2017 [^] [ответить]    [к модератору]  
  • +3 +/
    А exception safety, move semantics, вот это всё - тоже игноришь? Их без умных указателей не особо реализуешь... То есть можно конечно, но возни же куча.
     
     
  • 5.11, A.Stahl (ok), 12:50, 07/07/2017 [^] [ответить]    [к модератору]  
  • +9 +/
    Исключения не люблю, а вот move semantics почти не нужно если у тебя всё хорошо с обычными указателями. Если писать в Ява-стиле, то да -- эта штука реально спасает. Сишнику это не очень критично. У сишника не часто бывают нюансы когда ты "передаёшь эстафету" и умираешь:) Да и сишник всегда может передать указатель и забыть/забить.
    Но да, иногда эта штука крута и прикольна. Но ничего такого.
     
     
  • 6.17, Crazy Alex (ok), 13:57, 07/07/2017 [^] [ответить]    [к модератору]  
  • +3 +/
    Создать объект и отдать его контейнеру - это редкая операция? А если нет - то либо умные указатели, либо move semantics, либо с ровного места теряем в производительности на копированиях объектов.
     
     
  • 7.21, A.Stahl (ok), 15:04, 07/07/2017 [^] [ответить]    [к модератору]  
  • +4 +/
    Я обычно передаю указатель. Редко бывает, когда объект нужен много кому и непонятно кто должен его удалять.
     
     
  • 8.26, Crazy Alex (ok), 15:36, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    А у меня - как-то через раз Лежит себе вектор указателей на объекты, чему-то од... весь текст скрыт [показать]
     
     
  • 9.29, Аноним (-), 15:58, 07/07/2017 [^] [ответить]     [к модератору]  
  • +5 +/
    Код является простым когда простой инспекцией удается выловить границы жизни объ... весь текст скрыт [показать]
     
     
  • 10.31, A.Stahl (ok), 16:15, 07/07/2017 [^] [ответить]    [к модератору]  
  • +6 +/
    Красиво казал. Меня там минусуют, но они не совсем понимают суть. Я не против новых "фишек", просто некоторые нюансы мне не нравятся. Не более того.
    Я просто стараюсь оставлять код очевидным. Очевидным даже для сишников (я и сам такой), а не только для плюсовиков, которые следят за последними стандартами.
    Я не против. И никогда не использовал положение чтобы что-то запрещать. Просто некоторые вещи я не использую (даже не не использую, а избегаю использовать). Не более того.
     
     
  • 11.54, Crazy Alex (ok), 21:58, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Фишка в том, что очевидный для сишников и очевидный для плюсовиков - вещи ра... весь текст скрыт [показать]
     
     
  • 12.60, Аноним (-), 22:33, 07/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Это лишь ваше представление которое основано, к сожалению, на незнании или малоо... весь текст скрыт [показать]
     
     
  • 13.69, Crazy Alex (ok), 01:40, 08/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Ох как забавно Подход узнаем как должно работать и реализуем сразу велосипед... весь текст скрыт [показать]
     
     
  • 14.74, Аноним (-), 04:17, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Очень забавно потому что вот это - вменяемый разработчик вообще на любом языке ... весь текст скрыт [показать]
     
  • 12.80, pripolz (?), 11:34, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    броо А вообще я редкостный хейтер всего кроме Си хотя писал на 100 языках... весь текст скрыт [показать]
     
     
  • 13.100, Vkni (ok), 17:51, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    А вы и так не знаете, не переживайте Даже пишущий на ассемблере не знает, как о... весь текст скрыт [показать]
     
     
  • 14.124, Аноним (-), 01:44, 09/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Это и не нужно, во-первых Во-вторых речь не о машинном исполнении была Ложное ... весь текст скрыт [показать]
     
     
  • 15.127, Vkni (ok), 02:08, 09/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Ну да, на каком-то уровне приходится останавливаться Ну можно остановиться на а... весь текст скрыт [показать]
     
     
  • 16.129, Аноним (-), 02:46, 09/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Зачем вообще вы снова асм тянете, я не пойму Вот люди пишут на java и не парятс... весь текст скрыт [показать]
     
     
  • 17.130, Vkni (ok), 02:56, 09/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Зачем вообще вы снова асм тянете, я не пойму.

    Ветка такая. См. несколько комментов выше.

     
     
  • 18.133, Аноним (-), 05:48, 09/07/2017 [^] [ответить]     [к модератору]  
  • +/
    В 12 54 Crazy Alex написал свое ОГРАНИЧЕННОЕ понимание программирования в Си... весь текст скрыт [показать]
     
     
  • 19.135, Vkni (ok), 07:29, 09/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Я писал недавно зарегистрировавшемуся товарищу на букву p ... весь текст скрыт [показать]
     
     
  • 20.140, Аноним (-), 16:14, 09/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Точно, сообщение 12.80 от пользователя pripolz. Но это не меняет ситуацию с постоянным обращением к асму.
     
  • 11.61, Аноним (-), 22:41, 07/07/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    Я не кравиво сказал, а рассказал как оно обстоит в реальном программировании У ... весь текст скрыт [показать]
     
  • 10.52, Crazy Alex (ok), 21:45, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Умные указатели сложность, в общем, не особо прибавляют, если дать себе труд раз... весь текст скрыт [показать]
     
     
  • 11.59, не программист (?), 22:23, 07/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Я хорошо знаю и умею использовать умные указатели и для меня это уже пройденный этап. Я просто хотел указать на ситуацию когда от них больше проблем чем пользы.
     
     
  • 12.68, Crazy Alex (ok), 01:31, 08/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Единственная Ситуация, когда от них больше вреда, чем пользы - это когда в про... весь текст скрыт [показать]
     
     
  • 13.71, Аноним (-), 03:55, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Вы вообще программировали что-нибудь серьезное Когда вы будете думать о том как... весь текст скрыт [показать]
     
  • 6.58, Аноним (-), 22:19, 07/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    А как же Вы обрабатываете ошибки Я Плюсы знаю неплохо, но пишу на чистом Си Пр... весь текст скрыт [показать]
     
     
  • 7.81, pripolz (?), 11:52, 08/07/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    я всю обработку ошибок кладу в макрос, в котором и печать в лог номера строки ко... весь текст скрыт [показать]
     
     
  • 8.119, Аноним (-), 22:47, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Ну, у Вас по сути примерно такая же обработка ошибок, как и у нас А про плюсови... весь текст скрыт [показать]
     
  • 8.121, Vkni (ok), 23:54, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Их должно быть несколько, если выделяются сразу несколько ресурсов И не перепут... весь текст скрыт [показать]
     
     
  • 9.126, pripolz (?), 02:08, 09/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    инициализация нулями спасёт мир

    for (int i = 0; i < 5; i++)
        if (f[i])
            fclose(f[i]);

     
     
  • 10.128, Vkni (ok), 02:14, 09/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > инициализация нулями спасёт мир

    Это костыль под конкретный случай. Взять какую-нибудь другую структуру и опа.

     
  • 10.131, pripolz (?), 03:29, 09/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > инициализация нулями спасёт мир
    > for (int i = 0; i < 5; i++)
    >     if (f[i])
    >         fclose(f[i]);

    упс, не по теме написал. Сори.

     
  • 9.136, Аноним (-), 09:15, 09/07/2017 [^] [ответить]     [к модератору]  
  • +/
    У нас на метки с освобождением ресурсов и восстановлением уходит до половины тел... весь текст скрыт [показать]
     
  • 5.13, yet another anonymous (?), 12:56, 07/07/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    > exception safety, move semantics, ...  Их без умных указателей не особо реализуешь...

    Бред.

     
     
  • 6.18, Crazy Alex (ok), 14:00, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Говорю же - можно, но морока Придётся самому отслеживать все случаи, когда надо... весь текст скрыт [показать]
     
     
  • 7.22, yet another anonymous (?), 15:05, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    move не имеет к _ptr отношения _ptr подразумевают move при достаточно полно... весь текст скрыт [показать]
     
     
  • 8.23, Crazy Alex (ok), 15:31, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Нет Подразумевалось умные указатели радикально упрощают реализацию move-семант... весь текст скрыт [показать]
     
     
  • 9.35, yet another anonymous (?), 17:18, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Т е второй вариант Мне нравится такой подход неявно подразумевается вполне оп... весь текст скрыт [показать]
     
     
  • 10.53, Crazy Alex (ok), 21:51, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Оно везде так Называется best practices Использование ничего-то отличающегос... весь текст скрыт [показать]
     
  • 4.25, kai3341 (ok), 15:35, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Или ещё вариант на этапе проектирования закладывается больше гибкости и универс... весь текст скрыт [показать]
     
  • 4.34, anonymous (??), 17:13, 07/07/2017 [^] [ответить]     [к модератору]  
  • –3 +/
    Они будут правы А вот вы не будете Будете старым пердуном, который не успевает... весь текст скрыт [показать]
     
     
  • 5.82, pripolz (?), 12:30, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Почитайте книгу Современный и эффективный С Там автор докажет вам, что auto... весь текст скрыт [показать]
     
     
  • 6.97, anonymous (??), 17:32, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Правда Может вы что-то не так вычитали А если так, то замените auto на что-то ... весь текст скрыт [показать]
     
  • 6.99, Vkni (ok), 17:46, 08/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Почитайте книгу "Современный и эффективный С++". Там автор докажет вам, что auto
    > - тот ещё фрукт.

    Можно ссылку?

     
     
  • 7.105, pripolz (?), 19:29, 08/07/2017 [^] [ответить]    [к модератору]  
  • +/
    >> Почитайте книгу "Современный и эффективный С++". Там автор докажет вам, что auto
    >> - тот ещё фрукт.
    > Можно ссылку?

    Там ниже в беседе кидали на магаз О-Райли. Effective Modern C++ Майерса.

     
     
  • 8.110, Vkni (ok), 19:57, 08/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Там ниже в беседе кидали на магаз О-Райли. Effective Modern C++ Майерса.

    А-аа, Майерс. Просто modern C++ - это в разные времена совершенно разное.

     
  • 3.5, Crazy Alex (ok), 12:08, 07/07/2017 [^] [ответить]     [к модератору]  
  • –2 +/
    1 Профессионалы часто пишут что-то большое, и долго Со временем качество кода ... весь текст скрыт [показать]
     
     
  • 4.66, Алконим (?), 01:23, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Если будет падать качество кода, то упадёт и скорость разработки, и проект упрёт... весь текст скрыт [показать]
     
     
  • 5.76, Вареник (?), 08:08, 08/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Любой проект постепенно обрастает заплатками и требует специальных мер от команды, чтобы не превратиться в "лапшу".
     
  • 5.77, Вареник (?), 08:13, 08/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Написать модуль по спеку - не совсем жизненный цикл проекта Тот же проект пото... весь текст скрыт [показать]
     
  • 5.79, Аноним (-), 11:22, 08/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Полностью поддерживаю В нашей команде качество кода растёт со временем Во-перв... весь текст скрыт [показать]
     
  • 3.9, Аноним (-), 12:30, 07/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Желание того что-бы их код работал так как они решили, а не как вздумается компилятору ( сегдня быстрее, завтра медленнее)
     
  • 3.117, anonymous (??), 22:26, 08/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    >Как думаете, почему профессионалы подвержены болезни усложнения кода?

    я за 15 лет вокруг как раз вижу что становясь профессионалами люди начинают упрощать код

     
  • 2.14, Аноним (-), 13:15, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Скажи это новым появляющимся языкам программирования или таким языкам как C , у ... весь текст скрыт [показать]
     
     
  • 3.30, Анончик (?), 16:04, 07/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Ну, в этом есть и один плюс - C либы екзешники из-за этого очень легко восстано... весь текст скрыт [показать]
     
     
  • 4.36, Аноним (-), 17:29, 07/07/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    Я про JIT говорил Первоначальная компиляция в CIL как и у Java в их промежуточ... весь текст скрыт [показать]
     
  • 4.37, _ (??), 17:54, 07/07/2017 [^] [ответить]    [к модератору]  
  • –5 +/
    У нормальных людей есть исходники с комментами, дока, и мэйл лист с аффтарами.
    Но вантузятники должны страдать! (С)
     
     
  • 5.57, Анончик (?), 22:13, 07/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    > У нормальных людей есть исходники с комментами, дока, и мэйл лист с
    > аффтарами.
    > Но вантузятники должны страдать! (С)

    RE занимаются не только вантузятники и не только на вантузе.

     
  • 2.24, Ivan_83 (ok), 15:32, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Это не отменяет 100500 вариантов написания popcnt, для начала, которые хер компе... весь текст скрыт [показать]
     
  • 2.33, Comdiv (ok), 16:53, 07/07/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    Это проблема восприятия маленьких понятных примеров Для того, чтобы показать пр... весь текст скрыт [показать]
     
     ....нить скрыта, показать (63)

  • 1.6, Crazy Alex (ok), 12:13, 07/07/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Ещё один с "С/С++"? То, о чём он говорит, ловится любым приличным современным линтотулзом для плюсов, потому что сейчас на плюсах так писать вообще не принято.
     
     
  • 2.10, RazrFalcon (ok), 12:34, 07/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Каким образом линтер ловит выход за пределы массива и use after free?
     
     
  • 3.19, Crazy Alex (ok), 14:29, 07/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Очень просто - ругается на попытки использовать сишные массивы и голые сишные указатели. В плюсах это bad practices, и давно.
     
     
  • 4.145, Анонимный Алкоголик (??), 10:20, 10/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Ну то есть никак не находит выход за пределы массива Что показывает практическу... весь текст скрыт [показать]
     
  • 2.15, A.Stahl (ok), 13:26, 07/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    >потому что сейчас на плюсах так писать вообще не принято.

    Ну это ты загнул.

     
     
  • 3.20, Crazy Alex (ok), 14:36, 07/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Не загибал:
    https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#R
    https://isocpp.org/wiki/faq/containers
     
  • 3.28, Ordu (ok), 15:46, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Нет, это не он загнул Просто кто-то отстал от развития практик применения C л... весь текст скрыт [показать]
     
     
  • 4.38, A.Stahl (ok), 18:02, 07/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    >boost

    Это отдельная тема. Специфическая тема. Не моя тема.

     
     
  • 5.41, Ordu (ok), 18:42, 07/07/2017 [^] [ответить]     [к модератору]  
  • +4 +/
    При чём здесь моя или не моя Из наблюдений за копошением вокруг разных язык... весь текст скрыт [показать]
     
     
  • 6.43, yet another anonymous (?), 19:09, 07/07/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Хмм... Что-то в вашей позиции есть интересное. По крайней мере, даже Страуструпу понадобился пинок в виде ребят из университета Ватерлоо и Степанова.
     
     
  • 7.45, A.Stahl (ok), 19:58, 07/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Пинок инженера инженеру это всегда хорошо.
    Хотя я и не рад смотря куда развиваются плюсы.
     
     
  • 8.62, Аноним (-), 22:59, 07/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Плюсы с самого начала были не до конца продуманным костылем. Почитайте труды критиков в адрес плюсов и Страуструпа конца 80х и середины 90х. Сила критики бывает такой что иногда это даже затягивает.
     
     
  • 9.85, pripolz (?), 14:01, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Можно поподробнее Авторство, ссылочку С удовольствием бы почитал, интересуюсь ... весь текст скрыт [показать]
     
     
  • 10.94, Аноним (-), 17:08, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    К сожалению я не могу дать вам ссылок, т к не нашел и не сохранил Я это читал ... весь текст скрыт [показать]
     
  • 10.98, Vkni (ok), 17:43, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Unix Haters Handbook, страница 203 и далее Но надо понимать, что сейчас ЦэПэПэ ... весь текст скрыт [показать]
     
  • 6.87, pripolz (?), 14:06, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    gt оверквотинг удален Рекоммендую к прочтению код какого-нибудь авторитетного ... весь текст скрыт [показать]
     
     
  • 7.88, Ordu (ok), 14:29, 08/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    gt оверквотинг удален Да-да, я знаю Всё можно написать на ассемблере Но заче... весь текст скрыт [показать]
     
     
  • 8.90, pripolz (?), 14:43, 08/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Чтобы кода было меньше, а технологий больше Вообще все любители высокоуровневых... весь текст скрыт [показать]
     
     
  • 9.91, Ordu (ok), 15:32, 08/07/2017 [^] [ответить]     [к модератору]  
  • –2 +/
    На ассемблере будет меньше кода Ха Ты попробуй писать на ассемблере Или на C ... весь текст скрыт [показать]
     
     
  • 10.92, pripolz (?), 16:02, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    именно так На си будет меньше кода Ты себя-то называешь умным человеком Речь ... весь текст скрыт [показать]
     
     
  • 11.101, Vkni (ok), 17:53, 08/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > именно так. На си будет меньше кода.

    Только если не использовать ООП и шаблоны там, где это не надо. Ручная эмуляция компилятора C++ аля Glib2 и прочие извращения код только раздувают.

     
     
  • 12.103, pripolz (?), 18:38, 08/07/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    1 Фишки Glib не пересекаются с фишками компилятора С вообще начнём с этого ... весь текст скрыт [показать]
     
     
  • 13.111, Vkni (ok), 20:07, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Тем не менее, их эмуляции классов можно было бы сделать на С проще Вместо пре... весь текст скрыт [показать]
     
  • 12.116, Аноним (-), 22:24, 08/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    > Только если не использовать ООП и шаблоны там, где это не надо.

    Практика показывает что ненадо чуть менее чем везде.

     
  • 11.107, Ordu (ok), 19:49, 08/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Ты специально учился где-то демагогии или самоучкой Очень похоже на второе спе... весь текст скрыт [показать]
     
  • 7.102, Vkni (ok), 17:55, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Если держать себя в руках, то на ООП на С получится лучше, т к не надо вручну... весь текст скрыт [показать]
     
     
  • 8.104, pripolz (?), 19:21, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    1 то, что ты называешь возможностями я называю ограничениями 2 Пример очень п... весь текст скрыт [показать]
     
     
  • 9.112, Vkni (ok), 20:09, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Вот конкретно здесь мы его неоднократно поднимали с CrazyАлексом, arisu и д р С... весь текст скрыт [показать]
     
  • 4.39, _ (??), 18:16, 07/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Опыи фортрана, лиспа, кобола и кучи других - выкинули?
    Ну в таком ключе С++ тоже выкинут.


    И кстати, то как ты это описал - это не профессия, это - религия.

     
     
  • 5.42, Ordu (ok), 18:54, 07/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Я не совсем понял к чему это Но опыт фортрана, лиспа, кобола и кучи других непр... весь текст скрыт [показать]
     
     
  • 6.44, yet another anonymous (?), 19:13, 07/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Да, Степанов свои идеи сначала на Lisp е реализовывал C как мультипарадигменн... весь текст скрыт [показать]
     
  • 4.47, Аноним (-), 20:22, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Можно пару-тройку ссылок на литературу хотя хватит и имен названий, отсутсвие п... весь текст скрыт [показать]
     
     
  • 5.50, Crazy Alex (ok), 21:31, 07/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Из того, что я видел - лучше всего именно гайд под редакцией Страуструпа Саттера... весь текст скрыт [показать]
     
     
  • 6.55, Аноним (-), 22:00, 07/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Благодарю. Будем посмотреть.
     
  • 5.56, Ordu (ok), 22:09, 07/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Мейерс http shop oreilly com product 0636920033707 do... весь текст скрыт [показать]
     
  • 5.65, Аноним (-), 23:19, 07/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Очень рекомендую к просмотру, т.к. без нормальной критики вы не поймете язык полностью: https://flyx.org/2014/04/24/cpp_sucks/


     
     
  • 6.67, Crazy Alex (ok), 01:24, 08/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Как бы наоборот Для того, кто не поварился в плюсах с пол-года хотя бы этот тек... весь текст скрыт [показать]
     
  • 6.72, Vkni (ok), 03:58, 08/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Там, мягко говоря, далеко не всё описано И по шаблонам с STL он как-то очень сл... весь текст скрыт [показать]
     
     
  • 7.75, Аноним (-), 04:21, 08/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Согласен и поэтому автор предусмотрительно написал

    > Disclaimer: This list is not and will never be complete (but I may update it if I'm bored). It also contains strong language.

     
  • 4.73, Vkni (ok), 04:02, 08/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Лучшая практика применения современного C - это можешь на нём не писать - не ... весь текст скрыт [показать]
     
     
  • 5.83, Ordu (ok), 12:33, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    И чё с того Ты в курсе что предпочтения в эргономике тренируются Они не просто... весь текст скрыт [показать]
     
     
  • 6.93, Vkni (ok), 16:43, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Зачем нужно видеть красоту в примерах из boost а, где в глазах просто рябит от с... весь текст скрыт [показать]
     
     
  • 7.108, Ordu (ok), 19:54, 08/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Для того, чтобы использовать C максимально эффективно Может быть другие отказ... весь текст скрыт [показать]
     
     
  • 8.113, Vkni (ok), 20:16, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Кто это вам сказал Это потому, что вы не хотите видеть другие причины С другой... весь текст скрыт [показать]
     
     
  • 9.114, Ordu (ok), 20:58, 08/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Опыт десятков и сотен тысяч программистов, которые писали на C в различных сти... весь текст скрыт [показать]
     
     
  • 10.115, Vkni (ok), 21:57, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Я совершенно не уверен в том, что статистика наведена правильно Вообще, руковод... весь текст скрыт [показать]
     
     
  • 11.120, Ordu (ok), 23:43, 08/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Да, это заговор ZOG Они подтасовывают данные, пишут лжеруководства и вообще вво... весь текст скрыт [показать]
     
     
  • 12.122, Vkni (ok), 00:09, 09/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Это не заговор Просто некоторые люди варятся в одном и том же добре уже довольн... весь текст скрыт [показать]
     
     
  • 13.123, Ordu (ok), 01:14, 09/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    А Ну да Наконец-то всем на радость Мы теперь нашли слова такие Те что лучше о... весь текст скрыт [показать]
     
     
  • 14.125, Vkni (ok), 01:57, 09/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Конечно, import uses open значительно лучше Они ведь подразумевают развитую сис... весь текст скрыт [показать]
     
     
  • 15.138, Ordu (ok), 14:04, 09/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    >> Ещё раз скажу вам: красивым будет любой привычный язык.
    > У меня опыт владения ЦэПэПэ где-то лет 20 уже. Ocaml'а - десяток.

    Видимо, опыт опыту рознь.

     
     
  • 16.141, Vkni (ok), 16:22, 09/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Разумеется - я и другие языки знаю.
     
  • 15.148, yet another anonymous (?), 11:35, 10/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Конечно, import/uses/open значительно лучше. Они ведь подразумевают развитую систему модулей, а не паразитирование на допотопном однопроходном линковщике.

    Превед, GOLD! ;)

     
     
  • 16.162, Vkni (ok), 07:45, 12/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Превед, GOLD! ;)

    С этой точки зрения разницы между ld и ld.gold нет. Одна, в целом, фигня.

     
  • 4.84, pripolz (?), 12:50, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    gt оверквотинг удален Ещё через 5 лет стиль ещё сильнее отточится на 200 ст... весь текст скрыт [показать]
     
     
  • 5.86, Ordu (ok), 14:05, 08/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Да Программирование не стоит на месте, развивается Методов всё больше Какой к... весь текст скрыт [показать]
     
     
  • 6.89, pripolz (?), 14:32, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    программирование стоит на месте Хорошие программы, взрывающие мозг - это bash, ... весь текст скрыт [показать]
     
     
  • 7.96, Vkni (ok), 17:20, 08/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > программирование стоит на месте.

    Очень, очень костная штука. Хиндли-милнер, несчастный, был открыт за 20 (двадцать) лет до возникновения шаблонов в С++.

     
  • 7.106, Ordu (ok), 19:32, 08/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Если тебе так кажется, то разуй глаза и посмотри по сторонам Даже алгоритмы сор... весь текст скрыт [показать]
     
     
  • 8.109, Vkni (ok), 19:57, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Ага Потому, что формулы разные По крайней мере для евклидовой метрики ... весь текст скрыт [показать]
     
  • 8.132, pripolz (?), 04:53, 09/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Именно так, совершенно непонятно При чём тут принудительная связь между данными... весь текст скрыт [показать]
     
     
  • 9.134, Vkni (ok), 05:55, 09/07/2017 [^] [ответить]     [к модератору]  
  • +/
    В C это можно сделать разными методами и использовать ООП совершенно не обязат... весь текст скрыт [показать]
     
     
  • 10.137, pripolz (?), 11:11, 09/07/2017 [^] [ответить]     [к модератору]  
  • +/
    а в рантайме такой темплейт подхватит заранее неизвестный тип фигуры ... весь текст скрыт [показать]
     
     
  • 11.142, Vkni (ok), 16:39, 09/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Нет, конечно Но основная проблема тут не в языке, а в предметной области - у ва... весь текст скрыт [показать]
     
  • 9.139, Ordu (ok), 14:50, 09/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Ты путаешь каноны ООП с канонами C Современный C не любит наследование и с ... весь текст скрыт [показать]
     
     
  • 10.143, Аноним (-), 18:26, 09/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Очередная порция словесного поноса.
     
  • 10.144, pripolz (?), 23:33, 09/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Исключительно забавное заявление Во первых потому, что ООП - это шаблон проект... весь текст скрыт [показать]
     
     
  • 11.150, Vkni (ok), 14:59, 10/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Вчера они объясняли тебе, ПОЧЕМУ наследование - это хорошо

    Окститесь, 20 лет прошло с тех пор.

     
     
  • 12.151, pripolz (?), 18:24, 10/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    То есть, современный С не просто не любит наследование, а ДАВНО не любит насле... весь текст скрыт [показать]
     
     
  • 13.152, yet another anonymous (?), 20:06, 10/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    > То есть, современный С++ не просто не любит наследование, а ДАВНО не любит наследование?

    Ещё более забавно.

    См.:

    Elements of Programming by A. Stepanov.

     
  • 13.153, Vkni (ok), 03:05, 11/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Хуже - ОЧЕНЬ ДАВНО не любит наследование Если бы не Степанов с STL, а дальше Ал... весь текст скрыт [показать]
     
     
  • 14.154, pripolz (?), 12:14, 11/07/2017 [^] [ответить]     [к модератору]  
  • +/
    А шаблоны, несмотря на ряд косяков синтаксис, отсутствие раздельной компиляции ... весь текст скрыт [показать]
     
     
  • 15.155, Vkni (ok), 12:21, 11/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Во-первых, нет Он понятен только до определённого момента - пара ступеней вложе... весь текст скрыт [показать]
     
     
  • 16.156, pripolz (?), 13:30, 11/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Ни разу в жизни не сталкивался Вообще шаблоны - большая редкость Применение ша... весь текст скрыт [показать]
     
     
  • 17.157, anonymous (??), 14:01, 11/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    В каком чудном мире вы живете PS Это же вы где-то в этой теме сказали, что про... весь текст скрыт [показать]
     
     
  • 18.158, pripolz (?), 14:25, 11/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Было преувеличение Если по порядку, то Dark Basic, Visual Basic 98 VB6 , Free ... весь текст скрыт [показать]
     
     
  • 19.161, Vkni (ok), 02:25, 12/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Ну почти всё закрыто. Не хватает JavaScript'а, языков семейства ML и Пролога.
     
  • 19.163, anonymous yet another (?), 08:29, 12/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Было преувеличение. Если по порядку, то

    Дневник молодого поэта: "Всю ночь писал стихи о любви. Закрыл тему."

     
  • 14.160, anonymous yet another (?), 23:06, 11/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > ... а дальше Александреску

    А вот это уже мешки синтаксического сахара. Так и до диабета недалеко.

     
  • 9.149, Анонимный Алкоголик (??), 11:48, 10/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    > Если тебе предложат написать такую программу, ты что, откажешься? Не функцию, а программу.
    > Расстояние между фигурами. Фигур 10 типов. Это задача для неудачников по
    > твоему?

    Вы не поняли. Речь была о том, что в языке вам не хватает средства выразить некий метод (функцию) для трёх классов хотя бы. Один при чём. Метод. Предлагать нам за вас разработать и представить к рассмотрению такого рода метод не стоит...

     
  • 5.118, Vkni (ok), 22:28, 08/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Вот класс - это изначально структура данных + набор методов с ней.
    > В с++ структура и методы принудительно жёстко связаны. А если я
    > захочу написать один метод для 3х классов?

    Haskell, классы типов и т.д.

    instance Show Double where
        show d = ...

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

     
  • 5.147, Анонимный Алкоголик (??), 11:12, 10/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    > А если я захочу написать один метод для 3х классов?

    :-) Когда захотите, изложите как полагается. Выдающееся может получиться желание.
    Потому что пока это выглядит довольно бессмысленно. "один метод для 3х классов". Поэтому вряд ли вы сможете таки захотеть...

     
  • 4.146, Анонимный Алкоголик (??), 10:39, 10/07/2017 [^] [ответить]    [к модератору]  
  • +/
    >Вон из профессии, ничтожество.

    Совершенно верно. Вон. Наплодилось вас, проталкивателей "стилей"...
    Норовящих пояснить о плохой практике массивов... :-)

     
     ....нить скрыта, показать (82)

  • 1.16, Игорь (??), 13:56, 07/07/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Полезно, спасибо!
     
  • 1.27, manster (ok), 15:45, 07/07/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    И все таки почему например chromium начинает притормаживать, захлебываться и с трудом возвращать память при открытии ~+10 вкладок.
     
     
  • 2.40, _ (??), 18:18, 07/07/2017 [^] [ответить]    [к модератору]  
  • –3 +/
    Потому что по сложности современный браузеры вплотную приблизились к операционным системам (С)  ?
     
     
  • 3.46, Аноним (-), 20:21, 07/07/2017 [^] [ответить]     [к модератору]  
  • –2 +/
    Абсолютная чушь Вдумайся в значение слова браузер что означает обозреватель ... весь текст скрыт [показать]
     
     
  • 4.48, anomymous (?), 21:17, 07/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Ойййй. Для начала хотелось бы посмотреть на полноценную динамику в "офисном редакторе". С возможностью загрузки кусков текста и перехода к другим документам. А там подумаем.
     
     
  • 5.63, Аноним (-), 23:02, 07/07/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    Вы кроме WordPad что-нибудь встречали?
     
  • 4.49, Соня (??), 21:24, 07/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Тем не менее вся эта webня выглядит ужасающе сложно. Даже потрясающе сложно для просмоторщика документов со скриптами. Я бы не смог реализовать весь "стандарт"
     
     
  • 5.64, Аноним (-), 23:06, 07/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Это для вас лично. Скрипты - это вообще огромный туnой костыль. В целом там ничего сложного, просто объем.
    Примерно сложного: аллокатор памяти в операционной системе.
     
     
  • 6.78, angra (ok), 09:01, 08/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Тебя совсем не смущает, что аллокаторы памяти были созданы для многих десятков О... весь текст скрыт [показать]
     
     
  • 7.95, Аноним (-), 17:13, 08/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Столь дилетантская попытка сравнения позорна для технического ресурса. Вы дейтвительно думаете что браузерный движок это сложно? - Это очень объемно, но не сложно.
     
     
  • 8.159, Соня (??), 19:19, 11/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Много всего что по отдельности не сложно, но со странным поведением и так далее, да?
    Типа как скопировать настройки столетнего компьютера где использовали костыли, поверх них ещё костыли, потом ещё костыли для частичной нейтрализации эффекта тех костылей, прикручивали новые вещи разными странными способами, так? Я правильно понял?
    Но там нет особенно непонятных идей, сложных алгоритмов и всего такого?
    Вся сложность в этой массе и всех возможных способах её работы, сложной логике получившейся ...получившегося продукта.
    Все так?
     
  • 2.51, Crazy Alex (ok), 21:36, 07/07/2017 [^] [ответить]     [к модератору]  
  • +3 +/
    Потому что современные браузеры - безумная попытка сделать рантайм для GUI-при... весь текст скрыт [показать]
     
     
  • 3.70, manster (ok), 03:04, 08/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Нет, с пару тройкой вкладок все относительно хорошо Проблемы начинаются когд... весь текст скрыт [показать]
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor