AÖF Soru Bankası

Bilişim TeknolojileriÜnite 7 Özeti

Bilgisayar Programlama

YBS101U-BİLİŞİM TEKNOLOJİLERİ

Ünite 7: Bilgisayar Programlama

Programlamaya Giriş

Donanımın karşıtı olarak yazılım, bilgisayarın fiziksel parçaları haricindeki her şeydir. Bilgisayarın ilk açılışını yönetmekten sorumlu olan BIOS, cep telefonunun işletim sistemi ve arabadaki dijital radyo arayüzü birer yazılım örneğidir. Uygulama, kullanıcıların bir grup koordineli işlevi, görevi veya etkinliği gerçekleştirebilmeleri için tasarlanmış bilgisayar programlarıdır. Program ise bilgisayara neyi, nasıl yapması gerektiğini belirten kodlar bütünüdür. Uygulamalar bir ya da birden fazla programından oluşabilir. Yazılımlar 4 ana gurupta sınıflandırılır:

1. Sistem yazılımları: işletim sistemleri, donatılar, görev yöneticileri, sürücüler vb. 2. Programlama Yazılımları: IDE’ler, metin editörleri, derleyiciler, yorumlayıcılar, bağlayıcılar, hata ayıklayıcılar vb. 3. Uygulama Yazılımları: kelime işlemciler, web tarayıcıları, medya oynatıcıları, resim editörleri, oyunlar vb. 4. Gömülü Yazılımlar: arabalar, endüstriyel robotlar ve baz istasyonları gibi nesnelerin internetine (IoT) bağlı cihazları yönetmek için kullanılan gelişmiş yazılımlardır.

Yazılım Geliştirme Yaşam Döngüsü

İlk fikirden dağıtıma kadar bir yazılımın hayata geçirilmesi için kat edilen tüm aşamalar “yazılım geliştirme yaşam döngüsü (software development life cycle)” olarak tanımlanır. Tipik bir yazılımın yaşam döngüsü şu aşamaları içerir:

• Planlama: Yazılımın yapılabilirliği, temel ihtiyaçlar ve proje planı belirlenir. • Analiz: Yazılımın sahip olacağı işlevler ve bunlara yönelik gereksinimler netleştirilir. Bu aşamaya tüm paydaşlar katılır. • Tasarım: Sistem modeli, süreç tasarımı, yazılımın özellikleri, kullanıcı deneyimi ve arayüz tasarımı bu aşamada belirlenir. • Geliştirme: Tasarımların hayata geçirilme aşamasıdır. Yoğun bir programlama ve test süreci içerir. Yazılım testleri (birim (unit) testi, duman (smoke) testi, performans testi, sistem testi, alfa- beta testi) bu aşamada yapılır. • Dağıtım: Gerekli tüm testler başarıyla geçildikten ve geliştirme süreci tamamlandıktan sonra dağıtım aşamasına geçilir. • Bakım: Dağıtım ile eş zamanlı olarak başlatılır. Müşteri dönütlerinin takibi, hata tespiti-çözümü, altyapı iyileştirmeleri ve yazılım özelliklerinin iyileştirilmesi gibi bakım ve destek faaliyetlerini kapsar.

Yaygın kullanılan yazılım geliştirme metodolojileri; Kodla ve Düzelt (Code and Fix), Şelale Modeli (Waterfall Model), Prototipleme (Prototyping), Hızlı Uygulama

Geliştirme (Rapid Application Development) ve Çevik Geliştirme (Agile Development) şeklinde sıralanabilir. Günümüz yazılımlarının geliştirilmesinde, SCRUM gibi Çevik (Agile) geliştirme metodolojilerinden sıklıkla faydalanılmaktadır.

Programlama Nedir?

Programlama, bir problemin çözümüne yönelik olarak geliştirilen algoritmaların bir programlama dili aracılığıyla kodlanmasıdır. Programlama işini icra eden kişiler programcı (programmer) ya da kodlayıcı (coder) olarak adlandırılır.

Programlamanın Gelişimi

