In che modo JavaScript è diventato popolare?


27

Nella storia antica, Brendan Eich aveva un design linguistico e, nel mondo di oggi, JavaScript è un linguaggio popolare implementato e utilizzato in molti luoghi diversi.

Cosa ha reso popolare la lingua? Era la sintassi di tipo C familiare ai programmatori precedenti? Netscape aveva abbastanza controllo sul mercato per costringerlo ad essere utilizzato? O c'è qualche motivo più profondo per cui JavaScript è popolare e altre lingue no?

In particolare, se dovessi rendere un linguaggio popolare come JavaScript, quali condizioni iniziali avresti bisogno per ricreare la sua crescita in popolarità?


2
JavaScript era morto (+ - 2005) fino a quando Google non lo ha resuscitato con Google Maps.
Todd Moses,

1
@ToddMoses Sono andato a discutere, ma alcune ricerche hanno dimostrato che hai ragione: AJAX ha reso di nuovo mainstream Javascript, ispirato a Gmail (2004) e Google Maps (2005). Tuttavia (e ciò si riferisce anche alla domanda sopra) javascript non è mai andato veramente via: Actionscript (usato in Flash) è apparso a partire dal 2000 circa ed è sostanzialmente la stessa lingua. Durante gli anni della guerra dei browser, Flash / Actionscript veniva utilizzato per le stesse cose che Javascript / AJAX è la tecnologia di punta per ora. Ho portato le mie abilità Javascript su Actionscript nel 2000 e le ho riportate su Javascript nel 2008 :-)
Darren Cook,

2
L'Ajax è importante ma è troppo accreditato, IMO. La diffusa semi-conformità del browser con l'API DOM e CSS2 è ciò che ha contribuito a rendere JS uno strumento potente sul lato client. Ciò è iniziato più attorno al IIRC del 2002. Una volta che avevamo gli strumenti adeguati per confondere con l'HTML, la rapida implementazione di complesse funzionalità dell'interfaccia utente era un gioco di ruolo completamente nuovo. Tuttavia, non è stato fino al 2005 che tutti hanno iniziato a prenderne atto. Direi anche che non è stato fino al 2005 circa che una massa critica stava cominciando a capire che JS è in realtà un linguaggio generale piuttosto tosto a sé stante.
Erik Reppen,

Risposte:


31

Stavo commentando una risposta precedente , ma stava diventando grande, quindi ho pensato di tirarlo fuori.

Qualsiasi nuova lingua può avere successo solo se capitalizza su una frontiera emergente nel campo dell'informatica.

Esempi precedenti:

  • C per Unix
  • Objective-C per iOS
  • Perl e PHP per il back-end Web 1.0
  • Python e Ruby per il back-end Web 2.0
  • Java per l'azienda back-end abilitata per Internet

Per rispondere alla tua domanda, JavaScript era la lingua di Netscape Navigator quando era il browser dominante. In particolare, era il linguaggio per lo sviluppo dinamico del front-end.

La prossima grande lingua dovrà risolvere un'altra frontiera. Sembra esserci ancora una presa di terra nello spazio di sviluppo web back-end. Inoltre, il mobile computing non è completamente risolto, nonostante l'attuale dominio di Apple. Inoltre, sta emergendo il multi-core e il cloud computing, che è qualcosa su cui molte lingue stanno tentando di capitalizzare (come linguaggi concorrenti come Erlang e Go o linguaggi funzionali come Haskell e OCaml).

Gli imprenditori hanno un'espressione del tipo "trova qualcuno in fiamme e vendigli una manichetta antincendio". Quindi, se vuoi introdurre una nuova lingua, di chi stai spegnendo il fuoco? Ogni nuova frontiera dell'informatica porta tutta una serie di mal di testa; quindi fornisci un po 'di aspirina e sarai d'oro.


4
Sono quasi d'accordo ma non riesco a capire come sia diventata così popolare la piattaforma .NET?
Tomasz Nurkiewicz,

5
@Tomasz Microsoft ha spinto .NET come nuova piattaforma per Windows (che ha ancora la stragrande maggioranza delle installazioni desktop) ed è arrivato al punto di interrompere VB 6.
chrisaycock,

