PROGRAMLAMA VE C

Bölüm 1

yazılım nedir?


yazılım (software) : programlama ve programlama ile ilgili konuların geneline verilen isimdir. Yazılım denince ilk olarak aklımıza programlama dilleri, bu diller kullanılarak yazılmış kaynak programlar ve çeşitli amaçlar için oluşturulmuş dosyalar gelir.



donanım nedir?
Donanım (hardware) : Bilgisayarın elektronik kısmı, yapısına verilen isimdir.

YAZILIMIN SINIFLANDIRILMASI

Yazılımı uygulama alanlarına göre 5 gruba ayırabiliriz :


1) Bilimsel ve mühendislik yazılımları (scientific & engineering software).

Bilimsel ve mühendislik konularındaki problemlerin çözülmesinde kullanılan programlardır. Bu tür programlarda veri miktarı göreli olarak düşüktür ancak matematiksel ve istatistiksel algoritmalar yoğun olarak kullanılabilir.Tamamen hesaplama ağırlıklı işlemler içerir. Bu tür programlar ağırlıklı olarak bilgisayarın Merkezi İşlem Birimini (CPU) kullanırlar. Elektronik devrelerin çözümünü yapan programları, istatistik analiz paketlerini bu tür programlara örnek olarak verebiliriz.

2) Mesleki yazılımlar : (Business software) :

Veri tabanı ağırlıklı yazılımlardır. Genel olarak verilerin yaratılması, işlenmesi ve dosyalarda saklanması ile ilgilidir. Bu tür programlara örnek olarak stok kontrol programları, müşteri takip programları, muhasebe programlarını verebiliriz.

3) Yapay zeka yazılımları (artificial intelligence software)

İnsan davranışlarını taklit etmeyi amaçlayan yazılımlardır. Örnek olarak robot yazılımları , satranç ya da briç oynatan programlar vs. verilebilir.

4) Görüntüsel yazılımlar

Görüntüsel işlemlerin ve algoritmaların çok yoğun olarak kullanıldığı programlardır. Örnek olarak oyun ve animasyon yazılımlarını verebiliriz. Bu yazılımlar ağırlıklı olarak bilgisayarın grafik arabirimini kullanırlar.

5) Sistem yazılımları :

Bilgisayarın elektronik yapısını yöneten yazılımlardır. Derleyiciler, haberleşme programları, işletim sistemi birer sistem yazılımıdır. Örneğin text editörü de bir sistem yazılımıdır. Uygulama programlarına göre daha düşük seviyeli işlem yaparlar.

PROGRAMLAMA DİLLERİNİN SINIFLANDIRILMASI

Programlama dillerini çeşitli açılardan sınıflandırabiliriz. En sık kullanılan sınıflandırmalar ;

1) seviyelerine göre sınıflandırma

2) uygulama alanlarına göre sınıflandırmadır.

bilgisayar dillerinin seviyelerine göre sınıflandırması ve seviyelerine göre bilgisayar dillerinin gelişimi

seviye : Bir programlama dilinin insan algılayışına olan yakınlığının bir ölçüsüdür. Bir programlama dili insan algılayışına ne kadar yakınsa o kadar yüksek seviyeli (high level) demektir. Yine bir programlama dili bilgisayarın çalışması ne kadar yakınsa o kadar düşük seviyeli (low level) demektir. Çok yüksek seviyeli dillerde yazılım programcı açısından çok kolaydır. Algoritma yoktur. Bu dillerde yalnızca nelerin yapılacağı programa bildirilir ama nasıl yapılacağı bildirilmez. Genel olarak programlama dilinin seviyesi yükseldikçe , o dilin öğrenilmesi ve o dilde program yazılması kolaylaşır.

Bir bilgisayar yalnızca kendi makina dilini doğrudan anlayabilir. Makina dili belirli bir bilgisayarın doğal dilidir, ve bilgisayarın donanımsal tasarımına bağlıdır. Bilgisayarların geliştirilmesiyle birlikte onlara iş yaptırmak için kullanılan ilk diller de makina dilleri olmuştur. Bu yüzden makina dillerine 1. kuşak diller de diyebiliriz.

