Przeczytałem kilka artykułów w Internecie na temat wyboru języka programowania w przedsiębiorstwie. Ostatnio popularne jest wiele dynamicznych języków pisanych, tj. Ruby, Python, PHP i Erlang. Ale wiele przedsiębiorstw nadal korzysta z języków o typie statycznym, takich jak C, C ++, C # i Java.
I tak, jedną z zalet statycznych języków typowych jest to, że błędy programistyczne są wykrywane wcześniej, w czasie kompilacji, a nie w czasie wykonywania. Ale są także zalety dynamicznych języków maszynowych. ( więcej na Wikipedii )
Głównym powodem, dla którego przedsiębiorstwa nie zaczynają używać języków takich jak Erlang, Ruby i Python, wydaje się być fakt, że są one pisane dynamicznie. To także wydaje się być głównym powodem, dla którego ludzie na StackOverflow decydują się na Erlanga. Zobacz, dlaczego zdecydowałeś się „przeciw” Erlangowi .
Wydaje się jednak, że istnieje silna krytyka przeciwko dynamicznemu pisaniu w przedsiębiorstwach, ale tak naprawdę nie rozumiem, dlaczego jest tak silny.
Naprawdę, dlaczego jest tak wiele krytyki przeciwko dynamicznemu pisaniu w przedsiębiorstwach? Czy tak naprawdę wpływa to tak bardzo na koszty projektów, czy co? Ale może się mylę.
dynamic
i zaczniesz go używać. Nie jest to bardziej szczegółowe niż zwykłe wywołania metod lub przeciążenia operatora.Odpowiedzi:
Tak, wierzę, że tak.
Przy wyborze języka dla nowego projektu należy wziąć pod uwagę kilka powodów:
while(1)
....Jeśli możesz założyć, że organizacja, z którą współpracujesz, ma zasadę „iść naprzód” (jest to termin księgowy) i nie po prostu losowo zdecyduje się nie pracować na oprogramowaniu, masz o wiele lepsze argumenty za za pomocą oprogramowania. Ponieważ nie ma sprzedaży dużych firm (pociągającej za sobą przejęcie odpowiedzialności za utrzymanie) Python / Perl / $ język_ dynamiczny, znacznie zmniejsza to ryzyko.
Z mojego doświadczenia wynika, że opiekunowie oprogramowania typu open source często mają problem z pełną odpowiedzialnością za poprawki błędów i publikowaniem aktualizacji. „To nic nie kosztuje, TY nad tym pracujesz!” to nie jest odpowiedź, że jest do zaakceptowania dla większości firm (nie ich podstawowych compentencies, między innymi).
Oczywiście nie mówię o świecie aplikacji internetowych / startupów, który zwykle gra według zasad wysokiego ryzyka / wysokich nagród i jest bardzo otwarty na pozostawanie na krawędzi spienionej technologii.
źródło
Dajesz zdecydowanie zbyt dużo kredytu technicznego decydentom Enterprise. Jest takie stare powiedzenie: „Nikt nie został zwolniony za kupowanie IBM”. Jeśli pójdziesz inną drogą i wszystko się ułoży (zawsze tak jest), nikt nie chce ryzykować obwinienia. Trzymaj się standardów i obwiniaj kogoś innego.
Istnieje wiele młodszych firm, które ostatecznie staną się przedsiębiorstwami jutra i będą używać tych języków.
I nie zapominajmy o błędnych liniach kodu napisanych w VBA!
źródło
Powodem, dla którego przedsiębiorstwa używają C, C ++, C # i Java, nie jest to, że są one wpisywane statycznie (przynajmniej nie bezpośrednio). Zapewniam, że decydenci w przedsiębiorstwach nie dokonują tego rodzaju wyborów na podstawie obiektywnego porównania systemów typów.
Przedsiębiorstwa zrobić dbałość o:
Osobiście uważam, że jeśli chcesz używać dynamicznych języków w Enterprise, to twoja najlepsza szansa to zdecydowanie skorzystanie z czegoś, co łączy się z istniejącym ekosystemem przedsiębiorstwa. Najbardziej godne uwagi są nowe dynamiczne języki JVM: np. JRuby, Groovy, Clojure. Jeśli chodzi o zarządzanie IT, są to „bezpieczne” dynamiczne wybory językowe, ponieważ działają one wewnątrz i ładnie współpracują z resztą ekosystemu Java firmy.
źródło
Myślę, że to tylko ich podstawowa wymówka. Prawdziwy powód jest taki, że firmy tak naprawdę nie traktują ich tak poważnie i uważają, że są może zbyt amatorskie. Java i .NET to „wielkie firmy”, mają dobry marketing komercyjny, obsługę klienta komercyjnego i dlatego są bardzo poważnie traktowane bardzo poważnie.
Szkoda, że praktycznie nie ma języka o typie statycznym, który byłby tak popularny jak nazwy dużych firm. Dlaczego środowiska programistyczne typu open source / wolne oprogramowanie prawie zawsze są dynamicznie pisane? Może to wskazywać, że statycznie pisany język nie jest tak łatwy do zrobienia, a dynamiczne pisanie jest „hackem leniwego mężczyzny”. W takim przypadku firmy, które decydują się na języki dynamicznie pisane, mogą mieć rację.
źródło
EDYCJA: Powinienem wspomnieć, że moim głównym językiem programowania jest obecnie Python, który jest dynamicznie pisany. Osobiście kocham wolność, która nie pochodzi z konieczności wstępnie deklarować zmienne, ale czasami, że byłoby miło, aby określić (na przykład), jakie parametry funkcją trwa do błędów dotyczących połowów wcześnie niż późno.
źródło
Języki o typie dynamicznym są postrzegane (przez niektórych programistów / szefów) do tworzenia kodu, który również nie działa. Fakt, że program z dynamicznym typowaniem kompiluje, niewiele mówi o jego poprawności. Fakt, że kompilowany język o typie statycznym mówi ci wiele więcej. (Z drugiej strony, między kompilacjami jest jeszcze długa droga i robi to, co należy, więc może to być mniej znaczące, niż się wydaje)
Języki o typie dynamicznym są postrzegane jako języki skryptowe. Nigdy nie napisałeś aplikacji w bash ani pliku wsadowym. Wszystkie języki dynamicznie typowane są zapętlone do tej kategorii (niesprawiedliwie).
Języki pisane dynamicznie są wolniejsze niż języki pisane statycznie. (Zobaczymy jednak, jak dobra praca nad JIT to zmienia)
źródło
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.
źródło
+
biorą liczby i dodają je, jeśli chcesz konkatenacji, musisz użyć.
; w JS obie operacje współużytkują tego samego operatora - jeśli nie wiesz, jak zachowają się twoje wartości, możesz je jawnie przekonwertować. Oczywiście ma to również związek z pisaniem swobodnym a pisaniem ścisłym (Python jest jeszcze bardziej rygorystyczny), ale w zasadzie musisz albo upewnić się, że wartości mają odpowiedni typ, albo wymusić, aby operacje wymuszały oczekiwane typy.Nie, nie sądzę, aby dynamicznie pisane języki zasługiwały na całą krytykę. (Lub, jeśli wolisz, zasługują na tyle samo krytyki, co języki pisane statycznie).
Z mojego doświadczenia (i nie próbuję uogólniać tego stwierdzenia), programiści, którzy krytykują dynamiczne języki, nie używali ich. Rozmowa zwykle przebiega „ale przy statycznym pisaniu kompilator wyłapuje tyle błędów!” i mówię „cóż, z mojego doświadczenia to nie jest problem”. (Zwykle inny programista wywodzi się z języka Java, Delphi lub podobnego; nie znam żadnego programisty Haskell lub ML).
Jedyną rzeczą, która naprawdę mnie narzekanie jest, gdy ktoś twierdzi, że technika Foo nie mogą ewentualnie być wykonane (lub może być bardzo trudne do zrobienia) w dynamicznie wpisywanych języka ... kiedy to technika została wymyślona w, przez i dla dynamicznie wpisane język. IDE? Pogawędka. Automatyczne refaktoryzacja? Pogawędka. Dzwoniący / realizatorzy? Pogawędka.
źródło
Przedsiębiorstwa po prostu nie dostosowują nowych języków i narzędzi wystarczająco szybko i istnieją ku temu dobre powody. Ale gdy jedno z głównych narzędzi, takich jak C #, wdroży niektóre z tych funkcji, dostaną się do głównych firm ...
źródło