DUB ile Tanışalım
Yazar: Zafer Çelenk
Tarih: 28 Mart 2016
Program geliştirme sürecinde artarak çoğalan kodların, gerekli işlemlerden sonra çalıştırılıp çıktılarının gözlemlenmesi temel bir ihtiyaçtır. Bu süreç bir programcının programını geliştirmesi esnasında en çok tekrarladığı döngüdür. Bu döngü PHP, Python gibi dillerde sadece yaz-çalıştır şeklinde olmakla birlikte C++ ve D gibi derleyici ile kullanılan dillerde önce yaz sonra derle ve sonra çalıştır şeklinde üç adımdan oluşmaktadır. Zaman içinde geliştiriciler bu süreci daha kolay hale getirmek için yollar aramış ve programlamanın ilk zamanlarında makefile
1 komut dosyalarını kullanarak bu soruna bir çözüm getirmeye çalışmışlardır. Bu çözümde geliştirme sürecinde yazdığınız komutların çalışması için gerekli olan işlemler belli bir düzene göre oluşturulan makefile
isimli dosyalara yazılır. Ardından make
1 isimli bir program ile bu dosya çalıştırılır ve programın sonucunu gözlemleyebilirsiniz.
Zamanla bilgisayarlar komut satırından görsel arayüzlere doğru geçip, tümleşik geliştirme sistemleri (IDE) ortaya çıkmaya başlayınca makefile
yerine geliştirme ortamları bu işleri tek bir fonksiyon tuşu veya klavye kısayolu ile yapmaya başladı. İlk zamanlarda bu yeterli olsa da zamanla giderek artan hazır kod kütüphaneleri kullanılmaya başlandıkça programların çevreye bağımlılığı daha da artmaya başladı. Özellikle açık kaynak dünyasında ortaya çıkan ve herkesin özgürce kullanabilmesini sağlamak için genel kamu lisansı (GPL)2 altında dağıtılan kütüphaneleri programlarımıza otomatik olarak eklemek ve onların da başka bağımlılıklarını yönetmek görsel arayüze sahip IDE’ler ile çok kolay olmuyordu. Bu durum geliştiricilerin yeniden komut satırının otomasyon gücüne yönelmelerine neden oldu.
Bunun üzerine yıllar önce geliştirilen make
programının çok daha becerikli ve gelişmiş özelliklerle donatılmış yeni arkadaşları birer birer ortaya çıkmaya başladı. Örneğin Java dilinde çalışanlar için ant
ve maven
gibi araçlar öne çıkarken, C++ için cpm
, Python için pip
, hatta çok iyi bir IDE'ye sahip olan C# için nuget
gibi araçlar bir anda oldukça popüler oldu. Bu araçlar yardımıyla sadece bir kaç komut kullanarak paket deposunda bulunan herhangi bir paketi bilgisayarınıza indirip projenize entegre edebiliyor ve çoğu zaman fazladan bir takım ayarlamalar yapmanıza gerek kalmadan kullanmaya başlayabiliyorsunuz.
Bu kısa tarihçeden sonra D dili için geliştirilmiş proje ve paket yönetim programı olan DUB3 hakkında konuşmaya başlayabiliriz. DUB özellikle komut satırından projelerini yönetmeyi seven yazılımcılar için oldukça faydalı bir programdır ancak IDE üzerinde çalışan geliştiriciler tarafından da oldukça kullanışlı bulunacak yönleri vardır. Halen geliştirilme aşamasında olmakla beraber, bir çok özelliği ile kullanıma uygun ve gayet iyi çalışan bir programdır. DUB programının kurulumuna geçmeden önce ulaşabileceğiniz kaynakları sizinle paylaşmak istiyorum.
DUB projesi de diğer D projeleri (Phobos vs.) gibi açık kaynak kodlu ve kodlara herkesin ulaşabileceği bir şekilde Github üzerinde geliştiriliyor. DUB programına resmi D dili sayfasından ulaşmanız da mümkün. Bunun dışında DUB kullanarak projelerinize ekleyebileceğiniz bir çok pakete D paket deposu üzerinden ulaşabilirsiniz. Bu paket deposu DUB ile projenize dahil edebileceğiniz paketleri gayet güzel bir şekilde kategori bazlı olarak ayırıp sizin kullanımınıza sunuyor.
DUB programının kurulumu oldukça kolay; indirme bölümünden kullandığınız sisteme göre uygun olan kurulum dosyasını indirip program kurulumunu otomatik olarak yapabilirsiniz. Dikkat etmeniz gereken nokta, DUB sadece bir yönetim programı. Eğer D programları derlemek istiyorsanız sisteminizde bir de dmd
gibi bir D derleyicisi kurulu olmalı.
Kurulumdan sonra DUB artık kullanıma hazırdır. Temel DUB kullanımı için üç komutu bilmeniz yeterli, bu komutlardan birincisi yeni bir proje şablonu hazırlamanızı sağlayan init
komutudur. Bu komutu kullanarak yeni bir proje oluşturabilirsiniz. Bunun için projenizi oluşturacağınız klasöre geçip komut satırından şu komutu vermelisiniz.
$ dub init projem
Bu komuttan sonra DUB sizin için projem
isimli bir klasör ve bu klasörün içine temel dosyalardan oluşan bir proje şablonu oluşturacaktır. Hiçbir değişiklik yapmadan oluşan bu projeyi çalıştırıp çıktısını ekranda görebilirsiniz. Bunun için aşağıdaki komutu vermelisiniz.
$ dub run
Bu komutu bulunduğunuz proje klasörü içinde çalıştırdığınızda önce projeniz derlenir ve herhangi bir hata yoksa proje çalıştırılır. Projeniz eğer bir konsol projesi ise çıktısını ekranda görebilirsiniz. Bizim bu projemiz bir konsol projesi olduğu için bu komuttan sonra ekranda çıktısını görebiliriz. Bendeki çıktı şu şekilde:
$ dub run Performing "debug" build using dmd for x64. projem ~master: building configuration "application"... Linking... Running ./projem Edit source/app.d to start your project.
Ayrıca komut satırına doğrudan dub
yazarsanız ön tanımlı olarak yine dub run
komutu işletilir. run
komutunun çıktısına baktığımızda ilk satırda DUB'un projemizi derlemek için kullandığı derleyici bilgisini görmekteyiz, ikinci satırda ise derleme ayarları için application
isimli bir ayar setini kullandığı görünüyor. Derleme işleminden herhangi bir hata alınmadığı için üçüncü satırda bağlama işlemine geçtiğini görüyoruz ve son satırda DUB oluşan programı çalıştırarak görevini tamamlıyor.
Bunun dışında bazen programı doğrudan çalıştırmak yerine bir derleme işlemi yaparak her şeyin yolunda olup olmadığını görmek isteyebilirsiniz. Bunun için DUB'a vermeniz gereken komut şöyle olmalıdır.
$ dub build
Bu komutu verdiğinizde DUB projenizi sadece derler ve eğer herhangi bir hata yoksa bağlama (Linking) işlemini yapmadan süreci sonlandırır.
Bu yazımda kısaca proje ve paket yönetim sistemlerinin tarihçesini ve D için geliştirilen DUB yönetim programını anlatmaya çalıştım. Bununla beraber DUB programının kurulumu ve temel kullanımı hakkında bazı bilgiler verdim. DUB hızlı, pratik ve kolay bir şekilde D projelerinizi yapılandırmayı ve ihtiyaç duyduğunuz kütüphaneleri kolay bir şekilde projenize eklemeyi vaat ediyor ve bana kalırsa bunu da gayet iyi yapıyor. Paket kurulumu ile ilgili örnekleri bir sonraki yazımda göstereceğim.
Bununla beraber projenizde DUB altyapısının kullanımı, hem ileride projenize yeni katılacak kişilerin kurulum ve ilk başlama maliyetlerini en aza indiriyor hem de projenizin farklı geliştiricilere dağıtılabilmesini ve yeniden yapılandırma sürecini çok kolaylaştırıyor. Kısaca deneyin, seveceğinizi düşünüyorum. ;). Yazı hakkındaki sorularınızı forum bölümünde sorabilirsiniz.
Zafer (zafercelenk@gmail.com).