Sepertinya sebagian besar bahasa memiliki sejumlah perpustakaan komputasi ilmiah yang tersedia.
- Python memiliki
Scipy
Rust
telahSciRust
C++
memiliki beberapa termasukViennaCL
danArmadillo
Java
memilikiJava Numerics
danColt
juga beberapa lainnya
Belum lagi bahasa seperti R
dan Julia
dirancang secara eksplisit untuk komputasi ilmiah.
Dengan begitu banyak pilihan, bagaimana Anda memilih bahasa terbaik untuk suatu tugas? Selain itu bahasa apa yang akan paling berhasil? Python
dan R
tampaknya memiliki daya tarik paling besar dalam ruang, tetapi secara logis bahasa yang dikompilasi sepertinya itu akan menjadi pilihan yang lebih baik. Dan akankah ada yang lebih baik dari itu Fortran
? Selain itu bahasa yang dikompilasi cenderung memiliki akselerasi GPU, sementara bahasa yang ditafsirkan menyukai R
dan Python
tidak. Apa yang harus saya perhitungkan ketika memilih bahasa, dan bahasa mana yang memberikan keseimbangan utilitas dan kinerja terbaik? Juga ada bahasa dengan sumber daya komputasi ilmiah yang signifikan yang saya lewatkan?
sumber
Jawaban:
Ini adalah pertanyaan yang cukup besar, jadi ini tidak dimaksudkan untuk menjadi jawaban penuh, tetapi mudah-mudahan ini dapat membantu untuk menginformasikan praktik umum tentang menentukan alat terbaik untuk pekerjaan ketika datang ke ilmu data. Secara umum, saya memiliki daftar kualifikasi yang relatif singkat yang saya cari ketika datang ke alat apa pun di ruang ini. Tanpa urutan tertentu mereka adalah:
Julia
benar - benar bersinar.python
menarik sangat jauh di depan sebagian besar bahasa lain.haskell
adalah sebuah rasa sakit yang terkenal, danJulia
dipenuhi dengan banyak sakit kode arsitektur sebagai hasil dari bahasa yang begitu muda.Ada banyak artikel di luar sana tentang kinerja dan skalabilitas, tetapi secara umum Anda akan melihat perbedaan kinerja mungkin 5-10x antara bahasa, yang mungkin atau mungkin tidak masalah tergantung pada aplikasi spesifik Anda. Sejauh akselerasi GPU berjalan,
cudamat
adalah cara yang benar-benar mulus untuk membuatnya bekerjapython
, dancuda
perpustakaan secara umum telah membuat akselerasi GPU jauh lebih mudah diakses daripada dulu.Dua metrik utama yang saya gunakan untuk komunitas dan fleksibilitas adalah untuk melihat pengelola paket bahasa, dan pertanyaan bahasa di situs seperti SO. Jika ada sejumlah besar pertanyaan dan jawaban berkualitas tinggi, itu pertanda baik bahwa komunitas tersebut aktif. Jumlah paket dan aktivitas umum pada paket tersebut juga dapat menjadi proksi yang baik untuk metrik ini.
Sejauh kemudahan penggunaan berjalan, saya sangat percaya bahwa satu-satunya cara untuk benar-benar tahu adalah benar-benar mengaturnya sendiri. Ada banyak takhayul di sekitar banyak alat Data Science, khususnya hal-hal seperti database dan arsitektur komputasi terdistribusi, tetapi tidak ada cara untuk benar-benar tahu apakah ada sesuatu yang mudah atau sulit untuk disiapkan dan dipasang tanpa hanya membangunnya sendiri.
sumber
Scala
danGo
layak disebut.Bahasa terbaik tergantung pada apa yang ingin Anda lakukan. Komentar pertama: jangan membatasi diri Anda pada satu bahasa. Mempelajari bahasa baru selalu merupakan hal yang baik, tetapi pada titik tertentu Anda harus memilih. Fasilitas yang ditawarkan oleh bahasa itu sendiri adalah hal yang jelas untuk dipertimbangkan tetapi menurut saya yang berikut ini lebih penting:
Saya sadar bahwa sebagian besar poin saya mendukung bahasa yang sudah mapan. Ini dari perspektif 'selesaikan'.
Yang mengatakan, saya pribadi percaya bahwa jauh lebih baik menjadi mahir dalam bahasa tingkat rendah dan bahasa tingkat tinggi:
sumber
Pertama, Anda perlu memutuskan apa yang ingin Anda lakukan, kemudian mencari alat yang tepat untuk tugas itu.
Pendekatan yang sangat umum adalah menggunakan R untuk versi pertama dan untuk melihat apakah pendekatan Anda benar. Tidak memiliki sedikit kecepatan, tetapi memiliki perintah yang sangat kuat dan addon libraries, yang dapat Anda coba hampir apa saja dengan itu: http://www.r-project.org/
Gagasan kedua adalah jika Anda ingin memahami algoritma di belakang perpustakaan, Anda mungkin ingin melihat pada Numerical Recipies. Mereka tersedia untuk berbagai bahasa dan bebas digunakan untuk belajar. Jika Anda ingin menggunakannya dalam produk komersial, Anda perlu membeli lisensi: http://en.wikipedia.org/wiki/Numerical_Recipes
Sebagian besar kinerja waktu tidak akan menjadi masalah tetapi menemukan algoritma dan parameter yang tepat untuk mereka, jadi penting untuk memiliki bahasa skrip cepat alih-alih program monster yang pertama-tama harus dikompilasi 10 menit sebelum menghitung dua angka dan mengeluarkan hasil.
Dan nilai tambah yang besar dalam menggunakan R adalah ia memiliki fungsi atau pustaka bawaan untuk hampir semua jenis diagram yang Anda mungkin perlu memvisualisasikan data Anda.
Jika Anda kemudian memiliki versi yang berfungsi, hampir mudah untuk porting ke bahasa lain yang menurut Anda lebih berkinerja baik.
sumber