Bagaimana cara menentukan apakah bahasa pemrograman itu verbose atau singkat?


17

Bahasa pemrograman sering dapat digambarkan sebagai verbose atau singkat .

Dari pemahaman saya, bahasa verbose mudah dibaca dan dipahami, sementara bahasa singkat adalah ringkas dan rapi, tetapi lebih sulit dibaca. Haruskah ada hal lain untuk dipertimbangkan dalam definisi?

Tampaknya banyak dari bahasa pemrograman populer saat ini adalah verbose, dan istilah-istilah ini dua istilah hanya digunakan untuk menggambarkan bahasa sebagai lebih atau kurang, relatif dibandingkan dengan bahasa lain.

Bagaimana kita menentukan apakah bahasa pemrograman lebih bertele-tele daripada bahasa lain?

Contoh: Apakah C # lebih bertele-tele dari Jawa?

Jawaban:


30

Dari pemahaman saya, bahasa verbose mudah dibaca dan dipahami, sementara bahasa singkat adalah ringkas dan rapi, tetapi lebih sulit dibaca.

Ini salah. Verbose berarti banyak simbol. Terse berarti lebih sedikit simbol.

Ini tidak ada hubungannya dengan kemudahan membaca atau kemudahan pemahaman.

Beberapa orang menganggap COBOL verbose mudah dibaca, yang lain menganggapnya membingungkan karena begitu banyak simbol yang diperlukan untuk melakukannya dengan sangat sedikit.

Beberapa orang merasa terse I / J / K dan APL mudah dibaca karena programnya sangat singkat. Yang lain kesulitan membaca karena simbolnya tidak jelas.

Terse / Verbose tidak memiliki hubungan dengan mudah dibaca atau mudah dimengerti.

Haruskah ada hal lain untuk dipertimbangkan dalam definisi?

Tidak. Definisi singkat dan verbose baik-baik saja.

Yang penting adalah bahwa definisi ini tidak ada hubungannya dengan "mudah dibaca dan dimengerti"

Tampaknya banyak dari bahasa pemrograman populer saat ini adalah verbose.

Betulkah?

Bagaimana kita menentukan apakah bahasa pemrograman lebih bertele-tele daripada bahasa lain?

Hitung token untuk menyelesaikan sesuatu.

Add 2 TO A GIVING B.

7 token

b = a + 2;

6 token

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

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


5
+1 untuk "Terse / Verbose tidak memiliki hubungan dengan mudah dibaca atau mudah dimengerti." Saya selalu memikirkan notasi matematika yang, ketika dilakukan dengan benar, sangat padat namun masih relatif mudah dibaca.
Frank Shearar

5
@sunpech: Itulah arti kata-kata bahasa Inggris. "verbose" berarti banyak kata. "singkat" berarti lebih sedikit kata. Tidak ada hubungannya dengan keterbacaan. Cukup jumlah kata. Yang saya lakukan hanyalah mengganti "kata" dengan "token". Ini hanya bahasa Inggris, tidak ada yang istimewa.
S.Lott

1
Kami mungkin juga mempertimbangkan panjang token. Lisp umum terlihat bertele-tele karena begitu banyak kata kunci yang panjang, dan itu juga menambah kepastian COBOL.
David Thornley

1
@ Frank Shearar: Sama sekali tidak benar, pikirkan waktu yang diperlukan siswa untuk belajar matematika. Ini tidak terbaca karena dapat (matematika serius) dan bahkan setelah 6 tahun pendidikan menengah mayoritas masih tidak dapat membacanya dengan serius. Bukannya tidak terbaca adalah hal yang buruk! Tetapi mengatakan bahwa matematika adalah notasi yang dapat dibaca adalah komentar picik atau sedikitnya.
David Mulder

2
@ Davidvidulder: Notasi matematika sangat bervariasi, jadi saya curiga kami berdua melakukan dosa hiperbola. Tentunya Anda menganggap notasi untuk aljabar, teori himpunan, kalkulus dasar menjadi transparan? Di sisi lain, saya menganggap notasi abstrak tensor sebagai omong kosong yang tidak dapat dibaca. (Tapi kemudian, saya juga tidak meluangkan waktu untuk mempelajari notasi dengan benar.)
Frank Shearar

6

Bagaimana kita menentukan apakah bahasa pemrograman lebih bertele-tele daripada bahasa lain?

Dengan membandingkan konstruksi bahasa yang setara atau serupa, secara khusus bagaimana tugas yang sama atau setara dapat diselesaikan dalam satu bahasa vs yang lain.

Apakah C # lebih bertele-tele daripada Java?

Secara umum Java lebih verbose daripada C #. Perbedaan yang paling jelas termasuk delegasi dan ekspresi lambda, di mana Java membutuhkan pendefinisian, subkelas, dan instantiasi antarmuka yang berbeda untuk mencapai apa yang mungkin dilakukan dengan menggunakan ekspresi lambda tunggal dalam C #.


1
Java sekarang mendukung ekspresi lambda dengan Java 8 ( docs.oracle.com/javase/tutorial/java/javaOO/… )
shanraisshan

1
@shanraisshan: ya, semakin baik seiring waktu, tetapi AFAIK Java masih sedikit lebih verbose. Misalnya, dalam dokumen yang Anda tautkan, kode tersebut berisi banyak p.getAge()pernyataan. Dalam C #, saya akan membuat properti Age, yang membawa tingkat enkapsulasi yang sama dengan fungsi anggota getAge, tetapi p.Agesebagai gantinya memungkinkan untuk menulis .
Doc Brown

1
Selain itu, walaupun Java telah membaik, C # juga tidak menjadi target statis ... Fitur baru karena jawaban ini seperti fungsi generator dan async / menunggu juga berfungsi untuk memungkinkan kode C # menjadi lebih pendek daripada yang setara dengan Java.
Jules

3

Berikan potongan kode kepada non-programmer dan minta dia untuk menjelaskan apa yang coba dilakukan potongan itu. Jika Anda mendapatkan jawaban terdekat, maka itu adalah verbose. jika Anda mendapatkan ekspresi WTF maka itu singkat.


2

Ukuran ini disebut ekspresifitas bahasa. Metrik khas untuk ini adalah mengukur garis kode standar atau pernyataan yang diperlukan untuk mengimplementasikan fungsi yang sama.

Beberapa nilai dari Wiki - berapa banyak pernyataan / baris kode C yang diperlukan untuk mengimplementasikan satu fungsi dari satu pernyataan / baris di:

  • Pernyataan C - 1: 1 baris: 1
  • C ++ - pernyataan: 2,5 baris: 1
  • Fortran - pernyataan: 2,5 baris: 0.8
  • Java - pernyataan: 2.5 baris: 1.5
  • Perl - pernyataan: 6 baris: 6
  • Smalltalk - pernyataan: 6 baris: 6.25
  • Python - pernyataan: 6 baris: 6.5

Saya pikir fakta bahwa salah satu pengukuran ini menunjukkan bahwa FORTRAN lebih ekspresif daripada C dengan beberapa margin (!) Sementara yang lain menyatakan sebaliknya sementara menyatakan bahwa C ++ sama-sama ekspresif untuk C (!!) merangkum kegunaan dari "metrik" ".
Jules
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.