Her Şeyin Editörü: EMACS

Emacs’e her şeyin editörü dememin bir sebebi var. Kendisi evet nerdeyse her şeyin editörüdür. Emacs 1976 yılında GNU Projesinin yaratıcısı Richard Stallman ve Guy L. Steele, Jr. tarafından yazılmış bir metin editörü olarak başladı. Zamanla editöre farklı özellikler kazandırıldı, ve emacs dev bir projeye dönüştü.

İlk olarak 1970’lerde pek çok farklı metin düzenleme makroları kullanılıyordu. Bu makroları kullanan ufak tefek editörler bulunmakta idi. Zamanla bu makrolara ek olarak görüntü bazlı dosya işlemeye imkan sağlayan bir arayüze sahip metin editörleri geliştirilmeye başlandı. 1972 yılında CarlMikkelsen’ın yazdığı Teco editörü ve bu makroları kullanarak Unix üzerinde çalışması için Emacs (Editor’s Macros) editörü üretildi.

Emacs ilk olarak gerçek bir metin editörü olarak ortaya çıktı. Emacs içerik modları ve yardımcı tamamlama özelliği ile normal bir text dosyasından, programlama dillerine kadar geniş skalada pek çok kodu inceleme ve oluşturma imkanı sunmaktadır. Gelişmiş sözdizimi vurgulayıcısı ve otomatik tamamlayıcısı sayesinde kod yazmayı kolaylaştırmaktadır. Ayrıca git tarzı diff karşılaştırıcısı bulunmakta ve iki dosyanın arasındaki farklılıkları görüntülemek Emacs’i zamanının ötesinde bir metin editörü yapmıştır. Git ve SVN gibi VCS sistemlerine de ilham kaynağı olmuştur.

1978’de Bernard Greenberg, Emacs içerisine LISP tarzı programlamaya imkan sağlayan bir betik dili eklendi. Emacs LISP olarak adlandırılan bu dil Emacs editörünün genişletilmesini sağladı. Bu tam manası ile bir LISP dili değildi ve LISP dilinin bazı özelliklerinden yoksundur. Sadece editör için bazı makrolar oluşturmaya imkan sağlaması yeterli olan bir LISP dili yazıldı.

1981’de Stallman, MIT AI Lab’ın dahili bir belgesi olarak Emacs hakkında bir rapor yazdı. Unix üzerinde çalışan ilk Emacs’lerden birisi olan Gosling Emacs , 1981 yılında James Gosling tarafından, Richard Stallman ile birlikte yeni, geniş çapta taşınabilir bir Emacs için yayınlamış olan bu plana dayanarak yazılmıştı. Kısa süre sonra Unix’te fiili Emacs editörü olarak Gosling Emacs’ın yerini aldı.

1984’te Stallman, Gosling ile önceki ortak planlamaya dayalı başka bir Emacs uygulaması yazmaya başladı ve yeni ortaya çıkan GNU projesinin ilk programı olan GnuEmacs adını verdi. Bu program Emacs’i C üzerinde uygulayan bir metin editörü olmakla beraber yine Unix üzerinde çalışması için çıkarıldı. GnuEmacs’i geliştirmesi ile beraber Stallman aslında Gnu’nun gidişatını da belirlemiş oldu. Çünkü bu Stallman’ı ve GnuEmacs geliştiricilerini, GnuEmacs’i derlemek için bir C derleyicisi, bu derlenmiş C kodlarını çalıştırmak için bir LibC, Emacs dışında sistem üzerinde işlem yapmaya imkan sağlayan kabuk ortamı gibi farklı programları da düşünmeye ve çıkartmaya itti.

GnuEmacs, zaman içerisinde farklı farklı çatallara yuva oldu. LISP dili ile pek çok özellik Emacs’e eklendi. X11 desteği eklendi, kimi zaman kimileri tarafından GnuEmacs sadeleştirilmeye çalışıldı.

Günün sonunda Emacs dünyanın ilk metin editörü oldu diyebilirim.

Emacs’i güçlü kılan ve onu sıradan bir metin editörü olmaktan ayıştıran en önemli özelliği Emacs Lisp adı verilen ve Lisp programlama dili kullanılarak geliştirilen eklentilerdir. Bu eklentileri kullanarak Emacs yazılımınızı istediğiniz gibi kişiselleştirebiliriz.

Bundan sonra söyleyeceğim her özellik bu LISP dilinde yazılmış eklentiler sayesinde mümkün olmuştur. Kimileri çeşitli eklentilerle Emacs’i bir proje planlama yardımcısı ve Git/SVN/Mercurial işlemcisine dönüştürdü; kimileri ajanda, mail istemcisi veya haber okuma servisi(RSS feed) yazarak ofis uygulaması ve planlayıcıya dönüştürdü. Kimileri sözdizim kontrolcüsü debugger arayüzü ve araç kiti kısayolları ile geliştirme ortamına dönüştürdü. Hatta kimileri Emacs’i web tarayıcıya bile dönüştürdü.

Emacs’in öne çıkan bir başka özelliği, metin ve kodları bloklar halinde otomatik olarak ayrıştırarak okunaklılığı arttırmasıdır. Unicode karakter desteği sayesinde Emacs ile herhangi bir dilde içerik hazırlanabileceği gibi hazırlanan dokümantasyonlar kolayca dışarıya aktarılabilir. Hatta bazı makrolar ile hazırlanan dokümanların otomatik olarak çevirmesi bile yapılabilir.

Emacs’te tek sınır hayal gücü şeklinde iddia edilmekte. Kişisel olarak da aynısını düşünmekteyim. Bunun sebebi ise şu, Emacs ile çalışırken yeni bir eklenti eklemek veya bir özelliği eklenti olarak yazmak çok kolaydır. Nitekim arayıp da bulamayacağınız kadar çok sayıda Emacs eklentisi, özellik geliştirmesi bulunmakta.

Bu yazının sonuna gelirken Emacs konusunda bir yazı yazmamın sebebibi de açıklamak istiyorum. Emacs gibi Vim gibi bu editörler önemlidir çünkü bu editörler yazılım dünyasının kubbesi gibidir. Çünkü pek çok proje bunları kullanarak geliştirildiği gibi pek çok proje sadece bunları daha yararlı hale getirmek için geliştirildi. Her ne kadara yeni yetişen geliştiriciler hızlı gelişen yazılım dünyası sebebi ile bunları pek göz önünde tutmasa da hatta umursamayıp kaldırıp atsa da metin editörler belki de yazılım dünyası için “Herşeyin Teorisinin Bir Çözümü” olarak görülebilir.

Harici Bağlantılar