Czytałem „ Semantykę z aplikacjami ” Nielsona i Nielsona i bardzo podoba mi się ten temat. Chciałbym mieć jeszcze jedną książkę na temat semantyki języka programowania - ale naprawdę mogę dostać tylko jedną.
Rzuciłem okiem na książkę Turbak / Gifford , ale jest ona zbyt długa; Myślałem, że Winskel będzie w porządku, ale nie mam do niego dostępu (nie ma go w naszej bibliotece uniwersyteckiej i brakuje mi pieniędzy) i nawet nie jestem pewien, czy nie jest datowany. Slonneger wydaje się OK, ale część praktyczna sprawia, że jest on trochę za długi, a jego styl nie jest dla mnie zbyt wygodny.
Więc moje pytanie brzmi - czy Winskel to dobra książka? I czy to jest datowane?
Czy są też inne zwięzłe książki na ten temat?
Odpowiedzi:
Wszystko zależy od tego, jak głęboko chcesz zejść i ile już wiesz. Dla początkującego książka Winksel jest naprawdę fajna, ale tak, nie wprowadza cię w stan semantyki, jak napisano około 20 lat temu. Niemniej jednak jest to dobre pierwsze wprowadzenie do tematu. Warto również wskazać, że T. Nipkow sformalizował znaczną część książki Winskela w Isabelle / HOL, patrz tutaj . Jeśli więc chcesz nauczyć się korzystać z interaktywnych asystentów sprawdzających wraz ze zrozumieniem semantyki języków programowania, masz wiele spójnych materiałów do wykorzystania.
Inne bardziej zaawansowane książki to:
Gunter, Semantyka języków programowania , bardziej zaawansowana książka skupiająca się na semantyce denotacyjnej, podejściu do semantyki, która nie spełniła oczekiwań. Koncentruje się na czysto funkcjonalnych językach i ignoruje współbieżność. Jest to książka, od której nauczyłem się semantyki jako licencjat, i z perspektywy czasu żałuję, że nie zamiast tego użyłem książki Winksel. Gunter nie jest łatwym do przeczytania dla początkującego.
Domeny i rachunek lambda Amadio i Curien. Kolejna książka, napisana bardziej w tradycji teoretycznej, choć omawia rachunek procesowy.
Książki Johna Mitchella, które zostały już wspomniane powyżej. Dotyczą one głównie obliczeń sekwencyjnych.
Książki takie jak TAPL Pierce'a są bardzo ładne, ale skupiają się wąsko na jednym aspekcie języków programowania, a mianowicie na typach, tak samo ważnych. Nie polecałbym tego jako pierwszego wprowadzenia do ogólnej dziedziny języków programowania, ale jest to obowiązkowe lektury dla każdego, kto chce dowiedzieć się o typach.
Prawdę mówiąc, myślę, że obecnie nie ma aktualnej książki wprowadzającej na temat semantyki języka, która odzwierciedla znaczny postęp, jaki nastąpił w ostatniej dekadzie, z jej zdecydowanym przejściem od metod denotacyjnych i obliczeń sekwencyjnych do współbieżności (kalkulacja procesów i semantyka gry) , semantyka aksjomatyczna i zastosowanie interaktywnych asystentów dowodowych w weryfikacji.
Aktualizacja 22. kwietnia 2014 r .: Tobias Nipkow i Gerwin Klein opublikowali nową książkę
co można uznać za „Winskel in Isabelle / HOL”. Jest to wprowadzenie do semantyki języków programowania (przede wszystkim operacyjnej i aksjomatycznej), ale w przeciwieństwie do wcześniejszych podejść opartych na pisaniu i pisaniu, ta książka wyraża całą swoją matematykę w Isabelle / HOL. Innymi słowy, jest to jednocześnie książka o dowodzeniu twierdzeń.
Książka jest zupełnie nowa, więc nie korzystałem z niej do nauczania, ale wydaje się ona naprawdę odpowiednia jako wstęp, który jest na niższym poziomie niż Software Foundations autorstwa Pierce i in.
źródło
Oto losowa próbka materiałów dostępnych bezpłatnie online:
źródło
Książki na temat semantyki programowania dzieliłem na dwie klasy: te, które koncentrują się na modelowaniu pojęć języka programowania i te, które koncentrują się na podstawowych aspektach semantyki. Nie ma powodu, dla którego książka nie może robić obu tych rzeczy. Ale zazwyczaj jest tylko tyle rzeczy, które można umieścić w książce, a autorzy mają również własne predyspozycje do tego, co jest ważne.
Książka Winskela, o której już wspomniano, zawiera trochę obu aspektów. Jest to dobra książka dla początkujących. Równie dobrą, może nawet lepszą książką jest ta, którą zacząłem: Denotacyjny opis języków programowania Gordona . To była moja pierwsza książka na temat semantyki, którą przeczytałam wkrótce po ukończeniu pracy licencjackiej. Muszę powiedzieć, że dało mi to solidne podstawy w semantyce i nigdy nie musiałem się zastanawiać, jak semantyka denotacyjna różni się od semantyki operacyjnej czy semantyki aksomatycznej itp. Ta książka pozostanie moją ulubioną semantyką denotacyjną.
Inne książki, które koncentrują się na aspektach modelowania, a nie na aspektach podstawowych, są następujące:
Tennent's Semantyka języków programowania , która jest mniej więcej aktualną książką na temat semantyki imperatywnych języków programowania. Jest łatwy do odczytania. Jednak w późniejszych częściach książki wydaje się to abstrakcyjne i być może będziesz musiał się starać, aby zrozumieć, dlaczego rzeczy są robione w określony sposób.
Teorie języków programowania Reynoldsa . Każdy, kto specjalizuje się w semantyce, powinien zdecydowanie przeczytać tę książkę. W końcu jest to Reynolds. (David Schmidt zauważył kiedyś: „nawet jeśli Reynolds czyta ci poranną gazetę, chcesz słuchać uważnie, ponieważ możesz nauczyć się czegoś ważnego”!). Ma dobre omówienie zarówno aspektów modelowania, jak i aspektów fundamentalnych.
Najlepsze książki o fundamentalnych aspektach to Gunter (który uważam za podręcznik dla absolwentów) i Mitchell (który jest dobrym podręcznikiem na półce, ponieważ jest dość obszerny).
źródło
Bardzo podobało mi się czytanie Winskel, gdy brałem udział w kursie semantycznym. Nie wiem jednak, czy jest to datowane, ponieważ nie prowadzę badań w tej dziedzinie. Zaletą Winskel jest to, że można go przetłumaczyć na inne języki niż angielski.
Do dalszej lektury, bardziej na poziomie magisterskim, sugerowałbym książki Johna Mitchella Podstawy programowania języków i pojęcia w językach programowania . Jeśli czytasz tylko pierwsze rozdziały, myślę, że spełniają one również twoje wymagania dotyczące zwięzłości.
Nie znajdziesz darmowych wersji tych książek, więc jeśli masz ograniczony budżet, wybierz „moc” w odpowiedzi Radu.
źródło
Cóż, nie jestem ekspertem w tej dziedzinie, ale mogę udzielić kilku ogólnych rad.
Po pierwsze, są ludzie, którzy już przeczytali książkę i przedstawili recenzje na jej temat. Na przykład w książce Winskel The Formal Semantics of Programming Languages (patrz [1] i [2] ) znalazłem recenzje na Amazon.
Część jednej recenzji brzmi:
18/20 osób uważa tę recenzję za przydatną. Możesz poszukać Amazon (lub innych źródeł), aby zobaczyć więcej recenzji.
Po drugie, Amazon oferuje typy i języki programowania oraz podstawową teorię kategorii dla informatyków wraz z niniejszą książką. Na inny temat Dave Clarke oferuje te książki jako doskonałe na temat „Typów systemów i semantyki języka programowania”. Znowu nie jestem ekspertem, ale mogą ci się przydać.
źródło
Chciałbym dodać dwie książki nie znalezione w odpowiedziach udzielonych do tej pory:
Książka Stumpa jest zwięzła, ale bardzo klarowna.
źródło
Dla kompletnego początkującego studiującego semantykę operacyjną sugerowałbym programowanie języków i semantykę operacyjną autorstwa Maribela Fernándeza . Wszystko jest wyjaśnione w bardzo prosty i łatwy do zrozumienia sposób. http://www.springer.com/computer/swe/book/978-1-4471-6367-1
źródło