1
Né Perl né Python devono davvero la loro popolarità iniziale al web; erano intesi come linguaggi per la creazione rapida di strumenti per amministratori di sistema o servizi del sistema operativo (rispettivamente) e avevano un enorme successo in quei domini prima di guadagnare ancora più trazione con lo sviluppo web.
SingleNegationElimination,

1
@TokenMacGuy: quei domini (incluso CAD / CAE) erano relativamente piccoli fino al decollo del Web 1.0. Fu allora che gli scaffali delle librerie iniziarono a traboccare di libri in queste lingue.
hotpaw2,

2
@ hotpaw2: Perl era estremamente popolare per lo scripting su UNIX alcuni anni prima che l'accesso a Internet da casa fosse del tutto comune.
Kevin Cline

38

È piuttosto semplice: Netscape ha utilizzato un motore JavaScript nel proprio browser. Se si voleva fare scripting sul web, JavaScript è stato esso . Internet Explorer aveva (e ha ancora) sia JavaScript che VBScript, ma ovviamente se vuoi lavorare in più di IE non hai altra scelta che usare JavaScript.

JavaScript è un ottimo linguaggio a sé stante, ma non sarebbe così popolare oggi se non fosse per il fatto che è l'unica lingua che è possibile utilizzare per lo script HTML.


3
Quindi, trasportando sulle spalle un software esistente (popolare) che aveva bisogno di un linguaggio di livello superiore?
Mathnerd314,

7
@ Mathnerd314: Non è proprio così. JavaScript (grazie, Sig. CRT: p) non è mai stato separato dal browser: è stato sviluppato da Netscape appositamente per l'uso nel proprio browser, quindi non è come se ci fosse una decisione consapevole di "cavalcare" sulla popolarità di Netscape per rendere il lingua popolare.
Dean Harding,

2
@ Mathnerd314 Non è tanto il piggybacking quanto era l'unico vero linguaggio per una nuova frontiera dell'informatica , proprio come C era per Unix. Chiunque desiderasse un front-end dinamico doveva usare JavaScript.
chrisaycock,

4
Per ricreare il successo, devo trovare una frontiera informatica completamente nuova e rendere obbligatoria la nuova lingua. Vedo ...
Mathnerd314,

2
@ Mathnerd314 Le frontiere emergenti attuali comprendono il multicore e il cloud computing. In effetti, questo è qualcosa su cui un linguaggio come Erlang potrebbe capitalizzare. (Un altro esempio è l'ascesa di Objective-C a causa dell'emergere di smartphone, poiché Apple è un giocatore così grande in quello spazio.)
chrisaycock,

7

Aggiungerò un aggiornamento a questo perché penso che l'emergere di JS sul web lato client sia stato frainteso su alcuni punti chiave nel corso degli anni.

Non era Ajax

Non sto dicendo che l'Ajax non fosse importante per l'evoluzione della comprensione di JS come lingua, ma la lotta per il dominio del browser sul lato client era finita molto prima che il termine Ajax fosse coniato.

Non è stato perché era l'unico gioco in città

C'erano applet Java, Flash e VBScript. Ho sentito che c'erano anche altre opzioni di scripting negli anni '90 (ma richiedevano plug-in IIRC). Java è estremamente popolare ma le applet sono state un triste fallimento. Erano brutti e spesso formaggio svizzero di sicurezza, ma soprattutto non credo che Java fosse adatto per i motivi che affronterò più avanti. Flash era molto popolare e aveva un forte punto d'appoggio per diversi anni, ma anche quando finalmente Flash aveva opzioni SEO, in genere non venivano utilizzate, rendendo molto difficile scoprire esclusivamente siti Flash. Anche ora, la maggior parte di noi aggiorna regolarmente Flash in modo da poter vedere i film, ma questo è il vero tallone d'Achille. La tecnologia proprietaria nei browser è fastidiosa. E ovviamente VB, che avrebbe funzionato solo con IE, quindi no.

Il posto giusto al momento giusto è rilevante ma non è la risposta completa

