Kenapa Python dan bukan Lua? [Tutup]

45

Mengapa Python didukung oleh google dan menjadi sangat populer dan Lua tidak?

Apakah Anda tahu mengapa Lua tetap di latar belakang?

BenjaminB
sumber
3
Lua suka berpura-pura array dan kamus adalah hal yang sama, dan memiliki panjang pengambil yang tidak hanya dapat mengembalikan hasil yang salah, tetapi hasil yang tidak ditentukan. Saya tidak tahu alasan Googles, tetapi ini adalah alasan yang cukup bagi saya untuk tidak menyukainya.
Steve314
4
Bagi saya, Python lebih mudah untuk dikodekan, lebih menyenangkan, dan memiliki lebih banyak fitur. Beberapa contoh dari atas kepala saya: generator datang sebagai warga negara kelas satu di Python ( yield), dan Lua membutuhkan pengaturan yang lebih rumit. Pengindeksan daftar Python [::]adalah nilai tambah yang besar. Python memiliki kelas dan warisan yang sah. Lua lebih cepat, ya, tapi saya sebenarnya suka menulis kode Go untuk digunakan dalam Python ketika kecepatan penting.
Frank Bryce
Saya suka LuaJIT tetapi sebagian besar dari cinta saya untuk itu adalah kemudahannya menanamkan, kecepatan, dan jejak kecil. Jika saya harus memprogram sesuatu sepanjang hari, saya mungkin akan lebih condong ke arah Python.
@ FrankBryce Anda mendapatkannya mundur. Generator Python adalah bagian dari coroutine Lua. Lihat inf.puc-rio.br/~roberto/docs/MCC15-04.pdf
capr

Jawaban:

37

Saya benar-benar mencintai Lua, tetapi memang memiliki beberapa keterbatasan nyata, dan seperti yang lain telah disebutkan mereka sebagian besar berasal dari asal Lua sebagai bahasa file konfigurasi dan kemudian sebagai bahasa scripting tertanam.

Karena tujuan menjaga Lua tetap kecil, hanya ada perpustakaan standar yang sangat kecil , yang hanya memiliki fungsionalitas tulang belulang.

Hal ini mengarah pada budaya yang kurang menguntungkan di kalangan Lua di mana para pengembang Lua ingin mengimplementasikan kembali fungsionalitas yang ditawarkan oleh banyak perpustakaan standar bahasa lainnya sendiri daripada bekerja secara kolektif pada satu set perpustakaan inti yang diterima secara universal.

Hal-hal seperti multi-threading, ekspresi reguler, metode akses file platform independen, dan bahkan operasi bit (sampai 5,2) semua "tidak termasuk" karena mereka akan membuat Lua jauh lebih besar dan lebih lambat. Tentu Anda dapat membuat perpustakaan melakukan hal-hal ini - tetapi kemudian mereka memiliki pengelola independen dan tingkat kualitas.

Jangan salah sangka. Saya suka Lua karena alasan yang sama dengan yang baru saya sebutkan.

sylvanaar
sumber
54

Sederhana: Lua memiliki lebih banyak tujuan "niche" daripada Python .

Python dianggap berguna sebagai bahasa pemrograman umum. Jadi, ini berguna dalam banyak kasus. Ini mencakup banyak jenis aplikasi yang terkenal tetapi tidak masuk langsung ke persaingan dengan bahasa lain yang mungkin ditargetkan pada kendala tertentu, tetapi kesederhanaan sintaksisnya.

Lua benar-benar ditargetkan untuk menjadi bahasa skrip tertanam. Ini tujuan awal, bahkan jika itu digunakan dalam konteks lain saat ini, seperti membangun sistem; harus tertanam dalam perangkat lunak dan untuk memudahkan implementasi fungsi dan struktur skrip khusus domain. Ini sangat minimalis sehingga bahkan dapat digunakan pada perangkat keras yang benar-benar terbatas (saya menggunakan Lua pada NintendoDS), ringan, mudah digunakan, CEPAT, dan merupakan bahasa yang minimalis tetapi dianggap diperluas dengan banyak dialek (mengimpor paradigma seperti objek-orientasi) tersedia. Ini sangat portabel (ANSI C) sehingga Anda dapat menggunakannya pada perangkat keras tertanam dengan jumlah memori yang layak untuk perangkat lunak tertanam modern (jika saya ingat betul lua vm default adalah sekitar 400ko dan hampir tidak akan pernah tumbuh jika Anda tidak membuat objek) ...).

Jadi, Lua awalnya digunakan dalam konteks di mana Anda harus menanamkan bahasa scripting untuk aplikasi Anda .

Python digunakan untuk ... hampir semua hal yang tidak memerlukan bahasa yang lebih khusus (Anda dapat membuat game yang sangat performan menggunakan Python, tetapi beberapa jenis game yang sangat membutuhkan kinerja benar-benar harus menghindari sistem seperti itu).

