Apa arti pernyataan ini tentang C # dan Java menjadi setengah bahasa? [Tutup]

32

Dalam artikel: Mengapa POCO , ada kalimat ini:

Maciej Sobczak mengatakannya dengan baik: "Saya hanya tidak suka ketika seseorang memberi saya setengah dari bahasa dan mengatakan kepada saya bahwa itu untuk perlindungan saya sendiri".

Saya tidak mengerti apa maksudnya, meskipun C # dimiliki oleh Microsoft & Java dimiliki oleh Oracle , itu tidak berarti mereka menguasai setengah bahasa, bukan? Saya tidak menemukan bukti untuk membuktikan kalimat itu, dan saya benar-benar ingin tahu tentang ini. Dan bahkan lebih ingin tahu tentang bagian 'untuk perlindungan saya sendiri'.

Aku bisa tidur
sumber
12
Saya menafsirkan itu sebagai kritik terhadap membiarkan programmer melakukan hal-hal seperti mengalokasikan secara bebas dan membebaskan memori dan "perlindungan" semacam itu, tapi saya tidak yakin apakah itu yang ingin ia sampaikan.
Kayaman
15
Saya tidak yakin persis, karena artikel yang dia kutip tampaknya sudah mati, tetapi sepertinya dia mengatakan bahwa Java dan C # kehilangan sejumlah fitur C ++ yang lebih 'berbahaya' atau kontroversial, seperti multiple inheritance atau template metaprogramming.
GoatInTheMachine
3
Konteks kutipan tidak ada (tautannya 404), jadi satu-satunya hal yang akan Anda dapatkan di sini adalah orang-orang yang menebak-nebak maksudnya, atau (lebih mungkin) orang hanya menyampaikan pendapat mereka sendiri. Jika Anda benar-benar ingin mengetahui konteksnya, yaitu apa yang ada di halaman yang hilang, taruhan terbaik adalah menulis penulis secara langsung, atau mungkin mencoba mencari halaman yang hilang melalui mesin wayback atau sejenisnya.
JacquesB
2
Pernyataan itu tidak ada gunanya, bahkan jika Anda bisa mengatasinya, Anda tidak selalu ingin mengekspos setiap aspek pengembangan perangkat lunak yang mungkin dalam suatu bahasa. Tentu Anda mungkin tidak memiliki masalah membaca kode manajemen memori, tetapi pengembang lain mungkin tidak terlalu bersemangat untuk mempertahankan kode itu. Ini mirip dengan konsep enkapsulasi. Juga C # tidak membiarkan Anda mengakses sedikit hal melalui, kompilasi arahan, atribut khusus, dan refleksi, bukan berarti orang harus menggunakan hal-hal itu.
Mark Rogers
32
Demi kebaikan Anda sendiri, jangan perhatikan orang-orang yang berpikir bahwa suatu bahasa harus memiliki semua fitur C ++ untuk dianggap "nyata" dan "lengkap". Tidak memperhatikan orang-orang yang berpikir bahwa keselamatan jenis, keamanan memori dan perilaku yang didefinisikan dengan baik adalah "roda pelatihan". Kebenaran menjadi aspek terpenting dari perangkat lunak di sebagian besar industri dan orang-orang yang merasa bangga karena tidak mempedulikannya akan segera menjadi tidak relevan.
Theodoros Chatzigiannakis

Jawaban:

162

Sobczak tidak berbicara tentang kepemilikan perusahaan. Bahasa "setengah" yang dia lewatkan adalah semua hal yang tidak dapat Anda lakukan dalam banyak bahasa modern, meskipun sebagai ahli komputer yang berpendidikan baik, ia tahu itu bisa dimungkinkan: mewarisi dari sebanyak mungkin kelas yang Anda inginkan. Tetapkan objek apa pun untuk objek lain tanpa batasan tipe. Mengontrol alokasi dan membebaskan sumber daya secara manual alih-alih mempercayai kompiler dan waktu berjalan untuk melakukannya untuknya.

Masalahnya, semua pembatasan itu dimasukkan ke dalam bahasa pemrograman karena suatu alasan. Kami memang memiliki bahasa yang memungkinkan semua ini. Seiring waktu kami menemukan bahwa programmer rata-rata lebih baik dengan sejumlah batasan dan pegangan tangan, karena potensi membuat kesalahan yang benar-benar buruk terlalu besar untuk sebanding dengan daya tambahan dan ekspresivitas.