Sì, senza l'onda web che cavalca potremmo non aver mai visto JavaScript o una lingua di uso popolare come non appena l'abbiamo fatto. O forse avremmo ...

Finì per essere lo strumento perfetto per il dominio del problema

Direi che intorno al 2000 abbiamo avuto i seguenti problemi:

  • IE e Netscape avevano appena accettato di iniziare a giocare bene, seguendo gli stessi standard DOM API e CSS e da allora abbiamo dovuto fare i conti con una serie di problemi di cross-browser JS legacy che hanno appena iniziato a diventare gestibili senza l'aiuto di strumenti di normalizzazione DOM JS come jQuery post IE8
  • C'era un'intera nuova generazione di sviluppatori / designer web che non erano necessariamente dei pesi massimi in quanto programmatori che cercavano di migliorare il loro gioco dopo lo scoppio della bolla quando hanno smesso di consegnarti un salario decente per presentarsi alla porta con niente di più dell'alfabetizzazione HTML di base e alcune abilità di Photoshop.
  • C'era questo nuovo ragazzo CSS in città che offriva possibilità intriganti per quello che alla fine si sarebbe chiamato DHTML, (più appropriatamente) DOM Scripting (ora in modo inappropriato) HTML5 (zomghtml5!).

Quindi avevamo bisogno di un linguaggio che fosse allo stesso tempo profondo, offrendo la possibilità di strutturare e progettare effettivamente un'app più avanzata con componenti portatili / riutilizzabili sul lato client ma accessibile anche a persone che non conoscevano molto e che avevano solo bisogno di cose per apparire / riapparire quando si fa clic su un pulsante.

Inoltre, essendo MS la bestia sgraziata / incompetente e / o dominante attraverso pratiche anti-intrighi-pratica che a volte sono, non sono riusciti a toccare la loro implementazione API DOM non conforme per un buon decennio, anche se sono riusciti a aggiungi oggetti occasionali come l'oggetto XHR originale e querySelectors in IE8.

La cosa importante da notare è che intorno al 2005 siamo riusciti a seppellire così completamente la complessità della gestione dei problemi tra browser che non era più un problema serio sul fronte JavaScript. L'incapacità di supportare correttamente CSS2 per tutto il tempo in cui ha causato molto più dolore. Per un'idea del volume e della profondità dei problemi, ti consiglio di dare un'occhiata a quirksmode.org . Non penso che questa sia un'impresa che avrebbe potuto essere realizzata in modo uniforme e in altrettante librerie in Java, certamente non in VB e sicuramente non con alcuna strategia di plug-in il cui obiettivo è quello di eludere l'intero problema diventando completamente nuovo tipo di fastidio.

Altre funzionalità linguistiche che hanno molto senso per l'interfaccia utente:

  • Funzioni di prima classe: nella mia esperienza, nulla si presta meglio all'elaborazione asincrona e ai paradigmi guidati dagli eventi di un linguaggio che rende le sue funzioni di prima classe. Entrambe le preoccupazioni vengono regolarmente affrontate nel lavoro dell'interfaccia utente.

  • Tipi dinamici: il cast e il controllo del tipo sono un'esigenza molto rara in JavaScript che ha contribuito a mantenere il codice conciso e snello. Le preoccupazioni relative all'interfaccia utente possono diventare complesse e disordinate molto rapidamente. Mantenere il codice rigoroso ed essere assolutamente chiari sul flusso di dati è fondamentale per comprenderlo e modificarlo / mantenerlo.

  • Non è protezionista: per molti anni qualcuno ha predicato che è necessario proteggersi dai propri errori e dalle cose stupide che l'altro potrebbe fare con il proprio codice rendendo costrutti di codice altamente rigidi e inflessibili e impossibili da immischiarsi con l'intento originale che era creato con e molte persone hanno ascoltato. Non dirò che sono sempre sbagliati (potrei pensarlo) ma dirò che è l'approccio sbagliato all'interfaccia utente Web e credo che sia qualcosa di un fenomeno che abbiamo avviato, mantenuto e modificato client- le GUI secondarie a un ritmo molto più rapido e con maggiore facilità rispetto a tale lavoro sono state in genere realizzate in lingue più restrittive in passato. Essere in grado di cambiare le cose al volo rapidamente e facilmente rende molto più facile avere schemi di architettura dinamica / fluida che non richiedono quantità monumentali di spese indirette e di astrazione che alla fine rende più facile vedere cosa diavolo sta succedendo nel tuo codice e prevenire o gestire le eccezioni in modo molto più pulito. È più facile da mantenere semplicemente attraverso la pura virtù di rendere possibile essere più diretto in tutto ciò che fai e con molto meno codice di quello che ci vorrebbe data l'altra filosofia.

