Jak odróżnić oprogramowanie trywialne od nietrywialnego? [Zamknięte]

11

Co naprawdę sprawia, że ​​program jest trywialny?

„O ile jego trywialne oprogramowanie” nie jest tak często używane w dyskusjach programistycznych. Uważam, że jest to bardzo niejasne w tym sensie, że nie mogę naprawdę stwierdzić, czy „coś jest niezbędne, ponieważ jego trywialne oprogramowanie” lub „jego trywialne oprogramowanie, ponieważ coś stało się bardzo niezbędne”.

Na przykład wiele razy w kwestii testowania jednostkowego słyszę „chyba, że ​​jest to trywialny test jednostkowy”.

NVM
źródło
9
Sądząc po niektórych programistach, z którymi współpracowałem, powiedziałbym, że dla nich rozróżnienie sprowadzało się do „twój kod jest trywialny, mój kod nie jest”.
PSU
Czy możesz przedstawić dyskusję dotyczącą programowania, w której widzisz ten cytat wykorzystany? Wydaje się, że w odpowiedziach istnieją różne interpretacje.
Steven Jeuris
Sprawdź zaktualizowane pytanie.
NVM

Odpowiedzi:

12

Wyjdę tutaj na kończynę i powiem:

Trywialny program to taki, który nie ma bezpośredniego wpływu na biznes.

Firma produkcyjna uważa oprogramowanie księgowe za trywialne, ale oprogramowanie sterujące ramieniem robota poruszającym wrzącą stal ma kluczowe znaczenie. Mogą poradzić sobie z błędami i niskim poziomem wsparcia w pierwszym, ale nie w drugim. Jeśli jest jakiś problem, potrzebują go teraz naprawić .

Michael K.
źródło
Chociaż inna odpowiedź ma więcej punktów, najbardziej podoba mi się ta odpowiedź. Zadałem to pytanie, ponieważ nie jestem do końca pewien, czy praca, którą wykonuję, jest trywialna, czy nie, i jest to pewny sposób na zastanowienie się, czy jest „trywialna”, czy nie. Np. trywialne oprogramowanie może uciec bez testów jednostkowych i tak naprawdę nie zależy od linii kodu ani złożoności. Liczy się tylko to, czy ma to kluczowe znaczenie dla firmy, czy nie.
NVM
+1, dobry punkt. Korporacyjni panowie czasami mają bardzo różne poglądy na temat tego, co liczy się jako „trywialne”. Dodałem kilka do mojej odpowiedzi, aby to odzwierciedlić.
FrustratedWithFormsDesigner
+1 - Myślę, że ta odpowiedź najlepiej opisuje kontekst tego terminu, jaki jest stosowany w pytaniu. Druga „odpowiedź punktowa” jest dokładna, ale tylko w ogólnym kontekście. Jestem pewien, że ten przewyższy go liczbą głosów, jak to jest rozważane.
Joel Etherton
2
Kiedy programiści mówią, że są trywialni, zwykle odnoszą się do złożoności oprogramowania, a nie do wpływu biznesowego. Skrypt, który kopiuje niektóre pliki z A do B, byłby trywialny, ale nadal może mieć bezpośredni wpływ na biznes, jeśli nie działa.
JacquesB
16

Uważam, że najczęstszą intencją tego stwierdzenia byłoby, aby program miał następujące cechy:

  • To jest małe.
  • Krótka żywotność.
  • Nie ma potrzeby dalszego przedłużania.
  • Tylko jeden programista.
Steven Jeuris
źródło
2
+1, wszystkie są kluczowe. Niestety, w świecie o ciągle zmieniających się wymaganiach będziesz musiał czasem rozszerzyć „trywialne” oprogramowanie poza jego naturalny okres życia.
l0b0
1
Mały pod względem LOC, mały pod względem skompilowanego rozmiaru binarnego, mały pod względem czasu potrzebnego na jego opracowanie? Ponadto twierdzę, że krótkie życie nie oznacza trywialne, a trywialne nie oznacza krótkiego życia. Widziałem przypadki, w których oprogramowanie z czasem działania wynoszącym zaledwie 6 miesięcy było opracowywane co najmniej dwa razy dłużej i było kluczowym systemem pomostowym. Widziałem systemy konwersji danych, które były używane dokładnie raz, ale były opracowywane przez ponad rok i były dalekie od trywialnych. A trywialne programy, takie jak Saper, wydają się mieć bardzo długą żywotność.
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: mały jak w środku, okno o wymiarach 100 x 100 pikseli. ; p Mam na myśli, małe, jak w wierszach kodu, które muszą być napisane, co jest proporcjonalne do czasu potrzebnego na jego opracowanie. Długość życia nie jest niezbędna, masz rację, ale często jest to cecha charakterystyczna przy omawianiu bardziej zaawansowanego podejścia niż prostego.
Steven Jeuris
Nie zgadzam się, że niski LOC zawsze oznacza trywialny. Czasami najbardziej skomplikowana część programu, najtrudniejsza do wykonania, najtrudniejsze algorytmy, mieści się w <20 liniach kodu. A program, który składa się głównie z setek linii automatycznie generujących / ustawiających - czy to nie jest trywialne, nawet jeśli nie potrzebuje nawet programisty, aby go utworzyć?
FrustratedWithFormsDesigner
1
@FrustratedWithFormsDesigner: Uważam, że masz inną interpretację pytania niż ja. Moja odpowiedź dotyczy tego, że zdecydowałem się na rozwiązanie trywialne, a nie skomplikowane. Twoja odpowiedź dotyczy problemów „trudnych” i „łatwych” do rozwiązania. Być może pytanie PO powinno zostać nieco wyjaśnione.
Steven Jeuris
14

