Mengapa masa depan bukan untuk Python

Meskipun, tentu saja, bahasa pemrograman ini akan diminati selama bertahun-tahun.



Butuh dekade komunitas pemrograman untuk menghargai Python. Sejak awal 2010-an, itu telah booming - dan akhirnya melampaui C ++, C #, Java dan JavaScript dalam popularitas.

Tapi berapa lama tren ini akan berlanjut? Kapan Python akhirnya akan digantikan oleh bahasa lain, dan mengapa ini pasti terjadi?
Perangkat Lunak EDISON - pengembangan web
Terjemahan didukung oleh EDISON.

Kami sedang mengembangkan aplikasi dengan Python , serta melakukan pengujian perangkat lunak .

Kami mencintai dan menggunakan Python secara luas! ;-)

Apa yang membuat Python populer saat ini


Popularitas Python dapat dinilai oleh StackOverflow, jika Anda melihat jumlah tag di pos. Mengingat skala StackOverflow, ini adalah indikator yang cukup objektif tentang popularitas bahasa.


Sebutkan pada StackOverflow dari beberapa bahasa pemrograman populer - dinamika perubahan selama bertahun-tahun. Kinerja Python tumbuh dengan mantap, sementara para pesaing menurun.

Sementara R telah berada di dataran tinggi selama beberapa tahun terakhir, dan banyak bahasa lainnya terus menurun, pertumbuhan Python tampaknya tak terbendung. Hampir 14% dari semua pertanyaan StackOverflow diberi label "python," dan tren ini hanya berkembang. Dan ada sejumlah alasan untuk ini.

Waktu diuji


Python sudah ada sejak tahun sembilan puluhan. Bukan hanya dia punya banyak waktu untuk tumbuh. Dan juga komunitas besar dan suportif telah terbentuk.

Oleh karena itu, jika Anda menemukan masalah saat menulis kode Python, ada kemungkinan besar bahwa Anda dapat dengan cepat menyelesaikannya menggunakan Pencarian Google. Hanya karena seseorang telah mengalami masalah serupa dan menulis sesuatu yang bermanfaat tentang ini.

Ramah untuk pemula


Dan intinya bukan hanya bahwa bahasa tersebut telah ada selama beberapa dekade, di mana programmer telah menulis sejumlah buku pelajaran yang brilian. Sintaksis Python juga sangat mudah dibaca.

Pertama, tidak perlu menentukan tipe data. Anda cukup mendeklarasikan variabel - dari konteksnya, Python akan memahami apakah itu bilangan bulat, nilai floating-point, boolean, atau sesuatu yang lain. Ini sangat membantu pemula. Jika Anda pernah memprogram dalam C ++, maka Anda tahu betapa sedihnya ketika sebuah program tidak mengkompilasi hanya karena suatu tempat integer diganti dengan angka floating-point.

Dan jika Anda pernah membandingkan kode Python dan C ++, maka Anda tahu betapa jauh lebih dimengerti Python terlihat. Terlepas dari kenyataan bahwa C ++ dirancang dengan mempertimbangkan bahasa Inggris, ini adalah bacaan yang sangat sulit dibandingkan dengan kode Python.

Universal


Python telah ada sejak lama, di mana pengembang telah menciptakan banyak perpustakaan untuk semua kesempatan. Saat ini, untuk hampir semua yang Anda dapat menemukan alat yang diperlukan.

Banyak angka, vektor, dan matriks? NumPy untuk menyelamatkan.
Perhitungan teknik teknik? Gunakan SciPy .
Analisis data besar? Panda akan mengetahuinya.
Pembelajaran mesin, jaringan saraf, AI? Kenapa tidak Scikit-Learn ?

Tidak peduli apa tugas komputasi yang Anda jalankan, ada kemungkinan ada paket Python untuk itu. Hal ini memungkinkan bahasa untuk tetap dalam tren, yang terlihat oleh semakin populernya pembelajaran mesin selama beberapa tahun terakhir.

