HTML'nin bir biçimlendirme dili olduğu, C ++ 'ın bir programlama dili olduğu söylendi, bu farkı ne yapabilirdi?


22

Programlama arkadaşlarım bana her zaman HTML'nin bir biçimlendirme dili ve C ++ 'nın bir programlama dili olduğunu söyler. Onlara farkın ne olduğunu sorduğumda, bana asla makul bir cevap vermediler.

Biri C ++ 'ı bir programlama dili yapan ve HTML olmayan kılan nedir?


5
Turing'in tamamlanmasından başka bir şey mi demek istiyorsun?
Manoj R

1
@ManojR Tüm Turing dillerinin tamamı programlama dili olarak kabul edilmez, örneğin XSLT.
yannis

Kapanış Re en meta Q / A bölümüne bakın meta.programmers.stackexchange.com/q/5397/70298
miraculixx

1
Harika düzenleme @gnat, thanks. Soru yeniden açıldı, eski yorumlar kaldırıldı.
yannis

1
@YannisRizos Sadece OP tarafından verilen açıklama kopyalanan yorumlarda . Bu kadar çok kullanıcının neden yazılar hakkında yorumlarda düzenleme yapmak yerine önemli şeyler bıraktığını merak edin; kendimi neredeyse her zaman
yazımı

Yanıtlar:


45

Bir programlama dili, talimatları bir makineye geçirmek için tasarlanmış bir nottur. Bu tanım gereği hem C ++ hem de HTML programlama dilleridir, Joseph Marie Jacquard'ın 1801'de tezgâhlarını programlamak için kullandığı gösterimdir .

Bununla birlikte, verileri yapılandırmak ve / veya tanımlamak için kullanılan dillerin çoğalmasıyla birlikte, bir programlama dilinin tanımı yalnızca algoritmaları ifade edebilecek dilleri içerecek şekilde kaydırılmıştır. Bu, günümüzde daha yaygın olan tanımdır ve HTML veya XML gibi dilleri dışlar.

Mevcut tanımın merkezinde Turing eksiksizliği kavramı var . Çoğu programlama dili Turing tamamlandı ve Turing tamlığı genellikle bir programlama dilini diğer bilgisayar dillerinden ayıran önemli bir özellik olarak belirtiliyor. Bu genel bir kural olarak yeterince iyi, ancak tam olarak doğru değil:

  1. Bazı Turing dili olmayan tam diller programlama dili olarak kabul edilir, örneğin Yardımseverlik .
  2. Genel olarak programlama dili olarak kabul edilmeyen bazı diller Turing tamamlandı, örneğin XSLT .
  3. Bütünlüğü yalnız bırakmak, bir dilin faydası hakkında fazla bir şey ifade etmiyor .

Bağlama bağlı olarak, istediğiniz tanımı seçebilirsiniz.

Düzenle:

Daha da bilinmesine izin verin, bir dilin bir uygulaması dilin kendine has özellikler vermez, örneğin: Bir dilin spesiyali bir turing tam dilini tanımlayabilir, birisi onu turkuaz bir şekilde tamamlamayı bırakarak yerine getirebilir. Bununla birlikte, bu uygulamanın süresiz olması, dilin kendisinin de tamamlanmadığı anlamına gelmez (bunun yerine uygulamanın uygun olmadığı anlamına gelir). Bir dilin detayları ve bir dilin belirli bir uygulamasının detayları ayrı şeyler olarak kabul edilmeli, bu yüzden yanlış yorumlanmış veya derlenmiş bir dil aramak yanlış olur.


6
“Bir programlama dili olarak düşünülmeyen XSLT” hakkında ayrıntılı bilgi verebilir misiniz? Bunu hiç görmedim ve IMO bunu söylerken birinin PLs ile olan bilgisini veya yetkinliğini sorgulayacağım. XSLT'nin bir PL olarak kabul edilmemesi için herhangi bir sebep bile düşünemiyorum (XSLT hafif bir türetme kargaşası olabilir ama bu başka bir konu).
13'te

@bhaak Bir programlama dili olarak kabul edilmemesi gerektiğini söylemiyorum . Veri dönüştürme dilleri genel olarak programlama dilleri olarak düşünülmez, bunlar programlama dilleri olsun ya da olmasınlar için kesinlikle hiçbir şey söylemez. XSLT'de iş mantığı gördüm ve bizzat kendisinin bir programlama dili olduğunu düşünüyorum. Ama işte ilk görmemiş olsaydım, muhtemelen olmazdı. Her durumda kimin umrunda?
yannis

Tamamlanmanın ne demek olduğuna bir veya iki cümle ekleyebilirsiniz.
phant0m


@ think123 Vikipedi'dekinden daha basit bir tanım verebileceğimi sanmıyorum ve bu sorunun cevabındaki ilgili makaleye zaten bağlıyım.
yannis

5