Makine dilinin programlarda kullanılmasında yazılmasında karşılaşılan iki temel problem vardır. Makina dilinde yazılan kodlar doğrudan makinanın işlemcisine, donanım parçalarına verilen komutlardır. Değişik bir CPU kullanıldığında ya da bellek organizasyonu farklı bir şekilde yapıldığında artık program çalışmayacak ve programın tekrar yazılması gerekecektir. Çünkü makina dili yalnızca belirli bir CPU ya da CPU serisine uygulanabilir. Makina dili taşınabilir (portable) değildir.

Diğer önemli bir problem ise, makina dilinde kod yazmanın çok zahmetli olmasıdır.Yazmanın çok zaman alıcı ve uğraştırıcı olmasının yanı sıra yazılan programı okumak ya da algılamak da o denli zordur. Özellikle program boyutu büyüdüğünde artık makina dili programlarını geliştirmek, daha büyütmek iyice karmaşık bir hale gelir.

Başlangıçta yalnızca makina dili vardı. Bu yüzden makina dilleri 1. kuşak diller olarak da isimlendirilir. Yazılımın ve donanımın tarihsel gelişimi içerisinde makina dilinden, insan algılamasına çok yakın yüksek seviyeli dillere (4. kuşak diller) kadar uzanan bir süreç söz konusudur. Bu tarihsel süreci ana hatlarıyla inceleyelim :

i. 1950 li yılların hemen başlarında makina dili kullanımın getirdiği problemleri ortadan kaldırmaya yönelik çalışmalar yoğunlaştı. Bu yıllarda makina dilleri bilgisayarın çok sınırlı olan belleğine yükleniyor ve programlar böyle çalıştırılıyordu. İlk önce makina dilinin algılanma ve anlaşılma zorluğunu kısmen de olsa ortadan kaldıran bir adım atıldı. Sembolik makina dilleri geliştirildi. Sembolik makina dilleri (Assembly languages) yalnızca 1 ve 0 dan oluşan makina dilleri yerine İngilizce bazı kısaltma sözcüklerden oluşuyordu. Sembolik makina dillerinin kullanımı kısa sürede yaygınlaştı. Ancak sembolik makina dillerinin makina dillerine göre çok önemli bir handikapı söz konusuydu. Bu dillerde yazılan programlar makina dilinde yazılan programlar gibi bilgisayarın belleğine yükleniyor ancak programın çalıştırılma aşamasında yorumlayıcı (interpreter) bir program yardımıyla sembolik dilin komutları, bilgisayar tarafından komut komut makina diline çevriliyor ve oluşan makina kodu çalıştırılıyordu. Yani bilgisayar, programı çalışma aşamasında önce yorumluyarak makina diline çeviriyor daha sonra makina diline çevrilmiş komutları icra ediyordu. Bu şekilde çalıştırılan programların hızı neredeyse 30 kat yavaşlıyordu.

Bu dönemde özellikle iki yorumlayıcı program öne çıkmıştı :John Mauchly nin UNIVAC 1 için yazdığı yorumlayıcı (1950) ve John Backus tarafından 1953 yılında IBM 701 için yazılan "Speedcoding" yorumlama sistemi. Bu tür yorumlayıcılar makina koduna göre çok yavaş çalışsalar da programcıların verimlerini artırıyorlardı. Ama özellikle eski makina dili programcıları yorumlayıcıların çok yavaş olduklarını, yalnızca makina dilinde yazılanların gerçek program deneceğini söylüyorlardı.

