Web programlamada Javascript kullanmanın tarihsel temeli nedir?


9

Python'u da çok fazla kullandığımız bilimsel bir biyoloji geçmişinden geliyorum.

Artık Web geliştirmeye başladım, sürekli olarak JavaScript'in neden Web'deki birincil istemci tarafı dil olduğunu merak ederek buldum.

JavaScript'in baskınlığı tarihi bir kaza mı yoksa başka bir şey mi? Ayrıca, Python'u istemci tarafı komut dosyalarına entegre etmenin herhangi bir engeli olup olmadığını merak ediyorum?


Bunun meta.programmers.stackexchange.com/questions/363/… 'a göre moderatörlerin dikkatine ihtiyacı var mı ?
Rein Henrichs

@Rein - Bunun vote to closekonu dışı olduğunu düşünüyorsanız bunu yapabilirsiniz. Diğerleri de aynı şekilde hissediyorsa, onlar ya da bir moderatör, liderliğinizi takip edecektir.
jmort253

@ jmort253 (Belki de metaya geçmeliyim) Bağlantılı iş parçacığında fikir birliği yoktu ve kararsızım. :(
Rein Henrichs

@Rein - Yorumlardaki düşünce süreci tamam (bir tabela olarak hizmet ettiğinden, neden veya neden olmasa da, topluluk bir gönderi üzerinde harekete geçmeye karar verdi. Anlaşma yoksa, o zaman en iyi olduğunu düşündüğünüzü yapın. :) Şahsen, bu tarihsel bilgilerin başkalarının JavaScript'in geleceğini dil olarak anlamasına ve bu dili anlamak ve benimsemenin neden önemli olduğunu düşünüyorum.
jmort253

Yanıtlar:


16

JavaScript, popüler bir Web tarayıcısında kullanıma sunulan ilk komut dosyası diliydi, bu yüzden neredeyse evrensel olarak uygulandı. Tüm popüler tarayıcılarda bulunan tek programlama dili olarak, baskın istemci tarafı programlama dili olmaktan başka seçeneği yoktu.

Internet Explorer, JavaScript'i takılabilir komut dosyası motorlarına (VBScript ve JScript ile birlikte gelir) izin verecek şekilde uyguladı. Kodunuzu PerlScript veya PythonScript'te yazmayı tercih ettiyseniz, yapabilirdiniz, ancak tüm istemcilerinizde komut dosyası dilinin yüklü olması ve IE'yi kullanmaları gerekiyordu. Bunu dahili projeler için yapabilirsiniz, ancak internette çalışmasının hiçbir yolu yoktur.


İlginç bulduğum başka bir şey, pijamadan javascript derleyicilerine, örneğin Pijama pyjs.org yazma projeleriydi .
rd108

"Pijama, hem Web hem de Masaüstü için Zengin İnternet Uygulaması (RIA) Geliştirme Platformu'dur. Python-Javascript derleyicisi, AJAX çerçevesi ve Widget Set API'sı içerir. Pijama Google Web Toolkit, Java-Javascript derleyicisi. SSS ve özellikler listesini okuyun. "
rd108

Bir sürü javascript derleyicisi var. CoffeeScript, TypeScript, ClojureScript, LispyScript, vb.
Florian Margaine

7

JavaScript aslen Brendan Eich tarafından oluşturuldu. İlk olarak Netscape Navigator 2.0'ın beta sürümü ile Eylül 1995'te LiveScript olarak gönderildi, ancak Aralık 1995'te Sun Microsystems ile ortak bir duyuruda JavaScript olarak yeniden adlandırıldı. JavaScript daha sonra Ecma International'a gönderildi ve sonunda oldu standartlaştırılmış ECMAScript.

Mevcut piyasa hakimiyeti büyük ölçüde tarihsel ataletten kaynaklanmaktadır.

Kaynak: http://en.wikipedia.org/wiki/JavaScript#History


2

Emin değilim, ancak hafif, istemci tarafında bir komut dosyası dili. Köklerinin erken Netscape tarayıcıları ile yattığını düşünüyorum (yanlış olabilirim). Gerçekten de, java ile hiçbir ilgisi olmasa da, adı yayınlanmadan önce "java" kelimesini içerecek şekilde değiştirildi. O zaman popülerlik kazanmak hızlı bir taktikti.


1

Eminim tarihle ilgisi vardır.

Ancak, web sitelerinin tarayıcımda python gibi tam özellikli programlama dillerini çalıştırmasını istemediğimden de eminim. Güvenlik çıkarımları beni böyle bir siteden uzaklaştırır (ya da tarayıcı korumasının hava geçirmez olduğundan çok emin olmalıyım).


Mantıklı değil. Bir programlama dili için hangi API'lerin kullanılabileceğine karar vermek BT'ye bağlıdır. Tabii ki, Python tarayıcılarda gönderildiyse, Javascript'in şimdi (DOM gibi) sahip olduğu aynı API'lara erişebilirdi, bu yüzden herhangi bir hasar yaratmanın bir yolu olmayacaktı.
Andrea

@Andrea - bir dilin sözdizimi ve anlambilimi kadar standart kütüphaneleri olduğunu iddia edebilirsiniz. Javascript, dosya G / Ç için standart bir kütüphaneye sahip değildir ve güvenlik nedeniyle bu kasıtlıdır. Python, dosya G / Ç ve güvenlik sorunları olarak kabul edilebilecek diğer birçok şey için standart kitaplıklara sahiptir. Bunlara izin vermeyin ve artık Python ile uğraşmıyorsunuz. Uzun zaman önce, Python'un bir sanal alanı vardı - 1.5 sürümü civarında olduğunu hatırlıyorum - ancak yeterince kullanılmadığı ve hava geçirmez olmaktan uzak olduğu için IIRC düştü.
Steve314

Javascript'te G / Ç için standart kütüphaneler yazılmaktadır. Elbette bunlar tarayıcıda mevcut değildir. Sadece Python tarayıcıda uygulanmışsa, güvenli olmayan kütüphanelerin kullanılamayacağını söylüyorum Ve muhtemelen bir web sitesinde kullanılmak üzere tasarlanmadığı için onları özlemeyeceksiniz.
Andrea

-2

"JavaScript'in baskınlığı tarihi bir kaza mı yoksa başka bir şey mi?"

Ben şahsen, JS'nin başarısının, birçoğunun olduğu kadar sadece bir kaza değil, sadece oyun alanındaki ilk çocuk olması nedeniyle onu itiraf etmeye çalışan bir tasarım meselesi olduğu kanaatindeyim.

Her ne kadar Java geliştiricilerine hitap edecek ve Java'nın C tabanlı sözdizimi gibi sözdizimi de Java geliştiricilerine hitap edecek şekilde adlandırılsa da, Brendan Eich, www'nin tarihindeki asıl dil mekaniği için Scheme'den çekilecek en cesur kararlardan birini aldı. ilham, Java geliştiricilerinin hiç hoşuma gitmediği bir şeydir (ki çok eğlenceli buluyorum).

JavaScript, OOP için son derece esnek / granüler prototip kalıtım kullanır, kapanışları vardır, türleri% 100 dinamiktir, işlevlerin kendileri birinci sınıftır ve diğer herhangi bir nesne veya veri türü gibi aktarılmalarına ve farklı bağlamlarda ve hatta yeniden kullanılmalarına izin verir en başından itibaren gerçek nesne üyeleri olarak ilan edilmiş gibi anında nesnelere uygulanır. Bir ton tescilli çöpü normalleştirmesi veya oldukça doğrusal olmayan UI sorunlarını ele alması gereken olay güdümlü mimariler için pratik olarak çığlık atıyor.

Web'in şafağının sonunda, Netscape ve IE'nin işleri farklı bir şekilde yapmaya çalıştığı gerçek bir tarayıcı savaşı ve ardından 10 yıldan fazla bir tarayıcı ile tarayıcıları normalleştirme görevini ciddiye alan tek dil. MS'nin tembel olduğu ve tarayıcı haklılığıyla sonuçlanan bazı aptal rekabete aykırı anti-uygulamalara kendisinin gömülü olduğu ve şimdi tarayıcıların HTML ile ilgili aynı genel spesifikasyon üzerinde anlaşmaya başladığı bir dünya olduğu için IE CSS ve DOM API ile IE, Google'ın performans sayılarının bu kadar acıklı görünmesini sağlayan JIT derleyicilerini patlatması nedeniyle 10'dan ziyade en son gelişmelerden 2-3 yıl geride kalıyor, böylece MS, nihayet lanet tarayıcılarını düzgün bir şekilde modernize etmekten utanıyordu.IE9, DOM API desteğini Netscape'in 2000ish'te desteklediği düzeylere yükselten ilk kişidir.

JS, Java Applets ve Adobe'nin Flash için ActionScript biçiminde rekabet etti. Bu ciddi yarışmacı cephesinde. MS VB'yi zorlamaya çalıştı ama perişan oldu çünkü ... iyi ... VB. Ayrıca, tescilli. Aslında çoğu insanın düşündüğünden çok daha fazla Flash sitesi vardı. Sadece arama motorları ile aptalca şeyler bulamadınız. Applets kendi şeylerini yaptı ve çirkin oldu. Gerçekten çirkin. JS, eşleşmeleri gereken özellikleri kimin belirlediğine karar vermeyen insanlar tarafından birden fazla tarayıcı bağlamında çalışma sorununu gerçekten ele alan tek dildi.

Son yıllarda JS çok daha geniş bir uygulama alanına dönüşüyor. Diğer web teknolojileri ile birlikte, temelde diğer tüm çözümleri mobil cepheye devirmek için tasarlandı çünkü gerçekten bir uygulama yazmak ve her şey üzerinde çalışmak istiyorsanız, web teknolojisi gerçekten şu anda tek gerçekçi seçim.

Yani hayır, ve evet ben büyük bir hayranıyım, ama artık istemci tarafındaki diğer tüm yarışmacıları kazara tarayıcının dışında patlayıcı olarak popüler hale gelmekten daha fazla kaza geçirdiğini sanmıyorum. JS'den önce, öncelikle akademik olmayan birçok Şema benzeri dil yoktu. Bu JS'ye bazı güçlü avantajlar sağladı ve müşteri tarafının benzersiz ihtiyaçları, bu avantajların yavaş yavaş kristal berraklığında olmasını mümkün kıldı.


JS'nin Şema ile nasıl bir ilişki kurduğunu söylemeden Şema'dan iki kez bahsediyorsunuz. Kesinlikle JS'nin makrolar, S ifadeleri, kuyruk özyineleme, süreklilikler veya Şema'nın diğer ayırt edici özelliklerinden herhangi birine sahip olduğunu düşünmüyorsunuz - değil mi?
Gabe

@Gabe. 4. metin bloğunu kontrol edin. Kapaklar, dinamik yazma ve birinci sınıf fonksiyonlar oldukça büyük. JS'nin c-benzeri sözdizimi kullanması Scheme makrolarının kullanılmasına izin vermeyecektir. Bu, Scheme'nin özelliklerine göre bir kopyası değildir, ancak kesinlikle bundan etkilenir.
mike30

Öyleyse kapanışlar ve dinamik yazım, bir dili Şemaya benzetir? Bu, C #'ın Şema benzeri olduğu anlamına mı geliyor? Ruby, Python ve Perl ne olacak? Ve neden Lisp veya benzeri bir dil yerine Şema?
Gabe

@Gabe ben bir Scheme uzmanı değilim ama gündelik wikipedia-ing sözlü kapsam, birinci sınıf fonksiyonları ve kapanış kombo JS JS Scheme Java olduğundan çok daha yakın koymak üç olduğunu söyleyebilirim. Aksi halde Brendan Eich'in sözünü alıyordum ve birinci sınıf fonksiyonların en önemli özelliği olduğunu varsaydım.
Erik Reppen

Tamam, bu yüzden JS'nin (birinci sınıf işlevleri ve sözcüksel kapsamı ima ettiğini düşünüyorum) kapanışları ve Scheme gibi dinamik yazmaları var. C #, kapanışlar, dinamik yazım ve sınırlı bir S-ifadeleri içerdiğinden, bu C #, JS'den bile daha fazla Şemaya benziyor mu?
Gabe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.