(Jelas, ini kadang-kadang mengganggu programmer yang tidak benar-benar membutuhkan banyak pegangan tangan. Keluhan mereka kadang-kadang sah. Tetapi orang-orang terkenal buruk dalam menilai keterampilan mereka sendiri, dan banyak yang berpikir mereka tidak memerlukan perlindungan, sebenarnya, sangat membutuhkannya. Tidak selalu mudah untuk membedakan intelek superior yang sebenarnya yang merasa tertahan oleh pembatasan dalam bahasa tingkat tinggi dari coders rata-rata yang hanya berpikir bahwa mengeluh akan membuat mereka terlihat superior, atau yang tidak tahu ada yang lebih baik.)

Kilian Foth
sumber
67
Ini jawaban goto saya .
Neil
71
Saya juga akan menambahkan bahwa tidak ada intelek superior yang tidak membutuhkan batasan. Selalu aman untuk mengasumsikan bahwa semua orang mengacaukan cepat atau lambat. Dan biasanya semakin tinggi kecerdasannya, semakin besar kesalahannya.
Neil
29
Ada sedikit lebih banyak hal untuk Java dan C # daripada hanya mencegah orang dari menembak diri mereka sendiri di kaki. Mengelola memori memerlukan banyak waktu dan upaya pengembang sebelum pengumpulan sampah muncul, misalnya, dan sulit untuk melakukan manajemen memori manual dengan benar. Pengumpulan sampah meningkatkan produktivitas programmer.
Robert Harvey
12
@RobertHarvey I 100% setuju. Menjadi programmer C ++ yang lama, saya skeptis terhadap manajemen memori otomatis ketika pindah ke C #. Setelah saya melewati itu, itu sangat membebaskan untuk tidak perlu khawatir tentang hal itu 99% dari waktu. Itu membebaskan kekuatan otak saya untuk memikirkan masalah-masalah lain.
17 dari 26
8
"Tetapkan objek apa pun untuk objek lain tanpa batasan tipe." ... Jadi dynamic,?
Arturo Torres Sánchez
34

Ini dijelaskan dengan sangat baik dalam sumber asli kutipan :

Saya memutuskan untuk mempelajari lebih lanjut tentang C ++ dan menjadi semangat yang setia - ini termasuk minat saya pada cara bahasa ini cenderung berkembang. Selain itu, saya perhatikan bahwa teknik paling canggih dan canggih diperlukan untuk mengembangkan perpustakaan yang bermanfaat , bukan aplikasi yang sebenarnya. Dengan mengingat hal ini, saya telah mencoba untuk menulis beberapa perpustakaan saya sendiri untuk tujuan yang berbeda (lihat halaman unduh saya) dan saya juga mencoba untuk melihat ke bahu pengembang Peningkatan C ++ (lihat halaman tautan saya) untuk mempelajari apa yang teknik high-end adalah. Menghabiskan waktu untuk pengembangan perpustakaan yang seharusnya generik dan berguna pada saat yang sama sangat menuntut. Itu sebabnya programmer tidak pernah berhenti belajar.

[...]

Saya terus bermain dengan C ++ dan teknik untuk menulis perangkat lunak yang tangguh. Untuk mendapatkan perspektif yang lebih luas dalam bidang perangkat lunak yang andal, saya memutuskan untuk menginvestasikan waktu dalam mempelajari Ada (dan hal-hal terkait), yang merupakan bahasa yang tampaknya benar-benar ditinggalkan oleh bisnis walaupun itu Ada yang benar-benar dirancang untuk kompleks dan andal. sistem. Saya harus mengakui bahwa belajar Ada benar-benar bermanfaat bagi saya dalam arti bahwa hal itu memungkinkan saya untuk melihat pekerjaan dan pengembangan pendekatan saya dengan lebih segar. Yang paling penting, beberapa ide dari dunia Ada dapat lebih atau kurang langsung diterapkan ke C ++ dengan hasil yang baik di bidang ketahanan dan kebenaran.

[...]

