Czy jakikolwiek język stał się bardzo popularny w innym celu niż zamierzony?

70

Weź ten scenariusz:

  • Programista tworzy język, aby rozwiązać jakiś problem.

  • Następnie uwalnia ten język, aby pomóc innym w rozwiązywaniu podobnych problemów.

  • Inny programista odkrywa, że ​​w rzeczywistości jest znacznie lepszy w przypadku różnych kategorii problemów.

  • Dzięki tej nowej aplikacji język staje się popularny przede wszystkim dla tej aplikacji.

Czy faktycznie występują jakieś przypadki?

Innymi słowy, czy zamierzony cel języka ma jakikolwiek wpływ na to, jak faktycznie jest używany, czy też staje się popularny? Czy to w ogóle ważne, żeby język miał reklamowany cel?

Jon Purdy
źródło
4
Twój przykład HTML naprawdę nie pasuje do tego, czego szukasz, czy dokumenty techniczne są tak różne od innych dokumentów? Podstawowym celem HTML jest nadal to samo, co w 1989 roku, aby zapewnić łatwy sposób wzajemnego odniesienia się między dokumentami. IMHO HTML jest dokładnym przeciwieństwem tego, czego tak naprawdę szukasz.
yannis
5
Biorąc pod uwagę długą listę odpowiedzi; może przeciwnie pytanie jest bardziej interesująca: co (popularne) język jest po prostu wykorzystane dla jego zamierzonego celu?
Jaap
@Yannis: Dobra uwaga. To nie jest najlepszy przykład, i tak naprawdę można się z nim kłócić. Edytowano, aby usunąć.
Jon Purdy
@Jaap: Myślałem tak samo!
leonbloy
2
Mogę się mylić, ale jestem pewien, że większość języków nie jest wykorzystywana zgodnie z zamierzeniami ich twórców. Myślę, że głównym powodem tego jest to, że osoby postronne nie wiedzą, do czego mają być używane, co pomaga im być bardziej otwartymi na temat potencjału języka.
Kenneth

Odpowiedzi:

118

Lisp . McCarthy pierwotnie określił Lisp w artykule, aby pokazać, że wystarczy kilka prostych notacji, aby zbudować kompletny język Turinga. Był zaskoczony, gdy odkrył, że Lisp można zaimplementować w kodzie maszynowym (Steve Russel zrobił pierwszą implementację interpretera Lisp). Lisp jest szeroko stosowany do programowania AI.

aufather
źródło
70
+1, Lisp nie miał być językiem programowania! Nie sądzę, żebyś mógł to zrobić.
Kilian Foth
7
OTOH, można argumentować, że LISP został zaprojektowany do użycia na granicy programowania i matematyki i tak jest.
MSalters
1
Wierzę, że McCarthy użył Lispa jako przykładu w swoich klasach i zamierzał napisać dla niego kompilator, ale pewnego dnia w klasie wspomniał, że ręczne kodowanie funkcji eval zaimplementuje interpreter, ale oczywiście „nikt nie chciałby tego zrobić”
Steven A. Lowe
Moi znajomi z Lispera mówią mi, że nie jest już tak często wykorzystywany w sztucznej inteligencji, ale wciąż ma zastosowanie wszędzie .
greyfade
111

Java była pierwotnie przeznaczona do programowania systemów wbudowanych. Z Wikipedii „Java została pierwotnie zaprojektowana dla telewizji interaktywnej” . Ale stał się bardzo popularny w programowaniu aplikacji i sieci.

