Julia benim son günlerde takip ettiğim en tatlı dil. MIT de matlab ve python dan sıkılan bir grup tarafından yazılmış bu dil ve gerçekten üzerine düşünülmüş bir dil.
Şu siteden indirebilirsiniz. Gene aynı sitede çeşitli tutoriallar bulunmakta. Aynı zamanda youtube kanalı da güzel. Ama çok hızlı bir başlangıç için şu siteye göz atabilirsiniz.
C dili derlenen(compiled) bir dildir. Hızının sebeplerinden biri budur. Python ise yorumlanan (interpretted) bir dildir. Julia ise "just in time compiled" bir dildir. Yazdıgınız her fonksiyon ilk çağrılışında derlenir daha sonraki çağırılışlarında ise daha önce derlenmiş olan kod parçacığı kullanılır. Bu nedenle fonksiyonu ilk çağırışınızda biraz yavaş çalışır ama gelecek çağırılışlarda C ile yarışabilen hızlarda çalışır.
İçinde bir çok matematiksel fonksiyonla birlikte gelir. Lineer Cebir apmak için ekstra bi paket indirmenize gerek yoktur mesela. Fizikçilerin tabiri ile "bra" ve "ket" ayrımı bile yapıyor bu dil .
Sentaks olarak python ile matlab arasında bir yerde diyebilirim. Her iki dilden farklı olarak lisp ailesi gibi homoikonik bir dildir (yani dilin sentaks ağacına dilin içindeyken erişiminiz vardır [çok beyin yakan işler yapabilirsiniz bu sayede]). Pür matematikçilerin hoşuna gidebilecek çeşitli paketler bulunmakta (mesela şöye bir paket buldum ). Uygulamalı matematikçiler için matlab ve python/numpy gibi dillerden sonra cennet gibi gelebilir julia (valla para vermiyorlar reklam yapayım diye). Tüm paket listesine buradan erişebilirsiniz.
Ülkemizden de bu dile büyük katkılarda bulunuluyor. Koç Üniversitesinden Prof. Dr. Deniz Yüret juliada çok sık kullanılan bir derin öğrenme paketi yazmıştır.
Bu dilde aynı zamanda $\LaTeX$ ifadeleri de kullanabilirsiniz. Mesela bir degerin bir dizide olup olmadıgını kontrol etmek için $\in$ ifadesini kullabilirsiniz. Dildeki değişkenleri türkçe olarak da adlandırabilirsiniz.
Küçük bir tad vermek adına iki fonksiyon tanımlayalım bu dilde.
function fibonacci(x)
if x<2
1
else
fibonacci(x-1) + fibonacci(x-2)
end
end
f(x) = x^2
sayılar = [1 2 3 4 5 6 7 8 9 10]
f(2) # 4 gelecek
f.(sayılar) # sayılar dizisindeki her sayının karesi gelecek