Wie kann man zwischen trivialer und nicht trivialer Software unterscheiden? [geschlossen]


11

Was macht ein Programm wirklich trivial?

"Es sei denn, seine triviale Software" wird so oft in Programmierdiskussionen verwendet. Ich finde es sehr vage in dem Sinne, dass ich nicht wirklich herausfinden kann, ob "etwas wesentlich ist, weil seine nicht triviale Software" oder "seine nicht triviale Software, weil etwas sehr wichtig geworden ist".

Zum Beispiel höre ich oft in der Frage des Unit-Tests: "Es sei denn, es ist trivial, dass Sie einen Unit-Test durchführen müssen".


9
Nach einigen Programmierern zu urteilen, mit denen ich zusammengearbeitet habe, würde ich sagen, dass für sie die Unterscheidung auf "Ihr Code ist trivial; mein Code ist nicht" zurückzuführen ist.
Netzteil

Könnten Sie eine Programmierdiskussion geben, in der dieses Zitat verwendet wird? Es scheint, dass die Antworten unterschiedliche Interpretationen enthalten.
Steven Jeuris

Überprüfen Sie die aktualisierte Frage.
NVM

Antworten:


12

Ich werde hier auf die Beine gehen und sagen:

Ein triviales Programm wirkt sich nicht direkt auf das Geschäft aus.

Ein produzierendes Unternehmen würde seine Buchhaltungssoftware als trivial betrachten, aber die Software, die den Roboterarm steuert, der kochenden Stahl bewegt, ist entscheidend. Sie können mit Fehlern und einem geringen Support-Turnaround im ersteren umgehen, aber nicht im letzteren. Wenn es ein Problem gibt, muss es jetzt behoben werden .


Obwohl eine andere Antwort mehr Punkte hat, gefällt mir diese Antwort am besten. Ich habe die Frage gestellt, weil ich nicht ganz sicher bin, ob die Arbeit, die ich mache, trivial ist oder nicht, und dies ist eine sichere Methode, um herauszufinden, ob sie vom „Geschäft“ als trivial angesehen wird oder nicht. Zum Beispiel. triviale Software kann ohne Unit-Tests durchkommen und hängt nicht wirklich von Codezeilen oder Komplexität ab. Alles was zählt ist, ob es für das Geschäft kritisch ist oder nicht.
NVM

+1, guter Punkt. Die Corporate Overlords haben manchmal sehr unterschiedliche Vorstellungen darüber, was als "trivial" gilt. Ich habe meiner Antwort einige hinzugefügt, um dies widerzuspiegeln.
FrustratedWithFormsDesigner

+1 - Ich denke, diese Antwort beschreibt am besten den Kontext des Begriffs, wie er in der Frage verwendet wird. Die andere "Antwort auf einen höheren Punkt" ist genau, aber nur in einem allgemeinen Kontext. Ich bin mir sicher, dass dieser es in der Abstimmung übertreffen wird, wenn man bedenkt.
Joel Etherton

2
Wenn Softwareentwickler trivial sagen, beziehen sie sich normalerweise auf die Komplexität der Software und nicht auf die geschäftlichen Auswirkungen. Ein Skript, das einige Dateien von A nach B kopiert, wäre trivial, könnte sich jedoch direkt auf das Geschäft auswirken, wenn es nicht funktioniert.
JacquesB

16

Ich glaube, die häufigste Absicht dieser Erklärung wäre, dass ein Programm die folgenden Merkmale aufweist:

  • Es ist klein.
  • Kurze Lebensdauer.
  • Keine weitere Erweiterung erforderlich.
  • Nur ein Entwickler.

2
+1, all dies ist entscheidend. Leider müssen Sie in einer Welt mit sich ständig ändernden Anforderungen manchmal "triviale" Software über ihre natürliche Lebensdauer hinaus erweitern.
10.

1
Klein in Bezug auf LOC, klein in Bezug auf kompilierte Binärgröße, klein in Bezug auf die Zeit, die für die Entwicklung benötigt wird? Ich würde auch argumentieren, dass kurze Lebensdauer nicht trivial bedeutet und Trivialität nicht kurze Lebensdauer bedeutet. Ich habe Fälle gesehen, in denen Software mit einer Laufzeit von nur 6 Monaten mindestens doppelt so lange entwickelt wurde und ein entscheidendes Brückensystem war. Ich habe die Datenkonvertierung Systeme gesehen , die genau einmal verwendet wurden, aber seit über ein Jahr in der Entwicklung und war weit von trivial. Und triviale Programme wie Minesweeper scheinen eine sehr lange Lebensdauer zu haben.
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner: klein wie in, ein 100x100px-Fenster natürlich. ; p Ich meine, klein wie in Codezeilen, die geschrieben werden müssen, was proportional zur Zeit ist, die für die Entwicklung benötigt wird. Die Lebensdauer ist nicht unbedingt erforderlich, Sie haben Recht, aber häufig ein Merkmal, wenn Sie einen fortgeschritteneren Ansatz gegenüber einem einfachen Ansatz diskutieren.
Steven Jeuris

