Rabu, 24 Januari 2018

Bahasa Julia adalah Jalan Masa Depan

Teknologi anak bangsa

Teknologi anak bangsa -- Survei baru-baru ini menunjukkan bahwa Bahasa R untuk komputasi statistik sedang mengalami ledakan yang populer di kalangan ilmuwan, periset, dan tipe analisis data lainnya.Ada alasan bagus untuk ini: R Gratis, mudah digunakan (sama seperti bahasa pemrograman apa pun, bagaimanapun juga), dapat membuat grafis yang indah langsung di luar kotak, dan memiliki ekosistem perpustakaan pengguna yang sangat besar yang mencakup hampir semua Analisis statistik yang bisa Anda impikan.Ini menjadi lingua franca di berbagai bidang, terutama di bidang biologi dan ekologi.Bagi banyak siswa dan ilmuwan saya tahu, "belajar R" dan "belajar memprogram" digunakan hampir secara bergantian.

Teknologi anak bangsa -- Ada lebih dari 8.000 paket add-on yang tersedia di CRAN, dan beberapa yang terbaik, seperti yang ada di Hadleyverse, mengubah cara orang menggunakan bahasa menjadi lebih baik.Kita saat ini hidup di Zaman Keemasan R.Tapi saya tidak berpikir R adalah jalan masa depan.Masa depan, saya yakin, milik lan pemrograman ilmiah yang sangat baruGuill disebut Julia.

Teknologi anak bangsa -- (Jika Anda berpikir masa depan milik Matlab, Anda mungkin di luar harapan).Karena meski memiliki kekuatan, R memiliki sejumlah kekurangan dan, er, eksentrisitas.Sebagian besar kekurangan ini dapat ditelusuri pada fakta bahwa R diciptakan 20 tahun yang lalu sebagai implementasi open source dari bahasa sebelumnya, S, yang diciptakan dua puluh tahun sebelum itu.Ekosistem paket di CRAN sangat besar, tapi ada banyak kebingungan dan tumpang tindih: tidak jarang menemukan tiga paket yang masing-masing 2/3 dari kebutuhan Anda.

Teknologi anak bangsa -- Dan jika Anda menulis kode Anda sendiri untuk sesuatu yang tidak tersedia dalam sebuah paket, R bisa sangat lambat.Jika tidak dapat direkayasa-yaitu, jika Anda perlu menuliskannya dalam satu lingkaran - pilihan Anda adalah meninggalkan R dan menuliskannya sedikit di C, atau tekan "Enter" dan ambil kopi.Masuki Julia Saya pertama kali mendengar bahasa ini saat seseorang mengeposkan manifesto konyol ini oleh penciptanya ke Reddit beberapa tahun yang lalu.Penendangnya adalah paragraf yang keterlaluan ini: Kami menginginkan bahasa yang open source, dengan alisensi liberal Kami menginginkan kecepatan C dengan dinamika Ruby.

Teknologi anak bangsa -- Kami ingin bahasa yang homoiconic, dengan macro yang benar seperti Lisp, tapi dengan notasi matematika akrab dan familiar seperti Matlab.Kami menginginkan sesuatu yang dapat digunakan untuk pemrograman umum seperti Python, semudah statistik seperti R, sama alami untuk pemrosesan string sebagai Perl, sama kuatnya dengan aljabar linier seperti Matlab, sama baiknya dengan menempelkan program bersama sebagai cangkangnya.Sesuatu yang mudah dipelajari, namun membuat hacker paling serius bahagia.Kami menginginkannya interaktif dan kami menginginkannya dikompilasi.

Teknologi anak bangsa -- (Apakah kita menyebutkannya harus secepat C?) Mereka berhenti menuntut seekor kuda poni, tapi Anda mendapatkan idenya.Bahasa macam apa yang mungkin bisa mendekati semua ini.Nah, ternyata, yang mereka buat.Julia adalah bahasa yang benar-benar dipikirkan dengan baik.

Teknologi anak bangsa -- Sementara sintaksnya terlihat secara dangkal, Matlabby, kira-kira sejauh kemiripannya.Seperti Matlab, R, dan Python, Julia interaktif dan dinamis mengetik, sehingga mudah untuk mendapatkan stpemrograman seni.Tapi Julia berbeda dari bahasa-bahasa itu dalam beberapa cara utama.Di bawah tenda, ia memiliki sistem tipe yang ketat namun tanpa batas fleksibel, dan memanggil fungsi berdasarkan "multiple dispatch": kode yang berbeda dipilih secara otomatis berdasarkan jenis semua argumen yang dipasok ke sebuah fungsi.

