Basit Geliştirme Ortamı (Editör + Derleyici)

Açıklama

Bu kısımda önsözde kısaca bahsettiğimiz problemlerin çıkış noktaları ile C/C++ için inşa sistemleri ve paket yöneticilerine değineceğiz.

Editör + Derleyici Kullanımı

Bir çok yazılım dilinde olduğu gibi programlarımızı IDE’ler olmadan da geliştirme imkanımız bulunmaktadır. IDE’ler güçlü bir geliştirme imkanı sunmasına rağmen yeni başlayanlar için karmaşık bir hal alabilmektedir. Aynı zamanda kaynak tüketimi editörlere göre daha yüksektir. Bu bölümde C yazılımları geliştirebileceğiniz en temel seviyeli editör olan Vim’e değinip, programlarınızı nasıl manuel olarak derleyebileceğinizden bahsedeceğiz.

Bu başlık altında VIM editörü hakkında anlatılacak bilgiler MIT | The Missing Semester of Your CS Education TR’den alınmıştır. VIM dahil diğer dersleri kaynak linkinden inceleyebilirsiniz.

VIM

Vim’in Felsefesi

Programlama yaparken zamanınızın çoğunu yazmaya değil okumaya/düzenlemeye harcarsınız. Bu yüzden Vim farklı modlara sahip bir editördür: metin eklemek veya metin işlemek için farklı modlara sahiptir. Vim programlanabilir (Vimscript ve Python gibi diğer diller ile) ve Vim’in arayüzünün kendisi bir programlama dilidir. Vim, fare kullanımından kaçınır, çünkü çok yavaştır; Vim, çok fazla hareket gerektirdiği için ok tuşlarını kullanmaktan bile kaçınır.

Sonuç olarak Vim, düşündüğünüz kadar hızlı olan bir editördür.

Modal Düzenleme Vim’in tasarımı, uzun metin akışları yazmak yerine, çok sayıda programcının zamanını; okumak, gezinmek ve küçük düzenlemeler yapmak için harcandığı fikrine dayanır. Bu nedenle Vim’in birden fazla çalışma modu vardır.

  • Normal: dosyanın içerisinde gezinmek ve değişiklikler yapmak için,
  • Insert: metin eklemek için,
  • Replace: metni değiştirmek için,
  • Visual (Plain, Line or Block): metin bloklarını seçmek için,
  • Command-line: bir komut çalıştırmak için

Klayve tuşlarının farklı çalışma modlarında farklı anlamları vardır. Örnek olarak, Insert modunda iken x harfine basarsak o harfi ekleyecektir ama Normal modda iken x harfi imlecin altındaki karakteri siler ve Visual modda ise seçili olanı siler.

Varsayılan ayarlarda Vim, o anki çalışma modunu sol altta gösterir. Başlangıç modu/varsayılan mod Normal moddur. Genellikle zamanının çoğunu Normal mod ve Insert mod arasında geçireceksin. Herhangi bir moddan Normal moda geri dönmek için <ESC> tuşuna basarak modları değiştirebilirsiniz. Normal moddan i ile Insert moduna, R ile Replace moduna, v ile Visual moduna, V ile Visual Line moduna, <C-v> ile Visual Block moduna, : ile Command-line moduna girebilirsin.

Temel Öğeler

Metin Ekleme

Normal modda iken Insert moduna girmek için i tuşuna basın. Şimdi Vim, Normal moda geri dönmek için <ESC> tuşuna basana kadar diğer metin editörleri gibi çalışır. Bu bilgi ve yukarıda açıklanan temel bilgilerle birlikte, Vim’i kullanarak dosyaları düzenlemeye başlamak için ihtiyacınız olan tek şeydir (eğer bütün zamanınızı Insert Modundan düzenleme için harcıyorsanız çok da verimli değil).

Command-line

