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.
Przeczytałem kilka artykułów w Internecie na temat wyboru języka programowania w przedsiębiorstwie. Ostatnio popularne jest wiele dynamicznych języków pisanych, tj. Ruby, Python, PHP i Erlang. Ale wiele przedsiębiorstw nadal korzysta z języków o typie statycznym, takich jak C, C ++, C # i Java. I tak, jedną z zalet statycznych …
Mam te dwa małe programy: do #include <stdio.h> int main() { if (5) { printf("true\n"); } else { printf("false\n"); } return 0; } Jawa class type_system { public static void main(String args[]) { if (5) { System.out.println("true"); } else { System.out.println("false"); } } } który zgłasza komunikat o błędzie: type_system.java:4: …
Studiuję Haskell w celu zrozumienia programowania funkcjonalnego, oczekując, że zastosuję wgląd w innych językach (głównie Groovy, Python, JavaScript). Wybrałem Haskell, ponieważ miałem wrażenie, że jest on bardzo czysto funkcjonalny i nie pozwala na poleganie na stanie. Nie zdecydowałem się uczyć Haskell, ponieważ byłem zainteresowany nawigacją po wyjątkowo sztywnym systemie typów. …
Czytałem powiązane pytanie Czy istnieją jakieś wzorce projektowe, które są niepotrzebne w dynamicznych językach, takich jak Python? i pamiętam ten cytat na Wikiquote.org Wspaniałą rzeczą w dynamicznym pisaniu jest to, że pozwala wyrazić wszystko, co jest obliczalne. A systemy typu nie-systemy są zazwyczaj rozstrzygalne i ograniczają cię do podzbioru. Ludzie, …
Czy wprowadzenie nowej notacji lambda (patrz np. Ten artykuł ) w Javie 8 będzie wymagało pewnego rodzaju wnioskowania typu? Jeśli tak, to w jaki sposób nowy system typów wpłynie na język Java jako całość?
Wiem, że jest to bardzo szerokie, dwuznaczne i być może filozoficzne pytanie. Do tego stopnia, że najważniejsze słowo kluczowe w pytaniu - „silny” typ systemu - samo w sobie jest źle zdefiniowane . Pozwól mi więc wyjaśnić, co mam na myśli. Ogólny kontekst pytania W Ruby on Rails budowaliśmy bardzo …
Wygląda na to, że wszystkie nowe języki programowania lub przynajmniej te, które stały się popularne, korzystają z wnioskowania o typach. Nawet Javascript dostał typy i wnioskowanie o typach przez różne implementacje (Acscript, maszynopis itp.). Wygląda mi to świetnie, ale zastanawiam się, czy są jakieś kompromisy lub dlaczego powiedzmy, że Java …
Powszechnie przyjmuje się, że niektóre rodzaje Java zawiodły w ważnych sprawach. Połączenie symboli wieloznacznych i granic spowodowało powstanie poważnie nieczytelnego kodu. Jednak gdy patrzę na inne języki, naprawdę nie mogę znaleźć ogólnego systemu typów, z którego programiści są zadowoleni. Jeśli weźmiemy pod uwagę następujące cele projektowania takiego systemu typów: Zawsze …
W artykule Erica Lipperta Co słychać w notacji węgierskiej? , twierdzi, że celem notacji węgierskiej (dobrego rodzaju) jest: rozwinąć pojęcie „typu”, tak aby obejmowało informacje semantyczne oprócz informacji o reprezentacji pamięci. Prostym przykładem może być przedrostek zmiennej reprezentującej współrzędną X z „x” i zmiennej reprezentującej współrzędną Y z „y”, niezależnie …
Przy projektowaniu i wykonawczym języka programowania obiektowego, w jakimś jednym punkcie musi dokonać wyboru o realizacji podstawowych typów (jak int, float, doublelub odpowiedników) jako klasy lub czegoś innego. Wyraźnie, języków z rodziny C mają tendencję nie je zdefiniować jako klasy (Java ma specjalnych typów prymitywnych, C # wdraża je jako …
Jestem trochę zdezorientowany różnicą między systemami typu nominalnego i strukturalnego. Czy ktoś może wyjaśnić, czym się różnią? Z tego co rozumiem: Nominalna: Kompatybilność typów zależy od nazwy typu. Strukturalny: Kompatybilność typów oparta jest na strukturze typów, np. W C, jeśli 2 zmienne są typami struktur o różnych nazwach, ale o …
Uwaga: Kiedy użyłem „złożonego” w tytule, mam na myśli, że wyrażenie ma wiele operatorów i operandów. Nie to, że samo wyrażenie jest złożone. Niedawno pracowałem nad prostym kompilatorem do zestawu x86-64. Skończyłem główny front kompilatora - leksykon i parser - i jestem teraz w stanie wygenerować abstrakcyjne drzewo syntaktyczne mojego …
Czytałem, że Hindley-Milner nie działa z systemami typów, które mają podklasy, i istnieją inne funkcje systemu typów, które również nie działają z nim dobrze. Go ma obecnie bardzo ograniczone wnioskowanie o typach u :=operatora. Ale Go nie ma podklas w tradycyjnym sensie, tylko interfejsy, które wyglądają bardzo podobnie do klas …
Czy istnieją jakieś teoretyczne powody (na przykład, że sprawdzanie typu lub wnioskowanie o typach stałyby się nierozstrzygalne), lub praktyczne (zbyt trudne do prawidłowego wdrożenia)? Obecnie możemy owijać w coś newtypepodobnego newtype Pair a = Pair (a, a) a następnie mieć Pair :: * -> * ale nie możemy zrobić czegoś …
Wyjaśniając kombinator Y w kontekście Haskell, zwykle zauważa się, że prosta implementacja nie będzie sprawdzać typu w Haskell ze względu na jego typ rekurencyjny. Na przykład z Rosettacode : The obvious definition of the Y combinator in Haskell canot be used because it contains an infinite recursive type (a = …
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.