Kelemahan Python - dan bisakah mereka mengubur bahasa


Terinspirasi oleh keadaan saat ini, orang bisa membayangkan bahwa Python adalah hal yang serius dan berjangka panjang. Tapi, seperti halnya teknologi apa pun, Python memiliki kelemahannya. Marilah kita memeriksa agar kekurangan yang paling penting, dan mengevaluasi apakah itu fatal atau tidak.

Kecepatan


Python lambat. Tidak, yah, sangat lambat. Rata-rata, tugas berjalan 2-10 kali lebih lama daripada dalam bahasa yang bersaing.

Ada alasan untuk ini. Pertama, pengetikan dinamis - ingat, kami katakan di atas bahwa sangat nyaman bila Anda tidak perlu menentukan tipe data, seperti dalam bahasa lain? Sisi lain dari koin adalah kebutuhan untuk menggunakan sejumlah besar memori, karena program perlu menyediakan ruang yang cukup untuk masing-masing variabel agar tetap berfungsi. Dan memori "dengan margin" mengarah ke pengeluaran waktu komputasi yang lebih besar.

Kedua, Python hanya dapat melakukan satu tugas pada satu waktu. Ini juga merupakan konsekuensi dari tipe data yang fleksibel - Python harus memastikan bahwa hanya satu tipe data yang sesuai dengan masing-masing variabel, dan proses paralel dapat mengganggu ini.

Tetapi, pada umumnya, kecepatan tidak kritis. Komputer dan server yang produktif sangat mudah diakses sehingga kita hanya dapat berbicara tentang sepersekian detik. Pengguna akhir tidak peduli jika aplikasinya dimuat dalam 0,001 atau dalam 0,01 detik.

Area visibilitas


Python awalnya terbatas secara dinamis. Ini pada dasarnya berarti bahwa untuk mengevaluasi ekspresi, kompiler pertama-tama mencari blok saat ini, dan kemudian secara berurutan semua fungsi panggilan.

Masalah dengan ruang lingkup dinamis adalah bahwa setiap ekspresi perlu diperiksa dalam semua konteks yang mungkin, yang membosankan. Inilah sebabnya mengapa sebagian besar bahasa pemrograman modern menggunakan cakupan statis.

Python mencoba untuk pindah ke lingkup statis, tetapi gagal. Biasanya, lingkup internal, seperti fungsi di dalam fungsi, dapat melihat dan mengubah lingkup eksternal. Dengan Python, wilayah dalam hanya bisa melihat wilayah luar, tetapi tidak mengubahnya. Ini menyebabkan banyak kebingungan.

Fungsi Lambda


Terlepas dari semua fleksibilitas Python, penggunaan lambda cukup terbatas. Itu hanya bisa berupa ekspresi dengan Python, tetapi bukan operator.

Deklarasi dan operator variabel, di sisi lain, selalu operator. Ini berarti bahwa lambda tidak dapat digunakan untuk mereka.

Perbedaan antara ekspresi dan pernyataan ini agak arbitrer dan tidak terjadi dalam bahasa lain.


Lekukan yang ketat membuat kode lebih mudah dibaca, tetapi keniscayaan mereka mengganggu dukungan.

Spasi dan Tab


Dalam Python, spasi dan tab digunakan untuk menunjukkan berbagai level kode. Ini membuatnya menarik secara visual dan intuitif.

Dalam bahasa lain, seperti C ++, kurung keriting dengan titik koma digunakan untuk struktur bersarang. Meskipun ini mungkin tidak begitu indah dan tidak nyaman untuk pemula, ini membuat kode lebih nyaman untuk dipelihara. Dengan pertumbuhan proyek, pentingnya pendekatan ini juga meningkat.

Bahasa baru (relatif) seperti Haskell menyelesaikan masalah ini: mereka bergantung pada spasi, tetapi menawarkan sintaksis alternatif bagi mereka yang ingin melakukannya tanpa mereka.

