Strlen fonksiyonu
Yazının kaç karekter uzunlukta olduğunu bulan fonksiyonun prototipi aşağıdaki gibidir.
unsigned int strlen (char *str)
Fonksiyon uzunluğu belirlenecek yazının başlangıç adresini parametre olarak alır ve geriye yazının uzunluğunu döndürür.
Strchr fonksiyonuStrchr "string character" sözcüklerinin kısa biçimidir. Bir karekter dizisi(yazi) içinde belli bir karekteri aramak için kullanılan fonksiyodur.Prototipi aşağıdaki gibidir.
char * strchar (char *str, char ch)
İkinci paramtere ile belirtirln karakteri str adresinden başlayarak arar. ch karakterinin ilk görüldüğü yernin başlangıç adresini geri döndürür. Eğer ch karekteri yazı içinde yoksa bu sefer geri dönüş değeri NULL olmaktadır.
Strcpy fonksiyonu
Strcpy, String ve Copy sözcüklerinin kısaltılmış halidir. Fonksiyonun ikinci parametresinde bulunan yazının başlangıç adresinden başlayarak ,birinci paramteresinde bulunan adrese NULL karekter de dahil olmak üzere kopyalar. Prototipi şöyledir;
char * strcpy (char *hedef , char * kaynak)
Fonksiyonun geri dönüş değeri kopyalamanın yapıldığı hedef adresidir.
Strcat fonksiyonu
Fonksiyon ismini "String" ve "Concatanate" sözcüklerinden alır. Bu fonksiyon bir karekter dizisini başka bir karekter dizisinin sonuna eklemek için kullanılır. Prototipi şu şekildedir;
char * strcat (char *str, char *ek)
Fonksiyonda parametre olarak belirtilen birinci yazının sonuna ikinci paramterede belirtilen yazı eklenerek, eklemenin yapıldığı adres yani str adresi geri döndürülür.Bu fonksiyonu kendimiz yazmamız için önce str yazısının sonuna kadar gitmemiz sonrada ek teki yazıyı str nin sonundan itibaren kopyalamamız gerekir.
Strcmp fonksiyonu
Fonksiyonun ismi String ve Compare sözcüklerinin kısaltılmış halidir. Parametre olarak verilen iki yazı dizisinin ASCII karekter tablosuna göre karşılaştırır. Küçük harfler ASCII tablosunda büyük harflerden daha sonra geldiği için "sefer" yazısı "SEFER" yazısından daha büyüktür. "Mehmet" yazısı "Metin" yazısından daha küçüktür, çünkü eşitliği bozan h karakteri t karekterinden daha önce gelmektedir. Prototipi aşağıdaki gibidir
int strcmp (char *str1 , char * str2)
Parametre ile verilen iki yazı karşılaştırılır ve geri dönüş değeri, birinci yazı ikinci yazıdan büyükse pozitif bir değere, birinci yazı ikinci yazıdan daha küçükse negatif bir değere , birinci yazı ve ikinci yazı eşit ise sıfır dır.
24 Ekim 2017 Salı
3 Ekim 2017 Salı
Git ve GitHub
Git bir versiyon kontrol sistemidir. SVN olarak da adlandırılan bir sistemdir. SVN, SubVersioN(alt sürüm) kelimesinin kısaltılmış halidir. Bir dosya üzerinde tek başınıza ya da ekip olarak çalıştığınızı düşünün. Siz ya da ekibiniz küçük veya büyük fark etmez aynı dosya ile çalışmak ve hızla ilerlemek zorundasınızdır. Bu çalışmanızda en fazla sıkıntı veren durum ekipteki kişilerin yaptığı düzenlemelerin, yine ekipteki birisinin yaptıklarıyla çakışmasıdır. Sizin yaptığınız bütün değişiklikler, diğer ekip üyesinde var olmayacağı için o dosyayı farkında olmadan sizin yaptıklarınızın üzerine atar ve bir anda tüm yaptıklarınız ezilir, kaybolur. Aynı şekilde tek başınıza çalışıyor da olabilirsiniz. Mutlaka başınıza gelmiştir. Çalıştığınız dosya da bir değişiklik yapıp kaydettiğinizde ve sonrasında o değişikliğe ihtiyacınız olduğunda geri dönememeniz ve o verinin kaybolması da aynı durumdur.
Bu sebeple Git gibi versiyon kontrol sistemleri de bu sıkıntıları gidermek için oluşturulmuştur. Her ekip üyesinin yaptığı değişiklikler ayrı ayrı ele alınarak, üst üste gelmeyen(çakışmayan) değişiklikler(örneğin aynı satırda yapılmış değişiklikler) yoksa kolayca birleştiriliyor. Eğer üst üste gelen(çakışan) satırlar varsa bu konuda yardımcı olarak kolayca birleştirmemize yardımcı oluyor. Fakat dosya üzerinde yapılan tüm değişiklikleri, saklayarak ta istenildiğinde görülebilmesini ve istenilen revizyona geri dönülebilmesini de sağlıyor.
Kısaca yazılımcılar için olduğu kadar bir belge üzerinde sürekli revizyon yapanlar içinde geçmişe yönelik revizyonları tutan bir sistemdir.
GitHub ise versiyon kontrol sistemleri için(örneğin Git) uzak bir depo(repository)dur. Uzak depo demek, bir havuz olarak da düşünülebilir. Birçok yazılımcının bir araya geldiği, bir projenin kopyası üzerinde çalışarak projenin alt sürümlerini çıkardığı ya da çeşitli ihtiyaçlarını giderdiği ve yaptığı değişikliği havuza gönderdiği bir sosyal kodlama alanıdır.
GitHub üzerinde yapılmış bir projenin bir kopyasını alıp, bilgisayarınızda çalışıp yaptığınız değişiklikleri proje sahibine GitHub sitesi üzerinden gönderebileceğiniz gibi, sizde bir hesap oluşturarak GitHub üzerinde proje oluşturabilirsiniz
C Programlama Dili Derleyicileri
1. Notepad++
Notepad++ adından da anlaşılacağı gibi bir metin düzenleme aracı, tabii bunun yanında birçok özelliği de var. Özellikle herhangi bir dilde kodlama ile uğraşıyorsanız çok işinize yarayacak bir araç.Desteklediği kodlama dilleri şöyle; C, C++, Java, C#, XML, HTML, PHP gibi birçok dili destekler. Bu da C dili için uygun bir derleyici olduğunu göstermektedir.
2. Tutorials Point – Online Compiler
Son dönemde bulut tabanlı sistemlerin arttığını görüyoruz. Bunun örneklerinden birisi de herhangi bir kurulum yapmadan web tarayıcımız üzerinde kod yazarak çalışabileceğimiz web siteleri. Tutorials Point web sitesinde birçok dil için online derleyici bulunuyor. C çalışmak için kullanmaya da uygundur.
3. Dev C++
Eski bir geliştirme ortamı olmasına rağmen Dev-C++ da C ve C++ çalışmaları yapmak için kullanılabilir.
4. Microsoft Visual Studio
Visual Studio, Microsoft firmasının Windows işletim sisteminde yazılım geliştirmek için sunduğu tümleşik geliştirme ortamı. Oldukça gelişmiş özelliklere sahip bu platformda C++, C# ve VB dillerinde yazılım geliştirilebiliyor. C++ derleyicisinde C kodları yazmanız mümkün. Visual Studio’nun “Community” versiyonu ücretsiz olarak kullanılabiliyor.
C Programlama Dili Tarihçesi
C Programlama Dili genel amaçlı yapısal bir programlama dilidir. C dili Dennis Ritchie tarafından 1972’de AT&T Bell Telephone Labaratuarlarında B dilinden geliştirilmiştir. C dili, B* ve BCPL** nin önemli genel kavramlarının çoğunu içerir. C dili konusundaki ilk kitap, 1978’de Brian Kernighan ve Dennis Ritchie tarafından yazılmıştır.
1983 yılında C programlama dili standardize etmek amacıyla toplanan bir komite ANSI C*** (American National Standart Institute) standardını tanımlamıştır. C başlangıçta birçok kişi tarafından UNIX işletim sistemini geliştiren dil olarak biliniyordu.(UNIX işletim sisteminin 1000 satırlık bölümü C ile yazılmıştır). Ama günümüzde hemen hemen bütün büyük işletim sistemleri C ya da C++ ile yazılmıştır. Ayrıca Nesneye Yönelik programlama dilleri (C++,Java ve C# gibi) ve script dilleri (JavaScript,JavaApplet,PHP gibi) gibi programlama dilleri tamamen C tabanlıdır.
C donanımdan bağımsız (machine independent) ve taşınabilirdir (portable). Taşınabilirlik,aynı programın farklı donanımlarda ve farklı işletim sistemlerinde işletilebilirliğini ifade eder. Örneğin, Windows işletim sisteminde yazılan bir C kodu, Linux,UNIX, veya VAX gibi işletim sistemlerinde de derlenebilir.
Bir dilin verimliliği (productivity), hızlı fakat fazla yer kaplamayan yazılımlar geliştirmeye olanak sağlaması ile ölçülür. C programlama dili verimli, basit ,fakat güçlü yapısından ve bu dilde geliştirilen uygulamaların taşınabilir olmasından ötürü yaygın olarak kullanılmaktadır.
21 Eylül 2017 Perşembe
Compiler (Derleyici) Nedir?
Basitçe bir dilde yazılmış olan kodu (kaynak kodu yada source code) istenilen başka bir kod haline dönüştüren programdır. Genelde üretilen bu kod ortama göre çalıştırılabilir kod (executable code) olarak üretilmektedir. Ancak bir derleyicinin daha doğru tanımı bir dildeki kodu başka dile çeviren program olarak yapılabilir. Örneğin C dilinde yazılan bir programı PASCAL diline çeviren programlara derleyici adı verilebilir.
Derleyicinin diğer bir tanımı ise daha üst seviye bir dilden daha alt seviyeli bir dile tercüme olarak kabul edilebilir. Buna göre örneğin C dilinden Assembly veya makine dili gibi daha alt dillere tercüme ile derleyici kavramı daha da sınırlandırılmış olarak kabul edilebilir.
Derleyiciler günümüzde daha çok bir dilde yazılmış koddan, işletim sistemi ve donanım bağımlı kodların üretilmesinde kulllanılmaktadırlar.
Bu üretim sırasında ya doğrudan işletim sisteminin anlayacağı ve çalıştıracağı kodları üretirler ya da işletim sisteminde bulunan veya yine dil bağımlı olarak çalışan bağlayıcı (linker) programların anlayacağı ara kodları üretirler.Derleyiciler bu kod üretmesi sırasında, üretilen kodun en verimli şekilde üretilmesi için kod iyileştirmesi (optimisation) da yapmaktadırlar. Yani hedef dildeki çalışma süresi ve hafıza ihtiyacı en az olan kodu üretmek bir derleyicinin daha başarılı olma kriterlerinden birisidir.Aynı zamanda kaynak kodda (source code) bulunan hataların yakalanması bu hataların programcıya bildirilmesi de derleyicilerin diğer görevlerinden birisidir.
Derleyicinin diğer bir tanımı ise daha üst seviye bir dilden daha alt seviyeli bir dile tercüme olarak kabul edilebilir. Buna göre örneğin C dilinden Assembly veya makine dili gibi daha alt dillere tercüme ile derleyici kavramı daha da sınırlandırılmış olarak kabul edilebilir.
Derleyiciler günümüzde daha çok bir dilde yazılmış koddan, işletim sistemi ve donanım bağımlı kodların üretilmesinde kulllanılmaktadırlar.
Bu üretim sırasında ya doğrudan işletim sisteminin anlayacağı ve çalıştıracağı kodları üretirler ya da işletim sisteminde bulunan veya yine dil bağımlı olarak çalışan bağlayıcı (linker) programların anlayacağı ara kodları üretirler.Derleyiciler bu kod üretmesi sırasında, üretilen kodun en verimli şekilde üretilmesi için kod iyileştirmesi (optimisation) da yapmaktadırlar. Yani hedef dildeki çalışma süresi ve hafıza ihtiyacı en az olan kodu üretmek bir derleyicinin daha başarılı olma kriterlerinden birisidir.Aynı zamanda kaynak kodda (source code) bulunan hataların yakalanması bu hataların programcıya bildirilmesi de derleyicilerin diğer görevlerinden birisidir.
2017-2018 Programlama Dilleri
Programlama Dili Nedir?
Programlama dili, yazılımcının bir algoritmayı ifade etmek amacıyla, bir bilgisayara ne yapmasını istediğini anlatmasının tek tipleştirilmiş yoludur. Şu ana kadar 2500’den fazla programlama dili yapılmıştır. Bunlardan bazıları Pascal, Basic, C, C#, C++, Java, COBOL, Perl, Python, Ada, Fortran, Delphi ve 1C Enterprise'dır. Bir programın çalışması demek, Mikroişlemciye daha önceden hazırlanmış bir kod yığınının gönderilmesi demektir. Bu kodlar işlemcinin anlayacağı ASM dilinde yazılmış kısa kodlardır, ASM en hızlı programlama dili olmakla beraber, kullanılması en zor programlama dilidir.ASM dili için kısaca bilgisayarın anadili diyebiliriz, çünkü CPU sadece ASMkodlarını anlayacak bir yapıya sahiptir. Ilk çıktığı günlerde sadece ASM dili olduğu için program yazmak gerçekten çok zordu. Bu yüzden üst seviye programlama dilleri geliştirilmiştir.
20 Şubat 2017 Pazartesi
C++ Yeni Örnekler
1-İsmini ve yaşını ekrana yazdıran program (C++)
2-KDV'yi 0 18 sabit olarak tanımladıktan sonra 500 TL için ödenecek
KDV miktarı hesaplama(c++)
3- Cout komutunu yaz olacak şekilde değiştirme
4 - #define kullanarak iki sayıdan büyük olanı ekrana yazan program
5) 1 -10 arası döngüyü #define kullanarak kısaltma
19 Şubat 2017 Pazar
CLASS DEFINITON
Bir programda sınıf(class) yapmak istiyorsak aşağıdaki gibi bir yapıda olmak zorundadır.
class name
{
public
>> constructor(s)
>> destructo
>> function members
>> data members
protected
>> function members
>> data members
private
>> function members
>> data members
}
PUBLİC
Her yerden erişime açıktır.Fonksiyon yada değişkenler dışarıdan değer alabilirler.
Cunstructor(s):(Yapılandırıcı veya kurucu olarak adlandırılır) fonksiyon,kendi sınıfı icerisindeki(genelde private olan uyeler) uyeleri veya olusturdugu nesnenin ilk cikis sahnesini olusturan fonksiyonlardir.Nesneler,genelde yaratılırken ilk deger atamalarını kendi kurucu fonksiyonlari sayesinde yaparlar.Boyle bir kural sart degildir,ancak nesne yönelimli programlama dilleri(object oriented programming) uzerinde kod yazan programcılar genelde bu yaklaşım ile sınıflarını tasarlarlar.Bakıldıgı zaman programın optimizasyonu acısından da constructor fonksiyonları cok yararlıdır.
PRİVATE
Private üyelere o sınıf dışından herhangi bir şekilde erişilemez ve bu üyeler kalıtım yoluyla aktarılmaz.. Private olarak tanımlanan değişken ve fonksiyonlar sadece o sınıfın kendi metotları tarafından kullanılabilir. Yani işin özü o metod veya değişken sadece o sınıfa özel olur. Bir değişkeni private olarak tanımladığınızda ve bu değişkenin başka bir sınıf tarafından kullanılması gerektiğinde bu değişkeni döndüren bir public fonksiyon yazarak işlemi gerçekleştirebilirsiniz.
PROTECTED
Protected aslında private'ye benzer. Protected özelliği atanan bir değişken veya metot, sadece sınıf içerisinden veya türetilen bir sınıf içerisinden erişilebilir.. Yani bir sınıf extend ettiği sınıfın protected üyelerine erişebilir ama private üyelerine erişemez.
class name
{
public
>> constructor(s)
>> destructo
>> function members
>> data members
protected
>> function members
>> data members
private
>> function members
>> data members
}
PUBLİC
Her yerden erişime açıktır.Fonksiyon yada değişkenler dışarıdan değer alabilirler.
Cunstructor(s):(Yapılandırıcı veya kurucu olarak adlandırılır) fonksiyon,kendi sınıfı icerisindeki(genelde private olan uyeler) uyeleri veya olusturdugu nesnenin ilk cikis sahnesini olusturan fonksiyonlardir.Nesneler,genelde yaratılırken ilk deger atamalarını kendi kurucu fonksiyonlari sayesinde yaparlar.Boyle bir kural sart degildir,ancak nesne yönelimli programlama dilleri(object oriented programming) uzerinde kod yazan programcılar genelde bu yaklaşım ile sınıflarını tasarlarlar.Bakıldıgı zaman programın optimizasyonu acısından da constructor fonksiyonları cok yararlıdır.
Destructors: (Yıkıcı , Yok edici) olarak adlandırılan fonksiyonlar ise,constructor fonksiyonunun yaptıgı işin tersini yaparlar,yani gorevi biten nesneyi yok ederler.Bir sınıfın(class) uyesi olan bir degisken(orn:string tipli) gorevini noktaladigi durumda ~destructor() fonksiyonu otomatik cagrilarak,uzerinde calistigi nesneyi devre dışı bırakır.C++ programlama dili icerisinde destructor'lar bulunurken,java dilinde bu fonksiyonlar kaldırılmıştır.Nedeni ise,programlama zafiyeti acısından eger iyi tasarlanmazsa,bu fonksiyonlar programa ciddi zararlar verebilirler.
Destructor() fonksiyonları olmasada,constructor() fonksiyonlari aşırı yuklenebilir.Bu durumu fonksiyon parametrelerini degistirerek uygulayabilirsiniz.Ancak bu fonksiyonlarin donus tipi belirtilmemektedir.
-C++ programlama dilinde bu sistemlerin initalize edilmesi asagidaki gibi tasarlanır:
class class_name { // Bir class
class_name(); // Bir constructor
class_name(int,float); // Aşırı yuklenmiş Bir constructor
~class_name(); // Bir destructor
};
Function members: Bir nesne dahili olarak saklanan ve o nesneye özgü işlevler içerebilir.
Bu tür her bir işlev , sınıfta bir prototip olarak uygun bir deklarasyona ihtiyaç duyar.
İşlev üyeleri sıradan işlev olabilir, ancak aşırı yüklenebilir ,
varsayılan parametre değerlerine sahip olabilirler veya sanal olabilirler.
Private üyelere o sınıf dışından herhangi bir şekilde erişilemez ve bu üyeler kalıtım yoluyla aktarılmaz.. Private olarak tanımlanan değişken ve fonksiyonlar sadece o sınıfın kendi metotları tarafından kullanılabilir. Yani işin özü o metod veya değişken sadece o sınıfa özel olur. Bir değişkeni private olarak tanımladığınızda ve bu değişkenin başka bir sınıf tarafından kullanılması gerektiğinde bu değişkeni döndüren bir public fonksiyon yazarak işlemi gerçekleştirebilirsiniz.
PROTECTED
Protected aslında private'ye benzer. Protected özelliği atanan bir değişken veya metot, sadece sınıf içerisinden veya türetilen bir sınıf içerisinden erişilebilir.. Yani bir sınıf extend ettiği sınıfın protected üyelerine erişebilir ama private üyelerine erişemez.
18 Şubat 2017 Cumartesi
IDE NEDİR? C++ İÇİN KULLANILAN IDE'LER
IDE (Integrated Development Environment), yazılımcının hızlı ve rahat bir şekilde program geliştirebilmesini amaçlayan, geliştirme sürecini organize edebilen birçok araç ile birlikte bu sürecin verimli kullanılmasına katkıda bulunan araçların tamamını içerisinde barındıran bir yazılım türüdür. Tümleşik geliştirme ortamlarında olması gerekli en temel özellikleri aşağıdaki gibidir:
- Programlama diline göre sözdizimi renklendirmesi yapabilen bir kod yazım editörü.
- Kod dosyalarının hiyerarşik olarak görülebilmesi için hazırlanmış gerçek zamanlı bir dizelge.
- Tümleşik bir derleyici, yorumlayıcı ve hata ayıklayıcı.
- Yazılımın derlenmesi, bağlanması, çalışmaya tümüyle hazır hale gelmesi ve daha birçok ek işi otomatik olarak yapabilmek amacıyla küçük inşa araçları.
En popüler IDE’lerden birkaç tanesine örnek verelim :
Eclipse, Microsoft Visual Studio, Code::Blocks, Dev-C++, Anjuta, KDevelop, NetBeans…
COMPİLER NEDİR?
Basitçe bir dilde yazılmış olan kodu (kaynak kodu yada source code)
istenilen başka bir kod haline dönüştüren programdır. Genelde üretilen bu kod
ortama göre çalıştırılabilir kod (executable code) olarak üretilmektedir. Ancak
bir derleyicinin daha doğru tanımı bir dildeki kodu başka dile çeviren program
olarak yapılabilir. Örneğin C dilinde yazılan bir programı PASCAL diline
çeviren programlara derleyici adı verilebilir. Derleyicinin diğer bir tanımı
ise daha üst seviye bir dilden daha alt seviyeli bir dile tercüme olarak kabul
edilebilir. Buna göre örneğin C dilinden Assembly veya makine dili gibi daha
alt dillere tercüme ile derleyici kavramı daha da sınırlandırılmış olarak kabul
edilebilir. Derleyiciler günümüzde daha çok bir dilde yazılmış koddan, işletim
sistemi ve donanım bağımlı kodların üretilmesinde kulllanılmaktadırlar.
DEBUGGER NEDİR? NE İŞE YARAR?
Bilgisayar
programcıları arasında oldukça sık kullanılan terimlerdir. Tam karşılıkları böcek ve böcekten arındırmadır. Bir
programın umulmadık noktalarında hatalar varsa ve program zaman zaman yanlış
çalışıyorsa, o programda BUG (Böcek) bulunduğuna ilişkin cümleler kullanılır.
Bu hataların bulunarak düzeltilmesi sürecine DEBUG adı verilir. Bu deyimin
bilgisayar terminolojisine girmesinin hikayesiyse oldukça ilginçtir.
MARK
II elektromekanik bilgisayarı için 1950 li yıllarda program geliştiren Grace
Hopper isimli ünlü kadın programcı, hatalı çalışan programındaki problemi bir
türlü bulamamaktaydı. Uzun aramalar sonucunda, bilgisayarın röleleri arasında
sıkışmış kalmış bir böcek ölüsünün bütün sorunların kaynağı olduğu
anlaşılmıştı.
Buradan
da anlaşılacağı gibi Debugger hata ayıklayıcı demektir. Derleyici programın
arka planında çalışarak yazılan kodlar arasındaki hataları bulmaya çalışır.
LİNKER NEDİR?
Bir derleyici tarafından
üretilmiş olan kodları bağlayarak işletim sisteminin çalıştırabileceği tek bir
kod üreten programdır.
Günümüzde hızla
gelişen programlama ihtiyaçları sonucunda programlamada modüler yaklaşıma
geçilmiştir. Buna göre büyük bir yazılım küçük alt parçalara bölünmekte ve her
parça ayrı ayrı işlenerek büyük program elde edilmektedir. Yapısal
programlamanın da çıkış sebeplerinden birisi olan bu yaklaşıma göre dillerde
fonksiyon desteği gelmiş ve değişik parametrelere göre aynı kodun farklı
sonuçlar üretmesi sağlanmıştır. Daha sonradan gelişen nesne yönelimli
programlama bu konuda bir sonraki nesil olarak kabul edilebilir. Nesne
yönelimli programlamada, programlar nesnelere bölünerek farklı bir yaklaşım
izlenmiştir.
Bu
yaklaşımların derleyicilere yansıması da uzun sürmemiş, daha yapısal
programlamanın ilk geliştiği günlerde derleyiciler de farklı kütüphaneler
ve bu kütüphaneleri birleştirmeye yarayan harici programlar kullanmaya
başlamışlardır.
Kodun birden fazla
parçaya bölünmesi ve her parçanın ayrı ayrı üretilmesi durumunda bu parçaların
birleştirilmesi ve tek bir program halinde üretilmesinden sorumlu olan
programlara bağlayıcı (linker) adı verilmektedir.
GUİ (Graphical User Interface) NEDİR?
Grafiksel Kullanıcı Ara yüzü, elektronik cihazların simgeler, ikonlar ve diğer görsel
grafikler yardımıyla kullanmasına yardımcı olması amacıyla geliştirilmiş
tasarımlardır. GUI öncesi komut bazlı işletim sistemi kullanılan eski nesil
bilgisayarlar ve elektronik cihazlarda herhangi bir işlemi gerçekleştirmek için
komut satırı kullanılıyordu. Kullanıcılar bilgisayar üzerindeki her işlemi klavye üzerinden ve komutları kullanarak
gerçekleştiriyordu. Daha sonra kullanıcıların daha rahat kişisel
bilgisayar kullanabilmesi için 1981 yılında aralarında Alan Kay, Douglas Engelbart ve
bir grup araştırmacının yer aldığı grup Xerox PARC' da ilk
GUI' yi geliştirmiştir. Daha sonraları grafiksel kullanıcı ara yüzü fikrini Apple benimsemiş ve Lisa ismiyle
çıkış yapan bilgisayarında kullanmıştır. Bugün artık aktif olarak
gelişimi devam ettirilen işletim sistemlerinin neredeyse tamamı grafiksel
kullanıcı ara yüzünü kullanmaktadır.
GNU NEDİR?
GNU; çekirdeği,
sistem araçlarını, açıcılarını, kütüphanelerini ve
son kullanıcı yazılımlarını içeren, GNU Tasarısı kapsamında geliştirilen bir işletim sistemidir.
İsminin açılımı "GNU's Not Unix" (GNU Unix değildir)’dir. Bu
ismi almasındaki sebep de tasarımının Unix'e benzerken kendisinin özgür yazılım olması
ve herhangi bir UNIX kodunu içermemesidir.
GNU
işletim sistemi planı 1983 Eylül'ünde Richard
Stallman tarafından
duyurulmuş, 1984 Ocak ayında işleyişe
başlamıştır. 2006 itibarıyla GNU hâlâ
etkin olarak gelişmektedir. GNU'nun geliştirilmesi GNU Tasarısı tarafından
gerçekleştirilmektedir ve bu tasarı altında birçok GNU belgeleri ve yazılımları
bulunur.
Günümüz
itibarıyla hâlâ tamamlanmış bir GNU sistemi sunulmamıştır. Resmi
çekirdeği GNU Hurd'dür
ancak Hurd henüz bitmemiştir zira geliştirilmesi aşamasında bazı lisans
sorunları yaşanmış ve yapısal değişikliğe gidilmiştir. Linux'un da devreye
girmesiyle birçok GNU kullanıcısı Linux çekirdeğine geçiş yapmış böylece Linux,
Hurd'ün yerini doldurmuştur. GNU resmi olarak başka yazılımları da
desteklemektedir (Xorg ve TeX gibi).
Sistemin
başlıca içeriği GNU Compiler Collection (GCC), GNU Binary Utilities
(binutils),
bash kabuğu, GNU C kütüphanesi (glibc)
ve coreutils'den oluşur. Görsellik açısından
X.Org'u; yazım açısından da TeX yazılımlarını kullanır. Tüm GNU yazılımları
halen GNU Hurd çekirdeğiyle uyumlu değildir.
Linux
çekirdeğini kullanan kullanıcılar sistemlerini genel olarak "Linux"
demektedir ancak GNU Projesi "Linux" yerine "GNU/Linux"
denmesini önerir. Çünkü Linux, bünyeside GNU araçlarını barındırmaktadır. Bu
konudaki tartışma uzun süredir devam etmektedir.
Birçok
GNU yazılımları diğer işletim sistemlerinde de kullanılmıştır (Windows, BSD, Solaris ve Mac OS gibi).
GNU
Genel kamu lisansı (GPL),
GNU Lesser General Public License (LPGL) ve GNU Free Documentation License (GFDL) GNU tarafından
yazılmıştır ancak bambaşka birçok diğer konuda da kullanılmaktadır. GNU kamu
malı olarak görülmektedir ve başarisinin arkasında olan da herkese olan
açıklığıdır. Her kullanıcı GNU'yu geliştirebilir.
GPL (General Public Licence - Genel
Kamu Lisansı) NEDİR?
GNU Genel Kamu Lisansı (GNU GPL ya da GPL) birçok yerde kullanılan
ücretsiz yazılım lisansıdır ve özgün hali Richard Stallman tarafından GNU
projesi için yazılmıştır. Bu lisansın en son sürümü (GPLv3), 29 Haziran 2007'de
çıkmıştır. GNU Kısıtlı Genel Kamu Lisansı yani LGPL ise GPL'in bazı yazılım
kütüphaneleri için yazılmış sürümüdür.
GPL'in genel nitelikleri
GPL lisans anlaşması, 1983 yılında Richard Stallman tarafından geliştirilmiş, çok akıllıca detaylarla bağlayıcılığı bulunan, teşvik edici, gerek kullanıcı gerekse üretici tarafa büyük olanaklar sağlayan bir lisans türüdür. GPL'in en çok üzerinde durduğu konu yazılımların kaynak kodu ile birlikte dağıtılmasının gerekliliğidir. Üretici firma yazılımını binary olarak dağıtsa bile kaynak kodunu da herkes tarafından erişilebilir bir yere bırakmak zorundadır. Kullanıcı, bu kaynak kodu alıp inceleyebilir, üzerinde istediği değişikliği yapabilir, kendi projelerinde, yazılımlarında kodun tamamını ya da bir parçasını kullanabilir. Hatta başkasının kod parçasını alıp birkaç değişiklik yapıp, satarak maddi kazanç da elde edebilir. Ama tek bir şartla, yeni üretilen program da GPL ile lisanslanmak zorundadır.
GPL, yazılımın ücretlendirilmesi hakkında hiçbir fikir beyan etmez. GPL yazılımları ücretsiz olmak zorunda değildir. Üretici firma ya da kuruluş, yazılımını GPL ile lisanslayıp, dağıtabilir ve karşılığında da bir ücret talep edebilir. Bu madde en baştan beri sözleşme içerisinde olmasına rağmen, GPL yazılımların çok büyük bir kısmı ücretsizdir. Genel yaklaşım yazılımdan değil, kullanıcıya sunulan kurulum, eğitim, yönetim ve ek modül yazma gibi süreçlerden para kazanılması şeklindedir. Bu özelliği ile GPL pek çok lisanstan ayrılmaktadır.
GPL'in genel nitelikleri
GPL lisans anlaşması, 1983 yılında Richard Stallman tarafından geliştirilmiş, çok akıllıca detaylarla bağlayıcılığı bulunan, teşvik edici, gerek kullanıcı gerekse üretici tarafa büyük olanaklar sağlayan bir lisans türüdür. GPL'in en çok üzerinde durduğu konu yazılımların kaynak kodu ile birlikte dağıtılmasının gerekliliğidir. Üretici firma yazılımını binary olarak dağıtsa bile kaynak kodunu da herkes tarafından erişilebilir bir yere bırakmak zorundadır. Kullanıcı, bu kaynak kodu alıp inceleyebilir, üzerinde istediği değişikliği yapabilir, kendi projelerinde, yazılımlarında kodun tamamını ya da bir parçasını kullanabilir. Hatta başkasının kod parçasını alıp birkaç değişiklik yapıp, satarak maddi kazanç da elde edebilir. Ama tek bir şartla, yeni üretilen program da GPL ile lisanslanmak zorundadır.
GPL, yazılımın ücretlendirilmesi hakkında hiçbir fikir beyan etmez. GPL yazılımları ücretsiz olmak zorunda değildir. Üretici firma ya da kuruluş, yazılımını GPL ile lisanslayıp, dağıtabilir ve karşılığında da bir ücret talep edebilir. Bu madde en baştan beri sözleşme içerisinde olmasına rağmen, GPL yazılımların çok büyük bir kısmı ücretsizdir. Genel yaklaşım yazılımdan değil, kullanıcıya sunulan kurulum, eğitim, yönetim ve ek modül yazma gibi süreçlerden para kazanılması şeklindedir. Bu özelliği ile GPL pek çok lisanstan ayrılmaktadır.
OPEN
SOURCE (Açık Kaynak Kod) NEDİR??
Açık kaynak kodlu yazılım,
kaynak kodları herkese açık olan yazılımdır. Bunun anlamı, onun üzerinde
herhangi bir değişiklik yaparak kendi sürümünüzü meydana
getirebileceğinizdir. Normalde bir programı çalıştırdığınızda onun kaynak
kodlarına erişemezsiniz. Yani uygulamanın size sunduğu işlevleri nasıl
sunduğunu göremez, onun özelliklerinde herhangi bir değişiklik yapamazsınız.
Bunu taşındığınız, yeni
yapılmış bir ev örneğine benzetebiliriz. Evin her şeyi hazırdır,
elektrik hattı, su boruları ve diğer altyapı duvarların arkasına gizlenmiştir.
Örneğin elektrik hattınızda bir sorun meydana geldiğinde, hatlara
erişemiyorsanız elektrikçinin gelip sorunu gidermesinden başka
yapabileceğiniz bir şey yoktur. Kapalı
kaynak kodlu yazılımlarda da durum buna benzer. Bu tür programlarda programın
geliştiricisine bağlısınızdır, herhangi bir sorun gördüğünüzde onu düzeltmeniz
mümkün olmaz.
Kaydol:
Kayıtlar (Atom)