Mengapa Python direkomendasikan sebagai bahasa pemrograman tingkat pemula? [Tutup]

16

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?

JohnDoDo
sumber
17
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 ...
Péter Török
@ Péter Török: Ya, dan itu membuat seluruh kaki Anda pergi (c ++: D). Saya katakan "lebih statis" mencoba untuk menghindari perang api untuk sesuatu seperti ... Saya tidak tahu ... Jawa?!?! ... yang semua orang tampaknya benci karena diperkirakan di sekolah / universitas dan orang-orang memiliki beberapa takut dari itu ...
JohnDoDo
1
Saya pikir C ++ adalah bahasa awal yang lebih baik, karena itu telah membantu saya untuk lebih memahami hal-hal dalam bahasa lain.
systemovich
1
Saya memiliki daging sapi saya dengan python sebagai bahasa awal setelah TAing kelas pemrograman semester pertama yang menggunakannya. Siswa sering tidak mengerti 'tipe' dan dependensi spasi putih membunuh mereka. Mereka juga kesulitan memahami objek-objek dengan referensi bisnis mandiri OO yang dicungkil itu. Ini memiliki kelebihannya tetapi pasti memiliki pencela juga.
Rig
2
@ MahmoudHossam saya setuju. Saya hanya menyoroti beberapa poin penting dari pengalaman saya. Java, C #, Lisp, dll semua memiliki masalah. Itu hanya masalah utama yang saya temui mengajar python untuk programmer pertama kali.
Rig

Jawaban:

30

IMO, poin paling menonjol yang berbicara untuk Python sebagai bahasa entry-level adalah ini:

  • ia memiliki kurva belajar yang dangkal - beralih dari yang tidak ada menjadi "Halo dunia" jauh lebih cepat daripada di kebanyakan bahasa lainnya
  • itu intuitif - sintaks dirancang untuk mengikuti prinsip paling tidak mengejutkan, dan secara keseluruhan sangat konsisten (sayangnya, perpustakaan standar tidak selalu mengikuti konsistensi ini)
  • itu memerlukan sangat sedikit boilerplate : "Hello world" yang khas adalah satu baris kode, dan program sederhana dapat ditulis tanpa kebisingan latar belakang tambahan yang perlu dijelaskan (seperti kata kunci deklarasi fungsi, pernyataan impor, konstruksi kelas, arahan preprosesor, dll.)
  • ada yang sangat baik, langsung alat-alat untuk bekerja dengan kode python, terutama juru interaktif; Anda tidak perlu mempelajari sistem build, IDE, editor teks khusus, atau apa pun untuk mulai menggunakan python - prompt perintah, editor interaktif, dan editor teks sederhana, yang Anda butuhkan
  • itu menggunakan pengetikan dinamis , tetapi tidak seperti banyak bahasa yang diketik secara dinamis lainnya, jenisnya transparan, dan jenis perangkap yang terkait jarang terjadi.
tammmer
sumber
Hanya ingin menekankan intuisi bahasa. Saya telah melihat orang-orang dengan 0 pengalaman pemrograman dengan cepat belajar Python. Ini sebagian besar disebabkan oleh sintaks / tata bahasa yang sangat dekat dengan bahasa Inggris yang diucapkan.
Stephen Gross
12
Pada titik terakhir Anda: orang sering mencampur pengetikan dinamis dengan pengetikan lemah. Python diketik secara dinamis (tipe yang dikaitkan dengan nilai alih-alih variabel) tetapi juga diketik dengan kuat (sehingga program macet alih-alih diam-diam menelan kesalahan konversi)
hugomg
@missingo I second - Mata elang yang kamu miliki;)
yati sagade
@missingno: Saya tahu bedanya. Contoh tipe non-transparan adalah kunci array PHP - array berperilaku berbeda untuk kunci integer daripada untuk tipe lainnya; jika Anda menambahkan dua bilangan bulat yang cukup besar, Anda mungkin berakhir dengan float. Dan itu hanya satu contoh - terutama PHP dan javascript (dua bahasa dinamis paling populer dalam pengembangan web) penuh dengan kasus tepi pengetikan yang tidak jelas.
tdammers
Menilai dari komentar Anda, dengan "tipe transparan" maksud Anda aturan yang mengatur tipe mudah dipahami? Apa sebenarnya yang ingin Anda katakan?
phant0m
8

