Baru-baru ini saya lebih peduli tentang cara saya menulis kode. Setelah membaca beberapa buku tentang pola desain (dan penerapannya yang terlalu bersemangat, saya yakin) saya telah mengubah pemikiran saya ke arah merangkum apa yang berubah. Saya cenderung memperhatikan bahwa saya menulis lebih sedikit antarmuka dan lebih banyak kode berorientasi metode, di mana saya suka merapikan kehidupan ke dalam kelas lama dengan predikat, aksi, dan tugas delegasi lainnya. Saya cenderung berpikir bahwa sering kali tindakan itu berubah, jadi saya merangkumnya. Saya bahkan sering, meskipun tidak selalu, memecah antarmuka menjadi satu metode, dan kemudian saya lebih suka menggunakan delegasi untuk tugas daripada memaksa kode klien untuk membuat kelas baru.
Jadi saya kira itu kemudian mengenai saya. Haruskah saya melakukan pemrograman fungsional saja?
Sunting: Saya mungkin memiliki kesalahpahaman tentang pemrograman fungsional.
Saat ini bahasa pilihan saya adalah C #, dan saya berasal dari latar belakang C ++. Saya bekerja sebagai pengembang game tetapi saat ini saya menganggur.
Saya sangat menyukai arsitektur. Keutamaan saya adalah kode yang bersih, fleksibel, dapat digunakan kembali dan dikelola. Saya tidak tahu apakah saya telah diracuni dengan cara-cara ini atau apakah itu menjadi lebih baik. Apakah saya mengalami demam refactoring atau haruskah saya melanjutkan? Saya mengerti ini mungkin pertanyaan tentang "gunakan alat yang tepat untuk pekerjaan itu" , tetapi saya ingin mendengar pendapat Anda.
Haruskah saya mengambil bahasa fungsional? Salah satu faktor ketakutan saya adalah meninggalkan kenyamanan Visual Studio.
Jawaban:
IYA
Mempelajari hal-hal baru harus menyenangkan. Dan mempelajari cara baru untuk memprogram harus menjadikan Anda seorang programmer yang lebih baik. Periksa salah satu dari Haskell atau Erlang, keduanya fungsional tetapi mereka sangat berbeda. Jika Anda memilih Haskell, cari beberapa pembicaraan oleh "Simon Payton Jones" di youtube atau podcast. Pria itu adalah pembicara yang hebat.
sumber
Kudus * * * *. Tidak ada peluru perak. Mengundurkan diri. Tenang, ambil napas dalam-dalam.
Hanya karena Anda memiliki alat di kotak alat Anda, itu tidak berarti Anda pasti akan menggunakannya. Berkonsentrasilah pada tugas yang ada, yaitu menulis program yang berfungsi, dan refactor ketika kode berbau tidak enak. Jangan merangkum dan abstrak setiap detail kecil hanya karena itu mungkin akan berubah suatu hari nanti. IMO, jauh lebih baik untuk mulai langsung, KISS & YAGNI, dan bereaksi terhadap perubahan persyaratan ketika mereka benar - benar berubah .
Saya tidak berpikir ada orang di sini yang dapat memberi tahu Anda apakah bahasa fungsional lebih cocok untuk kebutuhan Anda atau tidak. Karena Anda tidak memberi tahu kami apa yang sedang Anda kerjakan.
sumber
Anda dapat mengambil F # . Ini adalah bahasa fungsional .NET, yang akan memungkinkan Anda untuk menggunakan Visual Studio dan menggunakan kembali banyak pengetahuan .NET Anda. Rakitannya tentu saja berintegrasi dengan C # rakitan dengan mulus (memungkinkan Anda untuk dengan mudah menggabungkan C #, C ++ / CLI dan F # dalam satu proyek). Dukungan F # hadir dengan VS Pro atau lebih baik, saya tidak yakin apakah itu diaktifkan secara default.
sumber
IMO, ada baiknya mencoba bahasa fungsional. Bahkan jika Anda tidak pernah menggunakannya secara langsung dalam produk yang dirilis, mempelajarinya hampir pasti akan membantu memberikan pandangan / pandangan yang agak berbeda pada pemrograman. Bahkan jika Anda akhirnya terus melakukan semua "nyata" pengkodean dalam C #, kemungkinan cukup adil bahwa itu akan membantu Anda meningkatkan kode yang Anda tulis dalam C #.
Seperti yang telah disebutkan orang lain, pilihan yang jelas untuk seseorang yang terbiasa dengan Visual Studio adalah F #, yang pada dasarnya adalah turunan Ocaml / Caml / ML. IMO, itu adalah pilihan yang baik dari pihak Microsoft untuk memperkenalkan orang ke pemrograman fungsional - ini adalah bahasa fungsional penuh, tetapi tidak memiliki sintaksis yang hampir sama asingnya dengan beberapa yang dilakukan (misalnya, sementara bahasa berbasis Lisp melakukan memiliki kelebihan nyata, pemula hampir selalu merasa sulit untuk membaca).
sumber
Ya kamu harus.
Jika Anda memilih bahasa yang murni, seperti Haskell, Anda tidak hanya akan belajar bahasa baru, tetapi juga cara berpikir yang baru. Ini dapat membantu Anda nantinya dalam pekerjaan proceural / OO Anda juga.
F #, di sisi lain, tidak murni, sehingga Anda dapat dengan mudah kehilangan apa yang penting dalam pemrograman fungsional. Jadi, Anda dapat, terus menulis program prosedural yang mengubah variabel di sini, melakukan beberapa efek samping di sana, hanya dalam sintaks F #.
sumber
Jika Anda sudah menggunakan c # Anda tidak perlu bahasa baru - dengan kombinasi metode ekstensi, lambdas dan tipe Fungsi / Tindakan umum, cukup mudah untuk menulis kode fungsional dalam C # - dengan cara itu Anda dapat menggunakan gaya fungsional dalam algoritma yang paling masuk akal tanpa perlu mengubah seluruh aplikasi.
sumber