Kode Lengkap menyatakan bahwa Anda harus mengubah kode ke dalam bahasa sebagai lawan dari kode di dalamnya. Maksud mereka
Jangan membatasi pemikiran pemrograman Anda hanya pada konsep-konsep yang didukung secara otomatis oleh bahasa Anda. Pemrogram terbaik memikirkan apa yang ingin mereka lakukan, dan kemudian mereka menilai bagaimana mencapai tujuan mereka dengan alat pemrograman yang mereka miliki. (bab 34.4)
Tidakkah ini mengarah pada penggunaan satu gaya pemrograman dalam setiap bahasa di luar sana, terlepas dari kekuatan dan kelemahan tertentu dari bahasa yang ada?
Atau, untuk menempatkan pertanyaan dalam format yang lebih dapat dijawab:
Apakah Anda akan mengusulkan bahwa seseorang harus mencoba untuk menyandikan masalah seseorang serapi mungkin dengan rincian bahasa seseorang, atau jika Anda lebih suka mencari solusi yang paling elegan secara keseluruhan, bahkan jika itu berarti Anda perlu menerapkan konstruksi yang mungkin canggung yang tidak ada secara asli dalam bahasa seseorang?
sumber
Jawaban:
Ada pendekatan yang lebih baik lagi: lupakan bahasa pemrograman tetap Anda yang menyedihkan. Menyandikan masalah Anda dalam bahasa yang baru saja Anda temukan, berasal dari istilah yang sangat relevan dengan domain masalah, menyandikannya sealami mungkin, dan baru kemudian memikirkan menerapkan bahasa pemrograman baru ini atau mengurangi kode Anda hingga batas keterbatasannya. bahasa yang ada.
Pendekatan ini disebut pemrograman berorientasi bahasa . Ada banyak teknik penerapan bahasa khusus domain secara efisien, dan ini merupakan topik yang hangat untuk komunitas Ruby.
sumber
Saya percaya jawaban yang benar, dan yang dimaksud oleh buku itu adalah:
Dengan memprogram ke dalam suatu bahasa, saya selalu berasumsi bahwa itu menggunakan teknik-teknik di luar gaya bahasa yang normal di mana itu akan membawa manfaat . Ini adalah perbedaan utama untuk menulis dalam satu gaya dalam semua bahasa.
Misalnya, belajar Haskell sangat meningkatkan keterampilan saya dalam menggunakan fungsi tingkat tinggi. Sekarang ketika pemrograman dalam c #, saya menggunakan berbagai
IEnumerable
metode sepertiSelect
lebih sering, karena menggunakan metode ini mengarah ke kode yang lebih bersih daripada menulis untuk loop. Saya juga cenderung menggunakan pass dan menggunakan fungsi (yaituFunc<int, int>
) lebih sering karena pengalaman haskell saya. Penggunaan warisan saya telah menurun karena hal ini, dan sebagian besar waktu hasilnya adalah kode yang lebih sederhana.Namun, saya tidak menggunakan konsep seperti monad, atau tipe data aljabar di c #. Ini karena tidak ada yang jelas mewakili dalam c #, dan mengarah pada sedikit manfaat dengan imbalan banyak ketidakjelasan.
Jadi saya menggunakan alat-alat bahasa untuk menggunakan keterampilan yang saya miliki untuk efek terbaik. Saya percaya itu adalah pemrograman ke dalam bahasa.
sumber
Intinya adalah bahwa programmer yang baik tidak memiliki sebuah bahasa. Kutipan dari buku ini berbicara tentang "alat pemrograman yang mereka miliki" - itu berarti jika Anda tahu perl dan Java, maka mungkin Anda harus menggunakan perl untuk manipulasi string cepat. Bahasa pemrograman bukan kotak untuk membatasi kami, tetapi alat yang kami gunakan untuk menyelesaikan masalah. Inilah (imo) maksud dari Kode Lengkap ini. Jangan kode dalam kotak bahasa / lingkungan pemrograman, masukkan solusi terbaik ke bahasa / lingkungan pemrograman terbaik untuk Anda, masalah Anda, dan solusi Anda.
sumber