Nauka języka programowania specjalnie zaprojektowanego dla tej firmy [zamknięte]

10

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?

Josip Ivic
źródło
6
Wiele „nowych” języków, które mamy na wolności, może korzystać z bibliotek zaprojektowanych dla „starszych” języków: np .: C ++ może używać bibliotek C, Scala Kotlin i inni mogą korzystać z dowolnej biblioteki uruchomionej na JVM, maszynopis może używać bibliotek JS. Posiadanie nowego języka nie oznacza utraty wsparcia lib ...
Timothy Truckle
3
Dlaczego miałbyś zbudować dragstera do wyścigów drag, a raczej zrobić z zapasowym samochodem?
candied_orange
3
Albo naprawdę, sprawdź przyczyny i racjonalność tworzenia dowolnego języka programowania. Niektórzy uważają, że nie jesteś prawdziwym informatykiem, dopóki nie stworzysz własnego języka. Jest to podobne do tego, że nie jesteś prawdziwym inżynierem chemikiem, dopóki nie stworzysz prochu strzelniczego (i nie wysadzisz niewielkiej części domu).
candied_orange
4
Erlang również urodził się w ten sposób: jeśli się nie mylę, początkowo został opracowany w firmie Ericsson do użytku wewnętrznego.
Giorgio
3
Język specjalnie zaprojektowany dla firmy jest głupi, z drugiej strony, język specjalnie zaprojektowany dla problematycznej dziedziny, w której firma się znajduje, może czasami być całkiem użyteczny. Wiesz, że masz to drugie, a nie pierwsze, kiedy konstrukcja i architektura języka są ograniczone do tego, co znacznie ułatwia rozwiązywanie / wyrażanie domeny problemowej, czasami kosztem przydatności w programowaniu ogólnego zastosowania.
Lie Ryan,

Odpowiedzi:

25

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 .

Euforyk
źródło
10
Świetna odpowiedź i chociaż JavaScript ma swoje problemy, nie sądzę, aby sprawiedliwie było umieszczać go w tym samym zdaniu co PHP. To tak, jakby powiedzieć: „Musimy wykopać Billa i Teda z naszej okolicy, to przestępcy!” Ale Bill (JavaScript) to jaywalker, a Ted (PHP) to seryjny zabójca.
TheCatWhisperer
12
@TheCatWhisperer Nie zgadzam się. JavaScript jest tak samo zły, a nawet gorszy niż PHP. Ponieważ MUSISZ używać (lub przenosić na) JavaScript, podczas gdy PHP można bezpiecznie zignorować.
Euforii
2
to jest najbardziej poprawny punkt.
TheCatWhisperer
1
@Euphoric Poczekajmy na WASM , może wtedy scena się zmieni ...
Kroltan
@Kroltan +1 dla WASM!
CraigR8806
15

Czy to nie jest o wiele prostsze, gdy chodzi o przepływ z czymkolwiek innym niż rozwijanie własnego języka?

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.

Blrfl
źródło
-1

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.

użytkownik271591
źródło
7
Najwyraźniej nigdy nie widziałeś Kotlina. Lub JavaScript lub C #, jeśli o to chodzi. Fog Creek Software przez lata używało własnego języka programowania o nazwie Wasabi (opartego na VB) (choć trzeba przyznać, że dług techniczny w końcu ich dopadł ). Są więc na pewno przypadki, w których to działa.
Robert Harvey
1
O ile pamiętam, język C # narodził się po tym, jak Microsoft próbował utworzyć niezgodną implementację Java, został pozwany przez firmę Sun i stracony. cnet.com/news/sun-microsoft-settle-java-suit Ponieważ nie mogli już nazywać się Javą, opracowali własny język, który początkowo był bardzo podobny do Javy.
Giorgio
1
„Ten nowy język prawdopodobnie cały czas się psuje” - jeśli Twój projekt języka pozwala uniknąć całej klasy błędów aplikacji, może to być akceptowalny kompromis
Eric
16
Słyszałeś kiedyś o C? Podobno został opracowany wewnętrznie tylko dla jednego systemu operacyjnego na jednym komputerze. Dlaczego K&R nie wykorzystał po prostu czegoś, co udowodniono, co zostało użyte do pisania systemów operacyjnych, takich jak PL / 1, BCPL lub Algol 68?
idrougge