Как различить тривиальное и нетривиальное программное обеспечение? [закрыто]


11

Так что же делает программу тривиальной?

«Если только его тривиальное программное обеспечение» не используется так часто в дискуссиях по программированию. Я нахожу это очень расплывчатым в том смысле, что не могу понять, действительно ли «что-то важно, потому что это нетривиальное программное обеспечение» или «нетривиальное программное обеспечение, потому что что-то стало очень важным».

Например, много раз по вопросу о модульном тестировании я слышал «если это не тривиально, вам потребуется модульное тестирование».


9
Судя по некоторым программистам, с которыми я работал, я бы сказал, что для них различие сводилось к тому, что «ваш код тривиален, мой код - нет».
БП

Не могли бы вы дать обсуждение по программированию, в котором вы видите эту цитату? Кажется, в ответах есть разные толкования.
Стивен Джеурис

Проверьте обновленный вопрос.
NVM

Ответы:


12

Я собираюсь выйти на конечности здесь и сказать:

Тривиальная программа - это программа, которая напрямую не влияет на бизнес.

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


Хотя другой ответ имеет больше очков, мне больше нравится этот ответ. Я задал вопрос, потому что я не совсем уверен, является ли работа, которую я выполняю, тривиальной или нет, и это верный способ выяснить, тривиально ли это для «бизнеса» или нет. Например тривиальное программное обеспечение может обойтись без модульного тестирования, и оно на самом деле не зависит от строк кода или сложности. Все, что имеет значение, является ли это критичным для бизнеса или нет.
NVM

+1, хороший момент. Корпоративные Повелители иногда имеют совершенно разные представления о том, что считается «тривиальным». Я добавил несколько к своему ответу, чтобы отразить это.
FrustratedWithFormsDesigner

+1 - я думаю, что этот ответ лучше всего описывает контекст термина, как он применяется в вопросе. Другой «ответ более высокой точки» точен, но только в общем контексте. Я уверен, что этот превзойдет его в голосовании, как это считается.
Джоэл Этертон

2
Когда разработчики программного обеспечения говорят тривиально, они обычно ссылаются на сложность программного обеспечения, а не на влияние на бизнес. Сценарий, который копирует некоторые файлы из A в B, будет тривиальным, но все равно может напрямую повлиять на бизнес, если он не работает.
JacquesB

16

Я полагаю, что наиболее распространенным намерением этого заявления было бы, чтобы программа имела следующие характеристики:

  • Он маленький.
  • Короткая жизнь
  • Нет необходимости в дальнейшем продлении.
  • Только один разработчик.

2
+1, все это очень важно. К сожалению, в мире с постоянно меняющимися требованиями вам придется иногда расширять «тривиальное» программное обеспечение за пределы его естественного срока службы.
10

1
Маленький с точки зрения LOC, маленький с точки зрения размера скомпилированного двоичного файла, маленький с точки зрения времени, затрачиваемого на его разработку? Кроме того, я бы сказал, что короткое время жизни не означает тривиальное, а тривиальное не означает короткое время жизни. Я видел случаи, когда программное обеспечение со сроком службы всего 6 месяцев разрабатывалось, по крайней мере, вдвое дольше и являлось критически важной системой моста. Я видел системы преобразования данных, которые использовались ровно один раз, но разрабатывались более года и были далеко не тривиальными. А тривиальные программы типа Minesweeper, похоже, имеют очень продолжительную продолжительность жизни.
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner: маленький, как в окне курса размером 100x100 пикселей. ; p Я имею в виду, маленький, как в строках кода, которые должны быть написаны, что пропорционально времени, потраченному на его разработку. Продолжительность жизни не важна, вы правы, но часто это характерная черта при обсуждении более продвинутого подхода по сравнению с простым подходом.
Стивен Джеурис

Я бы не согласился, что низкий LOC всегда подразумевает тривиальное. Иногда самая сложная часть программы, самая сложная часть, правильные алгоритмы, вписывается в <20 строк кода. И программа, которая состоит в основном из сотен строк автоматически сгенерированных методов получения / установки - это тогда нетривиально, даже если для ее создания даже не нужен разработчик?
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner: я полагаю, что у вас другое понимание этого вопроса, чем у меня. Мой ответ связан с фактом выбора тривиального решения по сравнению со сложным. Ваш ответ относится к «сложным» и «простым» задачам, которые нужно решить. Возможно, вопрос ОП следует немного прояснить.
Стивен Джеурис

14

Отбрасывая его полностью, двоичные файлы и исходники. Если кто-то замечает, это не было тривиальным.


6
+1 Это заставило меня смеяться, и это также имеет смысл.
NVM

8

Тривиально это ...

  • то, что уже существует, так зачем изобретать велосипед?
  • что-то, что можно легко создать, написав несколько других программ вместе или написав небольшой код, который интенсивно использует существующие библиотеки, которые делают то, что нужно.
  • что-то, что средний студент старших курсов CS мог сделать как домашнее задание от малого до среднего.
  • то, что имеет подробные требования, которые могут легко поместиться на коктейльной салфетке.
  • что-то, что вы могли бы кодировать, отвлекаясь / выпив / в свободное время от 4 до 5 минут.
  • то, что может быть создано с помощью простого инструмента генерации кода.

В корпоративной среде я бы добавил это:

  • что-то, что бизнес-пользователи не против подождать некоторое время, чтобы исправить.
  • что-то для внутреннего использования, которое не имеет официальной поддержки со стороны ИТ.
  • то, что является приоритетным среди бизнес-приоритетов при планировании и планировании ресурсов.

4

Я бы определил тривиальную программу как ту, которая может быть разумно закодирована:

  • В один присест.
  • Как отдельный файл / модуль (при условии, что вы не программируете на Java или каком-либо другом языке, который вызывает сверхтонкое разбиение модулей).
  • Любой приличный «мастер на все руки» программист, а не специалист.

3

Вот мои примеры "тривиальных" программ:

  1. «Макетный» проект, который я настроил и начал кодировать, чтобы я смог опробовать образец технологии или пример кода. Нет намерения быть развернутым или даже показанным кому-либо.
  2. Демонстрационный код написан для технических презентаций.
  3. «Одноразовый». Я имею в виду быстрое приложение, которое мне пришлось создать, чтобы использовать один раз, потому что это странная ситуация с данными, которые нужно было перемещать определенным образом, или что-то, что затем будет немедленно заменено чем-то более постоянным.

3

Trival программного обеспечения не существует, это когда вы слышите требования и вещи, которые будут триальными, когда на самом деле это всегда нетривиальные

Вот цитата, которую я видел в Usenet десять лет назад, сейчас она еще более актуальна.

Сложность программного решения обратно пропорциональна сложности объяснения того, что оно должно делать. - неизвестно


-1

Программа, которая представляет собой просто набор методов getter / setter. Нет логики программирования. Может быть, что-то с несколькими петлями.

Это моё определение тривиально.


-1

Наше рабочее определение: «от чего-то еще ничего не зависит».

К сожалению, было несколько тривиальных прототипов, которые стали нетривиальными продуктами производства.


-3

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

Я знал одного программиста, который имел тенденцию использовать «тривиальный» в качестве синонима «даже не стоит обсуждать».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.