Uwaga: jest to głównie subiektywne i oparte na moich doświadczeniach i wrażeniach.
Języki wpisywane dynamicznie bardzo różnią się od języków pisanych statycznie. Różnice te prawdopodobnie stają się ważniejsze w ciężkim oprogramowaniu dla przedsiębiorstw niż w większości innych aplikacji.
Języki o typie statycznym mają zazwyczaj charakter nakazowy. Metoda pobiera tylko dane wejściowe dokładnie pasujące do jej podpisu. Poziomy dostępu są zwykle bardzo ważne, a interfejsy są zdefiniowane wyraźnie, z pełnymi, ale jednoznacznymi ograniczeniami w celu egzekwowania tych definicji.
Z drugiej strony dynamicznie pisane języki są bardzo pragmatyczne. Konwersje typów często zachodzą niejawnie, funkcje mogą nawet grać razem, jeśli podasz niewłaściwy typ danych wejściowych, o ile zachowuje się wystarczająco podobnie. W językach takich jak Python nawet poziomy dostępu będą oparte na umowach, a nie na ograniczeniach technicznych (tj. Tylko private
dlatego, że powiedziano ci, aby go nie używać i ma zabawną nazwę).
Wielu programistów preferuje języki dynamiczne, ponieważ (prawdopodobnie) umożliwiają szybkie prototypowanie. Kod często kończy się krócej (choćby z powodu braku deklaracji typu), a jeśli chcesz naruszyć odpowiedni protokół, ponieważ potrzebujesz szybkiego i brudnego rozwiązania lub chcesz coś przetestować, to łatwo możliwe.
Powodem, dla którego „przedsiębiorcze” firmy często preferują języki o typie statycznym, jest to, że są bardziej restrykcyjni i wyraźniej wyrażają te ograniczenia. Chociaż w praktyce idioci z kompilatorem mogą nawet złamać kod o typie statycznym, wiele problemów będzie znacznie bardziej widocznych znacznie wcześniej w procesie (tj. Przed uruchomieniem). Oznacza to, że nawet jeśli baza kodu jest duża, monolityczna i złożona, wiele błędów można łatwo wychwycić bez konieczności uruchamiania kodu lub wysyłania go do działu kontroli jakości.
Powodem, dla którego korzyści nie przeważają wady wielu programistów spoza tego środowiska, jest to, że są to błędy, które często można łatwo wykryć poprzez dokładną kontrolę kodu lub nawet próbę jego uruchomienia. Błędy te często stają się łatwe do uchwycenia i łatwe do naprawienia, szczególnie przy zastosowaniu metodologii opartej na testach. Ponadto, ponieważ wiele takich firm ma znacznie krótszy cykl wydawania, wydajność jest często ważniejsza niż sztywność, a sami programiści wykonują wiele (podstawowych) testów.
Innym powodem, dla którego korporacje korporacyjne nie używają języków dynamicznie typowanych, jest starszy kod. Choć głupoty mogą się nam wydawać, nerdowie, duże korporacje często trzymają się rozwiązań, które działają, nawet jeśli są już na wyczerpaniu. Właśnie dlatego tak wiele dużych firm wymusza przeglądarkę Internet Explorer 6 i tak wolno aktualizuje swoje systemy operacyjne. Z tego też powodu często piszą nowy kod w „starych” językach (np. Starożytne wersje Javy): o wiele łatwiej jest dodać kilka wierszy kodu do nieżywego oprogramowania, niż uzyskać zgodę na całkowite przepisanie nowego język.
tl; dr: języki statyczne bardziej przypominają biurokrację, więc bardziej podoba się im menedżerowie przedsiębiorczości.