Command moduna Normal modda iken : yazarak giriş yapabiliriz. : Tuşuna bastığınızda bilgisayarınızın imleci ekranın altındaki komut satırına atlayacaktır. Bu mod, dosyaları açma, kaydetme, kapatma ve Vim’den çıkış yapma gibi birçok işleve sahiptir.

  • :q çıkış (pencereyi kapatır)
  • :w kayıt (“yaz”)
  • :wq kaydet ve çık
  • :e {dosyanın adı} düzenlemek için dosyayı açar
  • :ls açık bufferları gösterir
  • :help {konu} yardımı açar
    • :help :w :w komutu için yardımı açar
    • :help w w tuşu için yardımı açar

Dersin devamına ve konunun detayına Missing Semester TR kaynağından devam edebilirsiniz. Bunun yanı sıra eğer pratik yapmak istiyorsanız terminale vimtutor yazarak Vim ile birlikte gelen eğitimi tamamlayabilirsiniz.

VIM’de C Programı Geliştirme

vim merhaba.c ile merhaba isimli C dosyamızı açıp i harfi ile Insert moduna geçerek geleneksel uygulamamızı yazmaya başlayabiliriz.

#include <stdio.h>
int main()
{
  printf("Merhaba Mühendis Köyü!");
  return 0;
}

Kodu tamamladıktan sonra <ESC> tuşu ile komut moduna geçip :wq yazarak kaydedip çıkış yapıyoruz. Yazdığımız kodu gcc ile derlemek için (clang kullanıyorsanız gcc yerine clang yazmanız yeterlidir):

gcc merhaba.c //derlenmiş kodu a.out olarak çıktı verir.

gcc merhaba.c -o merhaba //derlenmiş kodu merhaba olarak çıktı verir.

Derlenen kodu çalıştırmak için ./a.out veya ./merhaba komutunu çalıştırmanız yeterlidir.

Editör kullanarak yazdığımız kodlarda, programımızı derlerken dahil ettiğimiz kütüphaneleri manuel olarak bağlantılamamız (kullandığımız kütüphaneyi derleyiciye belirtmemiz) gerekmektedir. Buna örnek bir kod örneği vermemiz gerekirse:

vim us_alma.c

#include <stdio.h>
#include <math.h>

int main()
{
    int taban, us; 
  
    printf("Taban sayısını giriniz: ");
    scanf("%i", &taban);
  
    printf("Üs sayısını giriniz: ");
    scanf("%i", &us);

    printf("%1.f\n", pow((double)taban,(double)us));

    return 0;
}

Yazdığımız kodu kaydedip kapattıktan sonra derleme işlemini aşağıdaki şekilde gerçekleştirirseniz derleyici bilinmeyen referans hatası verecektir.

gcc us_alma.c -o us_alma

Math kütüphanesini dahil ettiğimiz kodumuzu belirtmiş olduğumuz şekilde ekli kütüphaneye bağlantı vererek derlemek için derleme komutuna -lm komutunu dahil etmemiz gerekmektedir. -l komutu bağlantılama (linkleme) komutu olup kendisinden sonra gelen argümandaki kütüphaneyi derleme işlemine dahil eder.

gcc us_alma.c -o us_alma -lm

Bu şekilde kodumuz uygun bir biçimde derlenecektir. ./us_alma yazarak kodumuzu çalıştırabiliriz.

Vim ile temel seviyede C kodu yazılması ve derlenmesi bu şekilde özetlenebilir. Vim veya başka bir editör (VS Code, SublimeText vb.) kullanarak yazdığımız programları manuel olarak derlememiz gerekmektedir. Programlarımızın kapsamı genişledikçe bağlantılamamız gereken kütüphane sayısı artmakta ve bunu sürekli olarak yapmak zor bir hal almaktadır. Bu durumları hızlandırmak için ise makefile dediğimiz linkleme işlemlerini bizim için gerçekleştiren programların yazılmasına bu dokümanın ileriki bölümlerinde değineceğiz.