Jak JavaScript stał się popularny?

27

W starożytnej historii Brendan Eich miał projekt języka, a we współczesnym świecie JavaScript jest popularnym językiem implementowanym i używanym w wielu różnych miejscach.

Co spowodowało, że język stał się popularny? Czy składnia podobna do C była znana wcześniejszym programistom? Czy Netscape miał wystarczającą kontrolę nad rynkiem, aby zmusić go do użycia? Czy jest jakiś głębszy powód, dla którego JavaScript jest popularny, a inne języki nie?

W szczególności, jeśli musiałbyś stworzyć język tak popularny jak JavaScript, jakie warunki początkowe byłyby potrzebne, aby odtworzyć jego wzrost popularności?

Mathnerd314
źródło
2
JavaScript był prawie martwy (+ - 2005), dopóki Google nie wskrzesił go za pomocą map Google.
Todd Moses
1
@ToddMoses Kłóciłem się, ale niektóre badania wykazały, że masz rację: AJAX ponownie włącza JavaScript do głównego nurtu, zainspirowany Gmailem (2004) i Google Maps (2005). Jednak (i ​​odnosi się to również do powyższego pytania) javascript nigdy tak naprawdę nie zniknął: ActionScript (używany we Flashu) pojawił się od około 2000 roku i jest w zasadzie tym samym językiem. Podczas wojennych lat przeglądarki Flash / Actionscript był używany do tych samych rzeczy, do których Javascript / AJAX jest na razie technologią. W 2000 roku przeniosłem moje umiejętności Javascript do ActionScript i wróciłem do Javascript w 2008 roku :-)
Darren Cook
2
Ajax jest ważny, ale jest zawyżony, IMO. Powszechna niepełna zgodność przeglądarki z API DOM i CSS2 sprawiła, że ​​JS stało się potężnym narzędziem po stronie klienta. Zaczęło się to mniej więcej około 2002 roku IIRC. Gdy mieliśmy już odpowiednie narzędzia do zrzucania kodu HTML, szybka implementacja złożonych funkcji interfejsu użytkownika była zupełnie nową grą. Jednak może dopiero w 2005 roku wszyscy zaczęli naprawdę zwracać na to uwagę. Powiedziałbym również, że dopiero około roku 2005, kiedy masa krytyczna zaczęła rozumieć, że JS jest właściwie dość kiepskim językiem.
Erik Reppen,

Odpowiedzi:

31

Komentowałem wcześniejszą odpowiedź , ale stawała się coraz większa, więc pomyślałem, że to rozwinę.

Każdy nowy język może odnieść sukces tylko wtedy, gdy będzie wykorzystywał wschodzącą granicę w informatyce.

Poprzednie przykłady:

  • C dla Uniksa
  • Objective-C na iOS
  • Perl i PHP dla back-endu Web 1.0
  • Python i Ruby dla back-end Web 2.0
  • Java dla back-endowego przedsiębiorstwa z dostępem do Internetu

Aby odpowiedzieć na twoje pytanie, JavaScript był językiem Netscape Navigator, gdy była to dominująca przeglądarka. W szczególności był to język do dynamicznego rozwoju front-endu.

Obok duży język będzie musiał rozwiązać kolejną granicę. Wydaje się, że w przestrzeni do tworzenia witryn zaplecza nadal występuje grabież. Co więcej, przetwarzanie mobilne nie zostało całkowicie rozwiązane, pomimo obecnej dominacji Apple. Pojawiło się także przetwarzanie wielordzeniowe i w chmurze, które wiele języków próbuje wykorzystać (jak języki współbieżne, takie jak Erlang i Go, lub języki funkcjonalne, takie jak Haskell i OCaml).

Przedsiębiorcy wyrażają się następująco: „znajdź kogoś w ogniu i sprzedaj mu wąż strażacki”. Więc jeśli chcesz wprowadzić nowy język, którego ogień gasisz? Każda nowa granica w informatyce wiąże się z wieloma problemami; więc dostarcz trochę aspiryny, a będziesz złoty.

