Wpis z mikrobloga

@pyroxar: Jedyne, co przychodzi mi do głowy, to fakt że niektóre dynamiczne typowane języki mają słaby support dla multithreadingu. Ale to wynika wprost z ich designu, nie faktu że są dynamiczne typowane. Python miał swojego GILa, JS (a więc pewnie i TS) jest z definicji single threaded.

Tylko to jest takie mieszanie dwóch różnych faktów, niekoniecznie z sensem.
  • Odpowiedz
@pyroxar: w niektórych językach system system typów jest wystarczająco silny aby statycznie udowodnić obecność/brak wyścigów danych. To przekłada się na możliwość znacznie bardziej agresywnej optymalizacji kodu np braku konieczności defensywnego stosowania blokad czy defensywnego kopiowania danych. Zwłaszcza w połączeniu z czymś takim jak async/await to potrafi być niesamowicie potężne rozwiązanie.

Przykładowo u nas w firmie mamy proxy sieciowe które obsługuje setki tysięcy połączeń a nie ma absolutnie żadnej synchronizacji na
  • Odpowiedz
@pyroxar: to nie ma nic do rzeczy. Ale faktycznie tak jest, że języki statycznie typowane są najczęściej wielowątkowe a dynamiczne jednowątkowe. Wynika to trochę z tradycji a trochę z ukierunkowania technologicznego.

Jeśli chodzi o tradycję to statyczne języki były pierwsze, to w tych językach pisało się szybki soft i te języki potrzebowały wsparcia dla wielowątkowości. Języki dynamiczne były często językami zabawkami lub ograniczonymi językami skryptowymi (patrz JS), które urosły gigantycznie.
  • Odpowiedz