Teknologi anak bangsa -- Bila fitur ini digabungkan dengan compiler just-in-time (JIT) built-in, mereka membiarkan skalar untuk loop, bahkan yang merupakan pembunuh kinerja terkenal di R-run secepat C atau Fortran.Tapi pembunuh sebenarnya adalah Anda bisa melakukan ini dengan kode yang ringkas dan ekspresif seperti Python.Grafik ini menunjukkan jangka waktu rata-rata beberapa program benchmark kecil, diplot vs.panjang rata-rata file sumbernya.

Teknologi anak bangsa -- Waktu relatif terhadap C.Perhatikan skala log pada sumbu y.Idealnya, kami ingin program ringkas dengan waktu berjalan singkat-yaitu, lebih rendah lebih baik pada kedua sumbu.Grafik menunjukkan tradeoff klasik dalam komputasi teknis.

Teknologi anak bangsa -- Bahasa yang dikompilasi seperti C dan Fortran (kanan bawah) cepat dijalankan namun lambatuntuk menulis, sementara "scripting" bahasa seperti R dan Python (kiri atas) cepat untuk menulis tapi lambat untuk dieksekusi.Tapi tunggu dulu, bagaimana cara titik abu-abu di pojok kiri bawah.Itu Julia.Mari kita lihat naskah Julia yang saya gunakan untuk membuat plot ini untuk melihat beberapa fitur pembunuh bahasa lainnya.

Teknologi anak bangsa -- (File data .csv dapat didownload di sini.) Dengan menggunakan plot grafis grammar-of-grafis Gadfly menggunakan DataFrames, DataFramesMeta tolok ukur = readtable ("julia_benchmarks.csv") ctimes = @linq benchmark |> dimana (: Bahasa == "c") |> pilih (: Benchmark,: Waktu) |> rename (: Waktu,: CTime) tolok ukur = gabung (benchmark, ctimes, on =: Benchmark) ringkasan = @by (tolok ukur,: bahasa, Waktu = geomean (: Waktu ./: CTime), KB = mean (: KB)) p = plot (ringkasan, x =: KB, y =: Waktu, warna =: bahasa, Geom.point, Scale.y_log10, Guide.xlabel ("Panjang kode (KB)"), Guide.ylabel ("Run time / C Time"), Guide.title ("Performansi rata-rata vs panjang kode"), Tema (background_color = pewarna "putih")) seri(PNG ("julia_benchmarks.png", 18cm, 12cm), p) Dari atas ke bawah, mohon perhatikan: Perpustakaan.Julia memiliki registri paket terpusat dan manajer paket built-in, dan meski tidak mendekati CRAN, hal itu sudah mencakup banyak tugas sehari-hari yang mungkin dilakukan analis data.Anda bisa membaca dalam data tabular, memanipulasinya, menyesuaikan model linier umum dengan sintaks R-like, dan merencanakannya dengan menggunakan paket yang tersedia.Satu fitur yang sangat bagus (setidaknya sejauh ini) dari ekosistem paket Julia adalah hampir semuanya ada di GitHub.

Teknologi anak bangsa -- Efek samping dari hal ini adalah bahwa ada kecenderungan yang jauh lebih besar untuk berkolaborasi dan merencanakan.Fungsionalitas cenderung dibagi menjadi potongan logis, dan upaya serupa digabungkan.Split-apply-menggabungkan manipulasi data.Munculnya Hadleyverse telah merevolusi cara banyak orang bekerja dengan data di R (termasuk saya sendiri).

Teknologi anak bangsa -- Setelah Anda pergi dplyr, tidak ada jalan kembali.Julia juga memiliki kemampuan, melalui paket DataFramesMeta, untuk melakukan manipulasi semacam iniulations Saat masih dalam fase percobaan, Anda sudah bisa membelah, menerapkan, dan menggabungkan frame data, dan menyalurkan output dari satu operasi ke input berikutnya.Ini membawa kita pada fitur pembunuh Julia: metaprogramming.Julia "homoiconic," kata aneh yang berarti kode Julia dapat direpresentasikan sebagai struktur data dalam bahasa tersebut.