chrisaycock
źródło
4
Prawie się zgadzam, ale nie mogę zrozumieć, w jaki sposób platforma .NET stała się tak popularna?
Tomasz Nurkiewicz
5
@Tomasz Microsoft wypuścił platformę .NET jako nową platformę dla systemu Windows (która nadal ma zdecydowaną większość instalacji na komputerze) i posunął się tak daleko, że przerwał VB 6.
chrisaycock
1
Ani Perl, ani Python tak naprawdę nie zawdzięczają swojej początkowej popularności sieci; były przeznaczone jako języki do szybkiego budowania narzędzi dla sys-adminów lub usług systemu operacyjnego (odpowiednio) i odniosły ogromny sukces w tych domenach, zanim jeszcze zyskały jeszcze większą popularność przy tworzeniu stron internetowych.
SingleNegationElimination
1
@TokenMacGuy: Te domeny (w tym CAD / CAE) były stosunkowo małe, dopóki Web 1.0 nie wystartował. Wtedy półki w księgarniach zaczęły się przelewać książkami o tych językach.
hotpaw2
2
@ hotpaw2: Perl był bardzo popularny do pisania skryptów w systemie UNIX kilka lat przed domowym dostępem do Internetu był w ogóle powszechny.
kevin cline,
38

To całkiem proste: Netscape użył silnika JavaScript w swojej przeglądarce. Jeśli chcesz robić skrypty w Internecie, JavaScript to był . Internet Explorer miał (i nadal ma) zarówno JavaScript, jak i VBScript, ale oczywiście jeśli chcesz pracować w więcej niż tylko IE, nie masz wyboru, jak korzystać z JavaScript.

JavaScript jest świetnym językiem sam w sobie, ale nie byłby dziś tak popularny, gdyby nie fakt, że jest to jedyny język, którego można używać do pisania skryptów HTML.

Dean Harding
źródło
3
A zatem, wykorzystując istniejące (popularne) oprogramowanie, które wymagało języka wyższego poziomu?
Mathnerd314,
7
@ Mathnerd314: To nie do końca tak. JavaScript (dzięki, panie CRT: p) nigdy nie był oddzielny od przeglądarki: został opracowany przez Netscape specjalnie do użytku w ich przeglądarce, więc nie jest tak, że podjęto świadomą decyzję o „piggyback” popularności Netscape, aby dokonać popularny język.
Dean Harding,
2
@ Mathnerd314 To nie tyle piggybacking, co był to jedyny prawdziwy język dla nowej granicy komputerów , podobnie jak C dla Uniksa. Każdy, kto chciał dynamicznego interfejsu użytkownika, musiał korzystać z JavaScript.
chrisaycock
4
Aby odtworzyć sukces, muszę znaleźć zupełnie nową granicę obliczeń i wprowadzić nowy język jako obowiązkowy. Rozumiem ...
Mathnerd314,
2
@ Mathnerd314 Obecnie powstające granice obejmują przetwarzanie wielordzeniowe i chmurowe. Rzeczywiście, jest to coś, na czym mógłby polegać język taki jak Erlang. (Innym przykładem jest wzrost Celu-C z powodu pojawienia się smartfonów, ponieważ Apple jest tak dużym graczem w tej przestrzeni.)
chrisaycock
7

Dodam do tego aktualizację, ponieważ myślę, że pojawienie się JS w sieci po stronie klienta zostało źle zrozumiane w kilku kluczowych punktach na przestrzeni lat.

To nie był Ajax

Nie twierdzę, że Ajax nie był ważny dla ewolucji rozumienia JS jako języka, ale walka o dominację przeglądarki po stronie klienta zakończyła się na długo przed stworzeniem terminu Ajax.

Nie dlatego, że była to jedyna gra w mieście

Były aplety Java, Flash i VBScript. Słyszałem, że w latach 90. były jeszcze inne opcje skryptów (ale wymagały wtyczek IIRC). Java jest bardzo popularna, ale aplety były fatalną awarią. Były brzydkie i często ser szwajcarski, ale co ważniejsze, nie sądzę, aby Java była odpowiednia z powodów, które omówię później. Flash był bardzo popularny i miał silną pozycję przez wiele lat, ale nawet gdy Flash w końcu miał opcje SEO, nie były one zwykle używane, co bardzo utrudnia wykrycie wyłącznie stron Flash. Nawet teraz większość z nas regularnie aktualizuje Flash, abyśmy mogli oglądać filmy, ale to prawdziwa pięta achillesowa. Zastrzeżona technologia w przeglądarkach. I oczywiście VB, który kiedykolwiek działałby tylko z IE, więc nie.

Właściwe miejsce we właściwym czasie jest istotne, ale nie cała odpowiedź

Tak, bez fali internetowej nigdy nie zobaczylibyśmy JavaScript ani popularnego języka takiego jak on. A może mielibyśmy ...

Skończyło się to idealnym narzędziem dla domeny problemowej

