Komut Dosyası Dili ve Programlama Dili arasındaki farkı lütfen açıklayabilir misiniz?
Ayrıca her biri için bazı örnekler verebilir misiniz? Çok fazla Google'ı aradım ama her zaman Stack Overflow'dan en iyi yanıtları buluyorum.
Komut Dosyası Dili ve Programlama Dili arasındaki farkı lütfen açıklayabilir misiniz?
Ayrıca her biri için bazı örnekler verebilir misiniz? Çok fazla Google'ı aradım ama her zaman Stack Overflow'dan en iyi yanıtları buluyorum.
Yanıtlar:
Komut dosyası dilleri, açık bir derleme adımı gerektirmeyen programlama dilleridir.
Örneğin, normal durumda, bir C programını çalıştırmadan önce derlemeniz gerekir. Ancak normal durumda, bir JavaScript programını çalıştırmadan önce derlemenize gerek yoktur. Dolayısıyla JavaScript'e bazen "komut dosyası" dili denir.
Modern donanım ve modern derleme teknikleri ile derleme çok hızlı olabileceğinden, bu çizgi gittikçe bulanıklaşıyor. Örneğin, Google Chrome'daki JavaScript motoru olan ve tarayıcının dışında da çok kullanılan V8, aslında JavaScript kodunu yorumlamak yerine anında makine koduna derler. (Aslında, V8 optimize edici iki fazlı bir derleyicidir.)
Ayrıca, bir dilin "komut dosyası" dili olup olmadığının çevre hakkında dilden daha fazla olabileceğini unutmayın. Bir C tercümanı yazamamanızın ve bunu bir betik dili olarak (ve insanların sahip olduğu) kullanmamanızın bir nedeni yoktur. JavaScript'i makine koduna derleyememenizin ve bunu yürütülebilir bir dosyada (ve kişilerin sahip olduğu) depolamamanızın bir nedeni yoktur. Ruby dili buna iyi bir örnektir: Orijinal uygulama tamamen yorumlanmıştır (bir "betik" dili), ancak şimdi bunun için birden fazla derleyici var.
"Komut dosyası oluşturma" dillerinden bazı örnekler (örneğin, geleneksel olarak açık bir derleme adımı olmadan kullanılan diller ):
Ve geleneksel olarak açık bir derleme adımı ile kullanılanların küçük bir saçılması :
... ve sonra her iki kampta da oturan Python gibi şeyleriniz var: Python derleme adımı olmadan yaygın olarak kullanılır, ancak ana uygulama (CPython) bunu bayt kodunu derlemede derleyip bayt kodunu bir VM ve yapabilirsiniz dosyaları (bu bayt kodunu yazmak .pyc
, .pyo
yeniden derlemeden kullanım için).
Bu çok az, eğer biraz araştırma yaparsanız çok daha fazlasını bulabilirsiniz.
Komut dosyası dili ile programlama dili arasındaki farkı anlamak için, komut dosyası dillerinin neden doğduğunu anlamak gerekir.
Başlangıçta, excel, word, tarayıcılar, oyunlar ve benzeri programlar oluşturmak için yazılmış programlama dilleri vardı. Bu programlar c ve java gibi dillerle oluşturuldu. Fazla mesai, bu programlar kullanıcıların yeni işlevsellik yaratmaları için bir yola ihtiyaç duyuyordu, bu yüzden bayt kodlarına bir arayüz sağlamak zorunda kaldılar ve böylece kodlama dilleri doğdu.
Bir komut dosyası dili genellikle derlenmez, bu nedenle anlamlı bir şey yazdığınızda çalışabilir. Bu nedenle excel C ++ kullanılarak oluşturulabilir, ancak kullanıcıların işlevselliği tanımlaması için VBA adlı bir komut dosyası dili ortaya çıkarır. Benzer şekilde tarayıcılar C ++ / Java ile oluşturulabilir, ancak javascript (herhangi bir şekilde java ile ilgili değil) adı verilen bir betik dili ortaya koyarlar. Oyunlar, genellikle C ++ ile oluşturulur, ancak kullanıcıların özel işlevleri tanımlamaları için Lua adlı bir dili ortaya çıkarır.
Komut dosyası dili genellikle bazı programlama dillerinin arkasında bulunur. Komut dosyası yazma dilleri, orijinal programlama dilinin bir alt kümesinde çalıştıklarından genellikle bilgisayarın yerel yeteneklerine daha az erişime sahiptir. Burada bir örnek Javascript'in dosya sisteminize erişemeyeceğidir. Komut dosyası yazma dilleri genellikle programlama dillerinden daha yavaştır.
Komut dosyası dilleri daha az erişime ve daha yavaş olmasına rağmen, çok güçlü araçlar olabilirler. Komut dosyası oluşturma dillerinin başarısına atfedilen bir faktör, güncelleme kolaylığıdır. Web üzerindeki java uygulamalarının günlerini hatırlıyor musunuz, bu bir programlama dili (java) veya bir komut dosyası dili (javascript) çalıştırma örneğidir. O zamanlar bilgisayarlar o kadar güçlü değildi ve javascript o kadar olgun değildi, bu yüzden Java uygulamaları sahneleri domine etti. Ancak Java uygulamaları can sıkıcıydı, kullanıcının dili bir şekilde yüklemesini ve derlemesini gerektiriyordu. Günümüze gelince, Java uygulamaları neredeyse tükenmiş ve Javascript sahneye hakim. Tarayıcı bileşenlerinin çoğu zaten kurulduğundan, Javascript'in yüklenmesi son derece hızlıdır.
Son olarak, betik dilleri de programlama dilleri olarak kabul edilir (bazı insanlar bunu kabul etmeyi reddetse de) - burada kullanmamız gereken terim, derlenmiş dillere karşı betik dilleri.
Farklılıklar gittikçe önem kazanıyor. Geleneksel olarak, betik dilleri mevcut programları genişletir ... Bence bu "betiklemenin" ana tanımı, mevcut bir varlığın gerçekleştirmesi için bir dizi talimat yazmayı ifade etmesidir. Ancak, komut dosyası dillerinin özel ve konuşma diline dayalı sözdizimi ile başladığı yerlerde, günümüzde yaygın olanların çoğu C ile bir miktar borçludur.
"Yorumlanan ve derlenen" ayrımın gerçek bir farktan ziyade mevcut bir programı (yerleşik bir tercümanla) genişletmenin bir belirtisi olduğunu düşünüyorum. Hangi programcılar ve meslekten olmayanlar, "programcı ne yapıyor?" Bir programın yorumlanması ve başka bir programın derlenmesi, içerik oluşturucunun etkinlik farkını belirlemede çok az anlama gelir. Bir oyun yazarının, oyunlarının daha yaygın olarak yüksek sesle okunması veya sahnede icra edilmesine karar vermezsiniz, değil mi?
Programlama Dili: Makine koduna derlenir ve temel İşletim Sisteminin donanımında çalışır.
Komut Dosyası Dili: Programlama dilinin yapı alt kümesidir. Genellikle yorumlanır. temelde bir şeyler yapmak için başka şeyler "betik". Birincil odak noktası öncelikle kendi uygulamalarınızı oluşturmak değil, mevcut bir uygulamanın istediğiniz gibi davranmasını sağlamaktır, örneğin tarayıcılar için JavaScript, TCL vb.
*** Ancak bir programlama dilinin tercümana dönüştürüldüğü ve kullanımın tersi gibi bir durum söz konusu olduğunda, 'C' Senaryosu yapabileceğiniz bir C tercümanı vardır. Komut dosyaları genellikle bir uygulama davranışını denetlemek için yazılır; burada Programlama Dili uygulama oluşturmak için kullanılır. Ancak, Python örneği olarak sınırlamanın her geçen gün bulanıklaştığına dikkat edin, bu dilin nasıl kullanıldığına bağlıdır.
Komut dosyası dilleri, programlama dillerinin bir alt kümesidir.
"Fark" olarak belirttiğiniz şeyin aslında gerçek farkın bir sonucu olduğunu düşünüyorum.
Gerçek fark, yazılan kodun hedefidir. Bu kodu kim yönetecek?
Bir yazılım sistemini hedefleyecek kodu yazmak için bir komut dosyası dili kullanılır. Bu yazılım sistemindeki işlemleri otomatikleştirecek. Komut dosyası, hedef yazılım sistemine yönelik bir talimatlar dizisi olacaktır.
Bir programlama dili, gerçek veya sanal bir makine olabilen bilgisayar sistemini hedefler. Talimatlar makine tarafından yürütülür.
Tabii ki, gerçek bir makine sadece ikili kodu anlar, bu nedenle bir programlama dilinin kodunu derlemeniz gerekir. Ancak bu, bir program yerine bir makineyi hedeflemenin bir sonucudur.
Diğer yandan, bir komut dosyasının hedef yazılım sistemi kodu derleyebilir veya yorumlayabilir. Yazılım sistemine kalmış.
Eğer gerçek fark derlenmiş olsun ya da olmasın deriz, o zaman bir sorun var çünkü V8 Javascript çalışır derlendi ve Rhino çalışır değil.
Betik dilleri çok güçlü olmak için evrimleştiği için kafa karıştırıcı bir hal alıyor. Bu nedenle, başka bir yazılım sistemindeki işlemleri otomatikleştirmek için küçük komut dosyaları oluşturmakla sınırlı değildirler, onlarla zengin uygulamalar oluşturabilirsiniz.
Python kodu bir tercümanı hedefler, böylece söz konusu tercümandaki işlemleri "betiklediğini" söyleyebiliriz. Ancak Python kodunu yazdığınızda, bunu bir yorumlayıcı komut dosyası olarak görmüyorsunuz, onu bir uygulama oluştururken görüyorsunuz. Tercüman, diğer şeylerin yanı sıra daha üst düzeyde kodlama yapmak için oradadır. Bu yüzden benim için Python bir kodlama dilinden çok bir programlama dilidir.
Dünya gençken ve PC dünyasında .exe veya .bat'ı seçtiyseniz, tasvir basitti. Unix sistemleri her zaman kabuk komut dosyalarına (/ bin / sh, / bin / csh, / bin / ksh vb.) Ve Derlenmiş dillere (C / C ++ / Fortran) sahiptir.
Rolleri ve sorumlulukları ayırt etmek için, derlenen diller (genellikle 3.Nesil Diller olarak adlandırılır) bir 'programlama' dilleri ve 'kodlama' dilleri, bir tercüman (genellikle 4.Nesil Diller olarak adlandırılır) olarak adlandırılan diller olarak görülüyordu. Komut dosyası dilleri genellikle birden çok komut / derlenmiş program arasında bağlantı kurmak için 'tutkal' olarak kullanıldı, böylece kullanıcı görevlerini yerine getirmek için bir dizi adım hakkında endişelenmek zorunda kalmadı - tek bir dosya geliştirdiler, bu hangi adımları belirledi başarmak istediler ve bu herkesin izleyeceği bir 'senaryo' oldu.
Çeşitli insanlar / gruplar belirli bir problem alanını çözmek için yeni tercümanlar yazdı. awk daha iyi bilinenlerden biridir ve çoğunlukla desen eşleştirme ve girdi üzerine bir dizi veri dönüşümü uygulamak için kullanılmıştır. İyi çalıştı, ancak sınırlı bir etki alanı vardı. Kaynak kodun kullanılamaması nedeniyle bu alanın genişletilmesi imkansızdı. Perl (Larry Wall, prensip yazarı / mimar) aracı komut dosyası oluşturma bir sonraki seviyeye - ve kullanıcının sadece sistem komutlarını çalıştırmasına, giriş ve çıkış verilerini değiştirmesine, desteklenen tipsiz değişkenlere erişmesine izin vermeyen, aynı zamanda Unix sistem seviyesi API'lerine erişmesine izin veren bir tercüman geliştirdi. komut dosyalarının içindeki işlevler olarak. Muhtemelen yaygın olarak kullanılan ilk üst düzey komut dosyası dillerinden biriydi.
Sorunuz özellikle Python ile ilgiliydi. Python yorumlayıcısı, python kodunu içeren bir metin dosyasına karşı çalıştığından ve python kodunun bir python yorumlayıcısının olduğu her yerde çalışabileceğinden, bir komut dosyası dili olduğunu söyleyebilirim (Perl ile aynı damarda). Her farklı OS / CPU Mimarisi için kullanıcı python komut dosyasını yeniden derlemenize gerek yoktur (C / C ++ / Fortran'da olduğu gibi), böylece daha taşınabilir ve kullanımı daha kolay hale gelir.
Bu cevabın kredisi Jerrold (Jerry) Heyman'a gidiyor. Orijinal konu: https://www.researchgate.net/post/Is_Python_a_Programming_language_or_Scripting_Language
Tercüman kullanan dillerin kodlama dilleri olduğu ve bir dilin programlama dilleri olduğu bir anlaşmazlık yaşıyorum. Herhangi bir dil için bir tercüman veya derleyici geliştirebiliriz. Yorumlanan ortam, web komut dizisine daha iyi uyar ve bunu kolaylaştırır.
Komut dosyası dili ile programlama dili arasında herhangi bir fark olmadığını hissediyorum. Her şey işi yapmakla ilgili. Web ile ilgili görevler söz konusu olduğunda, onlara küçük görevleri göz önünde bulundurarak Web komut dosyaları diyoruz ve bu şekilde sistemle ilgili görevleri sistem veya işletim sistemi düzeyinde komut dosyaları olarak ve bu görevleri sistem komut dosyası dilleri olarak gerçekleştirmek için kullandığımız programlama dili olarak da adlandırabiliriz.
Ayrıca, Python ve Web komut dosyalarında sistem düzeyinde kod C dilinde yazılamaz (kesinlikle gerekli platformu ve ortamı kurabilirsek yapabiliriz). Ancak gereken tek şey, hızlı gelişme için zaman kısıtlamasını etkileyebilecek çok fazla çaba ve azaltılmış küçük gecikme süresi, web betiklerinde bize çok fazla fayda sağlamayacaktır. Ancak Python'da sistem seviyesi görevleri gerçekleştirirsek, bunun tersi doğru değildir.
Alt satır: dil seçimi, gerçekleştirilecek görevin doğasına bağlıdır ve bir dili betik dili bir efsane olduğu için ayırt etmek.
Komut dosyası dilleri başka bir programda yorumlanır. JavaScript bir tarayıcıya yerleştirilir ve bu tarayıcı tarafından yorumlanır.
Komut dosyası dilleri örnekleri
Komut Dosyası dillerinin avantajları:
Basit - Kodlama dillerinin yazılması programlama dilinden daha kolaydır.
Daha Az Kod Satırı (LOC)
Java gibi programlama dilleri derlenir ve başka bir uygulama tarafından aynı şekilde yorumlanmaz.
Programlama dilleri örnekleri
(JavaScript ve eski PHP sürümleri gibi) Komut Dosyası dillerinde işimizi gerçekleştirmek için mevcut temel işlevleri ve yöntemi kullanırız. JavaScript
Kullanabileceğimiz bir örnek verelim ajax
veyaweb-sockets
yalnızca tarayıcı veya yöntemler tarafından destekleniyorsa veya tarayıcıda bunları kullanabiliriz. Ancak C veya C ++, Java gibi dillerde, bu özellik için herhangi bir kütüphane mevcut olmasa bile, bu özelliği sıfırdan yazabiliriz, ancak JavaScript'te yapamayız.
Internet Explorer 8 veya öncesinde web soketlerini JavaScript yardımı ile destekleyebilir misiniz? ancak C veya C ++ veya Java'da Internet Explorer 8'e web soketi özelliği ekleyebilecek bir eklenti yazabilirsiniz.
Temel olarak Komut Dosyası dillerinde, işimizi tamamlamak için var olan yöntemleri sırayla yürüten bir kod yazarız. Bir işlem yapmak için dijital bir hesap makinesine sayı ve formül girmek de komut dosyası diline çok iyi bir örnektir. ve yöntemler ve yeni kütüphaneler yazabilir.
PHP Bu biraz s / b programlama ve kodlama dilidir. Başka bir Üst Düzey Dilde yazılmış derlenmiş uzantılar ekleyerek yeni yöntemler ekleyebiliriz. Doğrudan PHP'de ağ oluşturma veya görüntü işleme kütüphaneleri oluşturmanın üst düzey özelliklerini ekleyemeyiz.
PS: Sadece PHP JavaScript etrafında cevabımı döndürdüğüm için gerçekten üzgünüm ama bu ikisinde önemli bir deneyime sahip olduğum için bu ikisini kullanıyorum.
Komut Dosyası dilinin Yorumlanması ve Programlama dilinin Derlenmesi arasındaki farkın dışında, sanırım kaçırılan başka bir fark daha var ..
Komut dosyası oluşturma dili, varolan bir sistemin olanaklarını işlemek, özelleştirmek ve otomatikleştirmek için kullanılan bir programlama dilidir. Bu tür sistemlerde, kullanışlı işlevsellik bir kullanıcı arabirimi aracılığıyla zaten kullanılabilir ve kodlama dili bu işlevselliği program denetimine maruz bırakmaya yönelik bir mekanizmadır.
Oysa genellikle Scratch'tan sistemi kodlamak için bir Programlama Dili kullanılır.
src ECMA
Mantıksal olarak programlama dilini ve komut dosyası dilini görürsek, bu% 99,09'dur. çünkü döngü, kontrol koşulu, değişken gibi aynı kavramları kullanıyoruz ve evet diyebiliriz ki her ikisi de aynıdır, ancak C / C ++ ve kod çalıştırmadan önce derlediğimiz diğer programlama dilleri arasında sadece bir şey farklıdır. ancak PHP, JavaScript ve diğer kodlama dillerinde derlememiz gerekmez, doğrudan tarayıcıda yürütürüz.
Teşekkürler Nitish K. Jha
Komut dosyası dilleri, insanların komut dosyası dili olarak kabul ettiği programlama dilleridir. Açık bir sınırı olmayan yapay bir kategoridir ve önerilen her kuralın bir istisnası vardır.
Bir dilin bir betik dili olduğunu söylemek için kullanılan klasik kurallar tanımlayıcı değil karakterize edicidir. Bir dil bir dizi kuralı karşılıyorsa, bir betik dili olarak görülme şansı yüksektir. Değilse, iyi bir şans yoktur. Kurallar genellikle şunları içerir:
Ekleyeceğim:
Yani öyle, olabilir bir dil olması.
Bir programlama dilinin kodu analiz ettiği ve programı çalıştırmadan hataları C, Java veya C # gibi hatalar gibi raporladığı önemli bir "derleme zamanı" davranışı varsa, büyük olasılıkla komut dosyası dili olarak kabul edilmez.
Geleneksel olarak birçok komut dosyası dili doğrudan kaynaktan yorumlanmıştır, ancak daha popüler olanları, Python'un .pyc
dosyaları gibi kodu derleyen veya çalıştırmadan önce yerel koda derleyen JavaScript motorlarını optimize eden daha performanslı uygulamalar almıştır .
Dil varsa olabilir onu çalıştıran sadece kaynak koduna bakar bir tercüman tarafından uygulanacak, daha sonra büyük olasılıkla bir komut dosyası dili olarak kabul edilir. Aslında bu şekilde uygulanıp uygulanmadığı önemli değildir, ancak olabilirse, kodun derleme zamanı hata denetimini kapsamlı olarak gerektiremez.
Dil, programı çalıştırmaya gerek kalmadan hataları (sözdizimi hataları dışında) algılamaya yardımcı olan kullanışlı bir statik anlambilim sağlıyorsa, muhtemelen bir komut dosyası dili değildir.
Her zaman, herhangi bir gerçek kuraldan daha fazla bir dil etrafında geleneğe dayanan istisnalar vardır. BASIC, herkesin şimdiye kadar bir dil olarak kullandığı tüm kriterleri karşılasa da, genellikle bir "betik dili" olarak kabul edilmez. Bu nedenle, Visual Basic Script, kendisini daha büyük programlara yönelik "gerçek" bir programlama dili olan Visual Basic'ten ayırt etmek için, "script" adını eklemek zorundaydı.
BASIC ayrıca COBOL ve Fortran gibi eski bir programlama dilidir, insanlar bir dilden statik analiz beklemeden ve temelde "betik dilleri" bile bir şeydi.