Bilgisayar programlamaya yönelik ilk çalışmalar, 1834 yılında Charles Babbage tarafından tasarlanan Analitik Motor (Analytical Engine) isimli bir mekanik bilgisayar prototipinde gerçekleştirilmiştir. Babbage, analitik motoru programlamak amacıyla o dönem dokuma tezgahlarını yönlendirmek için kullanılan delikli kartlardan yararlanmıştır. Babbage ile birlikte Analitik Motor üzerine çalışmalar yapan İngiliz Matematikçi Ada Lovelace, pek çok kaynakta tarihin ilk bilgisayar programcısı olarak nitelendirilmektedir.

Modern programlama dillerinin tarihi 1940’lara dayanmaktadır. O dönemlerde ortaya çıkmaya başlayan ilk elektrikli bilgisayarlar, assembly dilinde programlanmaktaydı. Bir programlama dili olarak Assembly’nin hem zor hem de hataya çok açık olması, bilim insanlarını yeni arayışlara itmiş ve bunun sonucunda Plankalkul, ENIAC Coding System ve C10 gibi programlama dilleri ortaya çıkmıştır.

1990’lar ile hayatımıza girmeye başlayan internet her alanda olduğu gibi bilgisayar programlama alanında da baskın bir etki yaratmıştır. Web programlama, entegre geliştirme ortamları (IDE) ve hızlı uygulama geliştirme (RAD) metodolojileri gibi pek çok yeni kavram bilgisayar programlama alına şekil vermiştir. Python (1991), Java (1991), Ruby (1993), R (1993), JavaScript (1995), PHP (1995), C# (2001), F# (2002), Go (2009), Rust (2010), Dart (2011), Kotlin (2011), TypeScript (2012) ve Swift (2014) son dönemlerde geliştirilen programlama dillerine örnek olarak verilebilir.

Programlama Süreci

Yazılım geliştirme yaşam döngüsünde olduğu gibi programlama süreci de aşamalardan oluşur. Bunlar: analiz, algoritma geliştirme, kodlama, çalıştırma (derleme/yorumlama/bağlama), hata ayıklama ve testtir.

Programlama Dilleri ve Araçları

Programlama dili, bilgisayarları yönetmek amacıyla tasarlanmış kendine has söz dizimine (syntax) sahip kodlar bütünüdür. Belli bir algoritma çerçevesinde ifadeler, veri yapıları, diziler, döngüler, koşullar yazarak bilgisayarları programlamayı mümkün kılarlar.


Bir programlama dilinin seviyesi; insan algısına olan yakınlığına göre üst, orta ve alt biçiminde nitelendirilir. Bir programlama dilinin seviyesi arttıkça o dilde kod yazmak, okumak ve algılamak kolaylaşır. Alt seviye programlama dilleri, verimlilik ve esneklik açısından daha avantajlıdır ama kodlama süreci zorlu ve hataya açıktır. LISP ve SQL gibi çok üst seviye diller çoğunlukla deklaratif programlama dilleri adıyla anılmaktadır. Üst seviye diller daha algoritmiktir, yani programlama süreci belli bir algoritma takip edilerek gerçekleştirilir. C gibi orta seviye diller, kullanım kolaylığı ve verimlilik arasında dengeli kodlama ortamı sunduğundan özellikle sistem yazılımlarının programlanmasında sıklıkla tercih edilmektedir. Alt seviye dillere en iyi örnek Assembly’dir. Assembly’de mikroişlemci komutları iki kodlar yerine daha algılanabilir semboller kullanılarak kodlanır.

Uygulama alanlarına göre programlama dillerine bilim ve mühendislik için Fortran, Pascal, C; veritabanları için Dbase, Paradox, Foxpro, SQL; büyük veri işlemle için R ve Python; yapay zeka uygulamları için LISP ve PROLOG; sistem programlama için ise C örnek verilebilir.

Makine Dili

Makine dili, doğrudan bilgisayarların merkezi işlem birimleri (CPU) tarafından çalıştırılabilen en alt seviye programlama dilidir. Makine dili, 0 ve 1’lerden oluşan iki kodlar kullanılarak yazılır.

Assembly Dili

Assembly dili makine dilinin verimliliğini ve çalışma hızını düşürmeden kullanımını kolaylaştırmak amacıyla geliştirilmiş bir dildir. Günümüzde Assembly, çoğunlukla, işletim sistemlerinin ya da 3D oyunların, donanım bazlı yüksek performans gerektiren küçük alt programlarının kodlanması amacıyla tercih edilmektedir. Assembly kodları assembler adı verilen bir derleyici aracılığıyla makine diline dönüştürülerek çalıştırılır.