İfade "Gördüğümde biliyorum" kategorisi özneldir veya açıkça parametreleri tanımlanmış yoksun olmasına rağmen, bir hoparlör girişimleri gözlemlenebilir bir gerçeği veya olayı kategorize etmek hangi bir argo ifadesidir. Bu ifade, Amerika Birleşik Devletleri Yüksek Mahkemesi Adalet Potter Stewart tarafından Jacobellis / Ohio’daki (1964) müstehcenlik eşik testini tanımlamak için kullanıldı .

- "Gördüğümde biliyorum" Wikipedia makalesi

Müstehcenlik gibi, bence hepimiz bir tane gördüğümüzde bir programlama dili biliyoruz. Açıkçası OP zaten C ++ 'ı bir programlama dili olarak düşündüğünüzden ve HTML'nin bir olmadığı için yapıyor.

Peki, resmi bir tanımlamanın peşinde koşma hedefi tam olarak nedir? Yannis, en popüler tanımı olan Turing bütünlüğünün neden hatalı olduğunu çoktan anladı: “Gördüğümde biliyorum” testine karşı çıkan kategorizasyona yol açtı.

Size, ortaya koyabileceğiniz herhangi bir tanımlamanın, hepimizin "programlama" olmadığını düşündüğümüz bazı dillere yol açacağını, bu şekilde kategorize edileceğini; veya hepimizin "programlama" olduğunu düşündüğümüz bazı diller , dillerin öyle olmadığı şeklinde kategorize edilecektir .

Neden değil sadece gut ile gitmek? Basit bir sezgisel kullanıyorum: bir programlama dili, benim görüşüme göre ve benim görüşüme göre programlar yazmak olan ana dilidir. İçeriği işaretlememek. XML dönüştürmek değil. Genel amaçlı programlar yazmak. Resmi tanımı tanımlamaya çalışmak yerine, gördüğümde bilmeyi tercih ederim ve böyle bir tanımı denemekten gelebilecek gerçek bir değer göremiyorum.


Fakat şimdi "programlama dillerini" "genel amaçlı programlama dilleri" ile sınırlandırıyorsunuz. İkincisi, insanların "programlama dili" derken genellikle ne anlama geldiklerini ifade eder, ancak bir "programlama dili" nin tanımlayıcı özelliklerinin tam olarak ne olduğunu takip etmek, aynı zamanda programlama dillerinin ne olduğunu, nasıl çalıştıklarını ve sınırlamalarının ne anlama geldiğini de ifade eder. Örneğin, yetenekli herhangi bir programcı, programlama dillerinin teorik sınırlarını incelemeden zor olacak olan, karşılaştığında durma problemini tanımalıdır.
JesperE

@JesperE: "Gördüğümde bilirim" kararımı, en azından amaç olarak oldukça genel olan programlama dilleriyle ilgili yargılarımı sınırlamaktan mutluluk duyuyorum. Ayrıca, "herhangi bir yetenekli programcının" durma problemi hakkında herhangi bir bilgiye ihtiyacı olduğunu kabul etmiyorum - bu konuyu benim örgün bilgisayar bilimleri eğitimimden edindiğim bilgilerle neredeyse yirmi yıllık mesleki gelişimde hiç ilgimi çekmedi.
Carson63000

1
Eğer onu büyütmek zorunda kalmadıysan, muhtemelen bu iyi. Bu bilmek önemli olmadığı anlamına gelmez. Emniyet kemerinizin kalitesini, gerçekte ne sıklıkta kullanıldığına göre yargılamazsınız, değil mi?
JesperE

Sezgisel olarak, elisp bir programlama dili midir?
Brian

@Brian: ilginç bir! Sanırım her zaman basitçe bir programlama dili olan Lisp'in bir uygulaması olarak düşünmüştüm, bu özel uygulama amacı açısından daha belirgin olsa da .
Carson63000,

2

Biçimlendirme dilleri temel olarak bilgilerin nasıl görüntülendiğiyle ilgilidir ve genellikle değişkenlerin programlama altyapısı, matematik, karşılaştırma, karar verme (eğer öyleyse), döngüler (süre için), vb.

HTML kendiliğinden statiktir; yani, bir kelime işlemci gibi, bilgiyi olduğu gibi sunmak amaçlanmıştır. Yalnızca bazı programlama dillerinin eklenmesiyle (genellikle JavaScript, PHP, vb. Betik dilleri) HTML web sayfalarında "değişen" bir içerik bulunabilir. Betik dilleri değişkenler, matematik, karşılaştırmalar, karar verme, döngüler vb. İle "programlama" olanakları sunar.


0

HTML, bildirimsel bir dildir. Kendi başına fazla bir şey yapmıyor, sadece bir belgeyi ve içeriğini (anlamsal bir anlamı olan etiketleri kullanarak) açıklıyor.

C ++ ise bir şeyler yapar. İşlevleri ve sınıfları tanımlar, ancak bu işlevlerin birlikte nasıl çalışması gerektiğini, girdilerinin ve çıktılarının anlamlı bir şekilde nasıl bağlandıklarını ve uygulamanın bir bütün olarak nasıl çalışması gerektiğini de açıklar.

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.