Bu sorunun da üstesinden gelindi. O zamanlar için çok parlak kabul edilebilecek fikir şuydu :Her defasında yazılan kodu bilgisayar, kodun çalıştırılması sırasında makina diline çevireceğine, geliştirilecek bir başka program sembolik dilde yazılan kodu bir kez makina diline çevirsin ve artık program ne zaman çalıştırılmak istense, bilgisayara yorumlama olmaksızın yalnızca makina kodunu çalıştırsın. (Bu fikiri geliştiren Grace Hopper isimli bir bayandı.) Grace Hopper'ın buluşuna "compiler" derleyici ismi verildi. Artık programcılar sembolik sözcüklerden oluşan assembly programlarını kullanıyor yazdıkları programlar derleyici tarafından makina koduna dönüştürülüyor ve makina kodu eski hızından birşey kaybetmeksizin tam hızla çalışıyordu. Assembly diller ikinci kuşak diller olarak tarihte yerini aldı

ii. Assembly dillerinin kullanılmaya başlamasıyla bilgisayar kullanımı hızla arttı. Ancak en basit işlemlerin bile bilgisayara yaptırılması için bir çok komut gerekmesi, programlama prosesini daha hızlı bir hale getirmek için arayışları başlatmış, bunun sonucunda da daha yüksek seviyeli programlama dilleri geliştirilmeye başlanmıştır.

iii. Tarihsel süreç içinde Assembly dillerinden daha sonra geliştirilmiş ve daha yüksek seviyeli diller 3. kuşak diller sayılmaktadır. Bu dillerin hepsi algoritmik dillerdir. Bugüne kadar geliştirilmiş olan yüzlerce yüksek seviyeli programlama dilinden yalnızca pek azı bugüne kadar varlıklarını sürdürebilmiştir:

FORTRAN dili (FORmula TRANslator) kompleks matematiksel hesaplamalar gerektiren mühendislik ve bilimsel uygulamalarda kullanılmak üzere 1954 - 1957 yılları arasında IBM firması için John Backus tarafından geliştirilmiştir. FORTRAN dili, yoğun matematik hesaplamaların gerektiği bilimsel uygulamalarda halen yaygın olarak kullanılmaktadır. FORTRAN dilinin FORTRAN IV ve FORTRAN 77 olmak üzere iki önemli versiyonu bulunmaktadır. Doksanlı yılların başlarında FORTRAN - 90 isimli bir versiyon için ISO ve ANSI standartları kabul edilmiştir. FORTRAN dili 3. seviye dillerin en eskisi kabul edilmektedir.

COBOL (COmmon Business Oriented Language) 1959 yılında, Amerika'daki bilgisayar üreticileri, özel sektör ve devlet sektöründeki bilgisayar kullanıcılarından oluşan bir grup tarafından geliştirilmiştir. COBOL'un geliştirilme amacı veri yönetimi ve işlemenin gerektiği ticari uygulamalarda kullanılacak taşınabilir bir programlama dili kullanmaktır. COBOL dili de halen yaygın olarak kullanılmaktadır. COBOL dilini diğer dillerden ayıran önemli bir özellik,çok fazla sözcük kullanılmasıdır.



ALGOL (The ALGOritmick Language) 1958 yılında Avrupa'da bir konsorsiyum tarafından geliştirilmeye başlanmıştır. IBM Firması FORTRAN dilini kendi donanımlarında kullanılacak ortak programlama dili olarak benimsediğinden, avrupalılar da alternatif bir dil geliştirmek istemişlerdi. ALGOL dilinde geliştirilen bir çok prensip modern programlama dillerinin hepsinde kullanılmaktadır.

60'lı yılların başlarında programlama dilleri üzerinde yapılan çalışmalar yapısal programlama kavramını gündeme getirmiştir. 1971 yılında Pascal dili akademik çevrelere yapısal programlama kavramını tanıtmak için Profesör Niclaus Wirth tarafından geliştirilmiş (dilin yaratıcısı ,dile matematikçi ve filozof Blaise Pascal'ın ismini vermiştir) ve bu dil kısa zaman içinde üniversitelerde kullanılan programlama dili haline gelmiştir. Pascal dilinin ticari ve endüstriyel uygulamaları desteklemek için sahip olması gereken bir takım özelliklerden yoksun olması bu dilin bu uygulamalarda fazla kullanılmamasına yol açmıştır.

