system typów to zbiór reguł, które przypisują właściwość o nazwie typ do różnych konstrukcji - takich jak zmienne, wyrażenia, funkcje lub moduły - z których składa się program komputerowy.
Ostatnio miałem problem z czytelnością mojego kodu. Miałem funkcję, która wykonała operację i zwróciła ciąg reprezentujący identyfikator tej operacji do przyszłego odwołania (trochę jak OpenFile w Windows zwracający uchwyt). Użytkownik użyje tego identyfikatora później, aby rozpocząć operację i monitorować jej zakończenie. Identyfikator musiał być ciągiem losowym ze względu na obawy …
Czy istnieją badania dotyczące skuteczności języków statystycznych i dynamicznych? W szczególności: Pomiary wydajności programisty Wskaźnik defektów Uwzględnia także skutki zastosowania testu jednostkowego. Widziałem wiele dyskusji na temat zalet każdej ze stron, ale zastanawiam się, czy ktoś to zrobił.
Zdaję sobie sprawę, że niektóre rzeczy są łatwiejsze / trudniejsze w jednym języku niż w drugim, ale interesują mnie tylko funkcje związane z typem, które są możliwe w jednym, a niemożliwe / nieistotne w drugim. Mówiąc dokładniej, zignorujmy rozszerzenia typu Haskell, ponieważ jest ich tak wiele, że robią różne szalone …
Rozważ to pytanie „akademickie”. Zastanawiałem się od czasu do czasu, aby uniknąć NULL-ów i jest to przykład, w którym nie mogę znaleźć zadowalającego rozwiązania. Załóżmy, że przechowuję pomiary tam, gdzie czasami wiadomo, że pomiar jest niemożliwy (lub jego brak). Chciałbym przechowywać tę „pustą” wartość w zmiennej, unikając NULL. Innym razem …
Dlaczego jest to w porządku i najczęściej oczekiwane: abstract type Shape { abstract number Area(); } concrete type Triangle : Shape { concrete number Area() { //... } } ... podczas gdy to nie jest OK i nikt nie narzeka: concrete type Name : string { } concrete type Index …
Zakładając język z pewnym nieodłącznym rodzajem bezpieczeństwa (np. Nie JavaScript): Biorąc pod uwagę metodę, która akceptuje a SuperType, wiemy, że w większości przypadków, w których możemy ulec pokusie przeprowadzenia testów typu w celu wybrania akcji: public void DoSomethingTo(SuperType o) { if (o isa SubTypeA) { o.doSomethingA() } else { o.doSomethingB(); …
Eric Lippert podkreślił bardzo interesujący punkt w swojej dyskusji na temat tego, dlaczego C # używa nullraczej niż Maybe<T>typu : Ważna jest spójność systemu typów; czy zawsze możemy wiedzieć, że odwołanie, które nie ma wartości zerowej, nigdy nie jest w żadnym wypadku uważane za nieprawidłowe? A co z konstruktorem obiektu …
tło Projektuję język jako projekt poboczny. Mam do tego działający asembler, analizator statyczny i maszynę wirtualną. Ponieważ mogę już skompilować i uruchomić nietrywialne programy z wykorzystaniem infrastruktury, którą zbudowałem, pomyślałem o wygłoszeniu prezentacji na moim uniwersytecie. Podczas mojej rozmowy wspomniałem, że maszyna wirtualna zapewnia system typów, zapytano: „Do czego służy …
Typ dolny to konstrukcja występująca głównie w matematycznej teorii typów. Jest również nazywany pustym typem. Jest to typ, który nie ma wartości, ale jest podtypem wszystkich typów. Jeśli typ zwracany przez funkcję jest typem dolnym, oznacza to, że nie zwraca. Kropka. Może zapętla się na zawsze, a może rzuca wyjątek. …
W JavaScript: Dobre części Douglasa Crockforda wspomina w swoim rozdziale dotyczącym dziedziczenia: Inną zaletą klasycznego dziedziczenia jest to, że obejmuje specyfikację systemu typów. To głównie uwalnia programistę od konieczności pisania jawnych operacji rzutowania, co jest bardzo dobrą rzeczą, ponieważ podczas rzutowania tracone są zalety bezpieczeństwa systemu typów. Przede wszystkim, czym …
PHP, jak większość z nas wie, ma słabe pisanie . Dla tych, którzy tego nie robią, PHP.net mówi: PHP nie wymaga (ani nie obsługuje) jawnej definicji typu w deklaracji zmiennej; typ zmiennej jest określony przez kontekst, w którym zmienna jest używana. Uwielbiam to lub nienawidzę, PHP ponownie rzuca zmienne w …
Zawsze zastanawiałem się, dlaczego Java nie korzysta z wnioskowania o typie, biorąc pod uwagę, że język jest tym, czym jest, a jego maszyna wirtualna jest bardzo dojrzała. Google's Go jest przykładem języka z doskonałym wnioskowaniem na temat tekstu i ogranicza liczbę operacji pisania. Czy jest jakiś szczególny powód, dla którego …
Jakich technik mogę użyć, aby konsekwentnie refaktoryzować kod, usuwając zależność od typów egzystencjalnych? Zazwyczaj są one używane do dyskwalifikacji niepożądanych konstrukcji twojego typu, a także do umożliwienia konsumpcji przy minimalnej wiedzy na temat danego typu (przynajmniej tak rozumiem). Czy ktoś wymyślił prosty, spójny sposób na usunięcie polegania na nich w …
Czytam kod znacznie częściej niż piszę kod i zakładam, że większość programistów pracujących nad oprogramowaniem przemysłowym to robi. Zakładam, że zaletą wnioskowania typu jest mniejsza szczegółowość i mniej napisany kod. Ale z drugiej strony, jeśli czytasz kod częściej, prawdopodobnie będziesz chciał kodu czytelnego. Kompilator określa typ; istnieją na to stare …
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.