aufather
źródło
4
Huh Nie mogę uwierzyć, że nie pomyślałem o tym. Prawdopodobnie jest to kanoniczny przykład ... chociaż to nie znaczy, że nie będę jeszcze zaskoczony.
Jon Purdy
Chociaż, czy kiedykolwiek Java została wydana do pracy osadzonej (przed osadzoną javą, która pojawiła się raczej po jej promocji w Internecie)?
Marcin
Kluczowym elementem projektu w Javie projektowej była możliwość uruchamiania niezaufanego kodu.
13
historia jest jeszcze gorsza: A) był przeznaczony dla systemów wbudowanych. B) ale nigdy nie widziałem światła, dopóki nie będzie mogło zostać osadzone na stronach internetowych. C) nie zyskał żadnego szacunku, dopóki nie został użyty w „przedsiębiorczych” aplikacjach internetowych i D) ostatecznie został osadzony w wielu systemach operacyjnych na telefony; ale nie jako kontroler sprzętowy, zamiast tego jest to platforma GUI.
Javier
Od ponad 10 lat istnieje projekt wprowadzenia go do dekoderów - sprawdź OCAP lub tru-2way
Bill K
32

Lua został zaprojektowany przede wszystkim jako język konfiguracji i ostatecznie znalazł niszę jako najpopularniejszy język skryptowy do gier (ponieważ jest mały, szybki, wydajny, przenośny, łatwo rozszerzalny i osadzony, z przyjazną składnią). Najpopularniejsza gra, w której można ją używać, World of Warcraft, nawet nie używa jej do konfiguracji, zamiast tego używa XML.

Błoto
źródło
... a teraz dzięki LuaJIT ma coraz większe zastosowanie w aplikacjach przetwarzających w czasie rzeczywistym
Javier
@lukas: „Niezupełnie” co ? Zauważ, że jego poprzednicy, SOL i DEL, nawet nie mieli kontroli, były to wyłącznie języki konfiguracji. Lua była rozszerzeniem tych języków konfiguracji o obsługę programowania.
Błoto
„Lua został zaprojektowany przede wszystkim jako język konfiguracji” Powiedziałbym, że jako język programowania.
Łukasz Madon
7
Być może powinienem był powiedzieć „zamierzony cel”, a nie „zaprojektowany przede wszystkim jako”. Przeznaczenia było użyć Lua gdzie Sol i DEL były używane. Były to języki konfiguracji, w których użytkownicy zaczęli żądać funkcji programowania. Lua została stworzona, aby zaspokoić tę potrzebę. Jak sami autorzy stwierdzili : „Szerokie zastosowanie Lua w grach było dla nas zaskoczeniem. Nie mieliśmy rozwoju gier jako celu dla Lua”. Właśnie tego dokładnie szukał OP, nie?
Błoto
32

Pierwotną intencją Larry'ego Walla dla Perla było stworzenie „ uniwersalnego języka skryptowego Unix, aby ułatwić przetwarzanie raportów ”, a strona podręcznika opisuje ten język jako:

Perl jest językiem interpretowanym zoptymalizowanym do skanowania dowolnych plików tekstowych, wydobywania informacji z tych plików tekstowych i drukowania raportów na podstawie tych informacji.

I oczywiście strona man mówi nam również, że Perl oznacza Practical Extraction and Report Language (rzeczywista nazwa to błędna pisownia oryginalnej nazwy Pearl , zmienionej, gdy Wall odkrył już istniejący język PEARL ).

Od tego czasu Perl przeszedł długą drogę, ponieważ jest to język, z którego bogowie stworzyli wszechświat .

wprowadź opis zdjęcia tutaj

