Farklı bir simge yerine noktalı virgülün satır sonlandırıcı olarak seçilmesinin bir nedeni var mı?
Bu kararın arkasındaki tarihi bilmek istiyorum ve cevapların gelecekteki kararları etkileyebilecek içgörülere yol açacağını umuyorum.
Farklı bir simge yerine noktalı virgülün satır sonlandırıcı olarak seçilmesinin bir nedeni var mı?
Bu kararın arkasındaki tarihi bilmek istiyorum ve cevapların gelecekteki kararları etkileyebilecek içgörülere yol açacağını umuyorum.
Yanıtlar:
İngilizce’de noktalı virgül, ifadeler listesindeki öğeleri ayırmak için kullanılır, örneğin
Üç adam gördü: Yeni Zelanda'dan gelen Jamie; John, sütçü oğlu; ve George, bir tür adam.
Programlama sırasında birkaç ifadeyi ayırıyor ve tam bir durak kullanmak ondalık basamak için kolayca karıştırılabilir. Noktalı virgül kullanmak, normal İngilizce noktalama işaretine yakın kalırken, ayrı ayrı program deyimlerini ayırmanın kolay bir yöntemini sağlar.
Eklemek için düzenleme
Belleğin pahalı olduğu ilk günlerde, yavaş işlemeler ve ilk programlama dilleri tasarlandığında, programı işleme için ayrı ifadelere ayırma ihtiyacı vardı. Bazı diller, her ifadenin satır üzerine yerleştirilmesini zorunlu tuttu, böylece satırbaşının ifadesi sınırlayıcı olarak davranabildi. Diğer diller, metin düzeninde daha özgür bir biçime izin verdi ve bu nedenle belirli bir sınırlayıcı karakter gerektiriyordu. Bu karakter noktalı virgül olarak seçildi, büyük olasılıkla İngilizce'deki kullanımına benzerlikten dolayı (bu bir varsayım olmalı; o zamanlar orada değildim) ve diğer noktalama işaretleriyle bir çelişki yaratmadı. matematiksel veya diğer sözdizimsel amaçlar için gerekli olan işaret ve semboller.
Yeniden
düzenleyin Bazı sonlandırıcı karakterlere duyulan ihtiyaç, dil metnini ayrıştırma gereksinimlerine geri döner. İlk derleyiciler, montaj dilinde veya bazı durumlarda doğrudan el yapımı ikili makine talimatlarında yazılmıştır. İfadenin sonunu tanımlayan ve işlenmekte olan metin yığınını sınırlayan özel bir karaktere sahip olmak işlemeyi çok daha kolaylaştırır. Yukarıda söylediğim gibi, diğer diller taşıma iadesini veya desteklerini kullandı. Algol, Pascal, Ada, BCPL, B, C, PL / M ve diğer dil aileleri noktalı virgül kullanmaktadır. Bu özel karakteri ilk kullanan kişi olarak, tarihte hatırlamak için yeterince geriye gitmiyorum. Seçimi ve benimsenmesi,
Son bir not olarak, bu cevapları ve yorumları harcayarak, bu şekilde kullanılan ilk dili tasarlarken bir ifadeyi sonlandırmak için noktalı virgül kullanmaya karar vermekten daha fazla zaman geçtiğini düşünüyorum.
Birçok dil, C'den sonra modellenen ( B - thanks @Crollster'dan sonra modellenen) sözdizimini kullanır . Yorumlarda görülebileceği gibi, bu tür dillerden oluşan uzun bir zincir var ... B, ALGOL tarafından ;
ayırıcı olarak kullanılmasından önce gelen PL / I'den ilham aldı .
C'de ifade sonlandırıcısı olduğundan ;
, bu diller buna uygundur.
Neden C de bir ifade sonlandırıcısı olarak seçildi - muhtemelen "birbirine bağlı ifadeleri belirtmek için" ingilizce kullanımı nedeniyle .
C, karakter setleri için sınırlı miktarda belleğin olduğu bir zamanda PDP-11'de de icat edildi, bu nedenle dillerin mucitleri bu sınırlamalar içinde çalışmak zorunda kaldı.
FORTRAN taşıyıcı ifadelerini tanımlamaya geri döndürdü. COBOL kullanılan süre. LISP hiçbir şey kullanmadı, her şeyin parantezine dayandı. ALGOL ifadeleri ayırmak için noktalı virgül kullanan ilk dildir. PASCAL, ALGOL liderliğini takip etti ve ifadeleri ayırmak için noktalı virgül kullandı.
PL / İfadeleri sonlandırmak için noktalı virgül kullandım. Arada fark var ve kolayca PASCAL'da görülüyor. Ada, ALGOL'den ziyade PL / I'in liderliğini bu kalemden takip etti.
İfade ayırıcı veya sonlandırıcı olarak noktalı virgül, bilgisayar bilimleri topluluğu tarafından yararlı bir gösterim olarak hızlı bir şekilde kabul edildi ve bildiğim kadarıyla, her sonraki blok yapılı dil, ALGOL’un öncülüğünü izledi ve bildirimleri ayırmak veya sonlandırmak için noktalı virgül kullandı.
Ben BCPL hem noktalı virgül kullanılan yıllar önce söylendi VE deyimi ayırıcılar / sonlandırıcı olarak satırbaşı ama dilini kendim kullanılmış ve bu doğrulayamıyorum asla. Bir noktada, taşıma iadesinin beyanları ayırmak ya da sonlandırmak için kullanımı BCPL soyundan geliyor. BCPL, B'ye, B'ye, C'ye, C'ye, C ++, Java, D'ye ve PASCAL ve Ada'dan çok daha az iyi düşünülmüş şeylere ev sahipliği yaptı.
Neden başka bir sembol yok?
Birkaç dil başka semboller kullanmıştır - örneğin BASIC'in eski versiyonlarında bir örnek olarak bir sütun kullanılmıştır.
Ancak birkaç istisna gözardı edildiğinde, iki temel sebep olduğunu düşünüyorum. Birincisi, sadece net olmayan bir şey aradığınızdır. Tipik bir ayrıştırıcıda, geçerli ifadeyi ayrıştırmaya devam edemeyeceğiniz yeterince ciddi bir hatayla karşılaşırsanız, normalde ayrıştırıcıyı deyim sonlandırıcısına atlayarak ve ayrıştırıcıyı yeniden başlatıp yeniden başlatarak eşitlemeye geri dönmeye çalışırsınız. bir sonraki ifadenin başlangıcı. Bunun için, normalde kodun başka hiçbir yerinde oluşmayacak bir şey istersiniz ve noktalı virgül ekli küçük anlamlara sahip bir simge olur, bu yüzden bu amaca adamak oldukça kolaydır.
İkinci sebep ise biraz benzerdir, ancak kodu okuyan / kullanan insanlara yöneliktir. Yine, kullandığınız asıl sembolün pek önemi olmadığı gerçeğine geri dönersiniz. Okuyucunuzun, okuyucunuzun belirli bir amaç için ne zaman ve mümkünse görmeye alışkın olduğu sembolünü kullanmaya başlamasından kazanmanın önemli bir avantajı vardır. Bu, C'nin mükemmel bir sözdizimi olduğu ve diğer her şeyin slavice takip etmesi gerektiği anlamına gelmez, ancak bu, yeterince belirgin bir dilin çok fazla kazandığı (ve çok az kaybedeceği) bu sözdizimi tarzına aşina olduğu anlamına gelir. kabaca aynı sözdizimi olabilir.
Bunun neredeyse başka bir program tasarlamaya çok benzeyeceğini not ediyorum. Bir tür pencere kullanan bir program yazarsam, sadece hedef platformların yerel özelliklerini kullanmaya çalışırım. Vurgulanan kararların çoğu büyük ölçüde keyfi olacak ve herhangi bir önemli işlevsellik kaybı olmadan farklı bir şekilde yapılabilir - ancak eşit derecede, işlevsellikten önemli bir kazanç elde etmeden eşit şekilde değiştirmek, kullanıcıları işe yarar bir şey elde etmeden şaşırtıyor. Aynı temel ilkeler "bir dilde ifadeleri ne sonlandırmalı (veya ayırmalı")? "bir kaydırma çubuğu neye benzemelidir" veya "bir ağaç kontrolü nasıl çalışmalı?" Tüm bu durumlarda, karar çoğunlukla keyfidir ve tek biçimlilik kendi başına önemli bir fayda sağlar.
Aynı şeyin birçok dilde gerçekleştiğini de eklerdim, sadece çoğumuzun alışkın olduğu şekillerde programlama yapmadan önce pek az insan bunu düşünür. Neden herkes toplama yapmak için "+" ya da çıkartmayı göstermek için "-" kullanıyor? Çünkü sembolün şekli çok önemli değil, ancak her sembol için aynı anlamı uygulamayı kabul eden herkes çok önemli.
Noktalı virgül başlangıçta Algol 60'ta sonlandırıcı değil, deyim ayırıcı olarak önerildi .
Algol 60'tan önce, var olan tek üst seviye programlama dili, her bir ifadenin ayrı bir satırda olmasını gerektiren Fortran'dı. Do-döngüler gibi çoklu satırlara yayılan ifadeler tuhaflık olarak kabul edildi ve “açıklama blokları” olarak kabul edildi.
Algol 60 tasarımcıları ifadelerin hiyerarşik bir yapıya ihtiyaç duyduğunu (eğer öyleyse, döngüler, vaka ifadeleri vb.) Ve birbirlerinin içine yerleştirilebileceklerini anladılar. Dolayısıyla, her bir ifadenin ayrı bir çizgide oturması fikri artık bir anlam ifade etmiyordu. S1 formundaki ifadelerin sıralı bileşimi; S2; ...; Sn isteğe kapalı içinde başlayacak - uç braketleri çağrıldı bileşik ifadeleri ve Algol 60. öngördüğü ifadelerin hiyerarşik yapısına uyacak Yani, burada, noktalı virgül açıkça bir ifadedir ayırıcı değil, bir sonlandırıcı.
Bu uygulamada sorunlara yol açtı. Algol 60 ayrıca, hiçbir şey yazmadan ifade edilen "boş bir ifadeye" sahiptir. Yani, bir yazma "olabilir başlayacak S1; ucunu " o S1 sonlandırılıyor sanki noktalı virgül görünür. Fakat Algol 60 derleyicisi gerçekten S1 ile takip eden görünmez bir boş ifade arasında bir ayırıcı olarak nitelendirdi. Bu incelikler pratik programcılar için biraz fazlaydı. Assembly ve Fortran gibi dil odaklı dillere alışkın olduklarından, gerçekten bir noktalı virgül ifadeleri için bir sonlandırıcı olarak düşündüler. Programlar yazıldığında, genellikle noktalı virgül ifadelerin sonuna yerleştirildi, şöyle:
a [i]: = 0; i: = i + 1
ve noktalı virgül ilk ifade için gerçekten bir sonlandırıcı gibi görünüyordu. Programcılar noktalı virgül sonlandırıcı olarak değerlendirirse, bunun gibi bir ifade bir sözdizimi hatası verir:
eğer> 0 ise a [i]: = 0; Başka a [i]: = 1;
çünkü noktalı virgül "if" yi sonlandırır ve böylece "else" sarkar hale gelir. Programcıların kafası tamamen karıştı.
Bu nedenle, IBM'in çizgi odaklı Fortran'ın halefi olan PL / I, noktalı virgül ayırıcıdan ziyade bir deyim sonlandırıcı yapmaya karar verdi . Programcılar bu seçimden memnun kaldılar. Programlama dillerinin çoğu da buna uyuyordu. (Pascal eğilime direndi, ancak halefi Ada ondan vazgeçti.)
[Not eklendi: Vikipedi programlama dilleri karşılaştırmasıyla ilgili Wikipedia makalesinde, noktalı virgülün çeşitli programlama dillerinde nasıl işlendiğini özetleyen hoş bir tablo vardır.]
Bu oldukça saf tahmin işidir, ancak ASCII değerleriyle sınırlandırılmış standart bir QWERTY klavyeye bakmak, sonlandırma / ayırma işleminin doğal karakterleri olacaktır.!?,:; ve araba iadeleri. Bunlardan!?: birden fazla anahtar almak için derhal diskalifiye edilmeli ve bildirimin sonlandırılması çok yaygın bir şey olacaktır. Dönemler diskalifiye olur, çünkü ilk bilgisayarların sınırlı alanlarına sahip bir sonlandırıcı olması için onları gereksiz yere karmaşık hale getiren ondalık noktalarla kolayca karıştırılırlar. Satırların iadesi, kod satırları ekrandaki tek bir satırda gösterilenden daha uzun olma potansiyeline sahip olduktan sonra diskalifiye olur, böylece satırların yatay olarak kaydırılması gerektiğinde bir programın okunması daha zor olur. veya bir sonraki satırda tekrar karmaşıklık kazandıran bir devamı oluşturmak için ek karakterler istemek. bu yaprakları ve; seçeneklerin, bunlara göre yazılı olarak çok daha sık kullanıldığı; bu nedenle, noktalı virgül seçildiği için yazması daha kolay, daha az kafa karıştırıcı çünkü sınırlı bir anlamı olan ve bir karaktere daha az karmaşık olan bir karaktere anlam katıyor çünkü özel durumlarda kullanımı gerçekten mevcut değil.
Noktalı virgül seçildi, çünkü tembellik ve sadeliğe dayalı en iyi karakterdi.
Bu büyük ölçüde keyfi bir seçim. Bazı diller başka seçimler yaptı. COBOL ifadesini .
karakteriyle sonlandırır . FORTRAN, BASIC ve Python genellikle ifadeleri yeni satırlarla sonlandırır (çok satırlı ifadeler için özel sözdizimi ile). Ve Lisp ifadelerini parantez içinde alıyor.
Temel sebep ;
, bir ifade ayırıcı / sonlandırıcı olarak çok popüler olması, günümüzün popüler dillerinin çoğunun , bu sözleşmeyi kullanan ALGOL'e dayanmasıdır .
farklı bir sembol yerine?
Başka hangi sembolü seçebilirsin?
ASCII karakterleri # $ @ [] ^ _ `{|} ~ ISO 646 gibi erken karakter kodlamalarında her zaman mevcut değildi .
Karakterler ()*+-/<=>
genellikle matematiksel operatörler olarak kullanılır ve deyim sonlandırıcılar olarak kullanılırsa ayrıştırma belirsizlikleri oluşturur.
product = a * b * // If '*' were a statement terminator,
c * d * // Are there two factors, or four?
Benzer sorunlar için de geçerli olacak '
ve "
tipik dize sınırlayıcı olarak kullanıldıkları; ,
tipik olarak, fonksiyon argümanlarını ayırmak için kullanılır ve .
tipik olarak bir ondalık nokta (veya benzeri yapılarda bir sınırlayıcı olarak some_struct.some_field
) olarak kullanılır.
O ayrılıyor !%&:;?
.
Seçmek !
veya ?
muhtemelen teknik zorluklara neden olmaz, ancak İngilizce anlamları programa yanlış bir ruh hali verir.
print(x)? # Yes, you should.
# It's an IMPERATIVE language; stop questioning my commands.
print(x)! # OK! You don't have to shout!
Bu &
, açıklama ayırıcı olarak daha mantıklı bir seçim olacaktır (sonlandırıcı değil), çünkü
do_thing_a() &
do_thing_b()
şey A'yı yapmak için bir komut olarak okunabilir ve daha sonra bir ile bir şey B. Ama en dilleri yapmak &
operatör bir mantıksal veya Bitwise olarak kullanmak VE yerine.
%
İşareti gibi tablolara karışıklığa neden olabilir interest_rate = 2.99%
(değişkeni açardı 2.99
yerine beklenen ait 0.0299
). Tabii ki, iyi bilinen matematiksel anlam, %
C'nin geri kalan operatör olarak kullanılmasını durdurmadı.
Böylece bu bırakır :
ve ;
.
:
mantıklı bir seçimdir ve gerçekten de BASIC'in çoğu lehçesinde satır içi deyim ayırıcı olarak kullanılmaktadır.
Ama ;
yanında İngilizce gramer var; cümleleri bir cümle içinde ayırmak için kullanılabilir.
Başlık sorunuzu yanıtlamaya çalışmak yerine, örtük sorunuza odaklanmanın daha iyi olacağını düşünüyorum:
Bu kararın arkasındaki tarihi bilmek istiyorum ve cevapların, programlama dillerinin tasarımında ve uygulanmasında gelecekteki kararları etkileyebilecek içgörülere yol açacağını umuyorum.
Dil tasarımını ve uygulama tarihçesini programlama hakkında daha fazla bilgi edinmek ve bu süreçle ilgili daha fazla bilgi edinmek istiyorsanız , Programlama Dilleri Tarihi Konferanslarının başlatılması çok iyi bir yerdir. (Bence, yargılama işlemlerine erişebilmek için bir ACM üyeliğine ihtiyacınız olacak.)
Neden birçok programlama dilinde ifadeler noktalı virgüllerle sonlandırılıyor? Farklı bir simge yerine noktalı virgülün satır sonlandırıcı olarak seçilmesinin bir nedeni var mı?
Başlık sorunuzu HOPL işlemlerini okuyarak cevaplamak isteyebileceğiniz bir örnek soru olarak ele alarak, aşağıdaki noktayı sunmak isterim: yeni bir programlama dili tasarlayan insanlar genellikle bunu bildiklerini düşündükleri için yaparlar Bir şekilde kırılmış / eksik. Yeni dilleri bir yandan bu eksikliği gidermek için tasarlandı. Öte yandan, dil tasarımcıları tasarım öğelerini iyi olduklarını düşündükleri diğer dillerden de kopyalayacaklar veya sorun yaşamadıklarını değiştirmeyeceklerdir.
Özellikle son kısmı önemlidir: yerine şimdiye kadar ilk sonlandırıcı olarak noktalı virgül kullanmayı bir ve neden olduğu programlama dili öğrenmek çalışmakla muhtemelen vermedi dillere bakarak daha öğrenecektir ki kopyalanan diğer programlama dilleri bir sürü değil kopyalamak o. Smalltalk Simula ilham bir sürü alırken Örneğin, o yaptı değilsözdizimini ve özellikle de noktalı virgüllerini deyim sonlandırıcılar olarak kullanmasını kopyalayın. Sonlandırıcıları (gerçekten ayırıcılar) tamamen durdu ve noktalı virgül başka bir şey için kullandı. Tersine, bir deyim sonlandırıcısı olarak noktalı virgül kullanan ilk dilin, bundan önce gelen dillerde kullanılandan bunu değiştirmek için bir nedeni olabilir. Ayrıca, bir deyim sonlandırıcısının bütün kavramını tanıtan ilk dil olması (veya başka dillerden bağımsız olarak yapılmış olması) ve noktalı virgülün zamanla kaybedilmiş bir nedenden dolayı kullanılması da mümkündür. (İkincisi buradaki durum olduğundan şüpheliyim, çünkü diğer cevap verenlerin hiçbiri noktalı virgülün neden iyi bir seçim olduğu konusunda uyarlanmış önerilerde bulunmak yerine noktalı virgül tanıtan kişiden bir alıntı bulamadı.) puan, Dil tasarımcılarının neden kopyaladıklarını / sakladıklarını değil, bir şeyleri değiştirdiklerini inceleyerek daha fazla şey öğreneceğinizi düşünüyorum. İnsanlar genellikle istedikleri şeyleri değiştirdiklerinde veya değişikliği açıklamak zorunda kaldıklarında, bunları kopyalarken veya aynı tutarken aynı şeyi yapmazlar çünkü “neden değiştirelim? Sadece bu şekilde yapılır! ”
Görünürlük hakkında.
Erken açıklama ayırıcılar '.' COBOL ve yeni hatta olduğu gibi FORTRAN'da araba dönüşü.
CR, bir ifadenin birkaç satır üzerinden akışını zorlaştırdığı için sınırlandırdığını kanıtladı.
Tam durma daha ilginç bir soruna neden oldu. İngilizce metni okuduğunuzda, beyniniz tüm durakları bilinçaltı bir seviyede işler, bir cümlenin bittiğinin ve nefes almak için duraklayabileceğinizin farkındasınız ama gerçekten farketmezsiniz. bu sinyal verdi. Ayrıca birçok yazı tipinde '.' bazen tek bir piksel olarak işlenen en küçük olası karakterdir. Eksik veya fazla süreler, COBOL programlarında hataların en yaygın nedeni haline geldi.
Öyleyse erken hatalardan öğrenme ALGOL, bir ifadenin birkaç satır üzerinden akmasına izin veren ve insan okuyucular tarafından kolayca görülebilen ve kolayca fark edilebilen bir ifadeyi seçer. Yarı-kolon, ortak İngilizcede bilinçaltı olarak işlem görmeyecek kadar büyük ve sıradışıdır.
Benim seçildiğimi anlıyordum çünkü bir satır başı / yeni satır dışında açık bir sonlandırıcıya ihtiyaç vardı. 80 sütunlu ekranların günlerinde, aslında birden fazla satır boyunca tek bir kod sarması satırının olması, deyim sonlandırıcısı için \ r veya \ n kullanılmasının işe yaramayacağı kadar yaygındı.
Noktalı virgüller, mantıklı / matematiksel ifadelerde kullanılmadıkları için uygun. Bu nedenle, ifadelerin gerçek içeriği ile hiçbir ölçüde çelişmezler.
Şahsen, noktalı virgül kullanımının, çizgilerin 80 karakterin altında kalması için stil gereksinimleriyle birlikte kullanılmaya devam etmesinin açıkça aptalca ve anakronistik olduğunu düşünüyorum. Python gibi diller, anlaşılması kolay, kısa ve öz kodları yazmadan kolayca yazabileceğinizi gösterdi. Ayrıca, 80 karakterden daha uzun çizgilerle ilgili sorunlarınız varsa, daha büyük bir monitöre ihtiyacınız vardır.
İşte iki soru: ALGOL neden noktalı virgül aldı ve neden diğer dillerin peşinden gitti.
İlk soru zaten burada birçok yönden cevaplandı.
İkincisi olarak, ALGOL algoritmaları yazmak için bir sahte kod dili olarak çok yaygın bir şekilde kullanılmıştır . Böylece, noktalı virgül kısa sürede farklı dillerdeki kullanıcılar için doğal hale geldi. Doğal olarak daha genç diller için alındı.
Yanılıyor olabilirim, ancak bunun çoğu montajcıda bir yorum başlatmak için noktalı virgül kullandığı, genellikle bir talimattan sonra verilen bir şey olduğunu düşünüyorum. ;
Bir yorumdan sonraki her şey bir yorumdu ve artık talimatın bir parçası değildi.
O zaman bir tercümana yazarken talimatları sonlandırmanız gerekir. Kısa talimatlar (örneğin matematiksel ifadeler) basitçe Enter tuşuna basılarak tercümana ifadenin hesaplanmaya hazır olduğunu ve bir sonuç ürettiğini söyleyerek sonlandırılabilir. Ancak bazen bir komut talimat için çoklu kod satırı girmek isterdi, bu yüzden bunu başarmanın bir yolu, sadece Enter tuşuna bağlı olmak yerine komutun sonlandırıcısı olarak bazı özel karakterleri kullanmaktı. Bu şekilde, kullanıcı bir kerede daha fazla kod satırı girebilir, çünkü Enter henüz tercümana göndermedi. Tercüman, sonlandırıcı karakteri Enter ile girilen bir satırda bulduğu zaman, sonunda çalıştırır ve sonucunu hesaplar.
Şimdi bu iki şeyi bir araya getirin ve noktalı virgül sonlandırıcı karakter için bariz bir seçenek olarak görünüyor: talimat bölümünün nerede bittiğini ve yorum bölümünün nerede başladığını söyler; ifadenin tüm satırları şimdiye kadar arabelleğe alındı ve uyguladı, çünkü komut yeni sona erdi, şimdi bir yorum yapıyoruz (en azından bu satırın sonuna kadar, çünkü bir sonraki satır kodda başlayacak) Yeni bir ifade / talimat başlatarak tekrar modu).
Bu, elbette, onu öğretim sonlandırıcısı olarak yeniden kullanma fikriyle gelen insanların yorumları için kullanılan bir noktalı virgül olduğunu varsayar. Başka bir karaktere sahip olsaydık, farklı bir komut sonlandırıcıyla sonuçlanabilirdik.
Inb4: Hayır, bu tarihsel bir hesap değil. Bunun noktalı virgüllerin hayata geçirilmesinin asıl yolu olduğuna dair hiçbir kanıt yok. Sadece bunun olabileceğini hayal ettim.
Çoğu dilde yarı-kolon kullanılmıştır, çünkü zaten bu amaç için kullanılıyordu ve değişimin bir anlamı yoktu.
Ve bu seçimi yapan ilk dilleri göz önünde bulundurarak, alternatiflerin ne olduğunu düşünmeniz gerekir. Bir dil tasarlarken, ihtiyaç duyulan karakterlerin kullanılabilir olmasını istersiniz ve şu anda karakter kümeleri 6 bit üzerinde, genellikle bazı desenler ayrılmış, genellikle bazı karakterler kesin olarak tanımlanmamış olarak kodlanmıştır (bunun daha sonra tekrarlanması için, ISO-646'nın ulusal varyantları - ABD varyantı, ASCII adı altında iyi bilinir; bunlar "gibi" ortak "karakterler için kodları yeniden kullanır [
, #
veya $
etkiyi, sadece yarısı kadar kod pozisyonunun olduğu bir bağlamda görür. mevcut olanlar ve bunların yarısından fazlasını saklayan harfler ve rakamlar).
Muhtemelen sezgisel olarak deyim ayırıcı olarak kullanılabilecek başka bir karakter yoktu ( .
muhtemelen zaten bu kriterler için tek ciddi rekabetçiydi) ve ayrıştırma ve lexing teorisinin hala hazırlandığı bir zamanda lexing veya ayrıştırma zorlukları getirmeden ( .
şimdiki zaman) Gerçek sayıdaki kullanımı nedeniyle söz konusu değil).
Noktalı virgül kullanmanın başka bir nedeni de, istemediğimiz veya daha sık kullanmadığımız karakterlerden biri olmasıdır.
Değişken adı veya bir şey olarak daha sık kullandığımızı ve noktalı virgül bir anahtar kelime veya operatör olarak kullanılmışsa, derleyici için bir sembol çatışması olacağını, bu nedenle olmayan bir sembol kullanmanın önemli olduğunu varsayalım. kodlamada sıklıkla kullanılır.
C tarzı programlama dillerinin popüler hale getirdiğine ve yeni programlama dillerinin yazarlarının tekerleği yeniden icat etmek istemediklerine ve şimdiye kadar kullanmaya devam ettiklerini düşünüyorum.