In che modo JS è diventato popolare? Si è dimostrato uno strumento eccellente per il lavoro più volte. Non è la lingua con cui siamo "bloccati" È la lingua che potrebbe aver ispirato una grande evoluzione nelle lingue popolari in generale. E per questo, puoi ringraziare Brendan Eich e tutti i contemporanei che hanno contribuito a mettere l'idea nella sua testa, per aver gradito Scheme come ispirazione progettuale adatta al problema in questione più di quanto gli piacesse Java.


2

Una tattica utilizzata inizialmente era il nome: "JavaScript" era destinato a cavalcare la popolarità di Java, che era in aumento da un po 'di tempo.


1

Non è stato l'unico linguaggio di scripting lato client tra browser? La sua popolarità sembra essere cresciuta al passo con quella del web, il che ha senso.


1

Il momento giusto, il posto giusto. E non ha fatto del tutto schifo.

È lo stesso motivo per cui Facebook sta vincendo.


0

Secondo me, Javascript è popolare perché è ben supportato.

Innanzitutto, è l'unica lingua per Netscape e IE ai suoi tempi. Dopo che una "comunità javascript" è stata stabilita e resa stabile, nessuno potrebbe mai pensare a "un altro bene" che richiede di costruire da zero. Contribuiscono solo a renderlo sempre migliore.

Se vuoi costruire una nuova lingua popolare, la prima cosa a cui penso è che devi determinare chi usa quella lingua . I primi clienti sono sempre difficili da ottenere e devi rendere la tua lingua superiore a javascript in un modo o nell'altro. Forse anche in un campo ristretto / comunità ristretta di programmatori, ad esempio, "motore javascript migliore / più veloce per iPhone mobile" può essere una buona scelta.

Inoltre, la tua lingua dovrebbe essere facile da usare e personalizzare per comunità, perché è la comunità che determina quale lingua potrebbe sopravvivere.


L'importante è come renderlo popolare "abbastanza". Quindi funzionerà da solo.
Hoàng Long,

0

