Dalam cara spesifik apa Delphi memengaruhi bahasa C #


8

Saya secara khusus mencari pengaruh bahasa (sebagai lawan kerangka kerja). Sekilas C # tampaknya merupakan evolusi dari C / C ++ atau Java. Tapi kita tahu C # memiliki desainer yang sama dengan Delphi, dan dia bahkan mengakui beberapa kesamaan dan berkata "ide bagus tidak hilang begitu saja." Satu contoh yang saya lihat dari sesuatu di C # yang tidak ada di Java atau C / C ++ adalah properti. Itu saja? Apakah ada yang lain?


Sangat memalukan bahwa beberapa dari mereka benar-benar melakukannya. Lihatlah berapa lama waktu yang diperlukan orang-orang NET untuk menerapkan kemampuan dinamis yang telah tersedia dalam variantjenis Delphi sejak cukup banyak untuk selamanya ...
Mason Wheeler

Untungnya mereka tidak tetap dengan BEGIN dan END ...
Newtopian

2
@Newtopian: Jadi, Anda lebih suka tanda baca daripada kata-kata yang bisa dibaca? Lebih dari programmer semacam APL?
Jim McKeeth

Turbo Pascal (leluhur Delphi) ditulis oleh Anders Hejlsberg , kepala arsitek bahasa C # di Microsoft. Hubungkan titik-titik.
Robert Harvey

5
APERSANDJim COLON yesCOMMA saya lebih memilih tanda baca lebih pronounciationEXCLAMATIONMARK bahasa Inggris mereka karena saya pikir itu membuat semuanya jauh lebih readablePOINT COLON DASH SEMICOLON
Newtopian

Jawaban:


4

Tidak banyak yang terlihat oleh programmer, tetapi di belakang layar, sedikit, tetapi banyak dari mereka berada di IDE dan desain kontrol bentuk windows, daripada bahasa itu sendiri, saya telah menggunakan Delphi 7 selama sekitar 10 tahun dan C # untuk sekitar 5 jadi saya telah mengambil beberapa:

1) Properti anchor identik dengan Delphi

2) Bentuk posisi default

3) Hirarki objek untuk kontrol

4) Perancang formulir pada umumnya terasa sangat mirip - tidak bisa meletakkan jari saya di atasnya dengan tepat.

Beberapa hal dalam bahasa itu sendiri yang saya perhatikan:

1) Jenis data tertentu, alias Mata Uang / Desimal

Beberapa hal dalam bahasa yang sangat berbeda:

1) Constructor inheritence (delphi digunakan untuk mewarisi semua konstruktor ke objek dasar yang tidak harus didefinisikan lagi dalam kelas turunan)

2) Delphi memiliki kemampuan untuk menurunkan visibilitas metode atau properti di kelas turunan, tetapi menjaga polimorfisme tetap utuh, C # tidak mengizinkan ini (saya sangat merindukan ini)

Saya mungkin telah melewatkan banyak hal, tolong tambahkan jika Anda memikirkannya.


Saya berharap para perancang bahasa mengenali perbedaan antarmuka dunia luar yang diwarisi dari kelas dasar, antarmuka dunia luar dari kelas turunan, dan antarmuka yang disajikan kelas dasar ke kelas turunan. Jika berbagai kelas akan memiliki set kemampuan yang tumpang tindih, akan lebih mudah untuk membungkus kelas dasar umum atau antarmuka yang mengekspos semua kemampuan itu bersama dengan anggota untuk mengatakan mana yang sebenarnya dapat digunakan, daripada membungkus berbagai kelas yang memperlihatkan kombinasi yang berbeda dari mereka kemampuan; tidak ada alasan, mengapa kelas turunan harus ...
supercat

... mengekspos - sebagai anggota dari tipe mereka sendiri (sebagai lawan dari tipe dasar) - anggota yang sebenarnya tidak akan dapat digunakan dengan tipe mereka sendiri. Jika kontrak kelas dasar mengatakan bahwa setiap kelas turunan yang CanWoozlepropertinya kembali benar harus menyediakan Woozle()implementasi yang dapat digunakan , tetapi kelas turunan tertentu selalu mengembalikan false untuk CanWoozledan memiliki Woozleimplementasi yang tidak dapat digunakan secara sah , tidak ada alasan kelas turunan harus mengekspos Woozleanggotanya .
supercat

2

Anders bersama Borland hingga Delphi 3 - ia adalah arsitek asli Delphi dan juga Turbo Pascal. Jika Anda memuat Delphi 1, buka kotak about dan ketik AND Anda mendapatkan gambar Anders yang mengedipkan mata pada Anda.

Ketika dia meninggalkan Borland untuk MS dia awalnya melakukan J ++ yang "kesal" Sun sedikit. Lalu dia menciptakan C #. Titik-titik yang harus Anda gabungkan berasal dari Borland Object Pascal -> Java / J ++ -> C #

C # adalah upaya Microsoft untuk membuat Java yang lebih baik. Sebagai seorang programmer Delphi tua saya akan menerima bahwa mereka mungkin berhasil.


1
Saya tidak setuju bahwa C # adalah upaya untuk "membuat Java yang lebih baik". Meskipun ada pakar Java di tim desain C #, kami sangat jarang membuat perbandingan eksplisit ke Jawa saat merancang fitur bahasa.
Eric Lippert
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.