Bir programlama dilinin "Open Source" olması ne anlama geliyor?

Bu konuyu okuyanlar

Spovio

Öğrenci
Katılım
10 Mayıs 2017
Mesajlar
1
Reaksiyon puanı
1
Puanları
1
Açık kaynaklı yazılımın ne olduğunu konusunda hepimizin bir fikri vardır. Kaynak koduna erişebildiğimiz, değiştirebildiğimiz, kopyalayıp dağıtabildiğimiz özgür yazılımlara açık kaynaklı diyoruz.

Peki bir programlama dili nasıl açık kaynaklı oluyor. Yani mesela Java dilinin lisansı Oracle firmasına aitken, Python internet sitesinde açık kaynaklı olduğu yazıyor. Bu ne demek? Yani Java diliyle programlama yapmak için Oracle firmasından izin mi alıcaz ya da para mı ödenmesi gerekiyor? Böyle olmadığını biliyorum ama bir anlam da veremedim yardımcı olırsanız sevinirim.
 

kmurat

Müdavim
Cezalı
Katılım
8 Şubat 2014
Mesajlar
8,488
Çözümler
3
Reaksiyon puanı
3,711
Puanları
113
Açık kaynaklı yazılımlar da ücretli olabilir. Bedava olacaklar diye bir kural yok. Açık kaynaklı bir programlama dilinde yazılan programlar da yine (Lisans şartları o şekildeyse) açık kaynaklı olmak zorunda. Veya satın alan kişi veya kuruluşa kaynak kodları da dahil satılmak zorunda. Sahipli yazılımlar da ücretsiz olabilir, ücretli olmak zorundalar gibi bir kural yok. Sahipli yazılımların ücretsiz sürümleri veya ücretsiz olanlarına "Freeware" tanımı verilir.

Ticari değeri olan yazılımların pazarlanma yöntemleri farklı olabiliyor. Python bir ticari yazılım ve marka. Java ile arada lisans şartları dışında bir fark yok. Genel lisans ile ticari kullanım için sözleşmeler farklı şartlar içerebilir. Kurumlar Windows için de yıllık lisans ücereti öderler. Biz bir kere ilk satın aldığımızda, cihaz ile birlikte ödemiş oluruz.

Tatmak bedava, satın alırken ücretli. Çocuklara bedava ama kucakta giderler. Bir şahıs olarak Python programını kaynağını vermeden satmak istediğinde, Aktive python OEM sürümünü satın almak gerekecek. Bir kurum olarak Python veya Java kullanıyorsan, yıllık lisans ücreti ödemek gerekecek. Sadece bir kere lisans bedeli ödenen yazılımlar da var, ticari gelir elde edersen pay ödemeni şart koşan yazılımlar da var. Hepsinin denemesi bedava.

Bazı yazılımlarda deneme süresi sınırlı, bazı yazılımlarda kullanım koşulları sınırlı. Her yazılım için tabii olduğu genel Lisans sözleşmesi veya sahibi olan kuruluş ile olan özel sözleşme kuralları geçerlidir.
 

mirinkirin

Doçent
Katılım
4 Temmuz 2016
Mesajlar
708
Reaksiyon puanı
358
Puanları
63
Açık kaynaklı yazılımın ne olduğunu konusunda hepimizin bir fikri vardır. Kaynak koduna erişebildiğimiz, değiştirebildiğimiz, kopyalayıp dağıtabildiğimiz özgür yazılımlara açık kaynaklı diyoruz.

