Dlaczego jest tyle języków programowania?
A co skłania kogoś do stworzenia języków programowania, mimo że istnieją już inne języki?
Dlaczego jest tyle języków programowania?
A co skłania kogoś do stworzenia języków programowania, mimo że istnieją już inne języki?
Odpowiedzi:
Nowe języki programowania często uczą się na podstawie istniejących języków oraz dodają, usuwają i łączą funkcje w nowy sposób. Istnieje kilka różnych paradygmatów, takich jak obiektowe i funkcjonalne, a wiele współczesnych języków próbuje łączyć cechy obu z nich.
Pojawiają się także nowe problemy, które należy rozwiązać, np. Wzrost liczby procesorów wielordzeniowych. Najczęstszym rozwiązaniem tego są wątki, ale niektóre języki programowania próbują rozwiązać problem współbieżności w inny sposób, np. Model aktora. Zobacz Erlang - Oprogramowanie dla współczesnego świata
To jest cykl. Zaczynasz nowy język i możesz uciec od złej składni i złych wyborów ze strony swoich poprzedników. W wersji 1 język wygląda świetnie, ponieważ nie ma żadnego tego bagażu i wykonuje zadanie. Następnie, w nowszych wersjach, zaczynasz eksperymentować z funkcjami, które mogą nie działać lub wprowadzasz funkcje z innych, nowszych języków, które powodują, że twoja składnia jest trochę kludgey. I oto, po kilku kolejnych wersjach, zdajesz sobie sprawę, że twój język jest teraz tak skomplikowany, jak ten, który zastąpiłeś, z głupimi problemami ze składnią i starszym bagażem. I nagle zdajesz sobie sprawę, że jeśli stworzyłeś nowy język, możesz to wszystko naprawić ...
Z tego samego powodu istnieją młotki, śrubokręty, piły ręczne, piły taśmowe, młoty pneumatyczne, łom i wiele innych narzędzi: nie każdy język jest idealny do każdego zadania. Niektóre języki są ukierunkowane na określone dziedziny problemowe: R jest szczególnie dobry do analizy statystycznej, C jest szczególnie dobry do pisania jądra systemu operacyjnego, Haskell jest szczególnie dobry do obliczeń matematycznych lub finansowych, Erlang jest szczególnie dobry do równoczesnego programowania itp.
Również z tego samego powodu, dla którego koszule są w różnych kolorach: niektórzy ludzie lubią „styl” jednego języka nad drugim.
I oczywiście wielu programistów uważa, że fajnie jest wymyślić nowy język, aby zobaczyć, co się stanie, a może dlatego, że mają wiedzę na temat języków i chcą podrapać się lub wypróbować kilka pomysłów.
Ponieważ wszyscy są do dupy (tak czy inaczej).
W tej chwili stworzyliśmy około 5000 języków do opisania naturalnych problemów i żaden z nich nie jest dostępny do pisania programów (przykładem może być „angielski”).
Dopóki ktoś nie znajdzie sposobu na stworzenie języka programowania, który będzie w stanie wyrazić to, co możesz wyrazić w zdaniu w języku naturalnym, będzie się pojawiał.
Oczywiście ważną motywacją do stworzenia nowego języka jest osiągnięcie czegoś lepszego niż języki już istniejące. A ponieważ zawsze jest miejsce na ulepszenia, zawsze będą nowe języki.
Interesy handlowe to kolejny ważny powód. Uważam, że ważne jest na przykład, że Microsoft może zaoferować język dla każdej potrzeby, aby firmy i programiści preferowali swoje platformy.
Starszy kod. Jeśli zaczynasz nowy język, nie musisz słuchać / rozpatrywać wszystkich skarg podczas zmiany starego języka. Nawet jeśli wszyscy zgadzają się, że nowa implementacja jest lepsza, nie może złamać starego kodu. Istnieje wiele starych kodów.
ponieważ fajnie jest tworzyć nowe języki, nawet jeśli nie mają rzeczywistego zastosowania
Ezoteryczny język programowania (czasem skrócony do esolang) to język programowania zaprojektowany do testowania granic projektowania języka programowania komputerowego, jako dowód koncepcji lub żart.
Tworzenie języka programowania jest raczej zabawne. Jest blisko czystej twórczej pracy, ponieważ nie jesteś ograniczony poprzednimi wymaganiami. Wdrożenie nie jest już takie trudne, ponieważ zawsze możesz skompilować do C i skompilować kod C w celu zapewnienia odpowiedniej wydajności, jeśli piszesz kompilator.
Oczywiście, większość z nas ma mniej dobrych pomysłów, niż nam się wydaje, więc często rozczarowują lub nie są kochani przez nikogo innego niż oryginalny projektant.
Pomyśl o dowolnym znanym języku programowania. Możesz łatwo wymyślić kilka rzeczy, które ci się nie podobają, prawda? Prawdopodobnie masz pomysły, jak je naprawić. Z nieco większym rozmachem, zakładając, że wiesz dużo o budowaniu kompilatora (i wiele osób to robi), możesz zacząć projektować, a nawet wdrażać własne.
Szybka krótka odpowiedź
Reinventing The Wheel ... Jaki jest obecny trend ...
Nudna długa odpowiedź
Wiele osób zapomina, że „inny podobny nowy język dla starych programistów” to „zwykły nowy język dla nowych programistów”.
Co mam na myśli?
Cóż, dla „kilkuletnich” programistów Java lub C # mogą być dodatkowymi językami programowania dla istniejącego Cobola, (OO / Procedural) Basic, C / C ++, podczas gdy dla „nowych” programistów Java lub C # to nowe języki, podczas gdy Cobol, (OO / Procedural) Basic, C / C ++ nie istnieje dla nich, więc wynalezienie koła staje się powszechną rzeczą ...
A jeśli pojawi się nowy trend w technologii, ludzie mogą stworzyć nowy język programowania na podstawie tego trendu, taki jak ecmascript / javascript dla sieci i programowanie funkcjonalne ...
Twoje zdrowie.
nowe języki programowania są budowane z wielu różnych powodów, głównie dlatego, że istnieją nowe paradygmaty programowania lub z powodu postępu w sprzęcie ludzie tworzą nowy język, aby korzystać z nowych funkcji sprzętowych, takich jak wielozadaniowość itp.
w moim przypadku zwykle buduję małe kompilatory (z nowym językiem programowania), ze szczególnego powodu. jeśli zrobię dużo gier i uważam, że język programowania specjalnie zaprojektowany do tworzenia gier spowoduje mniejszy, szybszy kod i szybszy rozwój, to go zbuduję. a na końcu okazuje się, że można go również wykorzystać do innego programowania ogólnego przeznaczenia.
Myślę, że większość ludzi, którzy tworzą języki programowania, mają na myśli konkretny cel, są tacy, którzy tworzą je od początku dla celów ogólnych. ale większość nie.
Nawiasem mówiąc, myślę, że jest zbyt wiele języków programowania, ale zawsze pojawi się setka nowych. niektóre z zabawy, niektóre z niszowego celu, jako projekt szkolny lub z setek innych powodów. a wcześniej czy później nowy zyska popularność. To się nigdy nie skończy.
Z tego samego powodu jest tak wiele <wszystko> i ciągle tworzymy nowe <wszystko>
Na przykład istnieje kilkanaście platform PHP MVC, ale ludzie zawsze będą tworzyć nowe, aby zaspokoić określone potrzeby, aby uniknąć uzależnienia od innych zespołów lub po prostu spróbować stworzyć coś lepszego. To samo dotyczy w zasadzie każdego rodzaju narzędzia lub aplikacji.
To bardzo dobra rzecz, moim zdaniem dla wszystkich win-win.
Uniwersytety wnoszą wiele języków programowania, podobnie jak bardzo duże korporacje, takie jak Ericsson (Erlang = język Ericsson), Bell Labs (języki B i C), Google (język Go od kilku miesięcy wcześniej). Wiele z tych, które zostały napisane w ramach badań uniwersyteckich, nie jest często używanych. Jest jednak kilka istotnych wyjątków. Przypuszczam, że pisanie własnego języka / kompilatora jest dobrym tematem dla prac doktorskich osób studiujących teorię CS lub pokrewne dyscypliny. Uderza mnie, że Python jest jednym z pierwszych języków, który narodził się ze współpracy online różnych programistów wokół jednego pomysłu.
Jest kilka powodów, ponieważ większość uważa, że to, co istnieje, nie ułatwia rozwiązania niektórych problemów. Niektóre są po prostu dla zabawy lub dla celów akademickich.
Myślę, że istnieje solidny argument, że kwestia projektowania idealnego języka nie została jeszcze rozwiązana (i może nigdy nie będzie). Tak długo, jak ludzie będą mieli nowe pomysły na to, co byłoby doskonałym językiem, ludzie będą próbować. Niektóre z tych prób wytyczą nowe fajne miejsca, takie jak Erlang, a niektóre zaczną flopować, ale tak długo, jak nauczy się czegoś z flopa, również jest OK.
Jak wspomniano wcześniej, języki starają się kierować na określone zadania, a nowe języki mogą kierować na nowy obszar. Te języki mogą przyjmować funkcje z innych obecnie dostępnych języków.
Innym powodem nowych języków jest próba włączenia wielu różnych zadań i bycia językiem wyboru dla wielu różnych potrzeb. Niektóre z tych języków starają się obejmować wszystkie języki, których zawsze będziesz używać, bez względu na to, jakie masz potrzeby.
W mojej klasie języków programowania dowiedziałem się, że większość języków została wymyślona, aby podrapać się. Większość języków została wymyślona, aby móc lepiej wyrażać pewien zestaw algorytmów. Na przykład wymyślono języki funkcjonalne, aby zapewnić algorytmom rekurencyjnym znacznie bardziej wyrazistą przestrzeń.
Pytanie, dlaczego jest tak wiele języków, przypomina pytanie, dlaczego C ++ 0x? :)
Co więcej, im więcej znasz języków, tym bardziej możesz stać się wyrazisty - dotyczy to zarówno języków programowania, jak i języków naturalnych!