Halo dunia dengan python:

 print "Hi there"

Halo dunia di Jawa:

 class HelloWorldApp {
  public static void main(String[] args) {
    System.out.println("Hello World!"); // Display the string.
    }
  }

Halo dunia di C:

  #include<stdio.h>
  int main(int argc, char** argv)
  {
    printf("Hello World");
   }

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.

stonemetal
sumber
15
Anda lupa "return 0;" pernyataan dalam implementasi C Anda :) Peringatan kompiler!
Stephen Gross
2
Inilah sebabnya mengapa BASIC ada sejak awal. 10 PRINT "Hello World!" 20 AKHIR Untuk kredit tambahan, program Python gagal "Apakah katanya 'Hello World!'?" unit test :-)
Ross Patterson
3
Sama di F #: printfn "Hello World!". Yay, F # bagus untuk pemula!
Den
7

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 thisdalam 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.

Daniel Roseman
sumber
1
Ya, tetapi tentang bagian "pribadi" itu, karena Anda memiliki akses ke bagian itu, Anda mungkin tergoda untuk meretas beberapa solusi / jalan pintas di sekitar mereka yang tidak tahu yang lebih baik.
JohnDoDo
@ JohnDoDo Apa bedanya jika, di C # atau Java, saya memutuskan untuk mengonversi privatebidang menjadi publicuntuk diretas? BTW, dengan Python, Anda bisa mengawali properti dengan garis bawah untuk menjadikannya pribadi (meskipun tidak benar-benar tersembunyi)
OnesimusUnbound
4

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:

  • Banyak perpustakaan yang melakukan banyak hal
  • Fleksibilitas untuk mengajarkan kedua teknik pemrograman Berorientasi Objek dan Fungsional tanpa membuatnya tampak seperti salah satu dipaksa masuk ke dalam bahasa yang dirancang untuk melakukan yang lain.
unholysampler
sumber
3
Counter analogi: Mengajari anak Anda tentang tidak bermain api. 1) Anda dapat berbicara dengannya, menjelaskan apa itu api dan apa yang dilakukan api, perlihatkan slide PowerPoint apa pun .. atau 2) biarkan dia bermain dengan api dan terbakar. Metode kedua memang jauh lebih efisien. Yang saya tertarik adalah kemungkinan bahwa ia mungkin membakar rumah atau bahkan menyukainya dan menjadi pyromaniac karena tidak ada langkah-langkah keamanan yang diambil. Agak situasi yang ekstrem tetapi tidak bisa mengungkapkannya dengan kata-kata.
JohnDoDo
1
@JohnDoDo - Jadi biarkan dia terbakar ... itu sekolah terbaik dan siapa yang tidak terbakar pada pertandingan sebagai seorang anak? Itu tidak akan membunuhnya ...
Benteng
1
@JohnDoDo: Hanya karena bahasanya memungkinkan Anda bermain dengan api tidak berarti guru tidak menunjukkan bahwa api itu sangat berbahaya dan menjelaskan beberapa cara untuk menghindarinya. Saya pikir hal lain yang Anda lewatkan adalah bahwa seseorang tidak terikat pada suatu bahasa. Setelah mendapatkan pemahaman dasar tentang pemrograman, mereka dapat menggunakan bahasa yang berbeda untuk mempelajari konsep yang lebih besar (seperti tidak membakar gedung).
unholysampler
3

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.

dsimcha
sumber
2

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.

Merusak
sumber
1

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.

Coder
sumber
1

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:

  1. Jenis dikaitkan dengan nilai, bukan variabel. Ini bisa dibilang lebih intuitif karena mencerminkan alasan program sebenarnya macet.

  2. 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.

  3. 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.

  4. 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".

hugomg
sumber
1

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:

#include <stdio.h>

int main(char *args[])
                                                                     {
   int A = 1, B = 1, C;
for (int X = 0;X < 20;X++)
{
   printf("%d\n", A);
C = B + A;
      A = B;  B = C;
}
        }

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.

Izkata
sumber
0

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 !

rzzzwilson
sumber
-1

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.

JohnC
sumber