-
Data: 2013-02-08 18:52:25
Temat: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Feb 8, 4:05 am, "M.M." <m...@g...com> wrote:
> W dniu czwartek, 7 lutego 2013 23:51:34 UTC+1 użytkownik Andrzej Jarzabek napisał:
>
> > Podobno Ada jest takim językiem.
>
> Kiedyś tak o Perlu słyszałem. Czasami nie wiem czego słuchać :)
Jeśli ktoś ci mówił o Perlu, że jest "ekstremalnie elegancki i
jednocześnie wydajny", to raczej nie powinieneś słuchać tej osoby w
żadnej kwestii.
> > Poza tym "język wydajny" to poewne nieporozumienie - z cech języka mogą
> > wynikać pewne narzuty ograniczające czy zwiększające wydajność, ale
> > rzeczywista praktyczna wydajność zależy od optymalizacji kompilatora, a
> > te z kolei są mocno skorelowane z popularnością.
>
> Chodziło właśnie o te ograniczenia, a właściwie to nie tylko o nie.
> Do niektórych języków napisanie dobrego kompilatora jest możliwe i język
> tego nie ogranicza w żaden sposób, ale zadanie może być znacznie trudniejsze i
> to pod względem implementacyjnym jak i pod względem algorytmicznym, kompilacja
> mogłaby trwać za długo.
W praktyce te teoretyczne kwestie nie mają aż takiego znaczenia. Bez
problemu da się wymyśleć język, który ma wszystkie zalety C++, ale
łatwiej się do niego pisze kompilator czy może się szybcie kompilować.
Co z tego, skoro w momencie wymyślenia nikt tego języka nie używa,
więc zainteresowanie rozwijaniem kompilatora jest znikome. W pięciu i
tak nie napiszecie kompilatora, który optymalizuje lepiej niż gcc czy
icc.
> Ciekawe zagadnienie, ja zawsze myślałem że to właśnie do takiego języka
> jak C++ trudniej napisać dobry kompilator.
Może i trudniej, ale dzięki popularności ludzie robią to i tak - bo
jest powód, bo komuś opłaca się pakować w to dużą kasę.
> > Np. że możesz napisać jeden kod, który obsłuży obydwa przypadki.
>
> Chyba nie zrozumiem tego, w C też pisze się uniwersalne procedury i
> obsługuje wiele przypadków.
Możesz mieć i cały swój program w jednej funkcji i w niej obsługiwać
wszystkie przypadki, nadal każdy przypadek obsługuje inny kawałek
kodu.
Chodzi o to, żeby mieć _jeden kawałek kodu_, który bierze obiekt x i
pobiera jego właściwość o nazwie y, który obsługuje przypadek kiedt x
jest strukturą a y polem struktury i przypadek, kiedy x jest hashmapą
a y kluczem w hashmapie.
> > Nie mam pojęcia do czego ci te Varianty, rozmawialiśmy o tym, że w
> > językach dynamicznych możesz mieć zmienne przyjmujące wartości dowolnego
> > typu lub funkcje zwracające wartości dowolnego typu. Pisałeś, że w C++
> > masz to samo dzięki typowi Variant. No więc nie masz.
>
> Liczymy tak:
> suma od 1 do N ( p_i * (c_i - a_i) )
> N - ilość cech języka
> p_i - prawdopodobieństwo użyca
> c_i - korzyści jakie niesie wybrany język w cesze i
> a_i - korzyści jakie niesie najlepszy niewybrany język w cesze i.
>
> Jeśli do warianta nie mogę wrzucić czegoś, co przydaje się bardzo rzadko,
> to mówię że mogę wrzucić tam wszytko ( p_i jest bliskie zera i nie
> zmienia wartości powyższego wzoru ).
OK, więc jeśli używasz np. jakiejś biblioteki, to twierdzisz, że jest
bezużyteczna, bo ty jej nie używasz i w związku z tym nie potrafisz
sobie wyobrazić, po co by miała być komukolwiek potrzebna?
> > A w językach z dynamicznym systemem typów nie trzeba. I na tym polega
> > różnica - w C++ tego po prostu nie zrobisz i tyle, żaden QVariant czy
> > hashmap ci nie pomoże.
>
> No tak, ale ten fakt musi się jeszcze jakoś przekładać na praktyczne
> korzyści, w przeciwnym razie rozmawiamy o czymś niepotrzebnym.
No to się przekłada, tylko że może dla ludzi, którzy używają innych
rzeczy, niż ty. Zauważ, że jeśli ktoś programuje komputer przez
dziurkowanie kart perforowanych, to mu nawet mnemoniki assemblerowe
niepotrzebne.
> > O makrach i szablonach w C++ można wiele powiedzieć, ale na pewno nie
> > to, że są wygodne i proste w użyciu.
>
> Też nie przepadam, zwłaszcza za makrami. Ale jak w php świeżo dodane
> pola otaczam dolarami i klamrami to też mi się robi niedobrze.
Nie znam PHP, ale oczywistym rozwiązaniem jest nie używanie PHP.
Przecież to, co piszesz to (chyba?) jakas kwestia składniowa, bez
związku z dynamicznym systemem typów. W każdym razie istnieje wiele
języków dynamicznie typowanych, w których nie otacza się żadnych pól
nawiasami i klamrami, a też działają.
> > Wprowadzasz duplikację.
>
> Jaką duplikację?
Napisałeś tę samą funkcję dwa razy - raz dla structa, drugi raz dla
hashmapy.
> > No i pojawiają się dalsze problemy, co na przykład, jeśli chcesz
> > skopiować structa i owej kopii dołożyć kilka nowych pól?
> > Piszesz konwersję kopiującą wszystkie składowe do hashmapy?
>
> Dlaczego tak jest źle?
> new_hashmap = old_hasmap;
> new_hashmap['nowe_pole1'] = wartość1;
> new_hashmap['nowe_pole2'] = wartość2;
Chcesz skopiować _structa_.
Czyli:
Hashmap convert_from(some_struct s)
{
Hashmap result;
hashmap["width"]=s.width;
hashmap["height"]=s.height
[...]
return hashmap;
}
> > I tak dla każdego typu? I nie widzisz w tym nic niewygodnego?
>
> No właśnie nie widzę.
Popatrz na przykład powyżej i powiedz, co się dzieje, jak się zmienia
definicja some_struct.
Następne wpisy z tego wątku
- 08.02.13 19:18 Andrzej Jarzabek
- 08.02.13 21:56 darekm
- 08.02.13 22:11 darekm
- 09.02.13 14:22 Andrzej Jarzabek
- 09.02.13 15:12 M.M.
- 09.02.13 16:29 AK
- 09.02.13 16:31 AK
- 09.02.13 16:35 AK
- 09.02.13 16:37 AK
- 09.02.13 17:01 M.M.
- 09.02.13 18:45 Andrzej Jarzabek
- 09.02.13 19:53 M.M.
- 09.02.13 23:21 Andrzej Jarzabek
- 10.02.13 08:20 firr kenobi
- 10.02.13 11:09 Roman W
Najnowsze wątki z tej grupy
- 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
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-24 Aby WKOOOORWIĆ ekofaszystów ;-)
- 2024-11-22 OC - podwyżka
- 2024-11-22 wyszedł z domu bez buta
- 2024-11-22 Bieda hud.
- 2024-11-24 DS1813-10 się psuje
- 2024-11-23 Białystok => Inżynier bezpieczeństwa aplikacji <=
- 2024-11-23 Szczecin => QA Engineer <=
- 2024-11-23 Warszawa => SEO Specialist (15-20h tygodniowo) <=
- 2024-11-22 Warszawa => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-22 Warszawa => Senior Account Manager <=
- 2024-11-22 Warszawa => Key Account Manager <=
- 2024-11-22 Warszawa => DevOps Specialist <=
- 2024-11-22 Kraków => IT Expert (Network Systems area) <=
- 2024-11-22 Warszawa => Infrastructure Automation Engineer <=
- 2024-11-22 Warszawa => Presales / Inżynier Wsparcia Technicznego IT <=