.net Core Teknolojisi ve C# Programlama Dili Giriş
Program nedir?
Bilgisayarı çalıştırmak için tuşa bastığımızda, arka planda çalışan tüm unsurlar program olarak kabul edilir. BİOS, işletim sistemi, ofis uygulamaları gibi bilgisayarda kullanılan tüm yardımcı etkenlere bilgisayar programı adı verilir. Program, genel itibarıyla donanım bileşenlerinin, kullanıcıdan alınan talimatlara uygun şekilde çalışmasını sağlayan ve bilgisayara ne yapması gerektiğini bildiren, programlama dili ile hazırlanmış komutlar bütününe verilen addır.
Sistem Yazılımları (İşletim Sistemleri) nedir?
Bilgisayarlar için en önemli yapı taşı işletim sistemleridir. İşletim sistemleri tüm donanım ve yazılımların arasındaki iletişimi belirli kurallar çerçevesinde düzenleyen yazılımlardır. Bunun yanında tüm yazılımların kullandıkları kaynakların planlama ve kontrolünü yaparlar. Hazırlanan yazılımlarla da kullanıcıların donanımlara ve bilgisayar kaynaklarına erişimine izin verilmektedir. Sürücü yazılımlarını da işletim sistemi ile donanım arasındaki iletişimi sağladığı için bu gruba dâhil edebiliriz.
Uygulama Yazılımı kavramını açıklayınız.
Uygulama Yazılımları, kullanıcıların genel ihtiyaç ve isteklerine göre hazırlanmış yazılımlardır. Tüm yazılımlar gibi bu yazılımlar da işletim sistemi üzerinde çalışmaktadır. Kendi içlerinde birçok kategoriye ayrılmaktadır.
Ticari Yazılımlar kavramını açıklayınız.
Ticari Yazılımlar: Genellikle firmalar için hazırlanmış, sektöre özel dizayn edilmiş yazılımlardır. Kurumsal kaynak planlaması, iş takibi, sunucu kaynak takibi, müşteri yönetimi, muhasebe yazılımları gibi yazılımları bu kategoriye örnek olarak verebiliriz.
Eğlence Yazılımları kavramını açıklayınız.
Eğlence Yazılımları: Oyunlar, işletim sisteminde kullanılan kişiselleştirilebilir eklentiler, çeşitli video/resim/müzik düzenleme yazılımlarını örnek verebiliriz.
Genel Amaçlı Yazılımlar kavramını açıklayınız.
Genel Amaçlı Yazılımlar: Bu yazılımlar ise gelişen bilgisayar ve hızlanan internet karşısında bilgisayarların daha performanslı çalışmasını sağlayan uygulamalardır. Hem kişisel hem iş amaçlı kullanılmaktadırlar. Antivirüs yazılımları, müzik ve video oynatıcı programlar, internet tarayıcıları, Word/Libreoffice gibi kelime işlemci yazılımları ve pdf/epub gibi çeşitli dosyaların açılması için gerekli uygulamaları örnek olarak gösterebiliriz.
Programlama dilleri hangi kategorilere ayrılır?
Programlama dillerini kategorilere ayrılırken dilin insan algılamasına olan yakınlığına göre bir seviye verilmektedir. Yüksek seviyeli diller insan algılamasına çok daha yakın olurken, alçak seviyeli diller ise bilgisayarın çalışma mantığına daha yakın diller olarak adlandırılabilir.
İlk bilgisayar programı hangisi kabul edilmektedir?
İlk bilgisayar programının Ada Lovelace tarafından, Charles Babbage’ın tasarladığı “Analytical Engine” için Bernoulli sayılarının hesaplanması amacıyla yazdığı makalesinde olduğu kabul edilmektedir. İlk gerçek anlamdaki bilgisayar programlama dillerinden ADA dilinin adı, Ada Lovelace’in anısına verilmiştir.
Yüksek seviyeli programlama dilleri hakkında bilgi veriniz.
Programlama dilinin seviyesi yükseldikçe programcının işinin kolaylaşmasıyla beraber verimlilik ve esneklikte azalmaktadır. En hızlı ve en etkili programlama dilleri bu kategori içindedir. Diğer dillere kıyasla daha kolay ve hızlı bir şekilde öğrenilebilir. Bu diller donanımsal özellikler taşımamakla birlikte okunabilir bir gösterimleri vardır. Çeşitli işlemler için oluşturulmuş kütüphaneleri de içerirler.
Alçak seviyeli programlama dilleri hakkında bilgi veriniz.
Alçak seviyeli diller ise donanıma bağlı olarak çalışmakla birlikte, makine hâkimiyeti oldukça yüksek dillerdir. Makine ve Assembly dili bu seviyede kullanılır. Assembly dilinde, semboller ile hafıza, işlem ve değişken operasyonları gerçekleştirilmektedir. Kodlaması çok yavaş olmakla birlikte, hata yapmaya çok elverişlidir.
Derleyici Nedir?
Yüksek seviyeli dillerde yazılan programların çalışabilmesi için, bilgisayarın da anlayabileceği makine diline çevrilmesi gerekmektedir. Her yüksek seviyeli dilin bir derleyicisi bulunmaktadır. Derleyicinin görevi, yüksek seviyeli programlama dili çıktısını makine diline çevirmektir. Çevrim işleminden önce, hazırlanan kodda hata olup olmadığı kontrol edilir. Bulunan hatalar bildirilir, yoksa 0-1’lerden oluşan makine kodu oluşturulur. Hedef kod oluşturulurken derleyici çeşitli iyileştirme/optimizasyon aşamalarını da uygulamaktadır. Örneğin, kullanılmayan değişkenler hafızada yer kaplamaması için kodun içerisinden çıkartılır, yazılımcının kod içerisine yazdığı açıklama satırları kaldırılarak kodun daha kısa olması ve oluşan dosya boyutunun büyümesi engellenir. Kaynak koda müdahale edilebilirken derleyicinin oluşturduğu hedef kodun içeriğine müdahale imkânı bulunmamaktadır. Derleyiciler olmasaydı, tüm yazılımların makine dilinde hazırlanması gerekecekti. Bu da çok daha fazla zaman ve emek harcanmasına neden olacaktı.
Yorumlayıcı Nedir?
Yorumlayıcı da tıpkı derleyici gibi işlem yapmaktadır. Derleyiciler, kaynak kodda hata varsa çalıştırılmadan uyarı verir ve kodu çalıştırmaya izin vermez, hatasız şekilde düzenlenen kodu makine diline çevirdikten sonra çalıştırır. Yorumlayıcılar ise kodu satır satır veya bloklar hâlinde çalıştırırken sırası gelmeyen kod blokları hiç çalıştırılmaz. Eğer çalıştırılmayan bir kod bloğunda hata varsa bu hatalar hiçbir zaman görülmeyebilir ve iyileştirme yapılamayabilir.
Yapısal Programlama Nedir?
Yapısal programlama, 1900’lü yılların ortalarında ortaya çıkmış bir kavramdır. Programlardaki yükün ve talebin artmasıyla oluşturulmuş bir kod yapılandırmasıdır. Bu yapılandırma, hiyerarşik bir şekilde düzenlenmiş, aralarında mantıksal uyum bulunan basit akış yapılarından oluşmaktadır. Buradaki temel amaç, problemi basit alt parçalara bölerek her bir parçanın çözümünün birleştirilmesidir. Böylece daha akıcı, anlaşılır bir kod bütünü oluşturulurken kodlama ve test aşamalarında da kolaylık ve hız kazanılmasını sağlamaktadır. Bu programlama tekniğinde, kod içerisinde aynı alt program bloğu defalarca çağrılabilir. Böylece gereksiz kod tekrarlarının önüne geçilmiş olacaktır
Nesne Yönelimli Programlama (NYP) Nedir?
Nesne Yönelimli Programlama (Object Oriented Programming) bir yazılım geliştirme yaklaşımıdır. 1960’lı yılların sonlarına doğru ortaya çıkmıştır. Yazılımların artan büyüklükleri ve bunun sonucu oluşan karmaşıklık, bakım zamanı ve maliyetleri sürekli artmaktaydı. Nesne yönelimli programlama, mantıksal işlemler yerine, nesneler ve bu nesneler üzerinde gerçekleştirilen işlemlere odaklanmış bir yapı olarak dizayn edildiği için, karşılaşılan bu sorunlara çözüm getirmiştir. Temel kural olarak her işlev nesneler üzerinden gerçekleşmektedir. Bu yaklaşımda hazırlanan programlar, nesnelerin birbirleri ile iletişime geçmeleri sağlanarak tasarlanmaktadır.
Nesne yönelimli programlamayı ilk ortaya atan Alan Kay tarafından önerilen metodolojiyi sıralayınız.
Nesne yönelimli programlamayı ilk ortaya atan Alan Kay tarafından önerilen metodolojiyi şu şekilde listeleyebiliriz:
- Uygulamalar, nesneler ve birbirleri ile olan ilişkileri çerçevesinde belirli bir işi yapmak için geliştirilebilmelidir.
- Her nesne bir sınıfa ait olmalıdır ve sınıflar nesnelerin ortak özelliklerini ifade etmelidir.
- Nesneler birbirleri ile iletişime geçebilmelidir.
Just-In-Time Derleyicisi (JIT) nedir?
Just-In-Time derleyicisi (JIT), herhangi bir .NET programlama dilinden bağımsız olarak .NET programlarının yürütülmesini yönetmekten sorumlu olan .NET’teki Common Language Runtime’ın (CLR) bir parçasıdır. Dile özgü bir derleyici, kaynak kodunu ara dile (IL) dönüştürür. Bu ara dil daha sonra JustIn-Time (JIT) derleyicisi tarafından makine koduna dönüştürülür. Bu makine kodu, JIT derleyicisinin üzerinde çalıştığı bilgisayar ortamına özeldir.
C# dilinin kullanım alanlarından bazıları nelerdir?
C# dilinin çeşitli kullanım alanları mevcuttur. Bunların bir kısmını şu şekilde sıralayabiliriz:
- Konsol uygulamalarının geliştirilebilmesi
- Windows uygulamalarının geliştirilebilmesi
- Linux ve MacOs için uygulama geliştirilebilmesi
- Web servis desteği
- PDA, android, ios gibi mobil cihazlara uygun uygulama geliştirilebilmesi
- Veri analizleri
- ASP.Net web uygulamaları
- DLL hazırlama
CLR (Common Language Runtime) nedir?
.Net platformunda, işletim sistemi ile programlar arasında yer alan ve programların çalışmasını kontrol eden arabirime CLR denmektedir. Normalde programlar derlenerek makine diline çevrilirler ve işletim sistemiyle bağlantılı olarak çalışırlar. Yani Windows, Linux, MAC OS işletim sistemleri altyapıları gereği aynı programı çalıştıramazlar. Her bir platform için ayrı ayrı derlenerek çalışabilir hâle getirilmesi gerekir.
Yapısal programlama mantığına göre bir tasarım yaparak akış diyagramı hazırlamak için hangi adımların takip edilmesi gerekmektedir?
Yapısal programlama mantığına göre bir tasarım yaparak akış diyagramı hazırlamak istersek aşağıdaki adımları takip etmemiz gerekmektedir.
- Adımların basit bloklara bölünmesi
- Tüm blokların tek bir çıkışı olacak şekilde tekrar tasarlanması ya da bölünmesi
- Çıkış noktaları vasıtasıyla blokların birbirine bağlanması
- Tekrarlı bloklar için döngüler ve koşulların tanımlanması
- Koşullu dallanmalar (if) için şartların tanımlanması
- Bağlantı eksikliklerinin tamamlanması
Kapsülleme (Encapsulation) nedir?
NYP’nin temel kavramlarından olup, kullanıcı tarafından değişkenlerin, metot ve sınıfların ne kadarının görüntülenerek değiştirilebileceğinin sınırlarının çizilmesini sağlamaktadır. Kısaca ifade etmek gerekirse, sınıfın özelliklerini koruma altına almak, böylece diğer sınıfların, bu sınıfın özelliklerine istediği gibi erişip değişiklik yapmasını engellemek için kullanılır. Bu korumayı sağlamak için üç çeşit erişim belirteci (access modifier) kullanılmaktadır. Bunlar herkese açık (public), özel (private) ve koruma altında (protected) olarak söylenebilir. Public olarak tanımlanan özellikler, herkes tarafından görülebilir ve düzenlenebilir. Bu yönüyle en güvensiz belirteçtir. Protected, public’den daha güvenli bir belirteçtir. Bunlara aynı sınıf içinden, üst sınıflar, ondan türetilen sınıflar ve aynı paket içerisinden de görüntüleme ve erişebilme imkânı vardır. Private ise içlerinde en güvenli erişim belirtecidir. Bunlara sadece içinde olduğu sınıflardan erişilebilmektedir. Sınıflar, sınıfın özellikleri ve tuttuğu veriler de private olarak tanımlanabilir.