Saya mencari sumber daya pada pola desain dan prinsip - prinsip untuk perangkat lunak numerik, berpotensi tetapi tidak harus dengan fokus pada pendekatan berorientasi objek untuk kode numerik.
Saya mengetahui teksnya, Menulis Perangkat Lunak Ilmiah: Panduan untuk Gaya yang Baik , tetapi ini masih banyak berhubungan dengan hal-hal seperti masalah titik apung, bagaimana dan kapan mengoptimalkan, dll.
Saya mencari informasi tentang gambar yang lebih besar dalam merancang kode numerik, bukan pada apa pun yang berkaitan dengan algoritma dan sejenisnya.
Saya berharap ada sumber daya untuk ini, dan orang tidak boleh hanya pergi melalui perpustakaan setelah perpustakaan, terutama karena tidak ada panduan yang melakukan hal-hal yang dirancang dengan bijak, terlepas dari pengetahuan saya sendiri tentang idiom dan praktik yang baik dalam C ++.
(Ini bukan khusus bahasa, tetapi jika ada konten khusus bahasa, saya lebih suka C ++.)
sumber
Jawaban:
Setelah mengembangkan perangkat lunak numerik selama 20 tahun sekarang, saya menemukan bahwa kami mungkin telah menggunakan sebagian besar pola desain yang dijelaskan dalam Buku oleh Geng Empat ( lihat di sini ). Pada akhirnya, perangkat lunak numerik hanyalah perangkat lunak berskala besar dan kompleks, jadi mungkin tidak mengherankan jika pertimbangan desain yang sama berlaku seperti pada perangkat lunak lain.
Tentu saja ada sejumlah kasus yang benar-benar spesifik untuk algoritme numerik (lihat, misalnya, di sini ) tetapi mengetahui serangkaian pola desain "tradisional" sebenarnya sudah merupakan awal yang baik.
sumber
Saya merekomendasikan Matthew G Knepley ini. Bahasa pemrograman untuk komputasi ilmiah. arXiv preprint arXiv: 1209.1711, 2012 ( https://arxiv.org/pdf/1209.1711.pdf )
Saya juga menyarankan untuk melihat dan membaca kode lain, misalnya, segitiga, PETSc, MoAB, deal.II, fenics dan banyak lainnya. Tidak semua solusi akan bekerja untuk Anda, tetapi pada akhirnya, mengatasi dan belajar dari orang lain (pengembang berpengalaman dan kode sukses) adalah pelajaran terbaik cara merancang kode.
Selain itu, saya pikir lebih baik bergabung dengan proyek yang ada dan menjadi kontributor atau pengembang. Terkadang Anda suka memulai sesuatu yang baru, tetapi Anda harus memiliki argumen yang kuat untuk melakukan itu.
sumber