-
Data: 2014-01-15 14:01:40
Temat: Re: pryszcze...
Od: Adam Klobukowski <a...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Wednesday, 15 January 2014 10:03:05 UTC+1, Maciej Sobczak wrote:
> W dniu środa, 15 stycznia 2014 08:03:30 UTC+1 użytkownik Paweł Kierski napisał:
>
> > Statyczna kontrola typ�w daje du�e pole do popisu dla optymalizacji
> > przez kompilator. Vide - rozwijanie szablon�w w C++.
>
> Rozwijanie szablonów nie za bardzo ma związek z systemem typów. Raczej z brutalnym
inline'owaniem a to można robić również z typami dynamicznymi.
>
> Natomiast statyczny system typów jest użyteczny chociażby przez sam fakt, że można
z góry wygenerować odpowiednie instrukcje asemblera, które będą na pewno dobre do
wykonania jakiejść operacji. Np. dodawanie zmiennych, o których z góry wiadomo, że są
32-bitowymi liczbami całkowitymi, można zwykle zrobić jedną instrukcją zamiast
tysiącem instrukcji, które najpierw pracowicie sprawdzają, jakie typy mają te zmienne
i czy przypadkiem nie chodzi o sklejanie napisów.
>
> Na dalszym poziomie statyczny system typów można wykorzystać do *eliminacji*
operacji, nawet takich, które są wymagane przez język. Np. jeśli w danym języku jest
sprawdzanie zakresów przy indeksowaniu tablic, to statyczny system typów cząsem
pozwala kompilatorowi tego sprawdzenia nie robić. Podobnie z innymi sytuacjami
brzegowymi, jak dzielenie przez 0, itp.
Nowoczesne silniki JS działające w trybie JIT generują kod funkcji JS dla zadanych
typów wejściowych, i jeśli typ danych wejściowych sie zmienia, generują nową wersję
kodu. Czyli działa to trochę jak templatowanie kodu w C++ czy dżeneriksy w Javie.
Dodatkowo, kod ten specjalnie nie jest generowany od razu optymalnie - silnik
analizuje kolejne przebiegi wywołania funkcji i optymalizuje ją z czasem. Dzięki
temu, potencjalnie może wygenerować lepszy kod niż kompilator języka statycznego
który ma skończony czas na wygenerowanie kodu i nie jest w stanie poznać
harakterystyki jego użycia.
> Problem z językiem C polega na tym, że no niby ma statyczny system typów, ale tak
kiepski, że nie da się go na tym "dalszym poziomie" wykorzystać ani do optymalizacji
ani do wykrywania potencjalnych błędów.
C ma system typów skrojony do swoich zastosowań, a przypomnijmy - było to pisanie
jąder systemów operacyjnych. Dlatego typy w C są maksymalnie zbliżone do sprzętu.
Przez długi czas nie było wystarczająco dobrych języków/kompilatorów do pisania
innych programów, dlatego wykorzystywano do tego C. Dziś takie języki/kompilatory
istnieją i faktycznie C ogranicza się do pisania jąder i/lub bibliotek
niskopoziomowych.
> > Tak na marginesie - nie spodziewa�em si� n-tej dyskusji o wy�szo�ci
> > �wi�t Bo�ego Narodzenia nad �wi�tami Wielkiej Nocy.
>
> Dlaczego? Podobnie jak te swięta, tego typu dyskusje są zjawiskiem okresowym. :-D
Podsumowując: statyczne jak i dynamiczne systemy typów mają swoje zady i walety.
Porównywanie ich bez podawania konkretnych zastosowań nie ma sensu - inaczej będziesz
pisał pakiet biurowy, inaczej sterownik niskopoziomowy a jeszcze inaczej firmware
urządzenia.
AdamK
Następne wpisy z tego wątku
- 15.01.14 14:22 g...@g...com
- 15.01.14 14:49 Adam Klobukowski
- 15.01.14 15:09 Maciej Sobczak
- 15.01.14 15:17 Maciej Sobczak
- 15.01.14 16:24 A.L.
- 16.01.14 06:59 Adam Klobukowski
- 16.01.14 08:48 Andrzej Jarzabek
- 16.01.14 08:51 Andrzej Jarzabek
- 16.01.14 09:51 Maciej Sobczak
- 16.01.14 12:40 firr
- 17.01.14 01:24 A.L.
- 17.01.14 01:31 bartekltg
- 17.01.14 02:46 Stachu 'Dozzie' K.
- 17.01.14 03:00 bartekltg
- 17.01.14 03:09 Stachu 'Dozzie' K.
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2025-01-04 13. Raport Totaliztyczny: Powszechna Deklaracja Praw Człowieka Nie Chroni Przed Wyzyskiem Ani Przed Eksploatacją
- 2025-01-04 Zbieranie danych przez www
- 2025-01-04 reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- 2025-01-04 w Nowym Roku 2025r
- 2025-01-04 Warszawa => Specjalista ds. IT - II Linia Wsparcia <=
- 2025-01-04 Warszawa => Java Developer <=
- 2025-01-04 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-04 Warszawa => System Architect (Java background) <=
- 2025-01-04 Wrocław => Application Security Engineer <=
- 2025-01-04 Chrzanów => Specjalista ds. public relations <=
- 2025-01-04 Katowice => Key Account Manager (ERP) <=
- 2025-01-03 Problem z odczytem karty CF
- 2025-01-03 Jazda z Warszawy do Krakowa teslą
- 2025-01-03 Wrocław => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-01-03 Warszawa => International Freight Forwarder <=