Ich würde nicht zustimmen, dass ein niedriger LOC immer trivial ist. Manchmal passt der komplizierteste Teil eines Programms, der schwierigste Teil, die schwierigsten Algorithmen, in <20 Codezeilen. Und ein Programm, das hauptsächlich aus Hunderten von Zeilen automatisch generierter Getter / Setter besteht - ist das dann nicht trivial, obwohl es nicht einmal einen Entwickler benötigt, um es zu erstellen?
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner: Ich glaube, Sie haben eine andere Interpretation der Frage als ich. Meine Antwort bezieht sich auf die Tatsache, dass ich mich für eine triviale Lösung im Vergleich zu einer komplexen entschieden habe. Ihre Antwort bezieht sich auf "schwierige" und "leicht" zu lösende Probleme. Vielleicht sollte die Frage des OP etwas geklärt werden.
Steven Jeuris

14

Indem Sie es vollständig wegwerfen, Binärdateien und Quellen. Wenn jemand es bemerkt, war es nicht trivial.


6
+1 Das hat mich zum Lachen gebracht und es macht auch Sinn.
NVM

8

Trivial ist ...

  • etwas, das bereits existiert, warum also das Rad neu erfinden?
  • Etwas, das leicht erstellt werden kann, indem entweder einige andere Programme zusammen geschrieben oder ein kleiner Code geschrieben wird, der vorhandene Bibliotheken, die das tun, was getan werden muss, stark nutzt.
  • Etwas, das ein durchschnittlicher CS-Student als kleine bis mittlere Hausaufgabe erledigen könnte.
  • etwas, das detaillierte Anforderungen hat, die leicht auf eine Cocktailserviette passen könnten.
  • etwas, das Sie codieren könnten, während Sie abgelenkt / betrunken / in der Freizeit von 4 oder 5 Minuten Brocken sind.
  • etwas, das mit einem einfachen Code-Generierungs-Tool erstellt werden könnte.

In einer Unternehmensumgebung würde ich Folgendes hinzufügen:

  • Etwas, das den Geschäftsbenutzern nichts ausmacht, eine Weile auf eine Lösung zu warten.
  • etwas, das intern verwendet wird und keine offizielle Unterstützung durch die IT hat.
  • Dies wird vom Unternehmen bei der Ressourcenplanung und -planung als eine der niedrigsten Prioritäten eingestuft.

4

Ich würde ein triviales Programm als eines definieren, das vernünftigerweise codiert werden könnte:

  • In einer Sitzung.
  • Als einzelne Datei / Modul (vorausgesetzt, Sie programmieren nicht in Java oder einer Sprache, die eine sehr feinkörnige Aufteilung der Module erzwingt).
  • Von jedem anständigen "Alleskönner" -Programmierer und nicht von einem Spezialisten.

3

Hier sind meine Beispiele für "triviale" Programme:

  1. Ein "Dummy" -Projekt, das ich eingerichtet und mit dem Codieren begonnen habe, damit ich ein Stück Technologie oder Beispielcode ausprobieren kann. Keine Absicht, eingesetzt oder jemandem gezeigt zu werden.
  2. Demo-Code für technische Präsentationen.
  3. Ein "einmaliges". Ich meine eine schnelle Anwendung, die ich einmal erstellen musste, weil es sich um eine seltsame Situation handelt, in der Daten auf eine bestimmte Weise verschoben werden mussten oder die dann sofort durch etwas dauerhafteres ersetzt werden.

3

Trival-Software existiert nicht, es ist, wenn Sie Anforderungen und Dinge hören, die Trival sein werden, wenn es in Wirklichkeit immer nicht Trival ist

Hier ist ein Zitat, das ich vor einem Jahrzehnt im Usenet gesehen habe. Es ist jetzt noch relevanter.

Die Komplexität einer Softwarelösung ist umgekehrt proportional zur Komplexität der Erklärung, was sie tun soll. - Unbekannt


-1

Ein Programm, das nur eine Reihe von Getter / Setter-Methoden ist. Keine Programmierlogik. Vielleicht etwas mit ein paar Schleifen.

Das ist meine Definition von trivial.


-1

Unsere Arbeitsdefinition lautet "etwas, von dem nichts anderes abhängt".

Leider gab es einige triviale Prototypen, die zu nicht trivialen Produktionsprodukten wurden.


-3

Ich habe auch gehört, dass es im Zusammenhang mit den Auswirkungen des Programms auf die gesamte Projektplanung verwendet wird. Wenn eine bestimmte Spezifikation den Zeitplan für die Lieferung des Produkts nicht ändert, fällt sie unter das Label Trivial.

Ich kannte einen Programmierer, der dazu neigte, "trivial" als Synonym für "nicht einmal eine Diskussion wert" zu verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.