Yannis Rizos
źródło
23
Należy to poprawić: Patologicznie eklektyczny list śmieci
Richard
3
Istnieje więcej niż jeden sposób na unbbrev! Bardzo Perly
Każdy akronim dla Perla jest tak naprawdę skrótem wstecznym.
CanSpice
1
@DarkTemplar Sposób, w jaki interpretuję to, że Perl wkradł się, jest prawie wszędzie. Od skromnych początków perl stał się bardzo popularnym językiem internetowym, niezwykle popularnym językiem skryptowym, dość popularnym językiem wielofunkcyjnym, jego składnia wyrażeń regularnych stała się czymś ostatecznym, dała początek innemu językowi (php) itp. Plus komiks odwołuje się również do seplenienia, które jest przyjętą odpowiedzią na pytanie, więc pomyślałem, że to zabawne (choć niedokładne) przedstawienie relacji między dwoma językami (jeden marzycielski, drugi rzeczywiście używany przez ludzi).
yannis
1
@DarkTemplar Yeap. Jest w pierwszej dziesiątce w indeksie TIOBE . Oczywiście nie powinieneś brać poważnie indeksu TIOBE, jest on dość względny i subiektywny. Ale wciąż dobry wskaźnik popularności języka.
yannis
28

Domyślam się, że JavaScript również pasuje do tego pytania, ponieważ nie sądzę, że Brendan Eich, jeszcze w czasach Netscape, kiedykolwiek wyobrażał sobie, że przyszłe wersje jego LiveScript będą używane do tworzenia dzisiejszych tak zwanych „aplikacji” internetowych.

JavaScript przeszedł z prostej weryfikacji formularzy i najazdów obrazów na potężne narzędzie, które może rywalizować z aplikacjami offline, zarówno pod względem funkcjonalności, jak i urody.

Niestety, myślę, że wielu nadal uważa to za zabawkę.

Andreas Grech
źródło
31
Interesujące jest to, że zmierza w kierunku bycia językiem asemblera w sieci. Innymi słowy, jakie inne języki są skompilowane i wykonane. Nie sądzę, by Brendan Eich tego oczekiwał .
3
mieć coś do dodania: to nie tylko język skryptowy po stronie klienta. Wiele projektów, takich jak node.js lub nosorożec, używa javascript jako języka po stronie serwera
gion_13
Ciekawe, ale czym jest „język skryptowy po stronie klienta” kontra „język po stronie serwera” .......?
Dark Templar
@DarkTemplar. Język skryptowy po stronie serwera jest uruchamiany na serwerze, a jego dane wyjściowe są wysyłane do przeglądarki. Język skryptowy po stronie klienta jest przesyłany do przeglądarki w niezmienionej postaci i tam uruchamiany. (Oczywiście, jeśli chcesz, można użyć języka po stronie serwera, aby wyświetlić język po stronie klienta.) Jedynym językiem, który działa w większości przeglądarek, jest javascript.
TRiG
19

Erlang. Został wynaleziony dawno temu w laboratoriach Ericsson w celu opracowania aplikacji telefonicznych, prawdopodobnie do ich linii urządzeń przełączających i dostępowych. Teraz przekształcił się w obiecujący, dynamiczny język ogólnego przeznaczenia z interesującą koncepcją współbieżności.

Byłoby interesujące, gdyby w przyszłości pojawiło się więcej języków ze świata telekomunikacyjnego przekraczających swoje linie do świata IT i stamtąd ewoluowało, zwłaszcza języki pierwotnie zaprojektowane do modelowania i weryfikacji protokołów.

UUlum
źródło
I czy nie była to jedna z inspiracji dla node.js?
dodgy_coder
Nie sądzę, że to się kwalifikuje. Powodem, dla którego Erlang został wymyślony do telefonii, jest to, że potrzebowali ogólnego dynamicznego języka współbieżności. Nadal tak jest.
Alan Baljeu
15

Pascal. Stworzony, aby uczyć programowania.

Nerevar
źródło
3
Hej, to wiele wyjaśnia…
wkurzamy
2
@poke: Z przekleństwem , wiem.
Nerevar
Hehe, widzę co tam zrobiłeś.
Trufa
Hej, czy ktoś może wyjaśnić tę odpowiedź? Lol. Jestem nowicjuszem!
Dark Templar
14

PHP pierwotnie oznaczało Osobistą stronę główną , ale dziś jest także używana w kilku nieco większych aplikacjach internetowych.

