Saya sudah membaca di sini di P.SE lebih banyak pertanyaan di mana programmer pemula disarankan untuk memilih Python sebagai bahasa pemrograman pertama mereka.
Jangan salah paham, saya suka Python. Saya sangat menyukainya! Tetapi filosofinya berkisar pada "Kita semua menyetujui orang dewasa di sini".
Dari sudut pandang pengalaman / pengetahuan, seorang programmer pemula bukanlah orang dewasa. Yang kemudian berarti lebih mudah untuk menembak diri sendiri di kaki dan mengambil beberapa kebiasaan buruk bahkan jika Anda selamat dari lukanya.
Saya berpikir bahwa dalam bahasa "lebih statis" akan lebih sulit untuk menembak diri sendiri karena akan lebih ketat.
Kembali ke pertanyaan saya. Mengapa Python direkomendasikan sebagai bahasa pemrograman tingkat pemula?
Apa poin yang membuatnya baik untuk mengajar bahasa pemrograman. Atau ... apakah itu preferensi pribadi penasihat?
I'm thinking that in a "more static" language it would be harder to shoot yourself in the foot
- baik, C dan C ++ diketik secara statis dan Anda akan sangat, sangat terkejut melihat berapa banyak cara yang berbeda Anda dapat meledakkan kaki Anda menggunakan mereka ...Jawaban:
IMO, poin paling menonjol yang berbicara untuk Python sebagai bahasa entry-level adalah ini:
sumber
Halo dunia dengan python:
Halo dunia di Jawa:
Halo dunia di C:
Melempar harus berbicara tentang kompilasi untuk dua lainnya, dan python jauh lebih sederhana. Saya hanya perlu berbicara tentang satu ide yang saya tertarik untuk melihat, semua mesin yang memperumit masalah menghilang begitu saja dengan python. Saya bisa menunggu sampai mereka siap untuk berbicara tentang modul, tidak perlu terburu-buru untuk mendapatkan stdio.h untuk program sederhana. Saya bisa menunggu sampai mereka siap untuk topik seperti kelas tidak perlu terburu-buru untuk program pertama mereka. Ia memiliki REPL untuk bermain-main di baris perintah. Python sangat baik karena secara konsep minimal. Ini adalah hal yang baik karena membantu pemula fokus pada tugas yang dihadapi.
sumber
Itu sudut pandang yang tidak biasa.
Hal yang disetujui orang dewasa adalah bagian yang sangat kecil dari filosofi Python. Tentu saja tidak "berputar" di sekitar itu. Ini bahkan bukan bagian dari "Zen Python" yang Anda dapatkan jika Anda melakukannya
import this
dalam penerjemah.Hal-hal lain, seperti "eksplisit lebih baik daripada implisit", "Sederhana lebih baik daripada kompleks", dan "jumlah keterbacaan" jauh lebih penting bagi Python, dan menunjukkan mengapa Python adalah bahasa pertama yang baik.
Pokoknya, "orang dewasa yang setuju" sebenarnya hanya tentang kurangnya objek pribadi di Python. Menurut pendapat saya, itu sendiri adalah indikasi lain mengapa ini baik untuk pemula: Anda tidak perlu khawatir tentang hal-hal seperti antarmuka saat Anda baru memulai.
sumber
private
bidang menjadipublic
untuk diretas? BTW, dengan Python, Anda bisa mengawali properti dengan garis bawah untuk menjadikannya pribadi (meskipun tidak benar-benar tersembunyi)Ada dua titik yang berbeda. Saat membesarkan anak, haruskah Anda memasukkannya ke dalam gelembung yang hanya memiliki benda-benda aman di dalamnya atau membiarkannya bermain di halaman tempat mereka mungkin tersandung dan jatuh?
Berada di dalam gelembung sangat membatasi. Anda harus menulis kode dengan cara yang sangat spesifik agar dapat dijalankan. Ketika orang pertama kali memulai, apa pun yang tidak ada di sana untuk melakukan apa yang diinginkan orang itu dianggap sia-sia. Ini juga dapat mengarah pada "Saya tidak tahu mengapa itu ada, tetapi seseorang mengatakan kepada saya bahwa itu perlu."
Dalam Python, itu tidak ada. Jika Anda ingin mengatakan "Hello World", Anda cukup
print "Hello World"
. Menggunakan Python sebagai titik masuk memungkinkan seseorang untuk mulai berjalan dan hanya menulis kode yang mereka butuhkan untuk membuat apa yang mereka inginkan terjadi. Seorang programmer pertama kali tidak dapat memahami nilai enkapsulasi sebelum mereka memahami dasar-dasar pemrograman.Juga, dalam program kecil, keamanan jenis bukan masalah besar. Kode apa pun yang ditulis oleh pengembang awal akan kecil dan berisi. Tidak sampai Anda memiliki basis kode yang lebih besar, dengan banyak bagian yang Anda gunakan sebagai lapisan abstraksi dan tidak secara aktif dipikirkan, ketika safety type menunjukkan manfaatnya memastikan Anda melakukan apa yang Anda butuhkan. Ketika semua kode berada di file yang sama, lebih mudah untuk hanya melihat fungsinya dan melihat apa yang Anda lakukan salah.
Manfaat lain:
sumber
Python adalah bahasa yang bagus untuk pemula karena itu membuat hal-hal sederhana menjadi sederhana sambil membuat hal-hal yang cukup rumit menjadi mungkin sehingga tidak dianggap sebagai bahasa mainan yang tidak berguna dan bahkan programmer tingkat lanjut menganggapnya sebagai alat yang tepat untuk beberapa pekerjaan. Secara khusus, hal-hal sederhana termasuk:
Minimum kode boilerplate untuk program sederhana.
Pengumpulan sampah.
Pengetikan dinamis.
Sintaksis bersih dan sederhana.
Bandingkan dengan misalnya Java atau C ++ dan kesulitan menjelaskan semua konsep yang terlibat dalam program "Halo, dunia". Hal-hal rumit termasuk:
Introspeksi (setara Python dengan refleksi).
Penambalan monyet.
Hal-hal yang dapat dilakukan dengan perpustakaan standar yang sangat besar.
Yang mengatakan, tidak ada orang yang hanya tahu Python adalah programmer yang baik karena tidak ada yang hanya tahu satu bahasa atau satu gaya bahasa adalah programmer yang baik. Siapa pun yang serius tentang pemrograman pada akhirnya harus belajar sesuatu yang lebih rendah, hanya saja tidak sementara ia masih mencoba untuk mengontrol aliran, rekursi dan dasar-dasar lainnya.
sumber
Saya melihat Python sebagai pilihan yang baik. Biasanya untuk pemrograman level "entri" Anda menginginkan sesuatu yang sederhana namun produktif. Menerima umpan balik cepat mendukung motivasi dan kecepatan belajar. Saya berani mengatakan ini bukan tentang belajar "cara yang benar" tetapi lebih pada "ketagihan dan jatuh cinta dengan pemrograman seumur hidup". Sisanya akan datang dengan baik nanti melalui pengalaman, pendidikan menengah, apa pun.
sumber
IMHO, mengajar orang untuk kode dalam bahasa "aman" adalah ide yang sangat buruk. Orang menganggap semuanya mudah, dan hanya berpikir untuk menambahkan lapisan kode. Dan kehilangan peluang untuk bisa debug / memperbaiki masalah ketika mereka muncul.
Pemrogram yang baik benar-benar harus tahu C / C ++ atau bahkan perakitan. Dan pola pikir mereka harus datang dari sisi itu juga. Dan tidak - "Oh, GC, itu Magic (tm) kami keren, dan mengapa C ++ tidak memiliki GC, itu bodoh." sikap.
sumber
Untuk programmer pemula, kekurangan jenis statis adalah fitur, bukan bug!
Ketika belajar memprogram bahkan hal-hal yang paling jelas bisa sulit dipahami. Sistem tipe dinamis sangat sederhana dan keluar dari topik yang lebih mendesak dalam kursus pengantar, seperti modularisasi, aliran kontrol, dll.
Ada juga beberapa keuntungan konseptual untuk pengetikan dinamis dalam pengaturan pendidikan:
Jenis dikaitkan dengan nilai, bukan variabel. Ini bisa dibilang lebih intuitif karena mencerminkan alasan program sebenarnya macet.
Pesan kesalahan jauh lebih cepat dan konkret. Dalam Python Anda mendapatkan jejak tumpukan yang indah dan pesan yang menunjukkan apa yang sebenarnya salah. Dalam bahasa diketik statis Anda mendapatkan peringatan compiler mengatakan apa yang akan salah.
Siswa yang bekerja dengan kompiler hanya dapat bekerja pada program yang mereka pahami sepenuhnya, jangan sampai mereka menghadapi kesalahan kompilasi yang tidak dapat mereka pecahkan.
Pengecekan kesalahan runtime memungkinkan Anda untuk menjalankan program yang tidak lengkap. Hal ini memungkinkan untuk program yang lebih bertahap di mana siswa pertama kali dapat khawatir tentang membuat permulaan program yang benar dan hanya kemudian melihat apa yang terjadi.
Beberapa konsep penting, seperti polimorfisme parametrik dan pengetikan bebek, tersedia secara gratis dalam bahasa yang dinamis tetapi memerlukan sistem tipe yang lebih kompleks dalam bahasa statis.
Akhirnya, saat Anda masih harus menangani kompleksitas yang sama, Anda tidak mendapatkan semua manfaat pengetikan statis saat memulai program:
Program pemula kecil dan tidak memiliki banyak jalur kode (jadi Anda tidak perlu terlalu khawatir tentang ketik bug di bit kode yang jarang diakses)
Program pemula tidak menggunakan antarmuka tingkat tinggi dan fungsi yang begitu banyak sehingga tidak banyak yang bisa diperoleh di departemen "gunakan sistem tipe untuk merancang program".
sumber
Ada satu hal yang sangat, sangat , sangat penting tentang Python untuk pemrogram pemula yang tampaknya diabaikan oleh semua orang: Memaksa lekukan yang valid.
Seperti beberapa komentator lainnya, saya mengajar pemula selama beberapa tahun. Sangat umum melihat hal-hal seperti ini:
Sekarang bayangkan inkonsistensi mengerikan ini lebih dari sekitar seratus baris kode. Bagi beberapa siswa, keseluruhan proyek mereka terlihat seperti ini.
Saya tidak tahu bagaimana mereka berhasil melakukannya, dan itu tidak pernah mengganggu mereka. Setiap kali saya bertanya, respons mereka adalah seperti "Ya, itu tidak masalah karena kompiler akan mengetahuinya." Bahkan ketika saya menunjukkan bug yang jelas kepada mereka dengan memperbaiki indentasi, mereka masih tidak pernah mendapat petunjuk.
Dalam Python, jenis lekukan ini benar-benar tidak valid. Mereka terpaksa menggunakan sesuatu yang setidaknya dapat dibaca, bahkan jika itu sedikit tidak konsisten. Ini memberi mereka kebiasaan yang, semoga, akan berlanjut ketika mereka akhirnya belajar bahasa lain.
sumber
Python adalah bahasa pertama yang bagus untuk sebagian besar alasan yang disebutkan di atas. Secara khusus, salah satu persyaratan bahasa pertama adalah kurva belajar yang lembut, yang dimiliki Python. Anda tidak harus tahu semua tentang kelas, misalnya, untuk memulai. Dalam hal ini agak mirip dengan Dasar yang banyak dari kita mulai.
Satu hal yang belum disorot sejauh ini adalah bahwa banyak bahasa memiliki kurva belajar yang lembut, tetapi dengan cepat mengalami hambatan ketika mencoba melakukan hal-hal yang lebih maju. Old-school Basic adalah contoh yang bagus untuk ini. Dengan Python Anda bisa masuk ke beberapa hal yang sangat canggih sebelum merasa bahwa beberapa bahasa lain mungkin merupakan pilihan yang lebih baik.
Pada saat itu seorang pemula dapat memahami lebih banyak tentang pilihan dan trade-off, dan siap untuk C / C ++, Java, Assembler, Prolog, Lisp, dll. Sebenarnya, Lisp mungkin menjadi bahasa pertama yang baik juga, meskipun agak sulit !
sumber
Masalah utama dengan Python sebagai bahasa pertama adalah pengetikan dinamis dan kurangnya deklarasi variabel. IMHO mereka adalah satu-satunya masalah utama dengan bahasa.
Penambahan garis sederhana yang mengatakan saya hanya akan menyimpan string di variabel foo memungkinkan programmer, lingkungan pengembangan, bahasa (dan untuk "kode profesional", orang bodoh yang harus datang dalam keadaan dingin dan mendukungnya setelah itu) untuk bekerja sama. Untuk pengembang normal dan pemula terutama tidak masuk akal untuk menggunakan variabel untuk lebih dari satu jenis. Cukup OK pada kesempatan langka ketika masuk akal untuk menggunakan var / objek tipe eksplisit yang memungkinkan pengetikan dinamis.
sumber