[]
Javascript teorisi üzerine bazı sorular
"Javascript client-side bir betik dilidir."
Bildiğiniz gibi javascript'i çok büyük oranda "browser" içerisinde kullanıyoruz ancak işin bir de "node.js" tarafı var.
Node.js bir "runtime" olarak geçiyor sitesinde. Kullandığımız "browser" da benzer mantıkta bir "runtime" aslında. Bu runtime'ların içerisinde ise javascript'i yorumlayan bir motor var. Chrome ve Node.js "V8 engine" kullanıyorlar bildiğiniz gibi.
Node.js tarafında javascript'i kullanıyor olmamız, "javascript client-side bir betik dilidir" tanımını değiştirir mi? Yoksa runtime'ın değişmesi dilin bu özelliğine etki etmez mi? Yani şu iki tanım arasında kaldım:
"Javascript hem client-side hem de server-side bir dildir."
veya
"Node.js kullanarak server-side uygulamalar geliştirebiliriz ancak node.js bir runtime olduğu için bu durum Javascript'in client-side olma özelliğini değiştirmez. Javascript kesinlikle client-side bir dildir."
Düşüncelerinizi merak ediyorum.
Bildiğiniz gibi javascript'i çok büyük oranda "browser" içerisinde kullanıyoruz ancak işin bir de "node.js" tarafı var.
Node.js bir "runtime" olarak geçiyor sitesinde. Kullandığımız "browser" da benzer mantıkta bir "runtime" aslında. Bu runtime'ların içerisinde ise javascript'i yorumlayan bir motor var. Chrome ve Node.js "V8 engine" kullanıyorlar bildiğiniz gibi.
Node.js tarafında javascript'i kullanıyor olmamız, "javascript client-side bir betik dilidir" tanımını değiştirir mi? Yoksa runtime'ın değişmesi dilin bu özelliğine etki etmez mi? Yani şu iki tanım arasında kaldım:
"Javascript hem client-side hem de server-side bir dildir."
veya
"Node.js kullanarak server-side uygulamalar geliştirebiliriz ancak node.js bir runtime olduğu için bu durum Javascript'in client-side olma özelliğini değiştirmez. Javascript kesinlikle client-side bir dildir."
Düşüncelerinizi merak ediyorum.
bence tanımlara takılı kalmak doğru değil, javascript sonuç olarak bir programlama dilidir.
bir programlama dilinin server side veya client side olup olmadığını kullanıldığı ortam belirler.
bu yüzden bence şu an "Javascript client-side bir betik dilidir." doğru bir tanımlama değil artık.
evet node.js dediğimiz standart bildiğimiz javascript'in sandbox bir uygulamada çalışması ama sonuç olarak ortaya çıkan şeyin c# veya java ile oluşturduğumuz server'dan bir farkı yok.
bundan dolayı benim bu noktadaki duruşum dili tanımlamak yerine sıfatlamak,
tarayıcı için yazdığımız javascript = client side javascript
node.js için yazdığımız javascript = server side javascript
bir programlama dilinin server side veya client side olup olmadığını kullanıldığı ortam belirler.
bu yüzden bence şu an "Javascript client-side bir betik dilidir." doğru bir tanımlama değil artık.
evet node.js dediğimiz standart bildiğimiz javascript'in sandbox bir uygulamada çalışması ama sonuç olarak ortaya çıkan şeyin c# veya java ile oluşturduğumuz server'dan bir farkı yok.
bundan dolayı benim bu noktadaki duruşum dili tanımlamak yerine sıfatlamak,
tarayıcı için yazdığımız javascript = client side javascript
node.js için yazdığımız javascript = server side javascript
- aziz dostum jack (23.05.20 22:13:06)
Ornegin baska bir dilden ornek verirsek, java dili ile yazilmis bir kod java compiler ile derlenir, java virtual machine uzerinde calisir. bu akis uzerinde java dilinin dil olarak uzerinde cailstigi sistem ile bir ilgisi yok. hangi sistem uzerinde calistigi tamamen java virtual machine icin onemli. dil ile o dili calistiran sistemi ayrimak gerekir.
bu javascript icin de ayni sekilde. javascript dili ister v8, ister Chakra engine ile yorumlanmis olsun, bu enginlerin calistigi her yerde calisacaktir. o nedenle dil olarak javascripin nerede calistigi ile bir baglantisi yok, nerede calistigi bu enginelerin isi. V8 engine daha onceden sadece chrome browser uzerinde calisiyordu, simdi node.js ile birlikte browserdan ayrildi bir program olarak herhangi bir cihazda calisabiliyor. o nedenle dil yine ayni dil, degisen ve farkli ortama uyum saglayan bu calistiran engine.
o nedenle bir dil icin client-side ya da server-side diye siniflandirmak dogru olmayabiir, cunku siniflandirilmasi gereken engine, virtual machine vs. dir.
belki javascript icin ancak su denilebilir, "javascript daha cok browserlarda client-side calisan enginlerde kullanilan bir dildir" denilebilir. javascriptin kendisi calistigi ortamdan bagimsizdir.
bu javascript icin de ayni sekilde. javascript dili ister v8, ister Chakra engine ile yorumlanmis olsun, bu enginlerin calistigi her yerde calisacaktir. o nedenle dil olarak javascripin nerede calistigi ile bir baglantisi yok, nerede calistigi bu enginelerin isi. V8 engine daha onceden sadece chrome browser uzerinde calisiyordu, simdi node.js ile birlikte browserdan ayrildi bir program olarak herhangi bir cihazda calisabiliyor. o nedenle dil yine ayni dil, degisen ve farkli ortama uyum saglayan bu calistiran engine.
o nedenle bir dil icin client-side ya da server-side diye siniflandirmak dogru olmayabiir, cunku siniflandirilmasi gereken engine, virtual machine vs. dir.
belki javascript icin ancak su denilebilir, "javascript daha cok browserlarda client-side calisan enginlerde kullanilan bir dildir" denilebilir. javascriptin kendisi calistigi ortamdan bagimsizdir.
- emrahday (23.05.20 23:39:00 ~ 23:39:54)
İngilizce wikipedia sayfasının yıllar içindeki değişimine kabaca bir baktım.
Javascript tanımından son yıllarda önce "scripting language" kısmı kaldırılmış, "interpreted programming language" tanımlaması biraz daha uzun yaşasa da en sonunda "interpreted" kısmı da kaldırılmış ve şu an güncel olarak sadece "is a programming language" olarak tanımlanıyor.
Tanımlamanın ikinci cümlesi de şöyle: "JavaScript is high-level, often just-in-time compiled, and multi-paradigm"
Yani son tahlilde c#, java gibi diller ile aynı klasmana konmuş yukarıdaki cevaplarda da değinildiği gibi.
Belki bir fikir verir 2020 yılında nasıl değerlendirildiği konusunda.
Hatta JavaScript engine sayfasının ilk cümlesi bu değişimin sebebini açıklıyormuş zaten:
"The first JavaScript engines were mere interpreters, but all relevant modern engines utilize just-in-time compilation for improved performance"
Yani V8 her şeyi değiştirmiş.
"The first modern JavaScript engine was V8, created by Google for its Chrome browser. V8 debuted as part of Chrome in 2008, and its performance was much better than any prior engine. The key innovation was just-in-time compilation"
Google'ın yaptığı "just-in-time compilation" devrimi dili c# veya java ile aynı klasmana sokmuş anladığım kadarıyla.
Javascript tanımından son yıllarda önce "scripting language" kısmı kaldırılmış, "interpreted programming language" tanımlaması biraz daha uzun yaşasa da en sonunda "interpreted" kısmı da kaldırılmış ve şu an güncel olarak sadece "is a programming language" olarak tanımlanıyor.
Tanımlamanın ikinci cümlesi de şöyle: "JavaScript is high-level, often just-in-time compiled, and multi-paradigm"
Yani son tahlilde c#, java gibi diller ile aynı klasmana konmuş yukarıdaki cevaplarda da değinildiği gibi.
Belki bir fikir verir 2020 yılında nasıl değerlendirildiği konusunda.
Hatta JavaScript engine sayfasının ilk cümlesi bu değişimin sebebini açıklıyormuş zaten:
"The first JavaScript engines were mere interpreters, but all relevant modern engines utilize just-in-time compilation for improved performance"
Yani V8 her şeyi değiştirmiş.
"The first modern JavaScript engine was V8, created by Google for its Chrome browser. V8 debuted as part of Chrome in 2008, and its performance was much better than any prior engine. The key innovation was just-in-time compilation"
Google'ın yaptığı "just-in-time compilation" devrimi dili c# veya java ile aynı klasmana sokmuş anladığım kadarıyla.
- bazen (24.05.20 04:13:16 ~ 04:26:55)
1