Non mi crederai, ma flash e (in un po 'di applet Java in precedenza) ha dato un enorme contributo alla crescita della popolarità di javascript e all'evoluzione del linguaggio stesso.

Quando il flash è arrivato sulla scena, è stata la prima prova che le applicazioni web sono qualcosa su cui vale la pena pensare.

In un certo senso la competizione con i plugin, i tentativi costanti di mostrare - guarda cosa possiamo fare senza i plugin hanno reso javascript un linguaggio con uno spettro più ampio di applicazioni e, quindi, lo hanno reso popolare.


-1

Penso che la gente pensasse che Javascript dovesse fare qualcosa con Java.

(Come al giorno d'oggi tutto inizia con una "i")

La strategia di marketing / pubblicità svolge un ruolo significativo.


-1

Io davvero penso che abbia a che fare con la sua sintassi C-like . Secondo Wikipedia, Javascript è apparso nel '95. A quel tempo C era ai massimi storici e Java era la lingua successiva e futura. Penso che la sintassi fosse davvero allettante (per quel tempo) e il suo nome associato con il prossimo grande linguaggio, Java , ha dato un vantaggio.

In quel momento ha permesso un facile passaggio per i programmatori C per adattarsi a un linguaggio dinamico.

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

Indice di Tiobe

Se dovessi ricreare il successo di Javascript , esaminerei i problemi che affliggono i programmatori moderni e dare loro una soluzione con una sintassi familiare.

La programmazione parallela IMO è il prossimo grosso problema che i programmatori devono affrontare. Penso che i linguaggi funzionali facciano davvero un ottimo lavoro nel superare quell'ostacolo. Se dovessi creare il prossimo Javascript , creerei un linguaggio funzionale con una piattaforma comune . Inoltre, penso che dovrebbe essere abbastanza flessibile da essere un linguaggio scirpting ma abbastanza potente da essere un linguaggio tipicamente statico, con un ottimo framework.

Sebbene non tutti possano essere d'accordo, in queste condizioni, penso che F # potrebbe avere molti meriti in futuro.


2
@Sig. CRT: Anders Hejlsberg, il creatore di Turbo Pascal, ha avuto una grande influenza su C # e sul framework .NET. Quindi non avrei scontato Pascal se Netscape avesse adottato Pascal. Ci sono ancora tonnellate di sviluppatori Delphi che lo giurano.
Snmcdonald,

3
Spiacente, ho eliminato il mio commento prima che tu rispondessi - era comunque inteso come sarcasmo e quindi non particolarmente utile. Devo dire che, sebbene certamente utile nel far sì che i programmatori esistenti "immergano le dita dei piedi nell'acqua", una sintassi simile al C non è certo una garanzia di successo. Considera Objective-C: più di un decennio in relativa oscurità, quindi Apple acquista NeXT e ne fa la base per tutti i tipi di piccoli gadget divertenti ...
Shog9

1
@Sig. CRT. Commento molto interessante La sintassi non è assolutamente la cosa migliore, anche se penso che sia importante per i programmatori esistenti. Objective-C non mi sembra molto simile a C. Forse è per questo che inizialmente non è decollato. Tuttavia, potrebbe essere l'associazione con la tecnologia emergente che la rende rilevante, come Java era negli anni '90. Per quanto riguarda la sintassi, penso che la prossima generazione di programmatori stia diventando più a suo agio con linguaggi funzionali e dinamici.
Snmcdonald,

@Sig. CRT: O Python con Google, ecc ... Direi che la "popolarità" (come in, diffusa) generalmente ha poco a che fare con la lingua stessa (dopo tutto, ci sono molte lingue fantastiche che non sono molto popolari [ad esempio Haskell , Erlang] e altri che sono orribili ed estremamente popolari [ad esempio PHP])
Dean Harding il

@Dean Harding: commento interessante perché mi piace molto PHP. Apprezzo che i nomi delle funzioni della libreria abbiano una somiglianza con la C-Library e tuttavia adottino una sintassi simile al Perl, senza oscurarla con una pluralità di sigilli. Allo stesso tempo capisco le critiche mentre vedo l'implementazione di OO sia in Perl che in PHP come un pensiero dell'ultimo minuto. PHP ha una sintassi simile a C e Perl (forse più lingue) che è familiare a molti programmatori e tuttavia è progettata per un dominio molto popolare. Penso davvero che sia una combinazione di sintassi e tecnologia popolare.
Snmcdonald,

-1

JavaScript è diventato popolare grazie ad AJAX e ai buoni strumenti di ispezione come Firebug. Ovviamente il fatto che abbia funzionato su tutti i principali browser ed è stato l'unico modo per fare DHTML ha aiutato.

Fondamentalmente per rendere efficace anche la lingua più brutta deve essere in grado di fare cose davvero utili che nessun'altra lingua può fare. Inoltre è necessario fornire strumenti che consentano ai programmatori di sentire davvero che controllano il linguaggio che non è il caso di JavaScript prima di Firebug.


2
JavaScript ha guadagnato un nuovo contratto di vita con AJAX (e probabilmente Firebug, anche se penso che sia secondario), ma aveva vinto la guerra prima che iniziasse (e quasi quindici anni fa) perché non c'era competizione nel suo spazio.
wyatt,

-4

Javascript è popolare come un trucco per superare le carenze del markup HTML per far apparire le pagine web come i designer vogliono che appaiano. Senza Javascript tutte le pagine web sarebbero così : HTTP 1.1 . A malapena un passo avanti rispetto al protocollo gopher .


2
Protocollo! = Design! = Scripting. Puoi creare pagine abbastanza belle senza Javascript usando HTTP 1.0.
ingannare il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.