Jaap
źródło
18
oczywiście największy użytkownik PHP, Facebook, wciąż jest pod wieloma względami na rynku osobistych stron domowych.
Jaap
3
„PHP / FI został stworzony przez Rasmus Lerdorf w 1995 roku, początkowo jako prosty zestaw skryptów Perla do śledzenia dostępu do jego CV online”. To długa droga, kochanie.
nickf
Podczas gdy PHP jest nadal bardzo językiem internetowym, przeszedł nieco odwrócenie ról: PHP miało być osadzone jako małe fragmenty wewnątrz HTML, podczas gdy wiele projektów generuje teraz ciągi HTML w PHP. Nadal jednak potrzebują <?phpznacznika na początku pliku!
Warbo,
14

Jestem pewien, że VBScript nie był przeznaczony do pisania złośliwego oprogramowania, mimo że jest to niezwykle powszechne użycie.

użytkownik16764
źródło
1
To trochę trudne, nie sądzisz. Java i C mają uczciwy udział w złośliwym oprogramowaniu.
Jeremy
@JChild: Minęło kilka lat od twojego komentarza. Jednak nawet wtedy obrona VB była bardzo dziwna.
Mag
@Magus To nawet nie VB. To jest VBScript. Wiesz, pliki z rozszerzeniami .vbs. Te, które automatycznie zakładasz, są wirusami, gdy je widzisz.
user16764
13

Początkowo zaprojektowany jako metoda na uczynienie kodu bardziej ogólnym, okazało się, że Programowanie Meta Programowanie w C ++ zostało zakończone i do dziś jest używany do znacznej poprawy języka C ++ poprzez biblioteki takie jak boost.

Jason McCarrell
źródło
8
... i doprowadzić programistów C ++ do łez przy zbyt długim czasie kompilacji ;-)
quant_dev
8
i przerażające komunikaty o błędach.
DeadMG
11

BASIC to kolejna znana sprawa. To nazwisko ( początkujących All-purpose Symbolic Instruction Code) wskazuje na jego pochodzenie jako języka uczniów, ale to uprawiane trochę od.

MSalters
źródło
24
heh - Microsoft zastąpił słowo „początkujący” „biznesem” i wciągnął miliony
Steven A. Lowe
11

VHDL i Verilog (alias VerilogHDL) pierwotnie miały na celu opisanie układów i komponentów cyfrowych. Zostały one wykorzystane jako forma dokumentacji i do symulacji zachowania komponentów. Później Synopsys i inni opracowali technologię, która mogłaby przetłumaczyć (podzbiór) tych opisów na sieciowe listy bramek, które z kolei można wykorzystać do produkcji prawdziwego sprzętu.

VHDL i Verilog są nazywane językami opisu sprzętu (HDL) ze względów historycznych. Obecnie są one używane jako języki projektowania sprzętu (ten sam akronim).

Philippe
źródło
Ładny, oparty na modelu rozwój
Jaap
@ Mark Tak, VHDL jest bardzo szybkim układem scalonym, językiem opisu sprzętu. Verilog to zupełnie inny język. Verilog jest czasem nazywany również Verilog HDL. en.wikipedia.org/wiki/Verilog
Philippe
2
QHDL jest bardzo podobny do VHDL i służy do opisu obwodów komputerów kwantowych. Nie wyobrażam sobie, żeby język odszedł tak daleko od swoich początków.
Mark Booth
@ Mark Wow, to interesujące „QHDL”! Google pokazuje dużo hałasu. Czy masz referencje?
Philippe
1
Dowiedziałem się o tym podczas doskonałej sesji „Quantum Computing for Programmers” Paula Blacksa na konferencji ACCU 2011. Jego slajdy są na stronie accu.org/content/conf2011/…
Mark Booth
10

ML zaczynał jako język do rozwijania i pisania skryptów twierdzenia. Był to „język meta” przysłowiowego twierdzenia.