Powiedziałbym, że około 2000 roku mieliśmy następujące problemy:

  • IE i Netscape właśnie zgodziły się zacząć grać ładnie, przestrzegając tych samych standardów DOM API i CSS, i od tego czasu musieliśmy radzić sobie z mnóstwem starszych problemów z JS w różnych przeglądarkach, które dopiero zaczynają być możliwe do zarządzania bez pomocy narzędzi normalizacyjnych JS DOM, takich jak jQuery post IE8
  • Pojawiła się zupełnie nowa generacja programistów / projektantów stron internetowych, którzy niekoniecznie byli ciężkimi programistami, ponieważ programiści chcieli poprawić swoją grę po wybuchu bańki po .com, kiedy przestali wręczać ci przyzwoitą pensję za pojawienie się przy drzwiach bez niczego więcej niż podstawowa znajomość HTML i niektóre umiejętności Photoshopa.
  • W mieście pojawił się nowy dzieciak CSS, który zaoferował intrygujące możliwości tego, co ostatecznie nazwano by DHTML, (bardziej odpowiednio) DOM Scripting, (teraz niewłaściwie) HTML5 (zomghtml5!).

Potrzebowaliśmy więc języka, który byłby zarówno głęboki, oferując możliwość faktycznej strukturyzacji i tworzenia bardziej zaawansowanej aplikacji z przenośnymi / wielokrotnego użytku komponentami po stronie klienta, ale także dostępną dla osób, które niewiele wiedziały i tylko potrzebowały rzeczy pojawiać się / pojawiać ponownie po kliknięciu przycisku.

Co więcej, stwardnienie rozsiane, będące bestią nieudolną / niekompetentną i / lub dominującą poprzez antykonkurencyjną praktykę, którą czasami są, nie udało się naprawdę dotknąć ich niezgodnej implementacji DOM API przez dobrą dekadę, chociaż udało im się dodaj sporadyczne rzeczy, takie jak oryginalny obiekt XHR i querySelectors w IE8.

Ważną rzeczą do zapamiętania jest to, że do około 2005 roku udało nam się tak całkowicie zakopać złożoność związaną z obsługą problemów w różnych przeglądarkach, że nie był to tak naprawdę poważny problem z przodu JavaScript. Brak właściwego wsparcia CSS2 tak długo, jak długo powodował znacznie większy ból. Aby zapoznać się z samą ilością i głębią problemów, polecam sprawdzenie quirksmode.org . Nie sądzę, że jest to wyczyn, który mógłby zostać osiągnięty tak płynnie iw tylu bibliotekach w Javie, z pewnością nie w VB i zdecydowanie nie przy żadnej strategii wtyczek, której celem jest ominięcie całego problemu, stając się całkowicie nowym rodzaj uciążliwości.

Inne funkcje językowe, które mają duży sens dla interfejsu użytkownika:

  • Funkcje pierwszej klasy: Z mojego doświadczenia wynika, że ​​nic nie nadaje się lepiej do asynchronizacji przetwarzania i paradygmatów sterowanych zdarzeniami niż język, który czyni swoje funkcje pierwszorzędnymi. Oba problemy są regularnie rozwiązywane w pracy nad interfejsem użytkownika.

  • Typy dynamiczne: Rzutowanie i sprawdzanie typów to bardzo rzadka potrzeba w JavaScript, która pomogła zachować zwięzłość i oszczędność kodu. Obawy związane z interfejsem użytkownika mogą bardzo szybko się skomplikować i zrobić bałagan. Utrzymywanie kodu w ścisłej tajemnicy i absolutna jasność co do przepływu danych ma kluczowe znaczenie dla zrozumienia i modyfikacji / utrzymania go.

  • To nie jest protekcjonistyczny: od wielu lat ktoś głosi, że musisz chronić się przed własnymi błędami i głupimi rzeczami, które inny facet mógłby zrobić z twoim kodem, czyniąc konstrukcje kodu bardzo sztywnymi i nieelastycznymi i niemożliwymi do wtrącenia się w pierwotny cel. autorstwa i wiele osób słuchało. Nie powiem, że zawsze się mylą (może tak sądzić), ale powiem, że to niewłaściwe podejście do interfejsu internetowego i uważam, że jest to zjawisko, które rozwiązywaliśmy, utrzymywaliśmy i modyfikowaliśmy boczne GUI w znacznie szybszym tempie iz większą łatwością niż zwykle taka praca była zwykle wykonywana w bardziej restrykcyjnych językach w przeszłości. Możliwość szybkiej i łatwej zmiany rzeczy w locie znacznie ułatwia tworzenie schematów architektury dynamicznej / płynnej, które nie wymagają monumentalnych ilości pośrednich i abstrakcyjnych kosztów ogólnych, co ostatecznie ułatwia zobaczenie, co się dzieje w Twoim kodzie i wyprzedzaj wyjątki lub zajmuj się nimi znacznie czystiej. Łatwiej jest utrzymać go po prostu dzięki czystej cnocie umożliwiającej bycie bardziej bezpośrednim we wszystkim, co robisz i przy znacznie mniejszym kodzie, niż byłoby to możliwe przy innej filozofii.

