Bisakah Anda Meningkatkan keterampilan pemrograman Anda dengan mempelajari paradigma bahasa lain?


9

Jika demikian, dapatkah Anda memberi tahu saya bagaimana mempelajari paradigma baru mengubah pendekatan Anda untuk memecahkan masalah pemrograman bahkan jika masalahnya ada pada paradigma / bahasa / teknologi lain?

Saya akan sangat menghargai Jika Anda dapat memberi tahu saya secara spesifik, bagaimana keterampilan pemrograman X Anda (yaitu: JAVA / C # / C ++) ditingkatkan dengan mempelajari Y (yaitu: Skema / Prolog / Lisp).

Juga, paradigma apa yang Anda sarankan paling membantu untuk menjadi programmer yang baik?

Pengalaman saya hanya terstruktur - OOP, imperatif - prosedural, dan dalam beberapa hal template meta-programming, tetapi tujuan saya bukan untuk belajar bahasa lain, tetapi untuk mempelajari berbagai pendekatan untuk menyelesaikan masalah.

Terima kasih!


1
Saya percaya jawaban untuk ini adalah beberapa bentuk ya .
R0MANARMY

Jawaban:


7

Saya mencoba belajar setidaknya 1-2 bahasa baru setiap tahun. Yang paling saya peroleh adalah dari belajar bahasa fungsional (F #) yang mengubah cara saya melihat pemecahan masalah - I = sekarang saya mencoba memberi tahu mesin apa yang harus dilakukan daripada bagaimana melakukannya, terutama di C # di mana saya menggunakan Linq dengan sangat dan objek yang tidak bisa diubah sekarang karena saya tahu manfaat menggunakannya. Saya juga menggunakan fungsi urutan yang lebih tinggi cukup banyak (metode sebagai parameter) dan gaya pengkodean saya telah berubah (membaik) sebagai hasilnya.


1
Ditto untuk pemrograman Python saya. Saya akan gagal total dalam menulis semua kode yang mengunyah pohon dan menghasilkan parser di tertentu jika saya tidak belajar teknik saya akhirnya menggunakan (pohon cukup banyak menyiratkan rekursi atau versi lintingan tangan, generator parser terdiri fungsi tingkat tinggi dan terinspirasi oleh penggabung parser, dll.) dengan mempelajari Haskell.

Terima kasih, Anda menegaskan kembali apa yang saya duga ... Terima kasih lagi!
Armando

2

Benar. Setiap bahasa pemrograman yang Anda pelajari akan memiliki cara berbeda dalam melakukan hal-hal tertentu. Beberapa hal akan membuat Anda gila, beberapa hal yang akan Anda sukai dan hal-hal lain akan tumbuh perlahan pada Anda.

Tidak pernah buang waktu untuk mempelajari setidaknya dasar-dasar bahasa baru.


1

Ok, inilah contoh yang saya temui.

Saya telah belajar bahasa yang relatif lama (VB6) untuk proyek pada beberapa kode lama yang kami miliki.
Bahasa ini sangat berorientasi windows tetapi tidak ada kelas kuat tingkat tinggi seperti yang kita miliki di .Net framework.

Saya harus melakukan beberapa manipulasi gambar, dan itu memperkenalkan saya pada fungsi windows API untuk manipulasi gambar.

Setelah saya mengetahui bahwa itu memberi saya pemahaman yang lebih baik tentang Kelas GDI .Net. Dan pemahaman bahwa terkadang menggunakan windows API akan jauh lebih cepat (less wrapping function).

Jadi itu untuk menunjukkan bahwa bahkan ketika Anda belajar kode lama, Anda masih bisa belajar dan mendapatkan perspektif lain.


1

Bisakah Anda Meningkatkan keterampilan pemrograman Anda dengan mempelajari paradigma bahasa lain?

Dalam pengalaman saya, pasti ya. Memiliki beberapa cara berbeda untuk menyerang masalah adalah seperti palet alat. Suatu hari Anda (seperti yang saya lakukan) akan menggunakan alat-alat lain ini. Atau mungkin juga tidak. Semuanya tergantung. Beberapa contoh:

Bahasa umumnya tidak berdiri sendiri, mereka datang dengan lingkungan. Saya memang menghabiskan sedikit waktu mempelajari bahasa aneh yang dikenal sebagai awk . Itu bergantung pada pencocokan pola menggunakan "ekspresi reguler". Dari mencoba mempelajari C ++ STL (tidak terlalu sukses) saya belajar tentang peta. Menggabungkan kedua konsep ini saya bisa dengan cepat menulis beberapa utilitas pengubah teks di Pearl (satu-satunya bahasa yang tersedia di plattform).

Terutama untuk bersenang-senang, saya mencoba belajar Erlang (tidak terlalu berhasil). Ini memiliki perpustakaan fungsi yang dikenal sebagai OTP yang mengimplementasikan antara lain cara penanganan kesalahan, kadang-kadang dikenal sebagai membiarkannya gagal dan memiliki monitor yang me-restart fungsi. Saya telah menggunakan ide ini di beberapa bidang, kadang-kadang membiarkan hal-hal gagal daripada melakukan tes tanpa akhir.

Mencoba mempelajari Haskell (sekali lagi tidak terlalu berhasil) benar-benar membuka mata saya terhadap cara-cara lain untuk menyerang masalah. Semacam pemrograman fungsional (menurut saya) dimulai dengan menulis kode yang mengatakan hasil apa yang Anda inginkan, bukan penulisan langkah-langkah yang terlibat untuk sampai ke sana. Saya menemukan bahwa ini sangat membantu saya dalam menulis kode SQL yang lebih baik.

Akhir-akhir ini, saya memang mencoba sedikit javascript. Dan menemukan lingkungan yang dikenal dengan anggukan. Tidak diperlukan kode untuk membuat server otomatisasi rumah kecil.

Untuk meletakkannya dalam perspektif, sebagian besar dari saya berkecimpung dalam berbagai bahasa adalah (dan) pada tingkat yang agak dangkal sebagian besar untuk merasakan apa yang orang bicarakan. Ada sangat sedikit bahasa yang bisa membuat saya produktif.


0

Saya juga belajar banyak dari mencoba-coba dalam bahasa fungsional untuk beberapa waktu. Namun, apa yang saya ambil darinya adalah kurang melakukan hal-hal berbeda dari bahasa imperatif seperti bagaimana membuat konkurensi lebih mudah. Ini dapat diterapkan dengan mudah dalam bahasa imperatif seperti dalam bahasa fungsional, tetapi untuk beberapa alasan, sebagian besar contoh yang saya temui dalam bahasa imperatif lebih rumit. (Hal-hal lain ternyata jauh lebih rumit dalam bahasa fungsional.)

Hal lain yang saya pelajari dari bahasa baru adalah pola pemrograman tambahan. Saya telah membaca tentang banyak dari mereka, tetapi melihat dan menggunakan beberapa implementasi yang benar-benar baik dari mereka membuatnya lebih mudah untuk memahami dan benar-benar membawa pulang kegunaan mereka dan kapan mereka sesuai.

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.