Ryan Culpepper
źródło
W porządku. Warto zauważyć, że powodem, dla którego jest to poprawna odpowiedź, jest to, że jej podstawową aplikacją są teraz kompilatory i inne takie narzędzia językowe (przynajmniej o ile mi wiadomo).
Jon Purdy
6
+1, ale powiedzenie, że ML stał się „bardzo popularny”, jest trochę
trudne
Być może, ale oprócz dzisiejszych bezpośrednich użytkowników, wpłynęło to na prawie każdy pisany po nim język maszynowy.
Ryan Culpepper
7

C
Pierwotnie został pierwotnie opracowany do użytku z systemem operacyjnym Unix. Ale Język stał się tak popularny, że nawet Dennis Ritchie był zaskoczony.
W swojej słynnej książce The C language language . Ritchie twierdzi, że „rozprzestrzenił się daleko poza swoje początki jako język systemu operacyjnego UNIX”. i jak był zaskoczony, gdy stał się popularnym językiem tworzenia aplikacji.

Strażnik
źródło
11
Cóż, pierwotnie został zaprojektowany do tworzenia systemów i aplikacji niskiego poziomu w sposób wieloplatformowy. Mimo swojej popularności pozostaje zgodny z pierwotnymi celami, więc nie pasuje.
Jon Purdy
3
@Jon Cóż, to trochę pasuje, ponieważ przerosło swój cel, stając się najłatwiejszym sposobem na zastrzelenie się w stopę.
yannis
1
@Yannis: Haha, prawda. Ale pytam o języki, których główny cel całkowicie się zmienił, a nie o te, które po prostu urosły, by objąć więcej celów.
Jon Purdy
Dodałbym, że C stał się popularny jako jeden z głównych języków konkursów zaciemnionego kodu.
Peter G.
Czy nie został zaprojektowany do implementacji systemu operacyjnego?
Nikko
3

C ++ został pierwotnie zaprojektowany jako „C z klasami”, aby ułatwić programowanie obiektowe w C ++.

Szablony zostały następnie dostarczone w późniejszej wersji, aby umożliwić implementację silnie typowanych klas kontenerów. Dopiero później zauważono, że te szablony faktycznie stanowią kompletny język programowania Turinga.

W rezultacie wiele aplikacji używa teraz C ++ nie jako obiektowego języka programowania, ale raczej jako języka programowania opartego na algorytmach, który w dużym stopniu opiera się na polimorfizmie w czasie kompilacji i metaprogramowaniu.

Konrad Rudolph
źródło
7
Ale C ++ jest przeznaczony do ogólnego zastosowania i jest używany jako język ogólnego przeznaczenia.
BenjaminB
@ Ubiquité Nie sądzę, że C ++ naprawdę został zaprojektowany jako język ogólnego przeznaczenia. Albo raczej, został zaprojektowany do wykorzystania dla różnych celów (ale w szczególności programowania systemów). Ale to było nie przeznaczone do pracy z wielu paradygmatów .
Konrad Rudolph
W rzeczywistości charakter paradygmatu jest nierozerwalnie związany z jego konstrukcją, po prostu przez przykręcenie elementów OO do C, przy jednoczesnym zachowaniu możliwości korzystania z jego bardziej proceduralnych cech w stosownych przypadkach.
Jon Purdy
@Jon OK, przyznaję się do tego. Jednak ogólne programowanie i metaprogramowanie szablonów nie były wśród tych funkcji. A obecnie C ++ jest jednym z jedynych (i zapewne głównym) języka obsługującego te funkcje.
Konrad Rudolph
Bardzo prawdziwe. Cholera, wsparcie dla programowania generycznego i constto dwa najważniejsze powody, używam C ++.
Jon Purdy
2

ADA - pierwotnie zaprojektowany na podstawie umowy DoD dla awioniki. Mimo że jest nadal używana w tej aplikacji, jest również popularna na przykład dla oprogramowania pośredniego dla biznesu w czasie rzeczywistym.

