Kaynak Kodu Nedir? Yazılı Talimatlar Nasıl Çalışır?
Kaynak kodu, bir yazılımın insanlar tarafından okunabilen programlama diliyle yazılmış talimatlar bütünüdür. Bilgisayar bu metni doğrudan çalıştırmak yerine, kullanılan dile ve çalışma ortamına bağlı olarak derleyici, yorumlayıcı veya benzeri araçlarla işleyerek yürütülebilir talimatlara dönüştürür. Kaynak kodu; yazılımı oluşturma, değiştirme, hata ayıklama ve sürdürme süreçlerinin temel girdisidir.
Bu yazıda (6)
- ›Bir programın insan tarafından okunabilen katmanı: kaynak kodu
- ›Kaynak metinden çalışan programa giden yol
- ›Derleyici ve yorumlayıcıyı ayırırken dikkat edilmesi gereken nokta
- ›Aynı amaç, farklı diller: Python, JavaScript, Java ve C++
- ›Çözümlü örnekler: talimatı koda ve çalışma akışına dönüştürmek
- ›Kaynak kodunu değiştirilebilir ve sürdürülebilir yapan uygulamalar
Kaynak Kodu Nedir? Yazılı Talimatlar Nasıl Çalışır?
Telefon uygulamalarından internet sitelerine, bilgisayar oyunlarından akıllı ev cihazlarına kadar birçok dijital ürünün davranışı yazılım talimatlarıyla belirlenir. Bir düğmeye basıldığında yeni sayfanın açılması, girilen bilginin kontrol edilmesi veya ekranda bir görüntünün oluşturulması kendiliğinden gerçekleşmez; bu davranışlar kaynak kodunda tanımlanmış işlemlerle ilişkilidir.
Ancak kaynak kodunu yalnızca "bilgisayarın anlayacağı kod" şeklinde tanımlamak eksik olur. Kaynak kodu öncelikle yazılımcının okuyup düzenleyebileceği bir program metnidir. Bilgisayarın işlemcisi ise bu metni doğrudan değil, çalışma ortamının gerektirdiği daha düşük seviyeli talimatlar aracılığıyla yürütür. Bu nedenle kaynak kodu, yazılım fikri ile çalışan program arasındaki sürecin başlangıç noktasıdır; tek başına çalışan uygulamanın kendisiyle aynı şey değildir.
Bu rehberde kaynak kodunun ne olduğu, bir programın çalışmasına nasıl katıldığı, derleyici ve yorumlayıcı kavramlarının hangi koşullarda kullanıldığı, kaynak kodu ile makine kodu arasındaki fark ve yazılım geliştirmedeki rolü açıklanır.
Bir programın insan tarafından okunabilen katmanı: kaynak kodu
Kaynak kodu, bir bilgisayar programının belirli bir programlama dilinin sözdizimi ve kurallarına göre yazılmış, insanlar tarafından okunabilir biçimidir. Python, JavaScript, Java ve C++ gibi dillerde yazılan program metinleri buna örnek verilebilir. Kaynak kodu genellikle düz metin dosyalarında tutulur; dosyanın uzantısı ve içeriğinin nasıl işleneceği kullanılan dile ve geliştirme ortamına göre değişebilir.
Kaynak kodunun içinde yalnızca tek tek komutlar bulunmaz. Bir programın hangi veriyi alacağı, bu veriyi nasıl işleyeceği, hangi koşulda hangi sonucu üreteceği ve kullanıcıya ne göstereceği de kodla ifade edilir. Örneğin bir giriş ekranında kod; kullanıcı adının alınmasını, parolanın kontrol edilmesini, başarısız girişte uyarı gösterilmesini ve başarılı girişte başka bir ekrana geçilmesini tanımlayabilir.
Buradaki önemli ayrım şudur: Kaynak kodu programın fikrinin veya davranış kurallarının yazılı ifadesidir; uygulamanın ekranda çalışan son hâli değildir. Bir yazılımcı kaynak kodunu değiştirerek uygulamanın davranışını değiştirebilir, fakat değişikliğin kullanıcıya yansıması için kodun ilgili çalışma ortamında yeniden işlenmesi veya güncellenmesi gerekir.
Kaynak kodunu anlamak için "insan tarafından okunabilir" ifadesi, "günlük konuşma diliyle yazılmış" anlamına gelmez. Programlama dillerinin kendi sözdizimi vardır. Bir parantezin, noktalı virgülün, girintinin veya anahtar kelimenin yanlış kullanılması sözdizimi hatasına yol açabilir. Bu yüzden kaynak kodu insanlarca yazılabilse de belirli biçimsel kurallara uymak zorundadır.
Kaynak metinden çalışan programa giden yol
Bir kaynak kodunun çalışması, kullanılan dilin ve çalışma modelinin özelliklerine bağlıdır. Basitleştirilmiş zincir şöyle gösterilebilir: .
Bilgisayar sistemleri kaynak kodundaki yüksek seviyeli ifadeleri, işlemcinin yürütebileceği daha düşük seviyeli talimatlarla ilişkilendirir. Makine kodu, bilgisayarın doğrudan yürütebildiği talimatlar düzeyidir ve çoğu zaman 0 ve 1'lerle temsil edilen ikili gösterimle açıklanır. İkili gösterim, kaynak kodunun kendisi değildir; kaynak kodunun işlenmesinden sonra ortaya çıkabilecek daha düşük seviyeli bir gösterimdir.
Bu süreçte genellikle üç unsur birbirinden ayrılmalıdır:
- Kaynak kodu: Programcının yazdığı, okunabilir program metnidir.
- Çevirme veya işleme aracı: Kaynak kodunu analiz eden, dönüştüren ya da çalışma sırasında işleyen derleyici, yorumlayıcı veya benzeri araçtır.
- Yürütme ortamı: Ortaya çıkan talimatların çalıştığı işlemci, işletim sistemi veya ilgili çalışma platformudur.
Bu ayrım, "kaynak kodu 0 ve 1'lerden oluşur" şeklindeki hatayı önler. Kaynak kodu Python, JavaScript veya C++ sözdizimiyle yazılabilir; ikili kod ise bilgisayarın düşük seviyeli çalışma biçimini ifade eder. Kaynak kodu ile makine kodu arasında doğrudan kavramsal fark vardır: İlki yazılımı üretmek ve düzenlemek için insan merkezli bir gösterim, ikincisi işlemcinin yürütebildiği talimatlar düzeyidir.
Ayrıca bir programın çalışabilmesi için her durumda özgün kaynak kodunun kullanıcının bilgisayarında bulunması gerekmez. Kaynak kodu daha önce başka bir ortamda işlenmiş, derlenmiş veya paketlenmiş olabilir. Bu nedenle kaynak kodu, çalışan programın üretiminde gerekli olan temel girdilerden biri olsa da dağıtılan uygulama ile özdeş değildir.
Derleyici ve yorumlayıcıyı ayırırken dikkat edilmesi gereken nokta
Derleyici, kaynak kodunu hedeflenen çalışma ortamına uygun başka bir biçime dönüştüren araçtır. Bu dönüşüm çoğu zaman program çalıştırılmadan önce yapılır ve hata denetimi, ara çıktı üretimi veya çalıştırılabilir bir ürün oluşturma gibi aşamalar içerebilir. Sonuçta elde edilen çıktı, kullanılan dile ve platforma bağlıdır; her derleyici doğrudan tek bir .exe dosyası üretmez.
Yorumlayıcı ise kaynak kodunu çalışma sırasında okuyup işleyen araç olarak açıklanır. Bu modelde kodun anlamlandırılması ile yürütülme arasında daha doğrudan bir ilişki bulunabilir. Bununla birlikte gerçek programlama dillerinde bu ayrım her zaman iki tamamen saf kutu şeklinde uygulanmaz. Bir dilin uygulaması, kodu ara bir biçime dönüştürebilir, çalışma sırasında yorumlayabilir veya farklı teknikleri birlikte kullanabilir. Bu nedenle "C, C++ yalnızca derleyici kullanır; Python ve JavaScript yalnızca satır satır yorumlanır" gibi kesin cümleler öğretim açısından fazla basitleştiricidir.
Pratik olarak şu karar kuralı kullanılabilir: Bir programın çalışması için önce ayrı bir dönüştürme adımı gerekiyorsa derleme aşaması öne çıkar; kaynak kodu çalışma sırasında bir yorumlama aracı tarafından işleniyorsa yorumlama aşaması öne çıkar. Fakat bu sınıflandırma, dilin tüm uygulamalarını değil, belirli bir çalışma biçimini anlatır.
Bir hata da bu aşamaların anlamını karıştırmaktır. Sözdizimi hatası, kaynak kodunun dil kurallarına uymamasıdır. Çalışma zamanı hatası ise kod işlenip çalışmaya başladıktan sonra ortaya çıkabilir. Örneğin kaynak kodundaki bir yazım kuralı ihlali ile geçersiz bir veriye işlem uygulamak aynı tür hata değildir.
Aynı amaç, farklı diller: Python, JavaScript, Java ve C++
Kaynak kodu tek bir programlama diliyle sınırlı değildir. Dillerin sözdizimi, çalışma modeli ve güçlü oldukları kullanım alanları farklı olabilir; yine de hepsi bilgisayara işlemleri tanımlama amacına hizmet eder.
Python, okunabilir sözdizimiyle öne çıkan ve mevcut makalede web geliştirme, veri bilimi, yapay zekâ ve otomasyonla ilişkilendirilen bir dildir. Kaynak kodunun görece anlaşılır olması, programlama mantığını öğrenirken avantaj sağlayabilir; bu, her Python programının basit olduğu anlamına gelmez.
JavaScript, özellikle web tarayıcılarındaki etkileşimli davranışlarla ilişkilidir. Form kontrolü, dinamik içerik ve animasyon gibi davranışların bir bölümü JavaScript kaynak koduyla tanımlanabilir. Tarayıcıda çalıştırılma biçimi, kullanılan tarayıcı motoruna ve uygulama ortamına bağlıdır.
Java, büyük ölçekli kurumsal uygulamalar ve Android mobil uygulamaları gibi alanlarda kullanılan diller arasında verilmiştir. Java kaynak kodunun nasıl çalıştığı, doğrudan işlemciye çevrilmesinden farklı bir ara çalışma süreci de içerebilir; bu yüzden yalnızca "kaynak kodu doğrudan makine koduna çevrilir" demek her uygulamayı açıklamaz.
C++, oyun geliştirme, işletim sistemleri ve performansın önemli olduğu sistem programlama alanlarıyla ilişkilendirilmiştir. Bu alanlarda kaynak kodunun yalnızca doğru sonuç üretmesi değil, kaynakları verimli kullanması da önem kazanabilir.
Bir web sitesinde HTML, CSS ve JavaScript birlikte kullanılabilir; fakat bunların görevleri aynı değildir. HTML içerik yapısını, CSS görünümü, JavaScript ise etkileşimli davranışları tanımlamak için kullanılabilir. Dolayısıyla bir web sayfasının kaynak kodundan söz ederken tek bir dosya veya tek bir dil yerine, birlikte çalışan farklı kaynak türleri kastedilebilir.
Çözümlü örnekler: talimatı koda ve çalışma akışına dönüştürmek
Örnek 1 — Koşula bağlı mesaj
Verilenler: Bir program, kullanıcının girdiği puanı kontrol edecek. Puan 50 veya daha yüksekse "Başarılı", 50'nin altındaysa "Başarısız" mesajını gösterecek.
Çözüm adımları:
- Programın girdisi
puanadlı bir değer olsun. - Karar vermek için eşik değeri 50 olarak belirlenir.
- Kaynak kodunda koşul ifade edilir:
puan >= 50. - Koşul doğruysa ilk çıktı, yanlışsa ikinci çıktı üretilir.
- Örneğin
puan = 72verilirse72 >= 50karşılaştırması doğrudur ve program "Başarılı" sonucunu üretir. puan = 38verilirse karşılaştırma yanlış olur ve program "Başarısız" sonucunu üretir.
Sonuç: Kaynak kodu, yalnızca sonucu değil, sonuca hangi karşılaştırmayla ulaşıldığını da tanımlar. Burada 50 sayısı bir karar eşiğidir; puanın kendisini yorumlamak için bu eşikle karşılaştırma yapılması gerekir.
Örnek 2 — Kaynak kodu ile çalışan uygulama arasındaki fark
Verilenler: Bir bankacılık uygulamasında kullanıcı "Giriş Yap" düğmesine basıyor. Uygulamanın kaynak kodunda giriş bilgilerini alma, kontrol etme ve başarılı durumda hesap ekranını açma davranışları tanımlanmış olsun.
Çözüm adımları:
- Kullanıcı adı ve parola, arayüzdeki giriş alanlarından alınır.
- Kaynak kodunda bu değerlerin boş olup olmadığı veya sunucuya gönderilmesi gereken biçimde bulunup bulunmadığı kontrol edilebilir.
- Uygun bir istek ilgili çalışma ortamı ve ağ işlemleri aracılığıyla gönderilir.
- Dönen sonuca göre kaynak kodunda tanımlı iki davranıştan biri seçilir: hata mesajı göstermek veya hesap ekranına geçmek.
- Kullanıcının gördüğü düğme, bu işlemleri mümkün kılan arayüz unsurudur; işlemlerin kuralları ise kaynak kodunda yer alan talimatlarla belirlenir.
Sonuç: Düğmenin ekranda görünmesi ile düğmeye basıldığında işlem yapılması farklı şeylerdir. Kaynak kodu, kullanıcı eylemi ile programın vereceği tepki arasındaki mantığı kurar. Bu örnek, kaynak kodunun yalnızca hesaplama değil, arayüz davranışı ve veri akışı da tanımlayabildiğini gösterir.
Kaynak kodunu değiştirilebilir ve sürdürülebilir yapan uygulamalar
Kaynak kodunun değeri yalnızca ilk programı üretmekle sınırlı değildir. Yazılımcılar kodu inceleyerek hataları bulabilir, yeni özellikler ekleyebilir, performans iyileştirmeleri yapabilir ve farklı platformlara uyarlama çalışmaları yürütebilir. Bir uygulamanın sürüm güncellemeleri, kaynak kodunda yapılan değişikliklerin uygun biçimde hazırlanıp kullanıcılara ulaştırılmasıyla ilişkilidir.
Birden fazla kişinin aynı projede çalışabilmesi için kaynak kodunun okunabilir olması önemlidir. Anlamlı adlandırma, tutarlı biçimlendirme ve işlevlerin düzenli ayrılması, kodun başka bir geliştirici tarafından anlaşılmasını kolaylaştırır. Bu özellikler yalnızca estetik değildir; hata ayıklama ve bakım süresini de etkileyebilir.
Kaynak kodunun düzenli olarak yedeklenmesi de geliştirme sürecinin bir parçasıdır. Yedek, kodun bir kopyasını korur; ancak tek başına sürüm yönetimi veya yapılan değişikliklerin kim tarafından ne zaman gerçekleştirildiği bilgisinin yerine geçmez. Bu kavramlar birbirine yakın görünse de aynı işlemi ifade etmez.
Açık kaynak kodlu yazılımlarda kaynak kodu, lisansın izin verdiği sınırlar içinde incelenebilir, değiştirilebilir ve dağıtılabilir. Kaynak kodunun erişilebilir olması inceleme ve topluluk katkısı için fırsat yaratır; fakat kodun açık olması, içindeki her davranışın otomatik olarak hatasız veya güvenli olduğu anlamına gelmez. Güvenlik değerlendirmesi kod incelemesi, testler, güncel bağımlılıklar ve uygulama ortamı gibi başka unsurları da gerektirebilir.
Ekrandaki görüntü ve etkileşimler de kaynak koduyla ilişkilidir. Örneğin bir mobil uygulamanın farklı cihaz ve ekran çözünürlüklerinde çalışması, platforma ve tasarıma uygun kaynak kodu düzenlemeleri gerektirebilir. Ekrandaki her pikselin bağımsız olarak tek bir kaynak kodu satırıyla çizildiği düşüncesi ise aşırı basitleştirmedir; görüntü üretimi, kullanılan arayüz ve grafik sistemleriyle birlikte değerlendirilir.
Akıllı telefondaki bankacılık uygulamasında "Giriş Yap" düğmesine bastığınızı düşünün. Kaynak kodu, düğmenin bu dokunuşu algılamasını, kullanıcı adı ve parolayı almasını, gerekli kontrolleri yapmasını, sunucudan gelen sonuca göre hata mesajı veya hesap ekranı göstermesini tanımlar. Ekrandaki düğme yalnızca arayüzde görünen bir öğe değildir; ona bağlanan kaynak kodu davranışı tanımlamadıkça dokunma eylemi tek başına giriş işlemini başlatmaz. Bu örnekte kaynak kodu, kullanıcı eylemi, veri kontrolü ve ekrana verilen yanıt arasındaki ilişkiyi kurar.
TYT/AYT bilişim ve temel bilgisayar sorularında şu ayrımlara dikkat edin: Kaynak kodu insan tarafından okunabilir program metnidir; makine kodu bilgisayarın yürütebildiği düşük seviyeli talimatları ifade eder. Derleyici kaynak kodunu önceden dönüştüren araç olarak, yorumlayıcı ise kodu çalışma sırasında işleyen araç olarak sorulabilir. "Kaynak kodu yoksa program çalışamaz" ifadesi genelleme içerir; kullanıcıya dağıtılan program daha önce işlenmiş bir çıktı olabilir. Ayrıca kaynak kodu ile ikili kod aynı şey değildir: ikili gösterim çoğunlukla 0 ve 1'lerle anlatılan makine düzeyini belirtirken kaynak kodu Python, JavaScript veya C++ gibi dillerin kurallarına göre yazılır.
Sık sorulan sorular
Kaynak kodu ile programın çalışan hâli aynı mıdır?
Hayır. Kaynak kodu, yazılımcının oluşturduğu okunabilir program metnidir. Çalışan uygulama ise bu kodun kullanılan çalışma ortamına göre işlenmesiyle ortaya çıkan veya bu kodla birlikte yürütülen üründür.
Kaynak kodu her zaman 0 ve 1'lerden mi oluşur?
Hayır. Kaynak kodu programlama dillerinin sözdizimiyle yazılır. 0 ve 1'lerle açıklanan ikili veya makine düzeyi talimatlar, kaynak kodundan farklı bir düzeyi ifade eder.
Derleyici kaynak kodunu her zaman `.exe` dosyasına mı çevirir?
Hayır. Çıktının biçimi kullanılan dil, derleyici, işletim sistemi ve hedef platforma bağlıdır. .exe yalnızca belirli çalışma ortamlarında kullanılan olası çıktı biçimlerinden biridir.
Yorumlayıcı programı gerçekten satır satır mı çalıştırır?
Yorumlayıcı kavramı, kaynak kodunun çalışma sırasında işlenmesini anlatır; ancak gerçek uygulamalar ara biçimler ve farklı optimizasyon teknikleri kullanabilir. Bu nedenle satır satır ifadesi temel öğretim modelidir, her uygulamanın tüm iç işleyişi değildir.
Kaynak kodu olmadan bir program çalışabilir mi?
Özgün kaynak kodu kullanıcının cihazında bulunmadan çalışan bir program olabilir; çünkü kod daha önce işlenmiş ve dağıtılabilir bir çıktıya dönüştürülmüş olabilir. Ancak çalışan yazılımın üretilmesi ve değiştirilmesi açısından kaynak kodu önemli girdidir.
Açık kaynak kodu ne demektir?
Açık kaynak, kaynak kodunun lisans koşulları çerçevesinde erişilebilir, incelenebilir, değiştirilebilir veya dağıtılabilir olmasıdır. Erişilebilirlik, yazılımın otomatik olarak hatasız ya da güvenli olduğunu garanti etmez.
- •Kaynak Kodu Nedir ve Neden Önemlidir?natro.com
- •Türk Hukukunda Kaynak Kodları Nasıl Korunur?grc-legal.com
- •Kaynak kod - Vikipedien.wikipedia.org