Teknologi anak bangsa -- Akibatnya, Anda bisa menulis program yang secara otomatis menghasilkan program lain.Lihat simbol @ di fungsi @linq dan @by.Itu berarti mereka sebenarnya bukan fungsi, melainkan "macro": pada dasarnya, fungsi yang menulis kode kustom berdasarkan masukan mereka.R juga homoiconic, tapi menurut pengalaman saya hanya yang paling berani dari hacker yang pernah memanfaatkan kemampuan itu.

Teknologi anak bangsa -- Meski masih belum menjadi teknik pemula, saya menemukan metaprogramming di Julia secara signifikan lebih mudah daripada di R.Banyak paket Julia memanfaatkan metaprogramming, dan hasilnya, bagi pengguna, bisa benar-benar ajaib.Merencanakan.Belum ada perpustakaan plotting defaultn Julia, tapi ada beberapa pilihan yang sangat bagus.

Teknologi anak bangsa -- Gadfly, yang digunakan di sini, adalah perpustakaan terinspirasi ggplot.Juga tersedia PyPlot, pembungkus perpustakaan Matplotlib milik Python yang matang.Dengan fitur seperti ini, ada banyak kemungkinan yang menarik.Sebagai contoh.

Teknologi anak bangsa -- Kebanyakan orang yang melakukan analisis Bayesian akan menjalankan bagian komputasi intensif, MCMC, dengan paket eksternal yang ditulis dalam bahasa C atau C, seperti BUGS, JAGS, atau Stan.Ini bekerja baik, sampai Anda menulis bug ke BUGS Anda atau jank ke JAGS Anda.Sebuah kesalahan samar kemudian dilempar dari Great Compiled Beyond, dan semoga berhasil memikirkannya.Tapi bagaimana kalau kau bekerja di Julia.

Teknologi anak bangsa -- Kode MCMC bisa ditulis di Julia sendiri.Ini bisa berjalan secepat C, tapi memburu bug tidak berarti beralih bahasa.Anda bisa menulis model probabilitas Anda menggunakan fungsi Julia standar.Introspeksi kode Julia akan membiarkan Anda menggunakan diferensiasi otomatis untuk menerapkan algoritma Hamiltonian Monte Carlo - saus rahasia Stan jadiftware Dan faktanya, ini adalah area pengembangan aktif: lihat Mamba dan Lora.

Teknologi anak bangsa -- (Meskipun keduanya belum dipoles atau mudah digunakan seperti JAGS atau Stan, ada bungkus Julia untuk JAGS dan Stan untuk sementara waktu.) Saya tidak akan merekomendasikan semua orang untuk menjatuhkan R dan menggunakan Julia ...belum.Bahasanya kurang dari lima tahun, dan masih sangat banyak dalam pengembangan.Beberapa fitur cenderung berubah.

Teknologi anak bangsa -- Banyak paket masih dalam mode eksperimental, dan tidak semua yang tersedia di R ada untuk Julia (meski jumlahnya mengejutkan).Dokumentasi membaik, tapi tidak selalu lengkap atau menyeluruh.Belum ada IDE yang sebanding dengan RStudio.Jika Anda bahagia dan produktif di R (atau apa pun yang Anda gunakan), dengan segala cara terus berjalan.

Teknologi anak bangsa -- Tetapi bahkan jika memang begitu, ada baiknya mendownload Julia dan bermain-main dengannya selama beberapa jam.Saya melakukan ini kembali pada tahun 2012, dan sejak saat itu telah tenggelam dalam: Saya sekarang menghabiskan kira-kira sepertiga waktu coding saya di Julia, dan telah menulis beberapa paket berfitur lengkap.Belajar bahasa kedua, apakah manusia atau komputer, bagus untuk Anda dan dapat membantu Anda melihat masalah lama dalam cahaya baru.Jadi mengapa tidak membuat bahasa Julia selanjutnya.Mungkin itu yang terakhir Anda perlu pelajari ...

Teknologi anak bangsa -- *** Beberapa sumber lebih lanjut untuk yang tertarik: Manual Julia.Bekerja dengan cara Anda melalui contoh di sini, dan Anda sudah memiliki pemahaman yang cukup bagus tentang bagaimana segala sesuatu bekerja.Julia untuk programmer R (PDF): sebuah presentasi yang mengenalkan Julia kepada audiens R-use.Perbedaan dari bahasa lain: untuk Matlab, R, Python, dan C.

Teknologi anak bangsa -- Belajar Julia: kumpulan besar tautan dan video di situs web JuliaLang.

Tidak ada komentar:

Posting Komentar