«language-design» etiketlenmiş sorular

Programlama dillerinin tasarım ve yapısını içeren sorular.

2
Neden bitsel operatörler karşılaştırmalardan daha düşük önceliğe sahip?
Birisi gerekçeyi açıklayabilir mi, neden birçok popüler dilde (aşağıdaki nota bakınız) karşılaştırma işleçleri (==,! =, <,>, <=,> =) Bitsel operatörlerden daha yüksek önceliğe sahip olabilir (&, |, ^ , ~)? Bu önceliğin doğal olacağı bir kullanımla karşılaştığımı sanmıyorum. Her zaman gibi şeyler: if( (x & MASK) == CORRECT ) ... …

6
C # neden Java'dan farklı olarak "yeni" ve "sanal + geçersiz kıl" anahtar kelimelerle yapıldı?
Java'da hiç orada virtual, new, overrideyöntem tanımı için anahtar kelimeler. Dolayısıyla bir yöntemin çalışmasının anlaşılması kolaydır. Eğer DerivedClass , BaseClass'ı uzatır ve aynı isimde ve BaseClass'ın aynı imzasına sahip bir metoda sahipse, geçersiz kılma, çalışma zamanı polimorfizminde (yöntemin olmaması şartıyla static) gerçekleşir. BaseClass bcdc = new DerivedClass(); bcdc.doSomething() // will …

9
Neden diller mantıksal bir işleç olarak ima içermiyor?
Garip bir soru olabilir, ancak neden birçok dilde mantıksal bir operatör olarak ima edilmediği (Java, C, C ++, Python Haskell - en sonuncusu kullanıcı eklemek için operatörleri tanımlamasına rağmen). Mantıksal çıkarımın (özellikle iddialarda veya iddiaya benzer ifadelerde) yazmaktan sonra daha net veya daha olumsuz buluyorum: encrypt(buf, key, mode, iv = …


2
Neden 'void' C # 'da genel bir tür olarak kabul edilmiyor
voidYapıcı olmama ve genel bir tür olarak izin verilmemesi lehinde olan tasarım kararları nelerdi ? Sonuçta bu sadece özel bir boş structve tamamen PITA'nın farklı Funcve Actiondelegelere sahip olmasını önlerdi . (C ++, açık voiddöndürmelere izin verir voidve şablon parametresi olarak izin verir )

3
Bir tip sistemi nedir?
Arka fon Bir yan proje olarak bir dil tasarlıyorum. Çalışan bir montajcıya, statik analizöre ve bunun için sanal makineye sahibim. Yaptığım altyapıyı kullanarak önemsiz programları derleyebildiğim ve çalıştırabildiğim için üniversitemde bir sunum yapmayı düşündüm. Konuşmam sırasında VM'nin bir tip sistem sağladığını, " Tip sisteminiz ne için? " Diye sordum . …

5
Neden tüm <algorithm> işlevleri konteynerleri değil, yalnızca aralıklarını kullanıyor?
Birçok yararlı fonksiyon vardır &lt;algorithm&gt;, fakat hepsi "sekans" larda çalışır - yinelemeler Örneğin, eğer bir konteynırım varsa ve std::accumulateüzerine koştuğumda yazmam gerekir std::vector&lt;int&gt; myContainer = ...; int sum = std::accumulate(myContainer.begin(), myContainer.end(), 0); Yapmayı düşündüğüm tek şey: int sum = std::accumulate(myContainer, 0); Bu benim gözlerimde biraz daha okunaklı ve net. Şimdi …

4
Python'daki yineleyiciler neden bir istisna yaratıyor?
İşte Java'da yineleyiciler için sözdizimi (C # ile benzer bir sözdizimi): Iterator it = sequence.iterator(); while (it.hasNext()) { System.out.println(it.next()); } Bu mantıklı. İşte Python'da eşdeğer sözdizimi: it = iter(sequence) while True: try: value = it.next() except StopIteration: break print(value) İstisnaların yalnızca istisnai durumlarda kullanılması gerektiğini düşündüm. Python neden yinelemeyi durdurmak …

8
İstisna işleme mekanizması olmadan neden modern bir dil tasarladım?
Birçok modern dil zengin istisna işleme özellikleri sağlar, ancak Apple'ın Swift programlama dili bir istisna işleme mekanizması sağlamaz . Benim gibi istisnalar dışında, aklımı bunun ne anlama geldiği etrafına sarmakta güçlük çekiyorum. Swift'in iddiaları ve elbette geri dönüş değerleri var; Ancak istisna temelli düşünme tarzımın istisnasız bir dünyaya nasıl eşleştiğini …

13
Atama operatörü neden sol tarafa atanıyor?
Daha yeni bir arkadaş programlaması öğretmeye başladım (Python kullanıyoruz) ve değişken yaratma ve görevlendirme operatörünü tartışmaya başladığımızda, sağdaki değerin neden soldaki isme atandığını sordu; . Bunu daha önce pek düşünmemiştim, çünkü bana doğal geldi, ama soldan sağa daha doğal göründüğünü, çünkü çoğumuzun doğal dilleri okuduğumuzu söyledi. Bunu düşündüm ve kodun …

5
Eski programlama dilleri neden revize edilmeye devam ediyor?
Bu soru , "Neden insanlar hala eski programlama dillerini kullanıyor?" Değil. Bunu oldukça iyi anlıyorum. Aslında en iyi tanıdığım iki programlama dili, her ikisi de 70'lere dayanan C ve Scheme'dir. Son zamanlarda C99 ve C11'deki C89 ile C89 arasındaki değişiklikleri okudum (hala pratikte C'nin en çok kullanılan versiyonu ve K …

4
Yapılar ve sınıflar neden C # kavramlarını ayrı tutarlar?
C # ile programlama yaparken tutamayacağım tuhaf bir dil tasarım kararına rastladım. Bu nedenle, C # (ve CLR) iki toplu veri türüne sahiptir: struct(yığın üzerinde depolanan değer türü, kalıtım yok) ve class(öbek üzerinde depolanan referans türü, kalıtımsal). Bu kurulum ilk önce kulağa hoş geliyor, ancak daha sonra bir toplama türünün …


15
Diller CPU tasarımını nasıl etkiledi? [kapalı]
Biz edilir sıklıkla söylendi ancak bu tüm gerçek değildir, donanım bir program sadece derlenmiş ikili kod gördüğü gibi yazılır hangi dili care gelmez. Örneğin, mütevazi Z80'i düşünün; 8080 komut setindeki uzantıları, örneğin gerçekleştirmek için C-tarzı (NULL-sonlandırılmış) dizeleri taramak için yararlı olan CPIR gibi talimatları içerir strlen(). Tasarımcılar, C programlarını çalıştırmanın …

22
Tanımlayıcılardaki boşluk hiç aptalca oldu mu? [kapalı]
C # stili, sözcükleri sınırlandırmak için tanımlayıcılarda CamelCase kullanılmasını önerir . Lisp geleneği yerine-tire kullanarak önerir. Tanımlayıcılarda boşluk kullanımına sadece izin vermekle kalmadı, aynı zamanda çok kelimeli tanımlayıcıları kullanırken yaygın olarak kullanılan bir deyim oldu mu? Bazı Şema uygulamalarında boşluk içeren tanımlayıcılara sahip olmak mümkündür , ancak bu yaygın olarak …

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.