Hanya saja Python digunakan dalam lebih banyak konteks daripada Lua. Sejauh yang saya tahu, selain Android (yang menyediakan dukungan Java dan bahasa asli), Google bukanlah perusahaan perangkat lunak yang disematkan sehingga mereka tidak benar-benar membutuhkan Lua di mana-mana, sementara Python berguna untuk apa pun yang mereka lakukan (web, sistem bangun , komunikasi, web dan web).

Python digunakan dalam banyak game untuk skrip tertanam juga, tapi ini lebih berat dan lebih lambat dari Lua. Sintaksis Python membuatnya lebih sesuai untuk gim besar yang sangat bergantung pada informasi skrip dalam struktur gim mereka (tidak yakin saya jelas di sana tetapi hanya berpikir bahwa jika Anda memerlukan "bahasa lengkap yang nyata" untuk skrip, menanamkan Python mungkin ide yang bagus, jika kinerjanya baik untuk Anda). Python tidak dibuat untuk disematkan, jadi itu tidak masalah. Setara dengan Python yang ditargetkan tertanam di C ++ adalah Falcon.

Untuk perbandingan ekstrim, beberapa bahasa yang menargetkan penyisipan dan mencoba untuk memiliki sintaksis yang lebih lengkap daripada Lua minimalis, dan bersaing dalam kinerja: ChaiScript, AngelScript, ...

Omong-omong, saya telah melihat sistem build baru seperti PreMake atau Bam menggunakan Lua sebagai bahasa file build. Idenya adalah ringan dan terkenal dari pengembang game (membangun sistem dalam pengembangan game adalah masalah utama). Jadi mungkin itu domain lain di mana Lua mungkin lebih dihargai. Ini tentu saja lebih ramah pengguna daripada sintaks CMake ....

Klaim
sumber
4
Saya pikir target Lua sebagai bahasa yang disematkan mungkin merupakan kontributor utama. Tetapi meskipun demikian, saya percaya "popularitas" suatu bahasa kurang sesuai dengan desain aktual atau kemampuan bahasa itu sendiri dan lebih pada masalah "waktu yang tepat, tempat yang tepat" (lihat PHP, misalnya).
Dean Harding
Yah saya berpikir bahwa bahasa yang ditargetkan untuk tujuan tertentu secara alami menarik bagi pengguna tertentu, membuat audiens lebih menahan diri daripada bahasa tujuan umum lainnya. Memiliki pengetahuan yang kurang dari bahasa tujuan umum secara langsung berdampak pada jumlah orang yang akan membicarakannya. Selain itu, target spesifik berarti fitur spesifik. Karena itu, itu tidak baik untuk setiap situasi. Di sini misalnya, lua saja bukan bahasa pemrograman gui yang sangat bagus. Dibutuhkan beberapa tambahan agar benar-benar bermanfaat.
Klaim
Yang mengatakan, saya sepenuhnya setuju: jika php tidak digunakan untuk bidang yang banyak digunakan sebagai pengembangan situs web, itu tidak akan ada di mana-mana sekarang.
Klaim
Lua terutama digunakan sebagai bahasa yang disematkan tetapi itu adalah bahasa pemrograman tujuan umum, misalnya Anda dapat membuat skrip CGI dengan mod_lua. Saya bisa mengubah pertanyaan saya mengapa lua tetap sebagai bahasa yang tertanam?
BenjaminB
Karena itu asalnya. Anda dapat menggunakannya sebagai bahasa tujuan umum ya, karena Anda dapat menggunakan php juga untuk tujuan umum. Anda juga dapat menggunakan Perl untuk melakukan hal yang sama. Tapi asal usul mereka membuat orientasi mereka. Sekali lagi, tujuan awal mereka membuat mereka kurang bermanfaat daripada bahasa lain untuk bahasa tujuan umum. Lua kekurangan beberapa bahasa fitur agar mudah digunakan dengan sistem GUI sebagai contoh, seperti orientasi objek (yang dapat Anda tambahkan dengan mudah, tetapi itu bukan bahasa asli). Pastikan Anda melihat perbedaan antara bahasa yang awalnya dibuat untuk tujuan tertentu dan yang umum. Mereka semua punya kendala.
Klaim
4

Anda dapat melakukan segalanya dengan Lua, itu dibuat sebagai bahasa scripting untuk memperpanjang program? Ya, tapi itu jauh dari terbatas, ada banyak perpustakaan untuk Lua, dan dengan alat yang tepat (FFI atau tolua LuaJIT) Anda bahkan dapat menggunakan Perpustakaan C / C ++ di atasnya. Alasan yang membuat Python lebih digunakan dalam sudut pandang saya hanya usia, Python digunakan sebagai bahasa pertama di banyak perguruan tinggi dan sekolah, ada lebih banyak orang yang tahu Python daripada Lua, dan jauh lebih mudah untuk menemukan perpustakaan yang bagus untuk Python daripada untuk Lua, karena bahasanya lebih matang. Juga, saya tidak tahu banyak tentang Python, tetapi sebanyak yang saya tahu, mudah untuk menyembunyikan kode Anda dari pengguna akhir, apa yang ada di Lua, bukankah itu mudah, saya benar?

Gustavo
sumber