vartec
źródło
5
Został zbudowany jako język ogólnego przeznaczenia. DoD chciał, aby język nadawał się do wszystkiego, aby zmniejszyć ilość używanego języka.
BenjaminB
To dość zabawne. Ada była językiem stworzonym specjalnie w celu zmniejszenia liczby różnych języków. Według tego wskaźnika („zaprojektowany w jednym celu, używany w innym”) Ada powinna zostać wybrana na szczyt listy za pomocą Lisp, innego języka antyjęzykowego.
Jared Updike,
2

„czy zamierzony cel języka ma jakikolwiek wpływ na to, w jaki sposób jest używany, czy też staje się popularny?”

Nie sądzę, by zamierzony cel języka miał duży wpływ na jego faktyczne użycie i popularność: Istnieje kilka wspaniałych języków, które od samego początku były projektowane jako innowacyjne, elastyczne i wszechstronne, ale nigdy nie stały się tak powszechnie używane lub popularne, z wyjątkiem bardzo wyspecjalizowane rynki pionowe - na przykład Eiffel. OTOH, Basic, Pascal, C itp. Itp. Dominowały w krajobrazie przez lata, chociaż zostały pierwotnie zaprojektowane do ograniczonych, konkretnych celów.

IMO Uwagi dotyczące marketingu / finansów i wsparcia zawsze odgrywały ważną rolę w rozpowszechnianiu i rozszerzaniu niektórych języków. Na przykład: Borland wymyśla TurboPascal i pakiety, sprzedaje i obsługuje go. MS wymyśla C # i pakiety, sprzedaje i obsługuje go. W rezultacie języki te stały się popularne, pojawił się przemysł narzędziowy firm trzecich i coraz więcej programistów i przedsiębiorstw wskakuje na modę.

Ale w ciągu ostatnich kilku lat języki i narzędzia OpenSource zmieniają dynamikę, a języki stają się teraz bardziej popularne w oparciu o „zasługi” niż marketing - na przykład Ruby, Python i Perl. Nie dzieje się tak jednak z powodu „intencji” wynalazców, a tego, że język ma wbudowany potencjał rozszerzenia i celowego użycia.

Mikey
źródło
2

Nie sądzę, aby istniał popularny język, który nie został zmieniony w stosunku do pierwotnej intencji. Nawet C napisano pierwotnie jako przenośny system operacyjny (unix).

Jakakolwiek próba napisania prawdziwie ogólnego języka programowania bez określonego celu prawdopodobnie zakończy się niepowodzeniem z powodu braku powściągliwości i skupienia.

Bill K.
źródło
PostScript - jest wszechobecny (w prawie każdym komputerze i drukarce), ale służy tylko do drukowania grafiki. Chociaż można argumentować, że został zmieniony w przypadku użycia w plikach pdf.
13ren
1

Słyszałem, że Ruby został zaprojektowany jako język do pisania wierszy, okazało się, że można w nim pisać także piękny kod!

Będę z tobą szczery. Chcę, żebyś płakał. Płakać. Słodko skomleć. Ta książka jest przejmującym przewodnikiem po Ruby. Oznacza to, że kod jest tak piękny, że płyną łzy. To oznacza dzielne opowieści i ponure prawdy, które budzą cię następnego ranka w objęciach tej książki.

Tinco
źródło
2
Brzmi interesująco. Jakieś źródło?
Anto
Link Ruby prowadzi do książki, która została napisana, aby uczyć Ruby w artystyczny sposób. Moja odpowiedź to żart odnoszący się do tej książki, która twierdzi, że pisanie Ruby przypomina poezję. W rzeczywistości można powiedzieć, że Ruby został zaprojektowany jako język programowania ogólnego przeznaczenia, ale zainspirował (niektórych) ludzi do postrzegania kodu Ruby jako poezji.
Tinco