O okrucieństwie prawdziwego nauczania informatyki

„On the Cruelty of Really Teaching Computing Science” to artykuł naukowy EW Dijkstry z 1988 r ., W którym argumentuje się, że programowanie komputerowe powinno być rozumiane jako gałąź matematyki , a formalna możliwość udowodnienia programu jest głównym kryterium poprawności.

Pomimo tytułu, większość artykułu dotyczy próby Dijkstry, aby umieścić informatykę w szerszej perspektywie w nauce , nauczanie jest omawiane jako następstwo na końcu. W szczególności Dijkstra przedstawił „propozycję wstępnego kursu programowania dla studentów pierwszego roku”, który obejmował logikę Hoare'a jako niezinterpretowany system formalny .

Debata nad wykonalnością

Odkąd ukuto termin „inżynieria oprogramowania”, formalna weryfikacja prawie zawsze była uważana za zbyt wymagającą zasobów, aby była wykonalna. [ Potrzebne źródło ] W złożonych aplikacjach trudność z poprawnym określeniem, co program powinien robić w pierwszej kolejności, jest również częstym źródłem błędów. Inne metody testowania oprogramowania są na ogół stosowane w celu wyeliminowania błędów , a przy pomiarze jakości oprogramowania bierze się pod uwagę wiele innych czynników .

Do końca życia Dijkstra utrzymywał, że główne wyzwania związane z informatyką nie zostały spełnione w sposób zadowalający z powodu niewystarczającego nacisku na poprawność programu (choć nie eliminując innych wymagań, takich jak łatwość konserwacji i wydajność ).

Dziedzictwo pedagogiczne

Informatyka nauczana dzisiaj nie jest zgodna ze wszystkimi radami Dijkstry. Programy nauczania generalnie kładą nacisk na techniki zarządzania złożonością i przygotowania do przyszłych zmian, zgodnie z wcześniejszymi pismami Dijkstry. Należą do nich abstrakcja , programowanie na podstawie umowy i wzorce projektowe . Techniki programowania pozwalające uniknąć błędów i konwencjonalne metody testowania oprogramowania są nauczane jako podstawowe wymagania, a studenci mają kontakt z pewnymi narzędziami matematycznymi, ale formalne metody weryfikacji nie są uwzględnione w programie nauczania, chyba że jako temat zaawansowany. Więc w pewnym sensie idee Dijkstry zostały spełnione; jednak idee, do których był najbardziej przekonany, nie były.

Nowo utworzone programy nauczania inżynierii oprogramowania przyjęły zalecenia Dijkstry. Celem tych programów jest formalna specyfikacja wymagań oprogramowania i projekt w celu ułatwienia formalnej walidacji poprawności systemu. W Kanadzie są często akredytowanymi stopniami inżynierskimi z podobnymi podstawowymi kompetencjami w inżynierii opartej na fizyce.

  1. ^ Dijkstra, Edsger W. O okrucieństwie prawdziwego nauczania informatyki (EWD-1036) (PDF) . Archiwum EW Dijkstry. Centrum Historii Ameryki, University of Texas w Austin . ( transkrypcja )
  2. ^ Dijkstra, Edsger W. Koniec informatyki? (EWD-1304) (PDF) . Archiwum EW Dijkstry. Centrum Historii Ameryki, University of Texas w Austin . ( transkrypcja )
  3. ^ Kursy MIT:
  4. ^ Programy inżynierii oprogramowania nie są programami informatycznymi (PDF) . Zarchiwizowane od oryginału (PDF) w dniu 2013-09-27 . Źródło 2012-10-30 .