Dlaczego ktoś miałby rozwijać własny język, aby używać go tylko w tej firmie, skoro masz XY inne języki, które mogą ci pomóc w ich bibliotekach, logice itp.? Czy to nie jest o wiele prostsze, gdy chodzi o przepływ z czymkolwiek innym niż rozwijanie własnego języka?
programming-languages
Josip Ivic
źródło
źródło
Odpowiedzi:
O wiele łatwiej jest zrozumieć, gdy zdajesz sobie sprawę, że często jest to efekt długiego procesu, a nie ktoś, kto mówi „chcemy stworzyć nowy język”.
Zwykle zaczyna się od pomysłu, że jakiś problem można rozwiązać za pomocą prostego języka specyficznego dla domeny. Często intencją jest, aby nie-eksperci używali tego języka, więc jest on prosty i często brakuje mu takich funkcji, jak mocne pisanie i moduły.
Na razie w porządku. Ale potem ludzie zaczynają uderzać w problemy, których język nie może rozwiązać. Powoli dodaje się nowe „funkcje” w celu rozwiązania tych problemów. Ponieważ proces jest powolny, a funkcje są rzadkie, nie ma motywacji do prawidłowego zaprojektowania tych nowych funkcji, dopóki problemy zostaną rozwiązane.
Z czasem nowy język zyskuje funkcje, które zmieniają go z prostego języka specyficznego dla domeny w złożony język „ogólnego” celu, często ze sprzecznymi, mylącymi semantykami i trudnymi do przestrzegania regułami składni.
A zanim ludzie zdadzą sobie sprawę, że stworzyli tak ogromną bestię, jest już za późno, aby ją zabić i zastąpić ją odpowiednio zaprojektowanym językiem.
Istnieje kilka języków, które wyewoluowały tak, że nie są zobowiązane do konkretnych firm kaszel JavaScript kaszel PHP kaszlu .
źródło
Jasne, ale aby osiągnąć absurdalny koniec, wszyscy pisalibyśmy wszystko w asemblerze, gdyby nikt nie opracował nowych języków.
Czasami nie ma przepływu. Pojawiają się nowe języki, ponieważ ktoś ma problem z drapaniem, niezależnie od tego, czy jest to hobbysta języka, który chce po prostu wymyślić coś nowego, czy firma, której potrzeby nie są zaspokojone przez to, co już istnieje.
Dokładnie tak się stało, kiedy John Backus zaproponował IBM Mathematical Formula Translating System w 1953 roku. Chciał, aby użytkownicy naukowi mogli łatwiej określić formuły matematyczne niż pisać je w asemblerze. Ten zastrzeżony produkt stał się pierwszym językiem programowania, który nie był asemblerem, i znasz go jako Fortran.
Tam, gdzie Fortran jako pierwszy wybrał tę drogę, Erlang jest w zasadzie jej potomkiem. Ericsson chciał ulepszyć sposób opracowywania oprogramowania do przełączników telefonicznych i wymyślił język do prototypowania z funkcjami specyficznymi dla potrzeb. Kiedy po raz pierwszy go odkryłem, moją na wynos było to, że został opracowany przez ludzi z prawdziwym problemem do rozwiązania, który nie byłby dobrze obsługiwany przez żaden inny język dostępny w 1986 roku. Erlang pozostał zastrzeżonym, wewnętrznym produktem, takim jak twój kolega spotkał się, aż ponad dziesięć lat później został otwarty, a teraz jest to język głównego nurtu.
Zarówno Go, jak i Scala są stosunkowo młodymi językami w wielkim schemacie rzeczy i jest całkiem możliwe, że język używany w firmie twojego kolegi był wcześniejszy niż oba. Musi zapytać o jego historię, dlaczego powstała i dlaczego nadal jest używana.
Dekadę spędziłem w latach 2003–2013, pracując dla firmy, która szeroko korzystała ze specyficznego dla branży środowiska, które obejmowało własny język, którego korzenie sięgają pod koniec lat siedemdziesiątych. Podczas gdy niektóre nowsze języki mogły być bardziej odpowiednimi zamiennikami (i haki do nich zostały z czasem zaszczepione), przemysł ten zainwestował w niego wystarczająco dużo i ogromną ilość sprawdzonego kodu, że po prostu nie było dobrego uzasadnienia biznesowego za przejście na coś innego.
źródło
Widziałem to już wcześniej. To nigdy nie działa dobrze. Niektórzy ludzie mają kompleks „nie wymyślony tutaj”. Zwykle powoduje to, że firma biegnie na nowo wymyślając koło.
Pomyśl o tym. Ten nowy język prawdopodobnie cały czas się psuje. Pomiędzy parserem, kompilatorem, maszyną wirtualną, konsolidatorem, czymkolwiek ... Istnieją teraz tysiące błędów, z którymi ludzie będą marnować godziny na debugowanie przypadkowych problemów. Wszystko za to, czego według nich potrzebują, czego nie mają inne języki.
C / C ++ służy do pisania systemów operacyjnych takich jak, no wiesz, wszystkie z nich. A jednak ktoś pomyślał, że potrzebuje czegoś innego.
źródło