Fascynujące pytanie; Podoba mi się twój nacisk na obiektywne kryteria. Chcemy, aby pierwszoklasowcy nauczyli się:
koncepcje programowania : Pierwszy język programowania musi obsługiwać: wywołania funkcji, iterację, rekurencję
podstawowe idee : pierwszy język programowania musi obsługiwać tablice (pierwsze kroki w delikatnym wprowadzeniu do tego, jak naprawdę działa pamięć i jak działają wskaźniki)
praktyczne umiejętności programowania : jak korzystać z debuggera, jak korzystać z profilera, jak rozwiązywać duże problemy (język wysokiego poziomu), jak łączyć duże systemy, jak rozwiązywać problemy (rozkład problemów), jak unikać pisania skomplikowany kod, jak przekazać ludziom cel (często tajemniczej) serii wykonywalnych instrukcji.
fakt, że istnieją gotowe biblioteki dla takich rzeczy jak sort () i jak ich używać - tj. fakt, że nie trzeba pisać wszystkiego od zera.
Inne kryteria dla pierwszego języka :
interpretowane (szybka informacja zwrotna pomaga w procesie uczenia się).
interaktywne środowisko, które przyspiesza uczenie się, testowanie i debugowanie.
wysokiej jakości kod źródłowy jest dostępny dla studentów do czytania w tym języku
„łatwa do odczytania”, „składnia zbliżona do języka naturalnego” (aby ułatwić czytanie i ocenianie kodu źródłowego)
przenośny (działa na Mac OS, Windows, Unix). Co najmniej jedna implementacja języka w wolnym oprogramowaniu.
szybka w nauczaniu, „kilka gotchas” - na przykład: „Może być szybsze nauczenie początkujących Pythona, a potem Javy, niż Javy jako pierwszej OOPL”. - „Porównanie zorientowanych obiektowo języków programowania” i TelescopeRule
Matthias Felleisen opracował język programowania z komunikatami o błędach dostosowanymi do początkujących odbiorców. Podkreśla, że wybór konkretnego języka nie jest tak ważny, jak nauczanie dobrej metodologii projektowania. W rzeczywistości widzi pierwszy kurs CS jako zajęcia ze sztuk wyzwolonych, ucząc krytycznego myślenia, rozwiązywania problemów i dbałości o szczegóły.
kryteria drugiego języka programowania
Rzeczy, których chcemy, aby uczniowie się uczyli, ale być może to może poczekać na drugi język programowania:
„odpowiedni” język, który nie jest „zbyt ezoteryczny”; coś „popularnego w branży”
Teoria złożoności: jak rozpoznać zadania, które są niemożliwe przy obecnej technologii.
rzeczy na wyższym poziomie: jak wybrać odpowiednie narzędzie do pracy , jak korzystać z kompilatora, struktur, programowania obiektowego, programowania funkcjonalnego, programowania logiki, projektowania kompilatora, komponowania i manipulowania funkcjami (w sensie Lisp / ML), programowanie współbieżne i rozproszone,
rzeczy niskiego poziomu: arytmetyka wskaźników, architektura komputerowa. zarządzanie pamięcią, ramki stosu, programowanie montażu, architektura maszyny, sterowniki urządzeń i konstrukcja systemu operacyjnego (aby maszyna nie „wyglądała jak przerażająca czarna skrzynka, której nie mogą przeniknąć”)
EDYCJA: Jestem rozczarowany, że opublikowanie streszczenia czegoś, co napisałem we współpracy z wieloma innymi, „może nie być legalnym postem”.
Dodam więc bardziej formalny cytat do mojego poprzedniego nieformalnego linku, próbując zachować zgodność z dozwolonym użytkiem i innymi kwestiami praw autorskich wiki.
Ta odpowiedź jest streszczeniem Pierwszego Języka Freshmana (Anon 2011) w Portland Pattern Repository.
(Anon 2011) Wielu anonimowych i różnych innych autorów. „Pierwszy język Freshmans”. Repozytorium wzorców Portland. 27 września 2011 r . Http://c2.com/cgi/wiki?FreshmansFirstLanguage .