Вы когда-нибудь были жертвой ошибки в языке программирования или технологии? - PullRequest
4 голосов
/ 12 октября 2009

Ошибки могут быть достаточно сложными для устранения, когда они являются вашей (или коллегой) ошибкой. Однако мы все знаем, что технологии, которые мы используем для реализации наших программ, написаны такими непогрешимыми людьми, как мы. Таким образом, само собой разумеется, что некоторые люди были подвержены ошибкам в реализации инструментов, которые они использовали.

Итак, вы нашли ошибку в вашей программе, которая была вызвана широко распространенной базовой технологией, такой как язык программирования или фреймворк? Если да, то произошел сбой с некоторым указанием или он перезаписал некоторые данные без уведомления? Насколько сложно было отлаживать? Вызывало ли это потенциальную уязвимость безопасности? Удалось ли вам связаться с поставщиком и подтвердить, что оно было исправлено (или исправить это самостоятельно)?

Вот некоторые из худших (на мой взгляд) технологий, в которых есть ошибка (особенно та, которая не срабатывает молча):

  • Язык программирования
  • Параллельная структура
  • Удаленный API
  • База данных

Ответы [ 8 ]

7 голосов
/ 12 октября 2009

Я ежедневно работаю с ним под названием Internet Explorer.

Если честно, во всех браузерах есть много ошибок. Я также подал несколько ошибок для Firefox, и на днях я обнаружил странный случай, когда граница не учитывает отступы.

2 голосов
/ 12 октября 2009

Во время моей работы (в основном) с Java я столкнулся с ошибками в следующих компонентах:

  • компилятор Java
    • Это действительно случалось несколько раз. Обычно мы обнаруживаем, что ecj (компилятор Eclipse) и javac (компилятор Sun) расходятся во мнениях относительно достоверности некоторого кода Java. Обычно я вношу отчеты об ошибках для обеих систем, одна из которых принимается, а другая закрывается как недействительная.
  • База данных движка
    • Это очень редко и очень, очень неприятно, потому что никто не ожидает, что в самой БД будет ошибка. В нашем случае это был старый продукт (ошибка уже была исправлена ​​в более новой версии), который принимал значения в поле, которые не были в заданном диапазоне (аналогично наличию поля NOT NULL, содержащего NULL)
  • драйвер JDBC
    • В драйвере JDBC было несколько исправлений ошибок из-за проекта, над которым я работал. Исправления ошибок варьировались от тривиального («почему в производственном выпуске есть отладочный вывод?») До ошибки, которая может даже не быть реальной («вы можете легко обезопасить одну поездку на каждое утверждение, выполнив это и что ").
  • реализации JVM
    • это трудно диагностировать, и они часто представляют собой случайные сбои на одной JVM и стабильную работу на другой. Из-за таких вещей мы временно меняли поставщика JVM несколько раз.

Каждый раз, когда я действительно полагал, что это ошибка в этом компоненте, потребовалось довольно много времени (и, как правило, участие поставщика компонента).

И да: случаи ложных срабатываний (то есть ошибка действительно была в моем / нашем коде) были на порядки более распространенными.

Единственное место, где ожидаемые ошибки в стороннем компоненте вроде бы ожидаются, это веб-браузеры. Почти никто не спрашивает вас, когда вы говорите: «Это ошибка в <вставьте глючный браузер недели> , нам нужно обойти это следующим образом ...».

2 голосов
/ 12 октября 2009

Коллега однажды наткнулся на ошибку в компиляторе Jikes Java. У него было что-то вроде этого:

if (condition)
{
}
else
{
   System.out.println("Code that does stuff.");
}

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

2 голосов
/ 12 октября 2009

Это хороший аргумент для написания множества модульных тестов. Если вы обновите свою платформу до более новой версии, в которой есть какая-то новая ошибка, надеюсь, у вас есть тест, который обнаружит ошибку

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

1 голос
/ 12 октября 2009

Я полагаю, что почти каждый, кто программировал JavaScript с помощью Internet Explorer, обнаружил в своей программе ошибку, вызванную широко распространенной технологией.

Индикатор сбоя - синий значок «e» на рабочем столе Windows.

0 голосов
/ 12 октября 2009

Я нашел очень странную ошибку в gcc на Mipsel (openwrt). Мы тестировали небольшое приложение (около 3K sloc), которое дает мне сигсев, даже если код был исправлен теоретически.

Я не знаю подробностей ошибки (и у меня больше нет этого кода), но изменение версии gcc с 4.1 на 3.6 решает проблему.

0 голосов
/ 12 октября 2009

Первое, что приходит на ум, было с версией 1 .NET Framework; по какой-то причине метод Random.NextDouble () никогда не создавал значение больше 0,5. Я был совершенно сбит с толку, и, запустив тестовые приложения, которые вызывали метод тысячи и тысячи раз, я должен был предположить, что это ошибка, и обойти ее.

Никогда не узнал, в чем причина ...

0 голосов
/ 12 октября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...