Öncelikle şunu belirtmek isterim: Ben bir fizikçiyim, hukukçu değil. Onun için “Özgür Yazılım Fikri” kısımda yazdıklarımı kaba bir özet olarak değerlendirin ve daha fazlasını araştırmaktan çekinmeyin. Her zaman olduğu gibi, bu yazıda da bahsedilen kavramlara yazının sonundaki bağlantılardan ulaşabilirsiniz. Ek olarak, bana bazı programları hatırlatan/öneren Alperen Yüncü’ye de teşekkürlerimi sunarım.
Özgür yazılım fikri
Bir yazılımın gerçekleşmesi için önce onun kodunun yazılması gerekir. Bu amaç için üretilmiş farklı kavramsal yapılarda çokça programlama dili bulunmaktadır. Örneğin C, C++, Java, Python, Haskell, Lisp vb… Daha sonra programın çalıştırılabilmesi için kod derlenir ve ortaya çalıştırılabilir binary (ikili) bir dosya ortaya çıkar. Genel olarak bu binary dosyadan yola çıkıp da kodu bulmak ve onda istenilen değişiklikleri yapmak çok zordur. Eğer kullandığınız yazılımın kodlarına sahip değilseniz ve sadece bu binary dosyayı çalıştırarak işlerinizi hallediyorsanız büyük ihtimalle propriatery (mülki) bir yazılım kullanıyorsunuz demektir. Yazılımın bütün hakları, o programı üreten şirkete ya da kuruma aittir ve siz sadece kullanıcısınızdır. Mesela yazılımda bir hata tespit ettiğinizde bunu çözmek için üretici kuruma söylersiniz ve o hatanın sonraki güncellemelerle düzeltilip düzeltilemeyeceği tamamen onların insafına kalmıştır.
Özgür yazılım (free software) fikri ise adı gibi özgür. Tabii, İngilizce terimdeki “free” kelimesi hem özgür hem de ücretsiz anlamına gelebilir. Ama oradaki kasıt özgürlüktür. Bunun için İngilizce kaynaklarda Fransızcadan ödünç alınarak “libre” kelimesi de kullanılır zaman zaman. Konuyu çok dağıtmadan ana fikre gelelim. Özgür yazılıma sahip olduğunuzda programın çoğu zaman kodunu elde edersiniz ve bunu kendiniz derlersiniz. Baktınız programda bir hata var, o zaman kod sizde olduğu için –bu işten anlıyorsanız, ya da anlayan biriyle irtibata geçerek— kodu direkt olarak kendiniz düzeltir ve işinize devam edebilirsiniz. Özgür yazılımın en bariz avantajı budur.
Programların özgür yazılım olması için hal-i hazırda pek çok lisans seçeneği mevcuttur. Örnek olarak GPL (GNU Genel Kamu Lisansı) verilebilir. Bu lisansla yazılan bir kodda değişiklik yaparsanız bunu belirtmek ve yeni kodu da aynı lisansla paylaşmak zorundasınızdır. Dolayısıyla mesela bir şirket sizin kodunuzu ticari olarak kullanmak için temel alsa dahi kaynak kodunu aynı lisansla özgür olarak erişime açmak durumundadır. En bilinen özgür yazılım, bir işletim sistemi olan GNU/Linux’tur (kısaca Linux). Linux dağıtımlarına da örnek vermek gerekirse Ubuntu ve Fedora’dan bahsedilebilir.
Fizik için özgür yazılımlar
Fizik için kullanılan çok iyi özgür olmayan yazılımlar da mevcut. MATLAB ve Mathematica bunların başında gelir. Fakat bunların lisans ücretlerinin çok yüksek miktarlarda olması sebebiyle, fizik öğrencileri için, üniversitelerinin bir anlaşması yoksa yasal olarak kullanmak çok pahalıya gelmektedir. Bu sebepten dolayı bazılarını kendim de kullandığım bazı özgür yazılımlardan bahsetmek istiyorum.
Python tabanlı kütüphaneler
Python bir programlama dilidir. Yazımı çok rahat ve kullanışlıdır. Hız konusunda C ya da C++ ile yarışamasa da aklınızdaki fikri koda dökmek için gayet kullanışlı bir dildir ve engin kütüphaneleri vardır. Arayüz olarak komut satırı yerine Jupyter arayüzünü kullanmak daha kullanışlı olabilir. Bunu da hatırlattıktan sonra şimdi sırayla işimize yarayacak bazı kütüphanelere ve bunların ne amaçla kullanıldığına değinelim. Python dilini öğretmek bu yazının kapsamı dışındadır.
SciPy
Bilimsel hesaplama için kullanılabilecek olan paketlerin toplamıdır ve şunları içerir: NumPy, SciPy kütüphanesi, Matplotlib, Sympy, pandas, vb… Benim şahsen kullandıklarım şunlar:
- NumPy: Matrislerle ve vektörlerle hesap yapmak için kullanılır.
- Matplotlib: Grafik üretmek için kullanılır. Üretilen grafikler birçok formatta kaydedilebilir. Ayrıca grafikteki metinleri LaTeX ile çıktı alma desteği vardır (Bu bilimsel makale yazarları için önemlidir.)
- Sympy: Sembolik hesap yapmak için kullanılır. Örneğin sin(x)’in türevinin cos(x) olduğunun hesabı gibi.
Astropy
Astronomi hesapları için kullanılabilecek bir kütüphane. Mesela astronomide kullanılan farklı koordinat sistemlerini birbirine dönüştürmek için fonksiyonları vardır.
Maxima
Bu program sembolik işlem yapmak üzerinedir. Integraller, türevler, Taylor açılımı, vb… işleri sorunsuzca halleder. Yukarıda bahsettiğimiz Sympy Python kütüphanesinin tek bir programda toplanmışı gibi düşünebilirsiniz; her ne kadar Maxima Python tabanlı olmasa da.
Octave
Çoğu MATLAB fonksiyonuyla uyumludur. Genelde nümerik işlem yapmak için kullanılır. Mesela diferansiyel denklemleri sayısal olarak çözebilir, vektör, matris işlemleri yapabilirsiniz. Ben lisans eğitimimi alırken MATLAB için yazılması gereken kodları Octave’da yazmıştım ve o zaman için herhangi bir uyumluluk problemi yaşamamıştım.
R
Bu program istatistiki hesaplamalar için kullanılır.
ROOT
CERN tarafından geliştirilmiş olup büyük-veri analizleri, istatistiki hesaplar ve görselleştirme için kullanılabilir.
Scilab
Bu program bilimsel ve mühendislik hesapları içindir. Görselleştirme, optimizasyon, istatistik, sinyal işleme gibi işleri yapabilir.
gnuplot
Öncelikle şunu belirtelim: İsmindeki “gnu” ibaresinin “GNU/Linux”taki ‘GNU’ ifadesiyle ilgisi yoktur. Yüksek kaliteli grafikler üretmek için kullanılır. Matplotlib’de olduğu gibi LaTeX ile de uyumlu çıktılar verebilir.
Bağlantılar ve ileri okuma
- https://linux.org.tr/gpl/
- https://www.ubuntu.com
- https://getfedora.org
- https://www.mathworks.com/products/matlab.html
- http://www.wolfram.com/mathematica/
- https://www.python.org
- https://jupyter.org
- https://scipy.org
- https://www.astropy.org
- http://maxima.sourceforge.net
- https://www.gnu.org/software/octave/
- https://www.r-project.org/about.html
- https://root.cern.ch
- https://www.scilab.org/about
- http://www.gnuplot.info