Merhaba değerli Webkolog.net takipçileri, bugün sizlerle yazılım geliştirme dünyasına heyecan verici bir adım atacağız: Microsoft'un güçlü ve yaygın olarak kullanılan geliştirme platformu olan .NET Framework 4 ve bu platformun gözde dili C#. Özellikle IDE olarak Visual Studio 2010'u ele alarak, bu dünyaya ilk kez adım atacaklar için temel kavramları ve önemli bilgileri anlaşılır bir dilde aktarmaya çalışacağım.
C# dünyasına girerken bilmemiz gereken ilk şey, bu dilin küçük-büyük harf duyarlı olduğudur. Yani sayi
ve Sayi
program için farklı anlamlar ifade eder. Bu detaya dikkat etmek, ilerleyen süreçte karşılaşılabilecek olası hataların önüne geçmek açısından önemlidir.
Projemizin Kalbi: Program.cs ve Program Sınıfı
Visual Studio 2010'da yeni bir C# projesi oluşturduğumuzda, otomatik olarak Program.cs
adında bir dosya karşımıza çıkar. Bu dosya, projemizin ilk başladığı ve ana yürütme mantığını içeren Program
adında bir sınıfı barındırır. Bu sınıfın içinde yer alan Main
metodu ise uygulamamızın başlangıç noktasıdır. Programımız çalışmaya başladığında ilk olarak bu Main
metodu içerisindeki kodlar yürütülür.
// Program.cs içeriği (örnek)
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine("Merhaba .NET Dünyası!");
}
}
Temel Teknik Terimler Sözlüğü
Yazılım geliştirme sürecinde sıkça karşımıza çıkan ve anlamlarını bilmemizin önemli olduğu bazı teknik terimler bulunmaktadır:
- Instance Almak: Bir sınıftan yeni bir nesne (object) oluşturma işlemidir. Sınıf, nesnelerin genel bir şablonu iken, instance o şablona göre bellekte oluşturulmuş somut bir örnektir.
- Implicitly (Dolaylı) Çevirme: Bir veri tipinin, herhangi bir özel işlem yapmadan otomatik olarak daha geniş kapsamlı bir veri tipine dönüştürülmesidir. Örneğin, daha küçük bir bellek alanına sahip olan
byte
türündeki bir değer, daha büyük bir bellek alanına sahip olanint
türüne doğrudan atanabilir. Buna örtülü dönüştürme de denir. - Explicitly (Açık) Çevirme (Casting): Bir veri tipinin, programcı tarafından belirtilerek başka bir veri tipine dönüştürülmesidir. Bu işlem genellikle veri kaybı riskini içerdiğinden bilinçli olarak yapılmalıdır. Parantez içinde hedef veri tipi belirtilerek gerçekleştirilir. Buna tür dönüştürme de denir.
double pi = 3.14;
int tamPi = (int)pi; // Açık çevirme (casting)
- Convert: Farklı veri tipleri arasında dönüşüm yapmak için kullanılan bir sınıftır (
System.Convert
). Bu sınıf, çeşitliTo...()
metotları aracılığıyla güvenli ve kontrollü dönüşümler sağlar.
string sayiStr = "123";
int sayiInt = System.Convert.ToInt32(sayiStr); // Convert sınıfı ile çevirme
- CLR (Common Language Runtime): .NET Framework'ün temelini oluşturan bir ara katmandır. Java'daki JRE'ye benzer bir rol üstlenir. CLR, .NET uygulamalarının çalıştırılmasını yönetir, bellek yönetimi (garbage collection), güvenlik ve tip denetimi gibi hizmetleri sağlar.
- CIL (Common Intermediate Language): .NET dilleri (C#, VB.NET vb.) tarafından derlendikten sonra oluşan ara koddur. MSIL (Microsoft Intermediate Language) olarak da bilinir. Bu ara kod, platformdan bağımsızdır.
- JIT (Just In Time): CLR'nin bir parçası olan ve CIL kodunu uygulamanın çalıştığı sırada makine koduna (işlemcinin anlayacağı dile) çeviren derleyicidir. Bu sayede .NET uygulamaları farklı platformlarda (uygun bir CLR implementasyonu varsa) çalışabilir.
- IDE (Integrated Development Environment): Yazılım geliştirmeyi kolaylaştıran, kod düzenleme, derleme, hata ayıklama gibi araçları tek bir ortamda sunan entegre geliştirme ortamıdır. Visual Studio 2010 da güçlü bir IDE örneğidir.
- SDK (Software Development Kit): Belirli bir platform veya teknoloji için yazılım geliştirmek için gerekli araçları, kütüphaneleri, belgeleri ve örnek kodları içeren geliştirme kitidir. .NET Framework SDK da .NET uygulamaları geliştirmek için gereken her şeyi içerir.
Bir C# Uygulamasının Çalışma Süreci
Bir C# uygulaması yazdıktan sonra, bu kodun çalışabilir hale gelmesi için belirli adımlardan geçer:
- Kaynak Kod: Yazdığımız C# kodlarıdır (
.cs
uzantılı dosyalar). - .NET Derleyici: C# derleyicisi (
csc.exe
), kaynak kodunu derleyerek MSIL (CIL) adı verilen ara koda ve meta verilere (meta data) çevirir. Bu çıktı genellikle bir DLL (dinamik bağlantı kitaplığı) veya EXE (çalıştırılabilir dosya) olarak kaydedilir. - Common Language Runtime (CLR) ve Just in Time (JIT): Uygulama çalıştırıldığında, CLR devreye girer ve MSIL kodunu, uygulamanın çalıştığı makinenin işlemcisine uygun yerel makine koduna JIT derleyicisi aracılığıyla çevirir.
- Çıktı: Makine kodu çalıştırılarak uygulamanın istenen işlevi yerine getirilir.
.NET'te Geliştirilebilen Diller ve Platformlar
.NET Framework, birden fazla programlama dilini destekler. En popüler olanları arasında C#, VB.NET, Managed C++, Delphi.Net ve geçmişte J# yer alır.
Ayrıca, .NET ekosistemi farklı platformları hedefleyen çeşitli çatılara sahiptir:
- Mono: Linux, iOS ve Android gibi platformları hedefleyen açık kaynaklı bir .NET implementasyonudur. Mono sayesinde .NET uygulamaları farklı işletim sistemlerinde çalıştırılabilir.
- .NET Core: Linux ve macOS gibi platformlarda da çalışabilen, modern ve platformlar arası bir .NET sürümüdür (Visual Studio 2017 ve sonrası ile daha yaygın hale gelmiştir). Ancak, .NET Framework 4'te ASP.NET Core veya Xamarin desteği bulunmamaktadır.
- ASP.NET Core: Web uygulamaları ve servisleri geliştirmek için kullanılan, platformlar arası bir çatıdır. WPF (Windows Presentation Foundation) gibi masaüstü teknolojilerini desteklemez.
- Xamarin: Mobil uygulamalar geliştirmek için kullanılan bir .NET çatısıdır. Android ve iOS platformları için native uygulamalar geliştirmeye olanak tanır.
Karşılaşılabilecek Hata Türleri
Yazılım geliştirme sürecinde çeşitli hatalarla karşılaşmak kaçınılmazdır. Temel olarak üç tür hata bulunur:
- Syntax Hataları: Kodun dilin kurallarına (söz dizimine) aykırı yazılmasından kaynaklanır. Derleme aşamasında tespit edilirler.
- Mantıksal Hatalar: Kodun söz dizimi doğru olsa bile, programın istenen işlevi yanlış bir şekilde yerine getirmesine neden olan hatalardır. Çalışma zamanında fark edilebilirler.
- Runtime Hataları (Çalışma Zamanı Hataları): Program çalışırken ortaya çıkan hatalardır. Örneğin, sıfıra bölme (
DivideByZeroException
), yanlış formatta bir veri dönüştürme (FormatException
), veya bir sayısal değerin izin verilen aralığın dışına çıkması (OverflowException
) gibi durumlar bu tür hatalara yol açabilir.
Namespace, Class ve Method Kavramları
C# kodunun temel yapı taşları namespace (isim alanı), class (sınıf) ve method (metot) kavramlarıdır. Namespace'ler, kodun düzenlenmesini ve isim çakışmalarının önlenmesini sağlar. Sınıflar, nesnelerin şablonlarıdır ve veri (alanlar/değişkenler) ile davranışları (metotlar/fonksiyonlar) bir arada tutar. Metotlar ise belirli bir işlevi gerçekleştiren kod bloklarıdır.
return
ve throw
İfadeleri
return
: Bulunduğu metotun yürütülmesini o noktada durdurur ve eğer metot bir değer döndürmesi gerekiyorsa, bu değeri çağıran yere iletir.throw
: Bir hata (exception) durumunu işaretlemek ve programın normal akışını bozarak hata işleme mekanizmasına geçmesini sağlamak için kullanılır.
Object Veri Tipi ve Boxing/Unboxing
object
veri tipi, C#'taki tüm diğer veri tiplerinin temel sınıfıdır. Bu nedenle, herhangi bir türdeki değer bir object
türündeki değişkene atanabilir. Değer tipindeki bir verinin object
türüne dönüştürülmesine boxing (kutulama), object
türündeki bir verinin tekrar kendi orijinal değer tipine dönüştürülmesine ise unboxing (kutudan çıkarma) denir. Boxing ve unboxing işlemleri performans açısından maliyetli olabileceği için dikkatli kullanılmalıdır.
Evet sevgili Webkolog.net okurları, bu yazımızda C# .NET Framework 4 dünyasına yaptığımız bu ilk adımda, temel kavramları ve teknik terimleri Visual Studio 2010 özelinde ele almaya çalıştım. Umarım bu giriş yazısı, bu heyecan verici platforma olan ilginizi artırmış ve size yol göstermiştir. Bir sonraki yazımda, C# dilinin diğer önemli yapı taşlarını keşfetmeye devam edeceğiz. Webkolog.net'i takipte kalın!
Hepinize bol kodlu ve keyifli öğrenme süreçleri dilerim!
0 yorum:
Yorum Gönder