Kaynak kodu düzenleyicisi

**Kaynak kodu düzenleyicisi**, bilgisayar programının kaynak kodunu düzenlemek için özel olarak tasarlanmış bir metin düzenleyici programıdır. Bağımsız bir uygulama olabileceği gibi bir tümleşik geliştirme ortamı (IDE) veya web tarayıcısı içine de yerleştirilebilir. Kaynak kodu düzenleyicileri temel bir programlama aracıdır, çünkü programcıların temel işi kaynak kodu yazmak ve düzenlemektir.

## Özellikleri

Kaynak kodu düzenleyicileri, sözdizimi vurgulama, girintileme, otomatik tamamlama ve ayraç eşleştirme işlevleri gibi kaynak kodunun yazılmasını basitleştirmek ve hızlandırmak için özel olarak tasarlanmış özelliklere sahiptir. Bu editörler ayrıca bir derleyici, yorumlayıcı, hata ayıklayıcı veya yazılım geliştirme süreci ile ilgili diğer programları çalıştırmak için uygun bir yol sağlarlar. Bu nedenle, Notepad gibi birçok metin düzenleyici kaynak kodunu düzenlemek için kullanılabilirken, kodun düzenlenmesini geliştirmiyor, otomatikleştirmiyor veya kolaylaştırmıyorsa, bunlar "kaynak kodu düzenleyicileri" değildir.

Yapı düzenleyiciler, ham metni düzenlemek yerine kodun yapısını, genellikle soyut sözdizimi ağacı'nı manipüle eden farklı bir kaynak kodu düzenleyici biçimidir. Bu durumda, sözdizimi vurgulama, doğrulama ve kod biçimlendirme gibi özellikler somut sözdizimi ağacı veya soyut sözdizimi ağacından kolayca ve verimli bir şekilde uygulanır, ancak düzenleme genellikle serbest biçimli metinden daha katıdır. Yapı düzenleyicileri ayrıca her dil için kapsamlı destek gerektirir ve bu nedenle yeni dillere genişletilmesi, temel desteğin yalnızca sözdizimi vurgulama veya girintilemeyi desteklemeyi gerektirdiği metin editörlerinden daha zordur. Bu nedenle, bazı IDE'ler benzer işlevsellik sağlasa da, katı yapı editörleri kaynak kodu düzenleme için popüler değildir.

Bir kaynak kodu düzenleyicisi, kod girilirken sözdizimini kontrol edebilir ve sözdizimi sorunları konusunda hemen uyarabilir. Birkaç kaynak kodu düzenleyicisi  gibi kaynak kodunu sıkıştırır, tipik olarak yaygın anahtar sözcükleri single-byte tokens'a dönüştürür, gereksiz boşlukları kaldırır ve sayıları ikili bir forma dönüştürür. Bu tür simgeleştirme düzenleyicileri daha sonra kaynak kodu görüntülerken sıkıştırmayı açar, muhtemelen güzel baskı (prettyprinting) tutarlı bir şekilde büyük harf ve boşluklarla yazdırır. Birkaç kaynak kodu düzenleyicisi her ikisini de yapar.

İlk olarak Microsoft'un Visual Studio Code programında kullanılan Language Server Protocol, kaynak kod düzenleyicilerinin LSP sunucusu olan herhangi bir dil hakkında sözdizimi bilgilerini okuyabilen bir LSP istemcisi uygulamasına olanak tanır. Bu, kaynak kod düzenleyicilerinin sözdizimi vurgulama, yeniden düzenleme ve referans bulma ile daha fazla dili kolayca desteklemesine olanak tanır.

Neovim ve Brackets gibi birçok kaynak kodu düzenleyicisi yerleşik bir LSP istemcisi eklerken, Emacs, vim ve Sublime Text gibi diğer düzenleyiciler ayrı bir eklenti aracılığıyla bir LSP İstemcisi desteğine sahiptir.

## Tarihçe
1985 yılında IBM'den Mike Cowlishaw, Oxford University Press'de geçici görev yaparken LEXX'i yarattı. LEXX canlı ayrıştırma kullanıyordu ve sözdizimi vurgulaması için renk ve yazı tipleri kullanıyordu. IBM'in LPEX'i (Live Parsing Extensible Editor)  LEXX'e dayanıyordu ve VM/CMS, OS/2, OS/400, Windows ve Java üzerinde çalışıyordu.

vim'in ilk halka açık sürümü 1991'de olmasına rağmen, sözdizimi vurgulama özelliği 1998'deki 5.0 sürümüne kadar tanıtılmamıştır.

2003 yılında Don Ho tarafından Windows için bir kaynak kodu düzenleyicisi olan Notepad++ piyasaya sürüldü. Amaç, java tabanlı kaynak kodu düzenleyicisi JEXT'e bir alternatif oluşturmaktı.

2015 yılında Microsoft, Visual Studio IDE'sine hafif ve platformlar arası bir alternatif olarak Visual Studio Code'u piyasaya sürdü. 2016 yılında Visual Studio Code, Language Server Protocol (Dil Sunucusu Protokolünü) kullanan Microsoft ürünü oldu.

## IDE'ler ile karşılaştırma
Kaynak kodu düzenleyicisi, Tümleşik Geliştirme Ortamının bir bileşenidir. Bağımsız bir kaynak kodu düzenleyicisinin aksine, bir IDE tipik olarak hata ayıklayıcı ve derleme araçlarını da içerir. Bağımsız kaynak kodu düzenleyicileri, IDE'lerin ihtiyaç duymadıkları özelliklerle şişirildiğine inanan bazı geliştiriciler tarafından IDE'lere tercih edilmektedir.

## Önemli örnekler

*Atom 
*Brackets
*Eclipse
*Emacs
*Gedit
*NetBeans
*Notepad++ (yalnızca Windows)
*SlickEdit
*Sublime Text
*TextMate (yalnızca macOS)
*UltraEdit
*vi/Vim
*Visual Studio Code

## Tartışma
Birçok kaynak kodu düzenleyicisi ve IDE, programlama topluluğu tarafından bazen neşeli bir şekilde "kutsal savaşlar" olarak adlandırılan, süregelen kullanıcı tartışmalarına dahil olmuştur. Önemli örnekler arasında "vi vs. Emacs" ve "Eclipse vs. NetBeans" sayılabilir. Bu tartışmalar internet kültürünün önemli bir parçasını oluşturmuştur ve genellikle herhangi bir yerde herhangi bir düzenleyiciden bahsedildiğinde başlarlar.

## Ayrıca bakınız
* Tümleşik geliştirme ortamı
* Tümleşik geliştirme ortamları karşılaştırması
* Çevrimiçi kaynak kodu oyun alanları karşılaştırması
* Metin düzenleyicileri karşılaştırması#Programlama özellikleri
* JavaScript tabanlı kaynak kodu düzenleyicileri karşılaştırması
* Hex düzenleyicileri karşılaştırması
* HTML düzenleyicileri karşılaştırması
* Metin düzenleyicileri listesi
* Düzenleyici savaşı

## Kaynakça