W jaki sposób JS stał się popularny? Okazało się, że jest doskonałym narzędziem do pracy raz za razem. To nie jest język, w którym „utknęliśmy”. To język, który mógł zainspirować wiele zmian w popularnych językach. I za to możesz podziękować Brendanowi Eichowi i wszystkim współczesnym, którzy pomogli mu włożyć ten pomysł do głowy, za to, że podoba mu się Scheme jako inspiracja projektowa bardziej odpowiednia dla danego problemu niż Jawa.

Erik Reppen
źródło
2

Jedną taktyką stosowaną początkowo była nazwa - „JavaScript” miał na celu zwiększenie popularności Javy, która następnie zyskiwała na popularności.

Grant Palin
źródło
1

Czy nie jest to jedyny język skryptowy dla różnych przeglądarek? Wydaje się, że jego popularność wzrosła stopniowo, podobnie jak Internet, co ma sens.

Ben Hughes
źródło
1

Właściwy czas, właściwe miejsce. I to nie do końca było do bani.

Z tego samego powodu wygrywa Facebook.

Jewgienij Brikman
źródło
0

Moim zdaniem JavaScript jest popularny, ponieważ jest dobrze obsługiwany.

Po pierwsze, jest to jedyny język dla Netscape i IE w swoim czasie. Po tym, jak „społeczność javascript” zostanie ustanowiona i ustabilizuje się, nikt nigdy nie pomyśli o „innym dobru”, które wymaga budowania od podstaw. Po prostu przyczyniają się do tego, aby było coraz lepiej.

Jeśli chcesz zbudować nowy popularny język, pierwszą rzeczą, o której myślę, jest to, że musisz określić, kto używa tego języka . Pierwszych klientów zawsze trudno jest zdobyć i musisz uczynić swój język lepszym od javascript w taki czy inny sposób. Być może nawet w ograniczonej dziedzinie / ograniczonej społeczności programistów, na przykład, „lepszy / szybszy silnik javascript dla iPhone mobile” może być dobrym wyborem.

Co więcej, twój język powinien być łatwy w użyciu i dostosowywany przez społeczność, ponieważ to społeczność określa, który język może przetrwać.

Hoàng Long
źródło
Ważne jest, aby uczynić go popularnym „wystarczająco”. Wtedy to zadziała samo.
Hoàng Long,
0

Nie uwierzysz mi, ale flash i (w nieco wcześniejszych apletach Java) wniósł ogromny wkład we wzrost popularności javascript i ewolucję samego języka.

Gdy na scenie pojawił się flash, był to pierwszy dowód na to, że warto zastanowić się nad aplikacjami internetowymi.

W pewnym sensie rywalizacja z wtyczkami, ciągłe próby pokazania - zobacz, co możemy zrobić bez wtyczek sprawiły, że javascript jest językiem o szerszym spektrum aplikacji, a zatem stał się popularny.

shabunc
źródło
-1

Myślę, że ludzie myśleli, że JavaScript musi coś zrobić z Javą.

(Jak obecnie wszystko zaczyna się od „i”)

Istotną rolę odgrywa strategia marketingowa / promocyjna.

Szymon, Szymek
źródło
-1

Naprawdę myślę, że ma do czynienia z jego C-like składni . Według Wikipedii Javascript pojawił się w '95. W tym czasie poziom C był najwyższy, a Java była kolejnym językiem. Myślę, że składnia była bardzo atrakcyjna (jak na tamten czas), a jej nazwa powiązana z następnym dużym językiem, Javą , dała jej przewagę.

W tym czasie programiści języka C mogli łatwo dostosować się do dynamicznego języka.

Programming Language    Dec 2010    Dec 2005    Dec 1995        Dec 1985
Java                    1           1           -               -
C                       2           2           1               1

Indeks Tiobe

Gdybym miał odtworzyć sukces Javascript , spojrzałbym na problemy dręczące współczesnych programistów i dałbym im rozwiązanie o znanej składni.

