Garip bilgi arttı. Diş tellerinin tarihini biliyor musunuz?

Yazar | Michael McMillan

Çevirmen | Crescent Moon, sorumlu editör | Xi Yan

Mühür görüntüsü | Visual China'dan CSDN indirme

Üretildi | CSDN (ID: CSDNnews)

Kod bloklarının başlangıcını ve sonunu işaretleyen iyi bilinen parantezler ne zaman programlama dilinin bir parçası oldu? Veya daha da önemlisi, kod bloğu ne zaman programlama yapısının önemli bir parçası haline geldi?

Bu soruları bu makale aracılığıyla cevaplamayı umuyorum.

Kod blokları olmayan dil

C dili sözdizimi stiline aşina olan programcılar, programlama bloklarına aşinadır. C, C ++, Java, JavaScript ve diğer birçok dilde, tüm ana programlama yapıları kod bloklarıdır. Diğer bir deyişle, bu programlama yapıları kod bloklarına yerleştirilir ve kod bloklarının sembolleri açma ve kapama parantezleridir.

Açıkçası, bu tamamen doğru değildir.Örneğin, eğer ifade ve döngü iki yapı ise, ana kısım sadece bir ifade içeriyorsa, kod bloğu ihmal edilebilir. Bununla birlikte, son birkaç yılda, programlama stili uzmanları, tüm programlama yapılarının ana gövdesinin kod bloklarına yerleştirilmesi gerektiğini önerdiler (daha ikna edici açıklamalar için Douglas Cockroft'un "JavaScript Dilinin Temelleri" kitabına bakın).

Ancak, ilk üst düzey programlama dilinin kod blokları yoktu.

Örnek olarak 1950'lerde FORTRAN dilini alayım. Gartner, erken dönem üst düzey diller olan "Programlama Dillerinin Erken Gelişimi" hakkındaki incelemesinde birkaç erken programlama dilinin özelliklerini karşılaştırdı (makale, "Bilgisayar Dilleri Üzerine Seçilmiş Makaleler" adlı kitabında yeniden basıldı) . Karşılaştırma yöntemi, belirli bir programın birkaç dilde nasıl yazıldığını göstermektir. Bu program TPK adlı bir algoritma uygular. Modern JavaScript'te nasıl yazılacağına bir göz atalım:

Bu programın işlevini önemsemenize gerek yok. Buradaki nokta, bu programın Gartner'ın inandığı modern programlama dillerinin tüm önemli özelliklerini göstermesidir.

Daha önce de söylediğim gibi, Gartner bu algoritmayı birkaç programlama dilini karşılaştırmak için kullandı ve bunlardan biri artık ilk gerçek yüksek seviyeli dil olarak kabul edildi. Aşağıda, Gartner tarafından yazılan ve Fortran'da uygulanan bir TPK algoritması yer almaktadır:

Fortran'ın sözdiziminin ayrıntılarına girmek istemiyorum, ancak dilin kod blokları olmadığını açıkça görebilirsiniz. Fonksiyon, blok olarak tanımlanmak yerine bir satırda tanımlanır. DO döngüsü, döngüyü kontrol etmek için satır etiketleri kullanır. O zamanki yüksek seviyeli diller, birleşik ifadeleri kod blokları halinde gruplama konseptine sahip değildi, bu nedenle bu dillerin program akışını kontrol etmek için yine de goto'ya güvenmesi gerekiyor.

Bu kod, Gartner tarafından 1957'de Fortran kullanılarak yazılmıştır. 1957 ile 1960 arasında yeni bir dil ortaya çıktı ve bu, Fortran gibi birçok üst düzey dilin eksikliklerini telafi eden ALGOL idi.

ALGOL'de kod blokları

ALGOL programlama dili ilk olarak 1958'de önerildi, ancak en popüler versiyonu Algol 60'tır. Algol dilinin özelliklerinden biri, ifadeleri kod blokları olarak da adlandırılan birleşik ifadeler halinde gruplama yeteneğidir. Her Algol programı bir kod bloğu olarak düşünülebilir, çünkü program genellikle bir veya daha fazla ifade içerir (dolayısıyla "birleşik ifade" terimi). Algol geliştiricileri, birçok programlama senaryosunun (koşullu yargılar ve döngüler gibi) birden fazla ifadenin bir bütün olarak dikkate alınmasını gerektirdiğine inanmaktadır.

Algol, bir kod bloğunun başlangıcını ve sonunu belirtmek için başlangıç ve bitiş anahtar sözcüklerini kullanır. Kod blokları diğer kod bloklarının içine yerleştirilebilir, dış kod bloğu ana kod bloğu ve iç kod bloğu alt kod bloğu olarak adlandırılır. Örneğin, aşağıdaki Algol programı iç içe kod blokları içerir:

Program sırayla 2 ve 1 sayılarını çıkaracaktır.

Aşağıda, Algol'un if ifadelerinde kod bloklarının kullanımına bir örnek verilmiştir:

Aşağıda, Algol'un for deyiminde kod bloklarının kullanımına bir örnek verilmiştir:

Algol dilinde yazılmış TPK programına bir göz atalım.Fortran ile karşılaştırıldığında kod bloğu yapısının programı daha net hale getirebileceğini görebilirsiniz:

Algol'un kod bloğu yapısının programı bugün kullandığımız dile daha çok benzettiği görülmektedir.

BCPL'ye geç

Blok yapı dili gramerindeki bir sonraki değişiklik, 1967'de Cambridge Üniversitesi'nde Martin Richards tarafından icat edilen BCPL diliydi. 1960 ile 1967 arasındaki Algol dil geliştirmenin ilk aşamasında, derleyici geliştiricileri ve sistem geliştiricileri, makine dili ve montaj dili dışındaki dillerde sistem programları (işletim sistemleri gibi) geliştirmenin bir yolunu arıyorlardı. BCPL'nin burada vurgulanmasının nedeni, geliştirilip iyileştirildikten sonra Ken Thompson tarafından icat edilen B dili haline gelmesi ve daha sonra C diline dönüşmesidir.

Richards tarafından geliştirilen BCPL dili bir sistem dilidir ve assembly dili ile aynı verimliliğe sahiptir, ancak sözdizimi Algol gibi yüksek seviyeli dillere daha çok benzer, bu nedenle program yazmak daha kolay ve daha etkilidir. Bu, Algol gibi üst düzey dillerin birçok özelliğinin BCPL'ye daha verimli bir şekilde dahil edilmesi gerektiği anlamına gelir.

Bu verimliliği elde etmenin bir yolu, kod bloğunun işaretini sözcüklerden (başlangıç ve bitiş) simgelere değiştirmektir. Richards, birleştirilmiş ifadeler ve kod blokları için başlangıç ve bitiş işaretleri olarak $ (ve) $ simgelerinin kullanılmasını önerir. Bu sembollere "bölüm parantezleri" denir.

BCPL'de, $ (ve) $ if ifadeleri veya döngüler gibi yapılarla kullanılıyorsa, bunlar birleşik bir ifadeyi temsil eder. $ (Bazı tanımlar içeriyorsa, bir kod bloğunu temsil ederler.

Örneğin, BCPL'de if ifadelerinin ve birleşik ifadelerin kullanımına örnekler aşağıda verilmiştir:

Aşağıda bir BCPL kod bloğu örneği verilmiştir:

Burada, başlangıç sembolü kod bloğunun başlangıcını belirtir çünkü hemen ardından bildirim gelir.

$ (ve $) C dilinde küme parantezi olur

1968 veya 1969 civarında, Bell Labs'tan Ken Thompson ve Dennis Ritchie, işletim sistemlerini geliştirmek için sistem programlama dillerini kullanmaya başladı. Aslında, Thompson başlangıçta Fortran'ı kullanmak istiyordu, ancak Fortran'ın mümkün olmadığını anladığı için çabucak pes etti. Bu nedenle, daha uygun bir sistem dili oluşturmak için BCPL dilini değiştirmeye karar verdi ve B dili doğdu.

B dili, Thompson ve Ritchie'nin istediği sistem diline daha yakın olmasına rağmen, gereksinimleri tam olarak karşılayamadı, bu nedenle Ritchie, Yeni B anlamına gelen NB adında başka bir dil geliştirmeye başladı. NB uzun süre hayatta kalamadı ve sonunda C olarak adlandırılan yepyeni başka bir dil ile değiştirildi. C dilinin BCPL, B ve NB'den nasıl gönderildiğiyle ilgileniyorsanız, Dennis Ritchie'nin "C Dili Tarihi" ni okumanızı öneririm.

B dilinden NB'ye ve ardından C diline miras alınan birçok özellik, biri operatör kısaltması olan Thompson tarafından değiştirilmiştir. Dili o sırada çok sınırlı belleğe sahip bir bilgisayara koymak için bu değişiklikler gerekliydi. Örneğin, Thompson, dili daha verimli hale getirmek için kombinasyon atama operatörleri (+ = gibi) ve artırma (++) ve azaltma (-) operatörleri oluşturmuştur. Bu ayrıca BCPL'deki $ (ve) $ gibi diğer sembollerin basitleştirilmesine de yol açtı, {ve} olarak değiştirildi.

statüko

Günümüzde pek çok dil, özellikle C ++, Java, C # ve JavaScript gibi C stiline yakın olanlar olmak üzere kod bloklarının ana sembolü olarak kaşlı ayraçları benimsemiştir.

Daha da ilginci, yeni dillerde de Go ve Rust gibi parantezlerin kullanılmasıdır. Aslında, Go dili, programlama uzmanlarının tavsiyelerine uyan her koşullu ifadenin veya döngü yapısının küme parantezlerini kullanmasını gerektirir: Gereksiz olsa bile, her yapı kaşlı ayraç kullanmalıdır.

Orijinal bağlantı:

https://medium.com/better-programming/a-brief-history-of-the-curly-brace-in-programming-5b3eacdc3f7a

Bu makale bir CSDN çeviri makalesidir, lütfen yeniden basımın kaynağını belirtin.

Bugünün faydaları

Lu Qi ile tanışın

Ayrıca "Milyonlarca Kişi Yapay Zekayı Öğreniyor" un önemli bir parçası olarak, 2020 AIProCon Geliştiriciler Konferansı 3 - 4 Temmuz tarihleri arasında çevrimiçi olarak canlı yayınlanacak ve geliştiricilerin mevcut yapay zeka en son teknolojisini tek noktadan öğrenmelerine olanak tanıyacak Araştırma, temel teknoloji ve uygulamalar ile kurumsal vakalarda pratik deneyim ve ayrıca heyecan verici ve çeşitli geliştirici salonlarına ve programlama projelerine çevrimiçi olarak katılabilirsiniz. Bir dizi ileriye dönük aktiviteye ve çevrimiçi canlı yayın etkileşimlerine katılın. Yalnızca on binlerce geliştiriciyle iletişim kurmakla kalmaz, aynı zamanda özel canlı yayın hediyeleri kazanma ve teknik uzmanlarla bağlantı kurma fırsatına da sahip olursunuz.

Tek noktadan katil yapay zeka geliştirme platformu burada! Parçalı modelleme araçlarını değiştirmeye elveda deyin

Pekin'deki Dördüncü Çevre Yolu'nda trafik sıkışıklığının tetiklediği büyük akıllı ulaşım fikri

Lütfen bana yığının ne olduğunu sorma!

Pekin'deki Dördüncü Çevre Yolu'nda trafik sıkışıklığının tetiklediği büyük akıllı ulaşım fikri

Şirketinizin sanal makinesi hala boşta mı? Jenkins ve Kubernetes'e dayalı sürekli entegrasyon testi uygulamasına bir göz atın!

Web1.0'dan Web3.0'a: İnternetin son yıllarda gelişimi ve gelecekteki yönünün ayrıntılı analizi

AI çağında, programcılar neden pahalıdır?
önceki
VMWare'den 40 yıllık sanallaştırma teknolojisi geçmişi olan Alibaba Dragon'a
Sonraki
Sadece bu gece | Hong Kong Bilim ve Teknoloji Üniversitesi Profesörü Li Shiwei geleceği sordu ve Greater Bay Area'da yeni bir rota açtı
Red Hat, açık kaynağın ilk kardeşi olmak için "abonelik" modelini kullanır ve öncü, başkanlığa yükseltilir
MQ teknoloji ürünleri patladı, Tencent'in açık kaynak mesajlaşma ara yazılımı TubeMQ | The Force Project hakkında konuşalım
Jenkins ve Kubernetes'e dayalı sürekli entegrasyon testi uygulamasına bir göz atın
Ren Zhengfei, Shanghai Huawei'nin müdürü olarak istifa etti; Baidu "Cloud Phone" bugün çevrimiçi olarak yayınlandı; Inkscape 1.0 RC sürümü yayınlandı | Geek Headlines
Programcılar için zorunlu bir kurs: Veri analizi için neden Python kullanmanız gerekiyor? Excel kötü mü?
Python'da tablo nasıl bölünür ve posta gönderilir?
Belki Venüs Kuzey'deki bu evler takdir etmişlerdir? Yeni evlerin ve etrafındaki baş aşağı fiyat limiti 1.000 yuan / metrekare'yi aşıyor
Xiaoxian hükümeti Fengbei'ye taşınacak ve Xuzhou Ekonomik Çevresine entegre olacak
"Binlerce evcil hayvan" koleksiyonu olan "Dongqian Gölü" yeniden "büyütecek"
35 mermi savaşın! % 35 prim! Country Garden, Shabei'de 530 milyon yuan'a 80 dönümlük ev aldı
Li Mu'nun ekibi, SOTA'ya ulaşan birden fazla görevle, en güçlü ResNet geliştirilmiş sürümünü öneriyor | Açık kaynak
To Top