Julia
- Okunuşu
- culiya
Kısaca
Julia, bilimsel ve sayısal hesaplama için yüksek seviyeli, dinamik tipli bir dildir; Python kadar kolay yazılıp C kadar hızlı çalışmayı hedefler.
Julia nedir?
Julia, MIT'de Jeff Bezanson, Stefan Karpinski, Viral Shah ve Alan Edelman tarafından geliştirildi, 2012'de kamuya duyuruldu ve 2018'de 1.0 sürümüne ulaştı. Geliştiricileri iki dil sorununu çözmek istiyordu: araştırmacılar çoğu zaman Python ya da MATLAB gibi yavaş ama dost canlısı bir dilde prototip hazırlayıp sıcak (hot) kısımları hız için C ya da Fortran'da yeniden yazar.
Julia kodu LLVM üzerinden, çağrıldığı türlere göre özelleştirilerek tam zamanında makine koduna derlenir; böylece düz bir döngü özel numaralara gerek kalmadan C'ye yakın hızlarda çalışır. Sözdizimi temiz ve matematik dostudur, α ve √ gibi Unicode sembollerini destekler ve diziler MATLAB ve Fortran'daki gibi 1 indeksinden başlar.
Merkezî fikri çoklu gönderimdir (multiple dispatch): bir fonksiyonun birçok metodu olabilir ve Julia bütün argümanlarının türlerine göre birini seçer. Bu, farklı yazarların paketlerinin birbiriyle doğal şekilde çalışmasını sağlar. Julia; DifferentialEquations.jl, JuMP ve Flux gibi paketlerle diferansiyel denklemler, optimizasyon, iklim modellemesi, finans ve makine öğrenmesi için kullanılır.
Sık yapılan bir yanlış, Julia'nın her zaman Python'dan daha hızlı olduğunu düşünmektir. Kodu ilk kez çalıştırmak derleme içerir; bu da açılışı ve ilk çağrıları yavaşlatır. İlk grafiğe kadar geçen süre (time to first plot) diye bilinen bu gecikme yeni sürümlerde büyük ölçüde azaldı. Ekosistemi ve topluluğu da Python'unkinden çok daha küçüktür.
Önemli noktalar
- Julia, bilimsel ve sayısal hesaplama için hızlı ve dinamik bir dildir.
- 2012'de duyuruldu ve 2018'de 1.0 sürümüne ulaştı.
- LLVM üzerinden JIT derleme, C'ye yakın hız sağlar.
- Çoklu gönderim, metotları bütün argüman türlerine göre seçer.
- İlk çalıştırmalar derleme yüzünden yavaştır; ekosistem Python'unkinden küçüktür.
Örnek
# One function, methods chosen by the types of *all* arguments
area(r::Real) = π * r^2 # circle
area(w::Real, h::Real) = w * h # rectangle
struct Square; side::Float64; end
area(s::Square) = s.side^2
println(area(2.0), " ", area(3, 4), " ", area(Square(5)))
# A plain loop compiles to fast machine code
function sum_of_squares(xs)
total = 0.0
for x in xs
total += x^2
end
return total
end
sum_of_squares(rand(10_000_000))Sık sorulan sorular
Veri bilimi için Julia mı Python mu?
Python'un çok daha büyük bir ekosistemi, daha fazla eğitim içeriği ve daha fazla iş ilanı vardır. Julia ise simülasyonlar ve diferansiyel denklemler gibi, özel sayısal kodun C'ye geçmeden hızlı çalışması gerektiğinde parlar.
Çoklu gönderim (multiple dispatch) nedir?
Bir fonksiyonun hangi sürümünün çalışacağını, çoğu nesne yönelimli dildeki gibi yalnızca ilk argümana göre değil, bütün argümanlarının türlerine göre seçmektir. Julia'da kodu düzenlemenin ana yoludur.
Julia derlenen mi, yorumlanan bir dil mi?
Tam zamanında derlenir. Her fonksiyon belirli argüman türleriyle ilk kez çalıştığında makine koduna derlenir; sonraki çağrıların hızlı, ilkinin ise daha yavaş olmasının nedeni budur.
İlgili sayfalar
- PythonProgramlama Dilleri, s. 26Python, okunaklı sözdizimiyle bilinen; veri bilimi, otomasyon ve web arka uçlarında yaygın kullanılan, genel amaçlı ve dinamik tipli bir programlama dilidir.
- MATLABProgramlama Dilleri, s. 20MATLAB, MathWorks'ün matris tabanlı sayısal hesaplama dili ve ortamıdır; mühendisler ve bilim insanları tarafından veri analizi ve simülasyon için kullanılır.
- FortranProgramlama Dilleri, s. 12Fortran, 1957'de IBM'de bilim ve mühendislik hesapları için geliştirilen ilk yaygın yüksek seviyeli dildir; yüksek performanslı hesaplamada hâlâ kullanılır.
- RProgramlama Dilleri, s. 27R, istatistik ve veri analizi için bir programlama dili ve ortamıdır; araştırmalarda veri görselleştirme, istatistiksel modeller ve raporlar için kullanılır.
- DerleyiciProgramlamanın Temelleri, s. 12Derleyici, bir programlama dilinde yazılmış kaynak kodu, bilgisayarın çalıştırabileceği makine kodu gibi daha alt seviyeli bir biçime çeviren programdır.
- Dinamik TiplemeProgramlamanın Temelleri, s. 13Dinamik tipleme, türlerin değişkenlere değil değerlere ait olması ve program çalışırken kontrol edilmesidir; bir değişken önce sayı, sonra string tutabilir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin