Apakah saya perlu memahami bagian dalam bahasa pemrograman?

11

Saya pemula untuk Python dan saya sangat menyukainya sejauh ini. Satu pertanyaan yang sering muncul di benak saya adalah apakah saya perlu memahami dan karena itu belajar bahasa pemrograman internal (seperti dalam kasus saya Python). Seperti yang Anda ketahui, Python sendiri ditulis dalam C.

Jadi pertanyaan saya adalah: Seberapa dalam harus menyelam ke dalam bahasa pemrograman untuk menjadi mahir atau fasih dalam bahasa ini. Saya membandingkan pertanyaan ini dengan bahasa "alami". Saya tidak tahu setiap detail dalam tata bahasa dalam bahasa ibu saya tapi saya bisa mengekspresikan diri saya tanpa masalah dalam bahasa itu. Ini adalah saat saya mengatakan saya fasih berbahasa. Apakah itu berlaku untuk bahasa pemrograman juga?

Flo Schönfeld
sumber
4
Internal menjadi penting ketika Anda harus khawatir tentang kinerja.
Gort the Robot
7
Saya tahu sedikit tentang internal CPython dan PyPy, tetapi 80% dari waktu mereka tidak ada gunanya (atau bahkan berbahaya, seperti mengganggu) untuk pemrograman Python saya. Saya senang saya tahu hal-hal lain 20%, dan itu tidak hanya untuk kinerja, juga untuk memahami pesan kesalahan bodoh dan menghindari perilaku non-portabel.
2
Tidak dan tidak. Jelas bukan duplikat dari keduanya.
1
Itu tergantung apa yang Anda maksud dengan "internal," tetapi saya tahu bahwa tidak jarang sama sekali bagi programmer C # dan Java profesional untuk memiliki setidaknya beberapa pemahaman tentang CLI atau JVM.
user16764

Jawaban:

8

Anda tidak perlu tahu apa - apa tentang bagian dalam bahasa pemrograman, untuk menulis program dalam bahasa itu. Namun, semakin baik Anda memahami bahasa, semakin baik program Anda.

  1. Pengetahuan tentang struktur data dan algoritma akan membantu Anda memilih struktur data yang paling sesuai untuk tugas khusus Anda. Beberapa bahasa memiliki struktur data ini secara internal.

  2. Memahami "budaya" bahasa membantu Anda menulis program yang mengikuti "praktik terbaik," membuatnya lebih mudah untuk dipahami, lebih dapat dipelihara, dan berkinerja lebih baik.

  3. Menulis kompiler untuk bahasa itu (atau kompiler untuk bahasa lain dalam bahasa itu) dapat memberi Anda pemahaman mendalam tentang bahasa tersebut, dan meningkatkan program Anda di luar sekadar rata-rata.

  4. Mahir dalam bahasa lain (terutama yang memiliki paradigma berbeda) membuat Anda menjadi programmer yang lebih baik dalam bahasa utama Anda, karena Anda dapat membawa keterampilan dan alat itu untuk ditanggung dalam bahasa utama Anda.

Sebagai akibat wajar, Anda tidak perlu tahu apa-apa tentang komputer Anda untuk menulis program di dalamnya. Tetapi mengetahui bagaimana komputer Anda bekerja membuat Anda lebih baik dalam menulis program untuk itu.

Robert Harvey
sumber
7

Saya tidak tahu setiap detail dalam tata bahasa dalam bahasa ibu saya tapi saya bisa mengekspresikan diri saya tanpa masalah dalam bahasa itu. Ini adalah saat saya mengatakan saya fasih berbahasa. Apakah itu berlaku untuk bahasa pemrograman juga?

Sederhananya, ya. Selama Anda bisa mengekspresikan diri (dan memahami orang lain) dengan baik, maka Anda dianggap fasih berbahasa.

Yang mengatakan, sekadar fasih tidak cukup untuk beberapa pekerjaan. Beberapa jenis penulis, pekerjaan yang membutuhkan ketrampilan berbicara di depan umum dan beberapa akademisi yang fokus pada bahasa perlu mengetahuinya "lebih baik daripada fasih". Demikian juga, beberapa spesialisasi programmer memerlukan pengetahuan tentang internal bahasa, tetapi bagi kebanyakan orang mengetahui bahasa pemrograman setara dengan cara meminta nomornya atau memesan burger keju sudah cukup.

Telastyn
sumber
0

Saya akan mendefinisikan "mahir" dengan bahasa sebagai:

  • Pahami sebagian besar sintaksis, dan pengetahuan yang cukup untuk meneliti setiap fitur baru yang Anda temukan dalam kode orang lain.
  • Pengetahuan yang bekerja tentang perpustakaan dan / atau kerangka kerja standar, dan kemampuan untuk menemukan, membaca, dan memahami dokumentasi resmi tentang hal-hal baru yang perlu Anda gunakan.
  • Pemahaman dan kemampuan untuk menggunakan idiom umum dan konvensi penamaan untuk bahasa tersebut.

Perhatikan bahwa cara kerja bahasa tidak ada dalam daftar ini, tetapi ada banyak "kemampuan untuk belajar". Memiliki setidaknya pemahaman sepintas tentang internal dapat membantu, tetapi tidak perlu untuk menjadi mahir. Namun, cukup mengetahui tentang mereka sehingga Anda dapat memahami referensi dalam dokumentasi yang Anda baca adalah ide yang sangat bagus.

Sebagai contoh: Saya tahu bahwa VB.NET dan C # dikompilasi ke .NET's IL (Intermediate Language), yang kemudian dikompilasi untuk kerangka kerja target. Saya tidak tahu banyak tentang IL, tetapi saya cukup tahu untuk mengenalinya ketika saya melihatnya, dan memahami secara umum bagaimana ia menangani hal-hal tertentu. Saya menganggap diri saya ahli dalam C #, tetapi tidak di VB.NET, meskipun "internal" adalah sama, dan pemahaman saya tentang mereka tidak dalam.

Bobson
sumber