Języki niekompletne Turinga oferują dużą przewagę nad językami kompletnymi bez Turinga, ponieważ są one znacznie bardziej analizowalne, a tym samym oferują znacznie szersze możliwości optymalizacji. Jednak są one rzadko używane, a kompletność Turinga jest sprzedawana jako dobra cecha.
Czy są dostępne obecnie główne języki niekompletne, które są przeznaczone do programowania ogólnego?
programming-languages
turing-completeness
MaiaVictor
źródło
źródło
Odpowiedzi:
Obecnie nie ma uniwersalnych, uniwersalnych, niekompletnych języków Turinga. Istnieje jednak kilka kompletnych języków specyficznych dla domeny. ANSI SQL, wyrażenia regularne, języki danych (HTML, CSS, JSON itp.) Oraz wyrażenia s to niektóre godne uwagi przykłady.
Tak naprawdę nie ma korzyści dla wielofunkcyjnych pełnych języków Turinga. Stosuje się aspekt „znacznie bardziej analizowalny”, który, jak zakładam, stanowi ukłon w stronę twierdzenia Rice'a, ale nie ma większego sensu w przypadku języków, które są ukierunkowane na kilka różnych domen aplikacji, inne wymagania mają pierwszeństwo. Elastyczność kompletności Turinga jest o wiele ważniejsza niż jej złożoność. Języki programowania, jak każde inne oprogramowanie, dotyczą kompromisów.
Z drugiej strony w przypadku języków specyficznych dla domeny może być odwrotnie. Jeśli nie budujesz „jednego języka, aby rządzić nimi wszystkimi”, możesz zaimplementować tylko te funkcje, które mają sens dla bardzo konkretnego celu twojego języka. I najczęściej kompletność Turinga nie jest jedną z nich.
źródło
Powodem, dla którego niekompletne języki Turinga nie są głównym nurtem, jest to, że łatwo jest zaimplementować własny, kiedy tylko jest to potrzebne i jakkolwiek jest to potrzebne. Ciekawym przykładem jest skrypt bitcoin: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp
źródło