Nauczyłem się kilku fragmentów teorii kategorii. Z pewnością jest to inny sposób patrzenia na rzeczy. (Bardzo ogólne podsumowanie dla tych, którzy go nie widzieli: teoria kategorii daje sposoby wyrażania wszelkiego rodzaju zachowań matematycznych wyłącznie w kategoriach funkcjonalnych związków między obiektami. Na przykład rzeczy takie jak iloczyn kartezjański dwóch zbiorów są …
Matematycy czasem martwią się o aksjomat wyboru (AC) i aksjomat determinacji (AD). Aksjomat wyboru : Biorąc pod uwagę dowolny zbiór z niepustych zestawach jest funkcja , które, biorąc pod uwagę zestaw w , zwraca element z .CC{\cal C}fffSSSCC{\cal C}SSS Aksjomat Determinacji : Niech będzie zbiorem nieskończenie długich ciągów bitów. Alice …
Programowanie funkcjonalne ma teoretyczne podstawy w rachunku lambda i logice kombinatorycznej . Jako osoba zajmująca się obliczeniami statystycznymi uważam te koncepcje za bardzo przydatne do modelowania. Czy istnieje równoważna matematyczna podstawa programowania imperatywnego , czy może po prostu wyrosła z praktycznej aplikacji sprzętowej w języku maszynowym i późniejszego rozwoju FORTRAN …
W innym wątku Andrej Bauer zdefiniował semantykę denotacyjną jako: znaczenie programu jest funkcją znaczeń jego części. Niepokoi mnie to, że ta definicja nie wyróżnia tego, co powszechnie uważa się za semantykę denotacyjną, z tego, co jest powszechnie uważane za semantykę niedenotacyjną, a mianowicie strukturalną semantykę operacyjną . Mówiąc dokładniej, kluczowym …
Czy są jakieś korzyści z obliczania złożoności czasowej algorytmu za pomocą rachunku lambda? Czy istnieje inny system zaprojektowany do tego celu? Wszelkie referencje będą mile widziane.
Coraz większa złożoność programów komputerowych i coraz ważniejsza pozycja komputerów w naszym społeczeństwie sprawia, że zastanawiam się, dlaczego nadal nie używamy zbiorowo języków programowania, w których musisz formalnie udowodnić, że kod działa poprawnie. Uważam, że termin ten jest „kompilatorem certyfikującym” (znalazłem go tutaj ): kompilatorem kompilującym język programowania, w którym …
Zapytaj nawet kogoś, kto ma doświadczenie w informatyce, co to jest wyrażenie regularne, a odpowiedź prawdopodobnie wykroczy poza ograniczenie bycia w zasięgu automatu skończonego. Na przykład „wyrażenie regularne” /^1?$|^(11+?)\1+$/ stworzona przez znaną osobowość Perla Abigail (i część zestawu testów Perla od 2002 r.) opisuje maszynę, która akceptuje tylko złożone liczby …
Większość dobrze znanych algorytmów jest pierwszego rzędu, w tym sensie, że ich dane wejściowe i wyjściowe są danymi „prostymi”. Niektóre są drugiego rzędu w trywialny sposób, na przykład sortowanie, tablice skrótów lub funkcje mapowania i składania: są one parametryzowane przez funkcję, ale tak naprawdę nie robią z nią nic ciekawego …
Nie sądzę, że rozumiem klasy typów. Czytałem gdzieś, że myślenie o klasach typów jako „interfejsach” (od OO), które implementuje typ, jest błędne i wprowadza w błąd. Problem polega na tym, że mam problem z postrzeganiem ich jako czegoś innego i jak to jest złe. Na przykład, jeśli mam klasę typu …
W duchu takich ogólnych dyskusji, jak ta , otwieram ten wątek z zamiarem zebrania opinii na temat otwartych wyzwań i gorących tematów w badaniach nad językami programowania . Mam nadzieję, że dyskusja może nawet ujawnić opinie na temat przyszłości badań w językach programowania. Wierzę, że ten rodzaj dyskusji pomoże nowym …
Niemożliwe jest napisanie języka programowania, który zezwala wszystkim maszynom, które zatrzymują się na wszystkich wejściach i żadnych innych. Wydaje się jednak, że łatwo jest zdefiniować taki język programowania dla dowolnej standardowej klasy złożoności. W szczególności możemy zdefiniować język, w którym możemy wyrazić wszystkie wydajne obliczenia i tylko wydajne obliczenia. Na …
Czytałem kilka artykułów na temat typów zależnych i umów programowych. Z większości tego, co przeczytałem, wydaje się, że kontrakty są sprawdzane dynamicznie, a typy zależne sprawdzane statycznie. Było kilka dokumentów, które skłoniły mnie do myślenia, że możliwe są kontrakty częściowo sprawdzane statycznie: Hybrid Type Checking (C. Flanagan - 2006) Unifying …
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 …
Czy są jakieś (funkcjonalne?) Języki programowania, w których wszystkie funkcje mają formę kanoniczną? Oznacza to, że dowolne dwie funkcje, które zwracają te same wartości dla całego zestawu danych wejściowych, są reprezentowane w ten sam sposób, np. Jeśli f (x) zwrócił x + 1, a g (x) zwrócił x + 2, …
Jestem początkującym pracującym nad metodami potwierdzającymi równoważność programu. Przeczytałem kilka artykułów na temat definiowania relacji logicznych lub symulacji, aby udowodnić, że dwa programy są równoważne. Ale jestem dość zdezorientowany co do tych dwóch technik. Wiem tylko, że relacje logiczne są definiowane indukcyjnie, podczas gdy symulacje oparte są na koindukcji. Dlaczego …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.