Untuk jenis aplikasi apa Python merupakan pilihan yang buruk? [Tutup]

21

Saya baru mulai belajar Python, dan saya ingin mendapatkan lebih banyak konteks pada bahasa.

Saya menyadari bahwa, dalam banyak kasus, Python adalah bahasa yang lambat relatif terhadap C atau C ++. Dengan demikian, Python mungkin bukan pilihan terbaik untuk aplikasi yang perlu dijalankan secepat mungkin.

Di luar ini, sepertinya Python adalah bahasa tujuan umum yang bagus yang mudah dibaca dan ditulis. Perpustakaan yang tersedia memberikannya sejumlah besar fungsionalitas. Di luar aplikasi penting kinerja, di mana itu pilihan yang buruk untuk menggunakan Python (dan mengapa)?

Casey Patton
sumber
8
Tidak ada bahasa tujuan umum yang hebat. Setiap lima tahun atau lebih, yang baru menggantikan yang lama yang hanya bertahan di ceruk pasar. Lisp, Fortran, Pascal, Basic, Ada, Perl ...
mouviciel
3
@mouviciel: Pascal sebuah bahasa khusus? Ok, namanya diubah menjadi Delphi untuk mencocokkan dengan Borland / CodeGear / Embarcadero IDE, tetapi Delphi masih (berdasarkan) Pascal dan meskipun telah kehilangan pangsa pasar, saya tidak akan secara tepat menyebutnya bahasa khusus. Dan tidak Dasar untuk masalah itu. Visual Basic masih Basic. Baik Delphi dan Visual Basic digunakan di banyak perusahaan ...
Marjan Venema
7
"Python adalah bahasa yang lambat relatif terhadap C atau C ++". Anda harus mencadangkannya dengan patokan khusus yang Anda gunakan. Dalam beberapa kasus (I / O program terikat yang membuat banyak panggilan sistem) Python secepat C karena itu hanya pembungkus di sekitar perpustakaan C.
S.Lott
@ S.Lott Benar, dan PyPy terkadang dapat menyaingi JVM atau bahkan C / C ++
yati sagade
Dulu Pascal adalah bahasa pengajar pilihan ketika saya masih di universitas. Kemudian beberapa dekade berlalu dan sekarang tampaknya di Jawa. Saya kode beberapa bahasa secara profesional (setengah lusin), tetapi masih kode Delphi untuk bersenang-senang.
Mawg

Jawaban:

22

Perangkat lunak ditujukan untuk target tertanam dengan sumber daya terbatas mereka. Sebagian besar prosesor di planet ini tidak dapat menjalankan Python karena sumber daya yang tidak mencukupi, atau tidak ada yang memport versi ke arsitektur itu. Sebagian besar prosesor, bahkan sekarang, datang dengan kurang dari satu megabyte memori.

kamu
sumber
... itu sampai seseorang membuat port Python Arduino. Oh tunggu!
Spoike
5
@Seperti tautan itu untuk benar-benar menjalankan python di komputer dan hanya berkomunikasi secara serial ke arduino. Arduino tidak menjalankan kode python
basarat
1
@BasaratAli: Penafian - Saya menulis komentar saya bercanda. ;-)
Spoike
14

Dua tempat yang terlintas dalam pikiran adalah hal-hal yang membutuhkan banyak konkurensi, yang mana saya akan menggunakan Erlang. Atau perhitungan numerik tugas berat, yang mungkin saya coba gunakan Fortran.

Zachary K
sumber
1
Apakah Fortran masih di depan C / C ++ dalam perhitungan numerik? ...
Sardathrion - Reinstate Monica
1
Anda tahu saya tidak tahu. Ini bukan bidang yang saya punya banyak pengalaman. Tapi saya tahu bahwa orang-orang fortran telah menghabiskan lebih dari 30 tahun membuat alat mereka berjalan sangat cepat.
Zachary K
@Sathathrion - Sulit dikatakan. Wajar saja, Anda mengerti. Namun, beberapa bulan yang lalu, Mr. Lionel dari Intel Fortran fame menyatakan bahwa garis fortran mereka menjual lebih banyak produk lain dalam jalur pengembangan mereka (yang tidak terlalu sempit).
Benteng
@ Idigas: Memang, saya tahu bahwa Fortran digunakan secara luas tetapi itu bisa karena kode warisan dan bukan kendala pengoptimalan. Mungkin saya harus menanyakan itu sebagai pertanyaan ...
Sardathrion - Reinstate Monica
Juga ingat bahwa banyak orang yang melakukan perhitungan numerik mengenal Fortran dengan sangat baik dan itu adalah alat pilihan mereka. Jadi, ketika mereka harus melakukan tugas semacam itu, mereka akan meraih Fortran.
Zachary K
8

Karena Python adalah bahasa yang diketik secara dinamis, tanpa pemeriksaan waktu kompilasi, refactoring proyek Python besar yang tidak memiliki tes unit luas akan sulit.