Programowanie równoległe IMO to kolejny duży problem, przed którym stoją programiści. Myślę, że języki funkcjonalne naprawdę świetnie sobie radzą w pokonywaniu tej przeszkody. Gdybym miał stworzyć następny Javascript , stworzyłbym język funkcjonalny ze wspólną platformą . Ponadto uważam, że musiałby być wystarczająco elastyczny, aby był językiem scirpting, ale wystarczająco silny, aby był językiem o statycznym typie tekstu i świetnych ramach.

Chociaż nie wszyscy mogą się zgodzić, w tych warunkach myślę, że F # może mieć wiele zalet w przyszłości.

snmcdonald
źródło
2
@Pan. CRT: Anders Hejlsberg, twórca Turbo Pascal, miał duży wpływ na C # i platformę .NET. Więc nie zdyskontowałbym Pascala, gdyby Netscape przyjął Pascala. Wokół tego jest wciąż mnóstwo programistów Delphi.
snmcdonald
3
Przepraszam, usunąłem mój komentarz, zanim odpowiedziałeś - i tak oznaczało to sarkazm, a zatem nie był szczególnie pomocny. Powinienem powiedzieć, że chociaż z pewnością pomocna w nakłonieniu istniejących programistów do „zanurzenia palców w wodzie”, składnia podobna do C nie jest wcale gwarancją sukcesu. Zastanów się nad celem C: ponad dekadą względnego zapomnienia, a następnie Apple kupuje NeXT i czyni go ich fundamentem dla wszelkiego rodzaju zabawnych małych gadżetów ...
Shog9
1
@Pan. CRT. Bardzo ciekawy komentarz. Składnia to zdecydowanie nie wszystko, choć myślę, że jest ważna dla istniejących programistów. Cel C nie wydaje mi się bardzo podobny do C. Być może dlatego początkowo nie wystartował. Jednak może to być skojarzenie z nadchodzącą technologią, która sprawia, że ​​jest to istotne, takie jak Java w latach 90. Jeśli chodzi o składnię, myślę, że następna generacja programistów staje się bardziej komfortowa dzięki funkcjonalnym i dynamicznym językom.
snmcdonald
@Pan. CRT: Albo Python z Google, etc ... Chciałbym powiedzieć, że „popularność” (jak w powszechne) zazwyczaj ma niewiele wspólnego z językiem samego (po wszystkim, istnieje wiele fantastycznych języków, które nie są bardzo popularne [np Haskell , Erlang] i inne, które są brzydkie i bardzo popularne [np. PHP])
Dean Harding,
@Dean Harding: Ciekawy komentarz, ponieważ naprawdę lubię PHP. Rozumiem, że nazwy funkcji biblioteki mają podobieństwo do biblioteki C, a mimo to przyjmują składnię podobną do Perla, nie zasłaniając jej wieloma znaczeniami. Jednocześnie rozumiem krytykę, ponieważ postrzegam implementację OO zarówno w Perlu, jak i PHP jako myśl w ostatniej chwili. PHP ma podobną składnię jak C i Perl (być może więcej języków), co jest znane wielu programistom, a jednak jest przeznaczone dla bardzo popularnej domeny. Naprawdę uważam, że jest to połączenie składni i popularnej technologii.
snmcdonald
-1

JavaScript stał się popularny dzięki AJAX i dobrym narzędziom inspekcyjnym, takim jak Firebug. Oczywiście pomógł fakt, że działał na wszystkich głównych przeglądarkach i był jedynym sposobem na użycie DHTML.

Zasadniczo, aby nawet najbrzydszy język odniósł sukces, musi być w stanie robić naprawdę przydatne rzeczy, których żaden inny język nie może. Musisz także zapewnić narzędzia, które pozwolą programistom naprawdę czuć, że kontrolują to, co robi język, co nie miało miejsca w przypadku javascript przed firebugiem.

Kamil Szot
źródło
2
JavaScript zyskał nowe życie dzięki AJAX (i prawdopodobnie Firebugowi, choć myślę, że to drugorzędne), ale wygrał wojnę zanim się zaczął (i prawie piętnaście lat temu), ponieważ na jego przestrzeni nie było konkurencji.
wyatt
-4

JavaScript jest popularnym narzędziem służącym do przezwyciężenia niedociągnięć znaczników HTML, które sprawiają, że strony wyglądają tak, jak chcą projektanci. Bez Javascript wszystkie strony wyglądałyby tak - HTTP 1.1 . Zaledwie krok w górę od protokołu Gopher .

ja72
źródło
2
Protokół! = Projekt! = Skryptowanie. Możesz tworzyć całkiem piękne strony bez Javascript za pomocą HTTP 1.0.
deceze