Bu çalışma materyali, dersin sesli transkripti ve kopyalanıp yapıştırılmış metin kaynaklarından derlenmiştir.
📚 Programlama Temelleri ve Dilleri Çalışma Rehberi
Bu çalışma rehberi, programlamanın temel kavramlarını, programlama dillerinin işleyişini, geliştirme süreçlerini ve günümüzde kullanılan popüler dilleri kapsamaktadır. Amacımız, programlama dünyasına adım atmak isteyenlere sağlam bir temel sunmak ve karmaşık görünen konuları anlaşılır bir dille açıklamaktır.
1. Programlamaya Giriş ve Temel Kavramlar
Programlama, bilgisayar sistemlerine belirli görevleri yerine getirmeleri için talimatlar verme sürecidir. Bu süreç, komutların anlaşılmasından karmaşık yazılımların geliştirilmesine kadar geniş bir yelpazeyi kapsar.
1.1. Komut (Command)
📚 Tanım: Komutlar, ikilik sayı sistemindeki 0 ve 1'lerin farklı dizilişleriyle oluşan ve donanım birimlerinin birbirleriyle iletişim kurmasını sağlayan temel talimatlardır. Her işlemcinin kendine özgü komut kümeleri bulunur. ✅ Yapısı: Bir komut genellikle işlem kodu (Opcode) ve işlenen referansları (Operand Reference) gibi bileşenlerden oluşur. İşlem kodu komutun ne yapacağını, işlenen referansları ise hangi veriler üzerinde çalışacağını belirtir. ⚠️ Önemli Not: Farklı işlemci üreticilerinin (Intel, AMD, Cyrix, Motorola) mimarileri ve komut kümeleri aynı olmayabilir. Bu durum, yazılan programların farklı sistemlerde farklı etkiler yaratabileceği anlamına gelir.
1.2. Program ve Programcı
📚 Tanım: Program, belirli bir işlemi bilgisayar veya uygun yapılarda yerine getirebilmek adına kullanılan komutlar dizisidir. Programlama ise bu komutların belirlenmesi ve istenilen biçimde kullanılması sürecidir. 💡 Programcılar: Program yazan kişilere programcı denir. Programcılar, son kullanıcıya yönelik masaüstü, web, mobil ve veritabanı uygulamaları geliştirirken farklı uzmanlık alanlarında çalışabilirler:
- Arka-uç (Back-End) Programcı: Son kullanıcının görmediği taraftaki mimariyi oluşturanlardır.
- Ön-uç (Front-End) Programcı: Grafiksel tasarım geliştirenlerdir.
- Uygulama Türleri: Programcılar genellikle Masaüstü (Winrar, GIMP), Web (ankara.edu.tr), Mobil (Whatsapp, PUBG) ve Veritabanı (Oracle, MySQL) uygulamaları geliştirirler.
1.3. Kaynak Kod (Source Code) ve Amaç Kod (Object Code)
📚 Kaynak Kod: Programcının okuyabildiği ve üzerinde çalışabildiği, bir programlama diliyle yazılan insan dostu kodlardır. İşlemcinin anlayacağı makine diline dönüştürülmeden önceki halidir.
✅ Özellikleri:
* Evrensel bir dilde tanımlanmalıdır ki diğer programcılar tarafından incelenebilsin.
* Yeni özellik ekleme, sorun saptama ve farklı programlar geliştirmeye yardımcı olur.
* Örnek uzantılar: C++ için .cpp, C# için .cs, Java için .java, Python için .py.
⚠️ Dikkat: Kaynak kodlar bir bilgisayar üzerinde doğrudan çalıştırılamazlar; bunun için derleme veya yorumlama işlemine ihtiyaç duyulur.
📚 Amaç Kod: Kaynak kodun, işlemcinin komut kümeleri kullanılarak makine diline çevrilmiş halidir. Bu kodlar genellikle .obj uzantılı dosyalarda tutulur. Amaç kod, çalıştırılabilir bir dosya oluşturmak için birleştirme işleminde kullanılır.
2. Programlama Sürecinin Araçları
Kaynak kodu makine diline dönüştürme işleminde derleyiciler ve yorumlayıcılar kullanılır.
2.1. Derleyiciler (Compilers)
📚 Tanım: Herhangi bir programlama diliyle yazılmış kaynak kodu, makine diline yani amaç programa dönüştüren özel programlardır.
✅ İşleyiş: Kaynak kodun tamamını tek seferde derler ve işletim sistemi tarafından çalıştırılabilen yerel (derlenmiş) bir kod veya yürütülebilir (.exe uzantılı) bir dosya meydana getirir.
💡 Örnekler: Java, C, C++, COBOL, Fortran gibi diller derleyici kullanır. Hem çevrimiçi hem de çevrimdışı derleyiciler mevcuttur.
2.2. Yorumlayıcılar (Interpreters)
📚 Tanım: Evrensel dil kullanılarak oluşturulan kaynak kodu ilk satırdan başlayarak satır satır makine diline çeviren ve yazılan kodun çalıştırılmasında etkili olan araçlardır. ✅ İşleyiş: Kodu satır satır okur, dönüştürür ve yürütür. Bir hata oluştuğunda programın o noktada durmasına neden olur ve sonraki satırlar çalıştırılmaz. 💡 Örnekler: Perl, PHP, Python, Ruby, JavaScript gibi diller yorumlayıcı kullanır. Tarayıcılar (Mozilla Firefox, Google Chrome) da aynı zamanda birer yorumlayıcıdır.
2.3. Derleyici ve Yorumlayıcı Arasındaki Farklar (Detaylı İnceleme)
Derleyici ve yorumlayıcı, kaynak kodu makine diline çevirme yöntemleri açısından önemli farklılıklar gösterir:
| Özellik | Derleyici (Compiler) | Yorumlayıcı (Interpreter) |
| :---------------- | :----------------------------------------------------- | :------------------------------------------------------ |
| Çevirme Şekli | Kaynak kodun tamamını tek seferde çevirir. | Kaynak kodu satır satır çevirir ve yürütür. |
| Hız | Genellikle daha hızlıdır, çünkü tüm programı bir kerede işler. | Genellikle daha yavaştır, her satırı ayrı ayrı işler. |
| Hata Yönetimi | Tüm hataları derleme aşamasında raporlar. Hatalı kısımlar doğru kodları etkilemez. | Hatalı satırda durur ve programın geri kalanını çalıştırmaz. |
| Çıktı | Çalıştırılabilir (executable) bir dosya (.exe, .jar vb.) üretir. | Çalıştırılabilir bir dosya üretmez, doğrudan kodu yürütür. |
| Bellek Kullanımı | Ara nesne kodu üretmek için daha fazla bellek gerektirebilir. | Belleği daha verimli kullanma eğilimindedir. |
| Kullanım Alanı | Sistem programlama, oyun geliştirme, işletim sistemleri. | Web uygulamaları, betik dilleri, küçük programlar. |
| Örnek Diller | C, C++, Java, C# | Python, PHP, JavaScript, Ruby |
3. Program Geliştirme Aşamaları
Bir programın yazılmasından çalıştırılmasına kadar geçen süreç çeşitli aşamalardan oluşur:
- Düzenleme (Editing) 📝: Kodun yazıldığı ve değiştirildiği aşamadır. Tümleşik Geliştirme Ortamları (IDE - Integrated Development Environment) bu süreçte kodlama, derleme ve hata tespiti gibi birçok kolaylık sağlar. Örnek IDE'ler: Visual Studio, Visual Studio Code, Notepad++, Sublime Text.
- Derleme (Compiling) ⚙️: Kaynak kodun, kullanılan programlama dilinin ön işlemcisi ve derleyici tarafından makine diline ve ardından işletim sistemine uygun amaç koda dönüştürülmesidir.
- Birleştirme (Linking) 🔗: Amaç kodun, son kullanıcının kullanabileceği yürütülebilir bir program oluşturması adına gerekli destekleyici kodlar (kütüphaneler) ile birleştirilmesi işlemidir. Bu adımda çalıştırılabilir bir program dosyası oluşur.
- Yükleme (Loading) 📥: Programcı tarafından yazılan kodun yürütülmesinde çalışılan sistemin birincil belleği (RAM) kullanılır. İşletim sistemleri, yükleyici adı verilen bir bileşen aracılığıyla programı ve gerekli kütüphane dosyalarını depolama biriminden okuyarak birincil belleğe yükler.
- Çalıştırma (Executing) ▶️: Derlenen/yorumlanan kaynak koddan üretilen makine dili programı veya makine dili komutunun işlemci aracılığıyla bellekten alınarak yürütülmesi işlemidir.
3.1. Hata Ayıklama (Debugging) (Detaylı İnceleme)
Hata ayıklama, programdaki hataları tespit etme ve düzeltme sürecidir. Üç ana hata türü vardır:
-
Sözdizimi Hatası (Syntax Error) 🚫:
- Tanım: Dilbilgisi hatası gibidir. Programlama dilinin belli yazım kurallarına uyulmamasından kaynaklanır (noktalama işaretinin unutulması, kelimelerin yanlış veya eksik yazılması).
- Tespit: Program derlenmeden önce bilgisayar tarafından otomatik olarak algılanabilir. IDE'ler bu hataları genellikle anında gösterir.
- Örnek:
print("Hello World')yerineprint("Hello World")yazılması gereken yerde tek tırnak kullanılması.
-
Mantık Hatası (Logic Error) 🧠:
- Tanım: Programın doğru çalışmasına rağmen istenen sonucu üretmemesi durumudur. Bilgisayar çökmez veya hata mesajı vermez, ancak çıktı yanlıştır. Sadece programcı tarafından tespit edilebilir.
- Tespit: Programın çıktılarının beklenenle karşılaştırılması ve kodun adım adım incelenmesiyle bulunur.
- Örnek: Matematiksel bir işlemde bir değeri 10 ile çarpmak yerine, yanlışlıkla 100 ile çarpmak. Program çalışır, sonuç verir ama sonuç yanlıştır.
-
Çalışma Zamanı Hatası (Runtime Error) 💥:
- Tanım: Program çalışırken bazı geçersiz komutlar yürütüldüğünde programın çökmesi veya bir hata ekranı açılması durumudur.
- Tespit: Programın çalışması sırasında ortaya çıkar. Bilgisayarların bu hataları önceden algılaması imkânsızdır, genellikle test aşamasında keşfedilir.
- Örnek: Haftanın her günü için 7 elemanlı bir dizide, programın olmayan 8. konumdaki içeriğe erişmeye çalışması. Bu, geçersiz bir komut olduğundan program çöker.
4. Programlama Dilleri
Programlama dilleri, bilgisayarlara talimat sağlamak amacıyla geliştirilmiş, kendine özgü kurallara sahip yazılımlardır.
4.1. Programlama Dillerinin Hedefleri
Programlama dillerinin temel hedefleri şunlardır:
- Basitlik ve Okunabilirlik ✅: Yazılan programların ortalama bir programcı tarafından kolayca anlaşılabilir ve okunabilir olması.
- Güvenirlik ve Destek 🛡️: Yazılımın farklı platformlarda tutarlı çalışması, aynı girdi verileriyle aynı sonuca ulaşması ve test süreçlerinden başarıyla geçmesi.
- Sürdürülebilirlik ♻️: Programların değişen koşullara uyum sağlayabilmesi, parametrik bir yapıya sahip olması ve uzun ömürlü olması.
- Verimlilik 📈: Programların sistem kaynaklarını optimal kullanarak hızlı ve etkin çalışması, bellek gereksinimi ve güvenlik gibi konulara dikkat edilmesi.
4.2. Popüler Programlama Dilleri (Detaylı İnceleme)
Günümüzde popüler olarak kullanılan bazı programlama dilleri ve kullanım alanları:
- Python 🐍: Basit sözdizimi ve geniş kütüphanesiyle yapay zeka, finansal hizmetler, veri bilimi alanlarında yaygın kullanılır. YouTube, Google, Instagram gibi platformlar Python üzerine kuruludur.
- JavaScript 🌐: Web ve mobil uygulama geliştirmede tercih edilir. Tarayıcı tabanlı uygulamalara olanak tanır. Node.js, Vue.js, AngularJS, React gibi çerçevelerle işlevselliği artırılmıştır.
- C ⚙️: 1972'de geliştirilen ilk programlama dillerinden biridir. Gömülü sistemler, tıbbi cihazlar gibi donanımları programlamada kullanılır ve birçok modern dilin temelini oluşturur.
- C++ 🎮: İşletim sistemleri, matematiksel simülasyonlar ve bilgisayar oyunları için tercih edilir. Zengin bir kütüphanesi vardır ve çoklu cihazları destekler.
- Java ☕: 1991'de geliştirilmiştir. Kurumsal uygulamalar ve Android mobil işletim sistemi için yaygın olarak kullanılır. Platformdan bağımsız çalışabilir.
- C# 💻: Microsoft tarafından 2002'de geliştirilmiştir. Windows, Android, iOS, Linux, macOS gibi birçok platformda konsol, masaüstü, web, oyun ve IoT projelerinde kullanılır.
- Go 🚀: Google tarafından geliştirilmiştir. Dağıtık sistemlerde ve ağ iletişiminde etkindir. Basit sözdizimi, bellek güvenliği ve yönetimi konusunda güçlüdür.
- R 📊: İstatistikçilerin bir numaralı dilidir. Büyük küme veri analizleri ve makine öğrenimi uygulamalarında sıklıkla tercih edilir.
- Swift 🍎: Apple'ın 2014'te başlattığı bir projedir. iOS ve macOS uygulamaları geliştirmek için kullanılır. Nesneye yönelik bir dildir.
- PHP 🐘: 1995'te geliştirilmiştir. Facebook, WordPress ve Wikipedia gibi içerik odaklı web sitelerinin yazılımında kullanılan dinamik bir dildir.
4.3. Programlama Dillerinin Seviyeleri (Detaylı İnceleme)
Programlama dilleri, donanıma olan yakınlıklarına ve kullanıcı dostu olup olmamalarına göre seviyelere ayrılır:
-
Makine Dilleri (Machine Languages) 0️⃣1️⃣:
- Tanım: Bilgisayarın işlemcisi tarafından doğrudan yürütülebilen, ikilik bit desenlerinden (0 ve 1'ler) oluşan en düşük seviyeli dillerdir.
- Özellikleri: Her işlemci ailesine özgüdür (örn: Intel x86, ARM). Öğrenilmesi ve kullanılması son derece zordur. Donanım programlamada temeldir.
- Avantajı: Doğrudan donanımla etkileşim kurduğu için en hızlı ve verimli çalışmayı sağlar.
- Dezavantajı: İnsanlar için okunması ve yazılması neredeyse imkansızdır, taşınabilirliği yoktur.
-
Düşük Seviyeli/Çevirici Diller (Low-Level/Assembler Languages) ⚙️:
- Tanım: Makine dillerine çok yakın olan, işlemcinin komut kümesine yapısal olarak benzeyen semboller (mnemonikler) kullanan dillerdir.
- Özellikleri: Bir çevirici (assembler) sayesinde doğrudan makine koduna dönüştürülebilirler. Bellek kullanımı düşük olduğu için hızlıdırlar.
- Avantajı: Donanıma yakın olduğu için donanım programlamada ve performans kritik uygulamalarda önemlidir. Makine diline göre daha okunabilirdir.
- Dezavantajı: Kullanıcı dostu değildir, öğrenilmesi zordur ve her işlemci mimarisi için farklı bir Assembly dili vardır (taşınabilir değildir).
-
Yüksek Seviyeli Diller (High-Level Languages) 🧑💻:
- Tanım: Kullanıcı dostu olarak tanımlanan ve programcıların daha soyut kavramlarla çalışmasına olanak tanıyan dillerdir.
- Özellikleri: Bellek adresleri ve çağrılarla uğraşmak yerine değişken, dizi, nesne, aritmetik ve mantıksal ifadeler, fonksiyonlar ve döngüler gibi yapıları kullanır.
- Avantajı: İnsan diline daha yakın olduğu için öğrenilmesi ve kullanılması kolaydır. Geliştirme sürecini hızlandırır, hataları azaltır ve genellikle farklı platformlarda çalışabilir (taşınabilir).
- Dezavantajı: İşlemci tarafından doğrudan anlaşılamazlar; derleyiciler veya yorumlayıcılar aracılığıyla makine diline çevrilmeleri gerekir, bu da düşük seviyeli dillere göre bir miktar performans kaybına neden olabilir.
- Örnekler: Fortran (ilk yaygın yüksek seviyeli dil), C, C++, Java, Python, JavaScript.
Sonuç
Programlama temellerini ve dillerini anlamak, modern teknoloji dünyasında yazılım geliştirmenin vazgeçilmez bir parçasıdır. Komutların işleyişinden programlama dillerinin farklı seviyelerine kadar uzanan bu bilgi birikimi, etkili ve verimli yazılımlar oluşturmak için temel teşkil eder. Geliştirilmek istenen uygulamanın türüne ve performans gereksinimlerine göre doğru programlama dilini seçmek, projenin başarısı için kritik öneme sahiptir. Bu kapsamlı bakış açısı, programlama alanında sağlam bir temel oluşturmayı hedeflemektedir.