Oke, saya lupa. Saya bersumpah suatu hari tidak belajar Java. Tapi saya lakukan. Nah, sejauh yang memungkinkan saya untuk membaca dan menulis kode kerja. Saya telah membaca 'Thinking in Java' (tersedia online, gratis) dan 'Core Java' (tidak online, tidak gratis), saya juga secara tidak langsung terlibat dalam beberapa pengembangan Java, dan ... Ya, saya tidak membeli saya t. Saya hanya tidak suka ketika seseorang memberi saya setengah dari bahasa dan mengatakan kepada saya bahwa itu untuk perlindungan saya sendiri. Ini seperti palu kertas, dibuat ringan sehingga tidak ada yang akan melukai dirinya sendiri ketika mengenai jari ... Hal yang sama berlaku untuk C #. Saya memilih palu godam baja, sehingga saya bisa yakin bahwa ketika saya ingin bermain macho, itu akan bertahan.
Pertanyaannya adalah - mengapa begitu banyak orang menggunakannya (Java, C #, dll.)? Hmmm ... Mungkin karena itu sangat bagus di beberapa tempat. Tetapi ada situasi, di mana bahasa dan perpustakaan menunjukkan bahwa mereka dirancang bukan untuk applet (awalnya) daripada menjadi utilitas do-everything. Itu hanya menjanjikan terlalu banyak dan memberi terlalu sedikit untuk semua teknologi. Atau sebagai solusi yang bisa membajak kompetisi apa pun ..

Saya suka C ++ ketika kekuatan maksimum dan perspektif terluas dibutuhkan. Di tempat-tempat di mana ekspresifitas C ++ tidak harus dimiliki, bahasa seperti Tcl atau Python tampaknya sesuai dengan tagihan. Tidak hanya mereka terbuka berkaitan dengan evolusi mereka, tetapi seseorang dapat memperluas dan menanamkannya, tergantung pada kebutuhan tertentu. Saya melihat banyak kemungkinan bermimpi dalam teknologi itu. Saya juga cenderung mengabaikan C sebagai bahasa untuk pemrograman reguler - ini tampaknya menjadi pilihan yang masuk akal hanya sebagai target untuk pembuatan kode, jika tidak maka cenderung rawan kesalahan. Hari ini, Ada datang sebagai pilihan kedua saya untuk proyek-proyek yang lebih serius, asalkan saya memiliki pilihan bebas (yang, sayangnya, tidak selalu demikian).

Jadi, dengan kata lain, penulis kutipan itu suka C ++, dan dia tidak suka Java, dan dia merasa bahwa Java kehilangan setengah dari C ++. Dan hanya itu yang ada pada kutipan itu.

Jörg W Mittag
sumber
18
Ironisnya, dia tidak suka C alasan yang sama persis dia suka C ++, itu sangat terbuka, memungkinkan banyak daya dan banyak kesalahan.
GreySage
8
Dia menganggap C ++ lebih ekspresif daripada Python
benxyzzy
12
@GreySage Yang menarik perhatian saya juga ... C terlalu rentan kesalahan tetapi C # tidak memberi Anda kekuatan yang cukup? C apakah itu jauh dari C ++? C # tidak memiliki sudut "tidak aman" yang memberi Anda lebih banyak kontrol? Perpaduan pendapat yang menarik itu sudah pasti ...
WernerCD
10
@WernerCD tidak dapat benar-benar mengetahui tentang C # yang tidak aman, tetapi C dan C ++ memiliki banyak kesamaan, kecuali bahwa Anda dapat mengalahkan potongan C90 dasar menjadi C ++ yang valid - cuplikan singkat di mana kompiler tidak akan tersedak.
Quentin
23

Artikel yang ditautkan di blog yang Anda poskan telah dihapus, jadi sulit untuk memastikannya, tetapi seperti yang dikatakan Kilian, kemungkinan ketika ia mengatakan "setengah bahasa" yang ia maksudkan adalah C # dan Java terasa seperti C ++ tetapi dengan banyak fitur dan konstruksi dihapus untuk membuatnya lebih mudah digunakan atau lebih aman.

Kembali pada tahun 2006, ketika ini ditulis, ketika C # masih relatif muda dan Jawa dalam banyak hal belum matang, dan ketika kekuatan vs keamanan tampak seperti pertukaran di mana Anda hanya bisa memilih satu, ini bukan posisi yang sepenuhnya tidak masuk akal untuk mengambil .

Saat ini posisi itu sama sekali tidak masuk akal. Hanya berpikir tentang bahasa umum, C # dan Java telah matang dengan sangat baik, meminjam fitur dari bahasa lain (terutama fungsional) untuk mempromosikan penulisan kode aman. Kami juga memiliki bahasa seperti Rust dan Swift yang dibangun dari bawah ke atas untuk melakukan ini.

Jika seseorang meremehkan suatu bahasa karena itu memegang tangan Anda, atau mengatakan bahwa bahasa yang sulit digunakan entah bagaimana adalah hal yang baik, saya akan mengambil apa pun yang mereka katakan dengan sebutir garam. Anda hanya perlu melihat jumlah bug memalukan yang ditemukan dalam kode yang kita andalkan setiap hari, yang ditulis oleh orang-orang terpintar di industri, yang sepele akan dihindarkan dengan menggunakan bahasa 'aman', untuk mengetahui alasannya.

GoatInTheMachine
sumber
6
Saya setuju dengan posisi Anda di paragraf terakhir. C ++ harus disebut "Fountain of Exploits".
Caleb Mauer
3
Juga untuk melengkapi paragraf ke-2 Anda, sintaksis Java dan C # yang sangat cribbed C dan C ++ karena berbagai alasan, termasuk memikat pengembang C / C ++ yang ada dengan janji kurva pembelajaran yang lebih rendah. Ketika mereka sudah matang, mereka telah menambahkan fitur mereka sendiri dan memiliki rasa mereka sendiri, tetapi pada hari-hari awal mereka, lebih mudah untuk melihatnya sebagai "C ++ tetapi kurang kuat" karena mereka lebih langsung diposisikan sebagai alternatif untuk C ++.
Harrison Paine
12

Melihat kembali ke arsip , tampaknya kutipan ini berasal dari tahun 2003 (terlepas dari artikel yang mengutipnya dari tahun 2006). Pada waktu itu, C # ada di Versi 1. x , dan itu kurang banyak fitur modern :

Fitur baru

C # 2.0

  • Generik
  • Jenis parsial
  • Metode anonim
  • Iterator
  • Jenis tidak dapat dibatalkan
  • Getter / setter aksesibilitas terpisah
  • Metode konversi grup (delegasi)
  • Varian dan Kontra untuk delegasi
  • Kelas statis
  • Delegasikan inferensi

C # 3.0

  • Variabel lokal yang diketik secara implisit
  • Inisialisasi objek dan koleksi
  • Properti yang Diimplementasikan Otomatis
  • Jenis anonim
  • Metode penyuluhan
  • Ekspresi kueri
  • Ekspresi lambda
  • Pohon ekspresi
  • Metode parsial

C # 4.0

  • Mengikat secara dinamis
  • Argumen yang disebutkan dan opsional
  • Co-generik dan contravariance
  • Jenis interop tertanam ("NoPIA")

C # 5.0

  • Metode asinkron
  • Atribut info penelepon

C # 6.0

  • Kompiler sebagai layanan (Roslyn)
  • Impor anggota tipe statis ke namespace
  • Filter pengecualian
  • Menunggu di tangkapan / akhirnya blok
  • Inisialisasi properti otomatis
  • Nilai default untuk properti pengambil saja
  • Anggota bertubuh ekspresi
  • Null propagator (operator kondisional nol, pengecekan null ringkas)
  • Interpolasi string
  • nama operator
  • Penginisialisasi kamus

C # 7.0

  • Variabel keluar
  • Pencocokan pola
  • Tuples
  • Dekonstruksi
  • Fungsi lokal
  • Pemisah digit
  • Literal biner
  • Ref kembali dan penduduk setempat
  • Jenis pengembalian async umum
  • Ekspresi konstruktor dan finalizer bertubuh
  • Getter dan setter bertubuh ekspresi

C # 7.1

  • Async main
  • Ekspresi literal default
  • Nama elemen tuple disimpulkan

- "C Sharp" , Wikipedia (referensi dan tautan dihapus)

Mungkin lebih dimengerti bahwa C # tampak seperti setengah bahasa dalam konteks itu, karena kurang banyak dari apa C # hari ini. Sangat aneh untuk berpikir bahwa itu bahkan tidak adastatic kelas!

Banyak hal yang hilang juga, karena C # diikat ke .NET. Misalnya, WPF tidak ada saat itu; itu semua WinForms.

Nat
sumber
kelas statis mungkin merupakan pilihan yang buruk dari fitur yang hilang karena Java masih belum memilikinya (jenis C #). Kecuali ini jab di Jawa?
user253751
1
@immibis Bukan tikaman yang disengaja di Jawa, tapi, ya ampun, benarkah? statickelas tampak seperti fitur primitif; Saya agak membayangkan bahwa mereka kelas pra-tanggal yang di-instal.
Nat
2
Sepertinya mengatakan bahwa jet bermesin mendahului jet bermesin jet; "kelas non-instanced" umumnya disebut modul atau namespace , kecuali dalam bahasa di mana semua kode harus berada di dalam kelas. (Atau memanggil sepeda dengan mobil manual, atau menelepon telepon rumah, telepon seluler stasioner, atau ...)
user253751
@Nat - Memiliki kelas statis itu bagus, tetapi tidak membuat mereka tidak mengubah apa pun. Anda bisa membuat semua anggota kelas statis, dan semua yang Anda kehilangan adalah beberapa jenis kesalahan kompiler jika Anda lupa bahwa kelas itu dimaksudkan untuk tetap statis.
Jirka Hanika
@ JankaHanika Ya, saya bukan penggemar berat statickelas dalam banyak kasus. Jujur saya memilihnya sebagai fitur untuk memanggil karena tampaknya sangat sederhana, bagian primitif dari C #; Saya tidak menganggap bahwa mereka tidak di Jawa.
Nat
3

Dia mengeluhkan kurangnya fitur bahasa yang memungkinkan kontrol yang baik. Ini termasuk alat untuk

  • Menegakkan kekekalan (seperti C ++ const kata kunci )
  • Mengontrol umur dan kepemilikan objek
  • Mengontrol penggunaan memori, penyalinan, dan gaya alokasi

Ini mengingatkan saya pada salah satu kritik saya tentang Jawa:

semuanya pointer, tetapi pointer tidak ada.

Dalam objek C ++, pointer dan referensi adalah tiga konsep berbeda dengan semantik yang jelas. Di Jawa Anda hanya memiliki pseudo-objek-pointer. Dengan menggabungkan ini dan menghindari semantik pointer benar model objek kurang jelas.

Dalam program C ++ yang didefinisikan dengan baik, pemrogram dapat mengharapkan referensi menjadi valid dan tidak nol. Karena modelnya yang disederhanakan, Java tidak dapat membuat jaminan yang sama.

Gejala dari model yang kurang jelas ini meliputi pola objek nol dan kondisi yoda seperti 5.equals(potentiallyNullIntegerReference).

Wes Toleman
sumber
5
Ini sangat membingungkan. Pointer (dalam arti logis ada di Jawa) Anda tidak bisa main-main dengan mereka. Inti dari penyederhanaan model adalah untuk memungkinkan lebih banyak jaminan. Logika yang dapat Anda asumsikan lebih banyak tentang kode dalam bahasa akan mengurangi pembatasan. Lebih banyak batasan -> lebih banyak jaminan.
JimmyJames
1
@JimmyJames frasa berarti bahwa, meskipun semua kelas java memiliki semantik referensi implisit (yuck, btw), Anda tidak dapat memiliki pointer yang sebenarnya. Misalnya, tidak ada cara untuk mendapatkan "referensi" ke referensi. Ini melumpuhkan bahasa di beberapa tempat, kadang-kadang membutuhkan solusi gila (lihat Map.mergeketika Anda hanya ingin memperbarui nilai di peta).
Quentin
3
@JimmyJames: Beberapa jenis jaminan yang bermanfaat tidak dapat ditawarkan secara praktis tanpa menerapkan batasan tertentu. Lebih lanjut, beberapa optimasi yang bermanfaat mungkin memerlukan beberapa batasan. Beberapa bahasa, bagaimanapun, memberlakukan batasan yang tidak berguna yang tidak menawarkan jaminan yang berguna bagi programmer dan tidak seharusnya diminta untuk melakukan optimasi yang bermanfaat. Beberapa batasan sangat buruk.
supercat
3
@JimmyJames: Di sisi lain, beberapa pembatasan yang lebih mendasar dari Java dan "safe-mode" C # membiarkan mereka menawarkan jaminan yang sangat berguna bahwa C ++ tidak dapat: referensi apa pun (apa yang dalam C ++ akan menjadi pointer) yang pernah ada diamati untuk mengidentifikasi objek tertentu tidak akan pernah diamati untuk mengidentifikasi hal lain .
supercat
3
Bisakah Anda memberikan beberapa kutipan untuk mendukung jawaban Anda? Misalnya, AFAIK, halaman tidak menyebutkan const. Ini tidak menyebutkan "pemrograman fungsional", bagaimanapun, bahasa dia gunakan sebagai contoh adalah Scheme, yang tidak bahasa fungsional murni (pada kenyataannya, para perancang Skema berhati-hati untuk menghindari penggunaan kata "fungsi" dan berbicara tentang " prosedur "), jadi sepertinya dia menggunakan interpretasi" subrutin kelas "dari FP dan bukan" transparansi referensial ".
Jörg W Mittag
1

Saya setuju dengan jawaban @Kilian tapi saya akan menambahkan beberapa elemen.

1- Berjalan melawan Mesin Virtual, bukan OS

Karena Java dan C # berjalan melalui Mesin Virtual, secara logis diharapkan bahwa Anda tidak dapat melakukan apa yang Anda inginkan ketika langsung menggunakan OS, karena Anda cenderung merusak sesuatu di VM. Lebih jauh lagi dengan Java yang berorientasi sebagai platform agnostik, itu bahkan lebih logis.

2- Banyak aplikasi tidak mengharuskan Anda membutuhkan hal-hal semacam itu.

Ada banyak aplikasi yang benar-benar tidak perlu Anda gali melalui banyak detail, namun jika Anda melakukannya dengan bahasa yang mengharuskan Anda melakukannya Anda dapatkan:

  • Lebih banyak risiko memiliki bug karena hal-hal yang tidak perlu.
  • Lebih banyak biaya pengembangan, mengelola memori, dan mengujinya membutuhkan waktu dan uang!

3 - Bahasa dibuat pada beberapa biaya pembobotan pilihan / penggunaan / risiko, seperti ... semuanya.

Dengan C ++ Anda dapat melakukan hampir semua yang Anda inginkan, itu adalah pilihan orang C ++. Namun semakin banyak, semakin banyak yang perlu Anda tangani.

Jadi hal-hal seperti multiple inheritance tidak menyerah hanya pada kenyataan bahwa mereka berbahaya, mereka menyerah karena menerapkannya memiliki biaya (pengembangan, pemeliharaan), semua untuk itu untuk fitur yang jarang digunakan dengan benar dan dapat umumnya ditulis ulang secara berbeda.

Walfrat
sumber
Biaya nyata dari multiple inheritance terletak pada kenyataan bahwa tidak mungkin untuk menegakkan kedua jaminan berikut: (1) Jika seorang anggota kelas dasar Bditimpa di kelas menengah M, maka Bversi anggota itu hanya akan dapat diakses melalui M' menimpa; (2) diberi referensi tipe apa pun T, mengonversinya menjadi tipe super apa pun dan kembali ke Takan menghasilkan referensi yang setara dengan aslinya. Kedua jaminan itu bermanfaat, dan mendukung banyak warisan akan mengharuskan menyerah setidaknya satu.
supercat
-1

Sederhananya semua batasan dalam bahasa tingkat tinggi seperti C # dan Java ada untuk melindungi programmer. Mereka ada bukan untuk melindungi programmer dari dirinya sendiri, tetapi untuk melindungi programmer dari programmer lain!

Berapa kali kita sebagai programmer menemukan perpustakaan yang benar-benar mengagumkan dalam praktik dan desain pengkodean mereka tetapi kami terpaksa menggunakannya karena satu dan lain alasan?

Program-program ini biasanya memiliki keunggulan dari metode prosedural lama pemrograman, dengan kurangnya enkapsulasi, banyak memori langsung menulis dengan sedikit atau tanpa kesalahan menangkap atau menangani. Segfault mengejar en-mass ketika mencoba menggunakannya dalam proyek skala besar.

Di situlah bahasa seperti Java dan C # sangat membantu; bukan karena mereka kita menikmati kenyataan bahwa mereka tidak membiarkan kita melakukan semua hal-hal rapi yang dilakukan oleh bahasa lain, itu adalah bahwa kita menikmati kurangnya sakit kepala yang harus kita tanggung karena programmer lain akan menyalahgunakan hal-hal rapi yang bahasa lain dapat melakukan.

Antarmuka layak dikompromikan dalam hal memori atau kecepatan eksekusi dalam pikiran saya. Saya harap Anda dapat melihat bahwa dalam segala jenis aplikasi misi kritis yang terbatas waktu, semua perlindungan itu, penanganan kesalahan yang tepat dan umumnya yakin bahwa memori tidak dipencet dengan hal-hal yang baik!

Akumaburn
sumber
ini tampaknya tidak menawarkan sesuatu yang substansial atas poin yang dibuat dan dijelaskan dalam 5 jawaban sebelumnya
nyamuk
1
They exist not so much to protect the programmer from him/herself, but rather to protect the programmer from other programmers!atau itu untuk melindungi programmer lain dari programmer?
Tobia Tesan
@TobiaTesan Itu juga :)
Akumaburn