BASIC dili 1960'lı yılların ortalarında John Kemeney ve Thomas Kurtz tarafından geliştirilmiştir. Her ne kadar BASIC isminin Beginner's All_purpose Symbolic Instruction Code sözcüklerinin baş harflerinden oluşturulduğu söylense de, bu sözcüklerin daha sonradan uydurulduğu açıktır. Yüksek seviyeli dillerin en eski ve en basit olanlarından biridir.Tüm basitliğine karşın, bir çok ticari uygulamada kullanılmıştır. BASIC dili de ANSI tarafından standartlaştırılmıştır. Ancak BASIC dilinin ilave özellikler içeren bir sürü versiyonu söz konusudur. Örneğin Microsoft firmasının çıkarttığı Visual Basic dilinde Nesne Yönelimli Programlamaya ilişkin birçok özellik eklenmiştir. Ayrıca BASIC dilinin bazı versiyonları uygulama programlarında (Örneğin MS Excel ve MS Word'de) kullanıcının özelleştirme ve otomatikleştirme amacıyla yazacağı makroların yazılmasında kullanılan programlama dili olarak da genel kabul görmüştür.

Ada dili ise Amerikan Savunma Bakanlığı desteği ile 70 li yıllar ve 80'li yılların başlarında geliştirilmiştir. Savunma Bakanlığı farklı yazılımsal gereksinimleri karşılamak için yüzlerce farklı programlama dili kullanıyordu ve tüm gereksinmelerini karşılayacak bir dil arayışına girdi. Pascal dilini baz olarak alan çalışmalar sonucunda Ada dili geliştirildi. (Ada şair Lord Byron'un kızı olan Lady Ada Lovelace'ın isminden alıntıdır. Ada Lovelace delikli kartları hesap makinalarında ilk olarak kullanılan Charles Babbage'in yardımcısıydı. Charles Babage hayatı boyunca "Fark makinası" (Difference Engine) ve "Analitik Makina" (Analytical Engine) isimli makinaların yapımı üzerinde çalıştı ama bu projelerini gerçekleştiremeden öldü. Yine de geliştirdiği tasarımlarla Babbage'ın tasarımları modern bilgisayarların atası kabul edilmektedir. Ada Lovelace Charles Babbage'ın makinası için delikli kartları ve kullanılacak algoritmaları hazırlıyordu. Bu bayanın 1800'lü yılların başında ilk bilgisayar programını yazdığı kabul edilmektedir. ) Ada dili genel amaçlı bir dildir, ticari uygulamalardan roketlerin yönlendirilmesine kadar birçok farklı alanda kullanılmaktdır.Dilin önemli özelliklerinden bir tanesi gerçek zaman uygulamalarına (real-time applications) destek vermesidir. Başka bir özelliği de yüksek modülaritesi nedeniyle büyük programların yazımını kolaylaştırmasıdır.

iv. Çok yüksek seviyeli ve genellikle algoritmik yapı içermeyen programların görsel bir ortamda yazıldığı diller ise 4. kuşak diller olarak isimlendirilirler. Genellikle 4GL olarak kısaltılırlar. (fourth generation language). İnsana en yakın olan dillerdir.

Etiketler:
Beğeniler: 0
Favoriler: 0
İzlenmeler: 2395
favori
like
share
cell-o_88 Tarih: 14.04.2009 21:01
teşekkürler
VEYSELİM Tarih: 27.03.2009 16:43
eyvallah inş demo değildir
turkbey Tarih: 25.09.2007 00:45
tsk
deagle_35 Tarih: 21.12.2005 13:35
emeğine sağlık choas sağolasın
SU-PERISI Tarih: 06.12.2005 19:11
çok teşekkürler elinize sağlık
deagle_35 Tarih: 15.11.2005 02:27
sağol kardeşim daha yeniyim ii olacak bu
dijiman Tarih: 30.10.2005 15:58
hocam çalışman için teşekkür ederim fakat bir sorum olacak bu yazım işlemine devam edecekmisin yada bir ebook veya bir kaynak tavsiye edebilirmisin teşekkür ederim