Jedną rzeczą, która przyszła mi do głowy pewnego dnia, są wciąż potrzebne konkretne typy lub dziedzictwo, które nas powstrzymuje. Chodzi mi o to: czy naprawdę potrzebujemy krótkiej, int, długiej, bigint itp.
Rozumiem rozumowanie, zmienne / obiekty są przechowywane w pamięci, pamięć musi zostać przydzielona i dlatego musimy wiedzieć, jak duża może być zmienna. Ale tak naprawdę, czy współczesny język programowania nie powinien być w stanie poradzić sobie z „typami adaptacyjnymi”, tzn. Jeśli coś jest kiedykolwiek przydzielane tylko w krótkim zakresie, wykorzystuje mniej bajtów, a jeśli coś jest nagle przydzielane, bardzo duża liczba, pamięć jest przydzielana odpowiednio dla tego konkretnego przypadku.
Float, real i double są nieco trudniejsze, ponieważ typ zależy od wymaganej precyzji. Ciągi powinny jednak być w stanie zajmować mniej pamięci w wielu przypadkach (w .Net), w których używa się głównie ascii, ale ciągih zawsze zajmują podwójną pamięć z powodu kodowania Unicode.
Jednym z argumentów za konkretnymi typami może być to, że jest to część specyfikacji, tj. Na przykład zmienna nie powinna być większa niż pewna wartość, więc ustawiliśmy ją na skrót. Ale dlaczego nie zamiast tego mieć ograniczenia typu? Byłoby znacznie bardziej elastyczne i wydajne, aby móc ustawić dopuszczalne zakresy i wartości zmiennych (i właściwości).
Zdaję sobie sprawę z ogromnego problemu związanego z przebudową architektury typu, ponieważ jest ona tak ściśle zintegrowana z podstawowym sprzętem, a sprawy takie jak serializacja mogą stać się naprawdę trudne. Ale z punktu widzenia programowania powinno być świetnie, nie?
type hour is range 0 .. 23;