Peki bir programlama dili nasıl açık kaynaklı oluyor. Yani mesela Java dilinin lisansı Oracle firmasına aitken, Python internet sitesinde açık kaynaklı olduğu yazıyor. Bu ne demek? Yani Java diliyle programlama yapmak için Oracle firmasından izin mi alıcaz ya da para mı ödenmesi gerekiyor? Böyle olmadığını biliyorum ama bir anlam da veremedim yardımcı olırsanız sevinirim.
Programlama dili sadece bir dildir bunun açık kaynak olması anlamsız. Yani kimse size public static void main(String[] args){} yazamazsınız diyemez:)
Burada bahsedilen o dilin sahip olduğu teknolojilerin durumu. Java dili için burada bahsedilen jdk, jre gibi yazılımların durumudur. Jdk olmadan yazdığınız kodlar sadece plain textten ibarettir, düz yazı yani. Jdk ile o kodlar derleniyor, jdk içinde nasıl belirtilmişse öyle derleniyor.
Bu yüzden jdk 7 ile lambda ifadelerini kullanamıyoruz çünkü jdk 7 lambda özel kelimesini anlayamıyor, ama jdk 8 versiyonuna bu özellik eklenmiş.
Openjdk isimli açık kaynak bir jdk var ve tüm jdk geliştiren firmalar geliştirmeleri bunun üzerinden yapıyor. Jdkyı sadece oracle üretmiyor, ibmin ürettiği kendisine özel jdksı da var.

Python dilinin açık kaynak olması da aynı şekilde o dilin interpreterinin(yorumlayıcı, derleyici değil!) kodlarının açık olması anlamına geliyor. Bunun avantajı nedir ? Diyelim ki ben python kullanıyorum ve socket sınıfından bir nesne ürettim. Bu nesne ile send fonksiyonunu kullanıyorum ve bu send fonksiyonu benim haberim olmadan bahsettiğim ipye ek olarak başka bir ipye de bilgi gönderiyor. Ben sadece socket.send() kodunu yazdım arkada olup bitenden haberim yok. Bu uç ve saçma bir örnek belki ama açık kaynak olmayan bir şeyin arkada neler çevirdiğinden emin olamayız. Örneğin unixin içinde bir arka kapı bırakmış tasarımcısı ve kendisi bunu 30-40 sene sonra söyledi, o söylemese kimsenin gene haberi olmayacaktı. Bunu söylerken de adam "babanıza bile güvenmeyin, bunu göstermek için yaptım" diyor:D

Diğer bir avantajı şu. Pythonda print fonksiyonu var ve birçok parametre alıyor. Ben bu dili özel bir cihazda kullanırken print ile kast ettiğim şeyin o cihazın ekranı olduğunu söyleyebilirim kaynak kodlarını değiştirerek. Böylece dil benim istediğim şekilde yorumlanır. Ayrıca dil açık kaynak olunca pek çok insan öneriler sunabilir, bir sonraki versiyonlarında bunlar eklenebilir.

Sonuç olarak açık kaynak programlama dili demek o dilin sahip olduğu özelliklere erişebilmemiz ve değiştirebilmemiz demek. Kapalı kaynakta ise sadece bize öğretilen özel komutları, fonksiyonları kullanırız. Convert fonksiyonunu kullanırız ama arkada neler yaptığını nasıl Convert ettiğini bilmeyiz mesela.

Para ve ticari kullanımlar için lisanslaması ve sözleşmeleri okumak gerekli. Lisans türleri var gpl gibi. Araştırın internette bolca Türkçe bilgi var bu konu hakkında.
 

Ben Kenobi

Müdavim
Katılım
6 Kasım 2011
Mesajlar
7,336
Reaksiyon puanı
3,155
Puanları
113
Programlama dilinin açık kaynak olması, o dile ait resmi kütüphaneler, compiler, decompiler, debugger, tarzı yazılımların açık kaynak olduğu anlamına geliyor.
Bu tanım genelde .NET ve C# için sıklıkla kullanılıyor çünkü ilk çıktığında kapalı kaynak iken Microsoft artık biz de açık kaynak olduk vurgusu için yapıyor.
Yine de başta IDE olmak üzere birçok kapalı kaynak componenti var.
Dolayısıyla bunlara inanmayın.
Devlet için vs yazılım yazacaksanız lütfen Microsoft'un ipiyle kuyuya inmeyin.
 

kmurat

Müdavim
Cezalı
Katılım
8 Şubat 2014
Mesajlar
8,488
Çözümler
3
Reaksiyon puanı
3,711
Puanları
113
Buna çifte lisans denir. C# ın açık kaynaklısı Mono (ve bir de unutulmuş ve artık geliştirilmeyen Portable Net var) Genelde programlama dilinin bir standardı (veya protokolü) vardır ve derleyiciler (bazen çok) farklı olabilir. C ve C++ da böyledir.
 
Üst