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.
- ^ Dijkstra, Edsger W. O okrucieństwie prawdziwego nauczania informatyki (EWD-1036) (PDF) . Archiwum EW Dijkstry. Centrum Historii Ameryki, University of Texas w Austin . ( transkrypcja )
- ^ Dijkstra, Edsger W. Koniec informatyki? (EWD-1304) (PDF) . Archiwum EW Dijkstry. Centrum Historii Ameryki, University of Texas w Austin . ( transkrypcja )
-
^ Kursy MIT:
- Erica Grimsona, Petera Szolovitsa i Trevora Darrella. 6.001 Struktura i interpretacja programów komputerowych . Wiosna 2005. Massachusetts Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu . Licencja: Creative Commons BY-NC-SA .
- Roberta Morrisa i Samuela Maddena. 6.033 Inżynieria systemów komputerowych . Wiosna 2009. Massachusetts Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu . Licencja: Creative Commons BY-NC-SA .
- Ronitta Rubinfelda i Alberta Meyera. 6.042J Matematyka dla informatyki . Jesień 2005. Massachusetts Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu . Licencja: Creative Commons BY-NC-SA .
- Daniela Jacksona. 6.170 Studio oprogramowania. Wiosna 2013 . Massachusetts Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu . Licencja: Creative Commons BY-NC-SA .
- ^ „ 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 .