Pengembangan ponsel


Karena ada perubahan besar-besaran dari PC desktop ke smartphone, jelas bahwa ada peningkatan kebutuhan akan bahasa yang dapat diandalkan untuk membuat perangkat lunak seluler.

Tetapi aplikasi mobile di Python sekitar dua kali dan salah perhitungan. Ini tidak berarti bahwa ini tidak mungkin sama sekali - untuk ini ada paket yang disebut Kivy.

Python tidak dibuat untuk perangkat seluler. Bahkan jika itu dapat memberikan hasil yang dapat diterima untuk memecahkan masalah dasar di bidang ini, yang terbaik adalah menggunakan bahasa yang dirancang untuk pengembangan aplikasi mobile. Beberapa platform pemrograman seluler yang umum digunakan termasuk React Native, Flutter, Iconic, dan Cordova.

Tentu saja, laptop dan PC desktop akan tetap digunakan selama bertahun-tahun. Namun, perangkat seluler telah lama melampaui lalu lintas desktop. Aman untuk mengatakan bahwa belajar Python tidak cukup untuk dianggap sebagai pengembang yang berpengalaman dan komprehensif .

Kesalahan runtime


Pertama, kompilasi secara terpisah, kemudian eksekusi - dalam beberapa bahasa lain, tetapi tidak dalam Python. Alih-alih, kode akan dikompilasi setiap kali dieksekusi, sehingga kesalahan dalam kode muncul selama eksekusi program. Hal ini menyebabkan berkurangnya kinerja, buang-buang waktu yang tidak perlu dan kebutuhan untuk sejumlah besar tes. Lebih banyak tes untuk dewa ujian!

Ini bagus untuk pemula, karena ujian sendiri banyak mengajar. Tetapi untuk pengembang yang berpengalaman, harus men-debug program yang kompleks dengan Python membuat mereka salah. Kurangnya kinerja adalah faktor paling serius yang menunjukkan bahwa Python akan lulus dalam waktu dekat.

Apa yang bisa menggantikan Python di masa depan - dan kapan


Beberapa pesaing baru muncul di pasar bahasa pemrograman:

  • Rust , Python โ€” . . StackOverflow Insights, .
  • Go , Python. , . : Go โ€” .
  • Julia adalah bahasa yang sangat baru yang secara langsung bersaing dengan Python. Ini mengisi celah dalam perhitungan teknis skala besar: biasanya Anda bisa menggunakan Python atau Matlab, melakukan bagian dari tugas (kadang-kadang bagian yang sangat signifikan) menggunakan perpustakaan C ++. Sekarang, alih-alih menyulap dua bahasa, Anda cukup menggunakan Julia.

Meskipun ada bahasa lain di pasaran, Rust, Go, dan Julia memperbaiki kelemahan Python. Semua bahasa ini sangat baik dalam teknologi masa depan, terutama dalam kecerdasan buatan. Meskipun pangsa pasar mereka masih kecil (yang tercermin dalam jumlah tag StackOverflow), tren untuk masing-masing jelas: naik dan naik.


Sebutkan pada StackOverflow untuk Go / Rust / Julia - dinamika perubahan selama bertahun-tahun. Indikatornya masih sederhana, tetapi bahasa-bahasa ini memiliki uptrend yang stabil.

Mengingat popularitas Python yang tersebar luas saat ini, akan membutuhkan setengah dekade, bahkan mungkin keseluruhan, untuk semua bahasa baru ini untuk menggantikannya.

Sulit untuk mengatakan bahasa apa yang akan digunakan - Rust, Go, Julia atau bahasa baru lainnya di masa depan. Tetapi mengingat masalah kinerja yang mendasar bagi Python karena arsitekturnya, hal yang tak terhindarkan akan terjadi cepat atau lambat.

All Articles