Jadi, jika Anda memiliki proyek besar yang perlu dipertahankan dan dimodifikasi untuk waktu yang lama, dan tim Anda tidak berkomitmen untuk membuat tes otomatis untuk semuanya, maka Anda mungkin lebih baik menggunakan Java atau C #.

Eric Wilson
sumber
17
Refactoring setiap proyek besar tanpa unit test sangat sulit.
Sardathrion
9
Benar, tetapi jauh lebih sulit tanpa keamanan jenis.
Eric Wilson
3
@ Eric Wilson - Meski begitu, pengetikan yang kuat dapat memberi Anda rasa aman yang salah ... Ia mengkompilasi, kirimkan!
Mark Booth
2
Ini mungkin bukan 100% pada topik pertanyaan tetapi masih merupakan poin yang valid. Dukungan alat terutama refactoring untuk bahasa yang diketik secara dinamis kurang dibandingkan dengan bahasa seperti Java atau C #. Hanya mengganti nama barang bisa menjadi latihan yang melelahkan dalam proyek Python besar.
OliverS
Apakah Python memerlukan runtime atau VM yang terpisah, atau bisakah itu menghasilkan executable mandiri tunggal?
Jim In Texas
2

Jika fokus utama adalah pengembangan windows GUI, maka saya akan merekomendasikan terhadap CPython karena ada kekurangan desainer bentuk yang baik (dibandingkan dengan menggunakan .Net).

Namun, IronPython berjalan di. Net dan Anda ada dua IDE dengan desainer Formulir untuk dipilih: Visual Studio dan SharpDevelop. Sebenarnya Tools Python untuk Visual Studio dapat digunakan untuk CPython dan juga IronPython, yang cukup rapi meskipun saya belum mencobanya ...

Andy Memiliki
sumber
2

Ini benar-benar tergantung pada apa yang Anda maksud dengan "pilihan buruk".

Jika yang Anda maksud aplikasi di mana menggunakan Python sangat sulit, maka ada relatif sedikit: yang utama yang muncul di pikiran dan belum disebutkan adalah kode yang membutuhkan tingkat ketelitian yang tinggi di mana bahasa dengan sistem tipe canggih (Haskell, bahasa yang diketik dengan dependen) ) adalah pilihan yang lebih baik.

Jika yang Anda maksud aplikasi di mana Python adalah sub-optimal (yaitu, ada pilihan yang lebih baik) maka ada lebih banyak tetapi mereka juga lebih subjektif. Sebagai contoh, dalam pengalaman saya yang diakui terbatas, bekerja pada kompiler dan juru bahasa jauh lebih mudah dengan tipe data aljabar, pencocokan pola dan fitur yang lebih fungsional daripada yang dimiliki Python. Namun, daftar aplikasi yang lengkap seperti ini tidak mungkin karena mereka bervariasi per orang.

Tikhon Jelvis
sumber
2

Ini ideal untuk menulis sesuatu dengan cepat karena kemampuannya yang ekspresif dan berbagai pustaka pendukung.

Pengecekan tipe dinamis dan kurangnya deklarasi variabel eksplisit membuatnya menjadi pilihan yang buruk untuk proyek besar yang melibatkan ratusan ribu, atau bahkan jutaan baris kode. Hal yang sama berlaku untuk sistem kritis misi atau keselamatan kritis. Dalam sistem avionik, misalnya, akan sama sekali tidak dapat diterima untuk sistem gagal karena kesalahan yang bisa ditangkap pada waktu kompilasi.

Mike Collins
sumber
0

Yah, sama seperti Anda, saya juga baru mulai dengan Python. Tetapi bagi saya dalam konteks pembelajaran mesin dan ilmu data.

Saya juga baru saja memperoleh semua pengetahuan baru di Java 8 dan perpustakaan baru yang berorientasi aliran.

Saya benar-benar menyukai nuansa mengalir dari perpustakaan Java 8 stream yang baru, dan seberapa dekat rasanya saya berhutang pada perpustakaan percikan Apache. Ketika saya masuk ke Python, saya mengharapkan hal yang sama dan lebih.

Saya memang melihat lebih banyak. Tapi jauh lebih sedikit. Dokumentasi yang buruk, meskipun ada banyak; tidak ada fluiditas, dan pada kenyataannya saya dibiarkan menebak apakah suatu metode sedang memerintah objek baru, atau beroperasi pada ini; tidak ada yang dekat dengan peta / kurangi dll. Saya terkejut kecewa.

Namun sejak awal, saya tidak memiliki harapan besar akan betapa mudahnya belajar bahasa. Saya ternyata benar: tidak konsisten, tidak intuitif, sulit dipelajari. Tapi itu hanya pengalaman saya menjadi cukup baik dalam segala hal seperti Java.

YoYo
sumber