Bir programlama dilinin ayrıntılı mı yoksa kısa mı olduğunu nasıl belirleyebilirim?


17

Programlama dilleri genellikle ayrıntılı veya kısa olarak tanımlanabilir .

Anladığım kadarıyla, kısa bir dil özlü ve temiz, ancak okunması daha zorken, ayrıntılı bir dili okumak ve anlamak kolaydır. Tanımlarda dikkate alınacak başka şeyler olmalı mı?

Bugünün popüler programlama dillerinin çoğu ayrıntılı gibi görünüyor ve bu iki terim bir dili sadece bir dili diğer bir dile göre daha fazla veya daha az olarak tanımlamak için kullanılıyor.

Bir programlama dilinin diğerine göre daha ayrıntılı / kısa olup olmadığını nasıl belirleyebiliriz?

Örnek: C # Java'dan daha ayrıntılı mı?

Yanıtlar:


30

Anladığım kadarıyla, kısa bir dil özlü ve temiz, ancak okunması daha zorken, ayrıntılı bir dili okumak ve anlamak kolaydır.

Bu yanlış. Ayrıntılı, birçok sembol anlamına gelir. Kısa, daha az sembol anlamına gelir.

Bunun okuma kolaylığı veya anlama kolaylığı ile ilgisi yoktur.

Bazı insanlar ayrıntılı COBOL'u okumayı kolay buluyor, diğerleri kafa karıştırıcı buluyor çünkü çok az şey yapmak için çok fazla sembol gerekiyor.

Bazı kişiler kısa I / J / K ve APL'nin okunmasını kolay bulurlar çünkü program çok kısadır. Diğerleri okumayı zor buluyor çünkü semboller belirsiz.

Terse / Verbose'un okunması kolay veya anlaşılması kolay bir ilişkisi yoktur.

Tanımlarda dikkate alınacak başka şeyler olmalı mı?

Hayır. Kısa ve ayrıntılı tanımları iyidir.

Önemli olan, bu tanımların "okunması ve anlaşılması kolay" ile hiçbir ilgisi olmamasıdır.

Bugünün popüler programlama dillerinin çoğu ayrıntılı.

Gerçekten mi?

Bir programlama dilinin diğerine göre daha ayrıntılı / kısa olup olmadığını nasıl belirleyebiliriz?

Bir şeyleri yapmak için jetonları sayın.

Add 2 TO A GIVING B.

7 jeton

b = a + 2;

6 jeton

http://dictionary.reference.com/browse/verbose

http://dictionary.reference.com/browse/terse


5
+1 için "Terse / Verbose'un okunması kolay veya anlaşılması kolay bir ilişkisi yoktur." Her zaman düzgün bir şekilde yapıldığında oldukça yoğun ama yine de nispeten okunabilir olan matematiksel notasyonu düşünüyorum.
Frank Shearar

5
@sunpech: İngilizce kelimelerin anlamı budur. "ayrıntılı" birçok kelimeyi ifade eder. "terse" daha az kelime demektir. Okunabilirlik ile ilgisi yok. Sadece kelime sayar. Tüm yaptığım "kelime" yerine "jeton" değiştirmekti. Sadece İngilizce, özel bir şey değil.
S.Lott

1
Ayrıca jetonların uzunluğunu da düşünebiliriz. Yaygın Lisp garip görünüyor çünkü anahtar kelimelerin çoğu uzun ve bu da COBOL'un ayrıntı düzeyini artırıyor.
David Thornley

1
@Frank Shearar: Kesinlikle yanlış, öğrencilerin matematik öğrenmesi için geçen zamanı düşünün. Olabildiğince okunamıyor (ciddi matematik) ve 6 yıllık ortaöğretimden sonra bile çoğunluk hala ciddi şekilde okuyamıyor. Okunamaz olmak kötü bir şey değil! Ancak matematiğin okunaklı bir gösterim olduğunu söylemek, en az söylemekle sınırlı bir yorumdur.
David Mulder

2
@DavidMulder: Matematiksel gösterim çılgınca değişiyor, bu yüzden ikimizin de abartı günahları işlediğimize inanıyorum. Elbette cebir, set teorisi, temel hesaplamanın gösteriminin şeffaf olduğunu mu düşünüyorsunuz? Öte yandan, tensörlerin soyut gösteriminin okunamaz bir saçmalık olduğunu düşünüyorum. (Ama sonra, notasyonu doğru bir şekilde öğrenmek için de zaman
ayırmadım

6

Bir programlama dilinin diğerine göre daha ayrıntılı / kısa olup olmadığını nasıl belirleyebiliriz?

Eşdeğer veya benzer dil yapılarını karşılaştırarak, özellikle aynı veya eşdeğer görevin bir dilde diğerine karşı nasıl çözülebileceğini.

C # Java'dan daha ayrıntılı mı?

Java genel olarak C # 'dan daha ayrıntılıdır. En belirgin farklılıklar arasında, Java'nın C # 'da tek bir lambda ifadesi kullanılarak yapılabilecekleri elde etmek için farklı bir arayüz tanımlamak, alt sınıflandırma ve örnekleme gerektirdiği temsilciler ve lambda ifadeleri yer alır.


1
Java artık Java 8 ile lambda ifadelerini destekliyor ( docs.oracle.com/javase/tutorial/java/javaOO/… )
shanraisshan

1
@shanraisshan: evet, zamanla daha iyi hale geldi, ancak AFAIK Java hala biraz daha ayrıntılı. Örneğin, bağlandığınız dokümanlarda kod çok sayıda p.getAge()ifade içeriyor . C # 'da, Ageüye işleviyle aynı derecede kapsülleme getiren getAgeancak p.Agebunun yerine yazmayı mümkün kılan bir özellik yaratacağım .
Doc Brown

1
Ayrıca, Java geliştirilirken, C # da tam olarak statik bir hedef olmamıştır ... Oluşturucu işlevleri ve async / await gibi bu yanıt da C # kodunun Java eşdeğerinden daha kısa olmasına izin veren yeni özelliklerdir.
Jules

3

Programcı olmayan kişiye bir kod snippet'i verin ve ondan o snippet'in ne yapmaya çalıştığını açıklamasını isteyin. En yakın cevabı alırsanız, o zaman ayrıntılıdır. WTF ifadesi alırsanız o zaman terse.


2

Ölçüme dilin ifadesi denir . Bunun için tipik metrik, aynı işlevselliği uygulamak için gereken standart kod satırlarını veya ifadeleri ölçmektir.

Wiki'den bazı değerler - bir ifadenin / satırın bir işlevselliğini uygulamak için kaç C ifadesi / satırı gerekir?

  • C - ifadeler: 1 satırlar: 1
  • C ++ - ifadeler: 2.5 satır: 1
  • Fortran - ifadeler: 2.5 satırlar: 0.8
  • Java - ifadeler: 2.5 satır: 1.5
  • Perl - ifadeleri: 6 satır: 6
  • Smalltalk - ifadeler: 6 satır: 6.25
  • Python - ifadeler: 6 satır: 6.5

Bu ölçümlerden birinin FORTRAN'ın bir marj (!) İle C'den daha anlamlı olduğunu düşündürdüğünü düşünüyorum, diğeri ise C ++ 'nın C (!!)' ye eşit derecede ifade ettiğini belirtirken bunun tersini ifade ediyor "metriklerinin yararlılığını özetliyor ".
Jules
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.