Wyrzucając go całkowicie, pliki binarne i źródła. Jeśli ktoś to zauważy, nie było to trywialne.

wegetarianin
źródło
6
+1 To mnie rozśmieszyło i to też ma sens.
NVM
8

Trywialne jest ...

  • coś, co już istnieje, więc po co wymyślać koło ponownie?
  • coś, co można łatwo zbudować, pisząc skrypt w kilku innych programach razem lub pisząc mały kod, który intensywnie wykorzystuje istniejące biblioteki, które robią to, co należy zrobić.
  • coś, co przeciętny student studiów licencjackich z CS mógłby wykonać jako zadanie domowe od małej do średniej.
  • coś, co ma szczegółowe wymagania, które z łatwością można zmieścić na serwetce koktajlowej.
  • coś, co można kodować, gdy jest rozproszony / pijany / w wolnym czasie z 4 lub 5 minutowymi kawałkami.
  • coś, co można stworzyć za pomocą prostego narzędzia do generowania kodu.

W środowisku korporacyjnym dodałbym te:

  • coś, czego użytkownicy biznesowi nie mają nic przeciwko czekać na poprawkę.
  • coś używanego wewnętrznie, które nie ma oficjalnego wsparcia ze strony IT.
  • coś, co jest priorytetem wśród najniższych priorytetów przez biznes, podczas planowania zasobów i planowania.
FrustratedWithFormsDesigner
źródło
4

Zdefiniowałbym trywialny program jako taki, który można rozsądnie zakodować:

  • Na jednym siedzeniu.
  • Jako pojedynczy plik / moduł (zakładając, że nie programujesz w Javie lub w jakimś języku, który wymusza bardzo drobnoziarnisty podział modułów).
  • Jakikolwiek przyzwoity programista „jack of all trades”, a nie specjalista.
dsimcha
źródło
3

Oto moje przykłady „trywialnych” programów:

  1. „Sztuczny” projekt, który skonfigurowałem i zacząłem kodować, abym mógł wypróbować kawałek technologii lub przykładowy kod. Nie ma zamiaru być wdrażany ani nawet pokazywany nikomu.
  2. Kod demonstracyjny napisany do prezentacji technicznych.
  3. „Jednorazowy”. Mam na myśli szybką aplikację, którą musiałem kiedyś zbudować, ponieważ jest to dziwna sytuacja danych, które musiały zostać przeniesione w określony sposób, lub coś, co zostanie natychmiast zastąpione przez coś bardziej trwałego.
Marcie
źródło
3

Trywialne oprogramowanie nie istnieje, to wtedy, gdy słyszysz wymagania i rzeczy, które będą trywialne, podczas gdy w rzeczywistości zawsze są nietrywialne

Oto cytat, który widziałem na Usenecie dziesięć lat temu, jest teraz jeszcze bardziej aktualny.

Złożoność rozwiązania programowego jest odwrotnie proporcjonalna do złożoności wyjaśnienia, co należy zrobić. - nieznany


źródło
-1

Program, który jest tylko zbiorem metod typu getter / setter. Brak logiki programowania. Może coś z kilkoma pętlami.

To moja definicja trywialna.

davidhaskins
źródło
-1

Nasza robocza definicja to „coś, od czego nie zależy nic innego”.

Niestety pojawiło się kilka trywialnych prototypów, które stały się niebanalnymi produktami produkcyjnymi.

Wyatt Barnett
źródło
-3

Słyszałem również, że został wykorzystany w kontekście wpływu programu na ogólne planowanie projektu. Jeśli określona specyfikacja nie zmienia osi czasu dostarczenia produktu, należy do kategorii trywialna.

Znałem jednego programistę, który zwykle używał słowa „trywialny” jako synonim „Nie warto nawet dyskutować”.

SQLSuperHero
źródło