Derlenen Programlama Dilleri

Derlenen programlama dillerinin kaynak kodları, bilgisayar tarafından doğrudan çalıştırılamaz. Bunun için derleyici (compiler) ve bağlayıcı (linker) olarak adlandırılan ara programlara ihtiyaç duyulur. Derleyiciler; bir programın kaynak kodunu, bilgisayarlar tarafından çalıştırılabilen hedef programa ya da makine diline dönüştürürler. Bağlayıcılar ise derlenmiş bir hedef programı diğer yazılım kütüphaneleri ve alt programlarla bağlayarak işletim sistemlerinin çalıştırabileceği programlar oluştururlar. Fortran, Pascal, Object Pascal, Basic, Visual Basic, C, C++, Java ve C# yaygın kullanıma sahip derlenen programlama dilleridir.

Yorumlanan Programlama Dilleri

programlama dillerinin (interpereted programming language) kaynak kodları, yorumlayıcı (interpreters) olarak isimlendirilen bir ara program tarafından çalışma zamanında makine diline dönüştürülerek doğrudan

yürütülür. Derlenenlere oranla yorumlanan programlama dilleri çok daha hızlı yazılırlar fakat derlenen diller çalışma zamanı (runtime)nda daha iyi performans verir. Ayrıca yorumlayıcıların her zaman kaynak koda ihtiyaç duymaları, programın gizliliği ve güvenliği açısından bir dezavantaj olarak görülebilir. JavaScript, Python, PHP ve Ruby günümüzde yaygın kullanıma sahip yorumlanan programlama dilleri

Yazılım Geliştirme Araçları

Programcılar, geliştiriciler ve mühendisler; yazılım geliştirme süreçlerini kolaylaştırmak ve daha yönetilebilir kılmak amacıyla farklı araçlardan faydalanır. Tümleşik geliştirme ortamları (IDE), kod editörü, sürüm kontrol sistemleri, derleyiciler, yorumlayıcılar, hata ayıklayıcılar, uygulama geliştirme çerçeveleri ve arayüz tasarım uygulamaları bunların başında gelir.

Güncel Programlama Yaklaşımları

Yapısal (Structured) Programlama

Koşul (if / then / else), döngü (while / for), blok, altyordam (procedure) ve işlev (function) gibi yapısal ifadelerle; programının okunabilirliğini, kalitesini ve geliştirme süresini iyileştirmeyi hedef alan bir yaklaşımdır.

İşlevsel (Functional) Programlama

Program akışı kendisine gönderilen girdileri işleyerek çıktılar üreten fonksiyonlar üzerinden kurgulanır. İşlevsel programlamada; saf işlevler, değişmez işlevler, yüksek seviye işlevler olmak üzere 3 tür işlev vardır.

Nesne Yönelimli (Object Oriented) Programlama

Nesne yönelimli yaklaşımın yapı taşı sınıflar (class) dır. Yapılandırılmış veri yapıları oluşturmaya olanak sağlayan sınıflar, nesneleri tanımlamak için kullanılır. Nesne yönelimli bir programın algoritması, sınıflardan türetilen nesneler ile birlikte onlara bağlı özellikler ve yöntemler kullanılarak tasarlanır ve kodlanır. C++, C#, Java, Delphi, Visual Basic, Python, Ruby nesne yönelimli yaklaşımı destekleyen programlama dilleridir.

Olay Güdümlü (Event Driven) Programlama

Bu yaklaşımda programın akışı; tıklama, klavyeden bir tuşa basma, ekrana dokunma gibi kullanıcı eylemleri ya da yüklenme, durdurulma, odaklanma gibi işlem durumları baz alınarak tasarlanır. Bu yaklaşım, JavaScript web uygulamaları gibi arayüz bazlı uygulamalarda sıklıkla tercih edilir.

Bu ünitenin sorularını uygulamada çözŞıklar, doğru cevaplar ve süreli sınav modu AÖF Soru Bankası uygulamasında
YBS101U Ünite 7 Özeti — Bilişim Teknolojileri | AÖF Soru Bankası