IMLEGEND
Aileden
İşletim sistemi, bilgisayar programları, bilgisayar donanımı ve yazılımı(hardware, software), programlama dilleri ve bilgisayar programcılığı hakkında genel bilgiler....
Bilgisayar programı nedir ?
Bilgisayarın çalışma temelinde işletim sistemi adı verilen ve bilgisayarın çalışabilmesi için gerekli veriler, komutlar ve dosyaları içeren ana program vardır. Bilgisayar açıldığı zaman harekete geçen ve otomatik olarak yüklenen dosyalar ve komutlar, kullanıcının bilgisayarda işlem yapabilmesini sağlayan zemini oluştururlar. İşletim sistemine bilgisayarın ruhu diyebiliriz. Dos, Windows, Linux, Zenix gibi farklı işletim sistemleri mevcuttur. İşletim sistemi de temelde bir bilgisayar programıdır ve bilgisayarın hangi durumda nasıl davranması gerektiğini bildiren komutlar içerir. Bilgisayar komutlarla hareket eder, bilgisayar programları da bilgisayara komut veren ve belli durumlarda belli şekilde çalışmasını düzenleyen, işlemleri sıraya koyan, belli yapılar oluşturabilen komut dizilimleridir.
Programlama Dili Nedir ?
Bilgisayar genel olarak iki kısımdan oluşur. Yazılım(Software) ve Donanım(Hardware). Bilgisayarı oluşturan fiziksel parçalar(Monitör, Klavye, Ana Kart, Hard Disk vb..) bilgisayarın donanım kısmını oluşturur. Bilgisayarın çalışmasını sağlayan işletim sistemi, işletim sistemi üzerinde oluşturulan diğer programlar, bilgisayarın içerisinde bulunan dosyalar vb.. ise yazılım kısmını oluşturur. Programlar programlama dilleri ile oluşturulur. Assembler, Basic, Cobol, Fortran, Pascal, Visual Basic, C, C++ birer programlama dilidir ve her birinin farklı komutları ve kuralları mevcuttur. Programlama dilleri farklı özelliklere sahiptir ve farklı amaçlar için farklı programlama dillerinin kullanılması daha uygundur. C dili matematiksel işlemler, mühendislik ve sistem yazılımlarında daha uygunken, HTLM dili ile internet sayfaları tasarlanır. ASP veya PHP ile internet üzerinden veritabanı uygulamaları geliştirilebilir. Java ve .net(datnet) programlama dilleri yine web(internet) tabanlı programlama dilleridir ve internet üzerinde çok değişik amaçlı uygulamaların hazırlanmasında kullanılırlar. Bu diller ile oluşturulan ****** dosyaları HTML dilinden farklı olarak kullanıcının ulaşabileceği açık kod uygulamaları değildir. Database veya veri tabanı denen ve bilgilerin saklanması, depolanması, sınıflandırılması ve sorgulanmasında büyük kolaylıklar sağlayan diller de (SQL- Structured Query Language, Oracle ) kısmen programlama dili kısmen de database programları olarak kabul edilebilir.
Programlama dilleri ile bilgisayarda çok çeşitli amaçlarla kullanılabilecek programlar oluşturulur. Programlama dillerini insan ile bilgisayar arasında iletişim kuran, insan dilini bilgisayar diline çeviren iletişim kanalı olarak da tanımlayabiliriz. Bilgisayarın kayıt mantığının temelinde elektronik olarak bitler şeklinde yazılan sıfır(0) ve bir(1) den oluşan elektronik veya elektro manyetik kayıt ortamlara veya geçici belleklere yazılan bilgiler vardır(Hard disk, ram, rem bellek vb..). Bu bitlerden oluşan kayıtlar yorumlanarak anlamlı komutlara dönüştürülür. Programlama dilleri ile daha anlaşılır olarak kodlanan komutlar derlenip yorumlanarak daha alt düzeyde elektronik olarak işlenebilen komutlara dönüştürülür.
Bilgisayar Programları Nasıl Yazılır ?
Programlar programlama dilleri ile yazılır. Konuştuğumuz dildeki gramer kuralları, anlam ve mantık ilişkileri gibi programlama dilleri de kurallar, dizilim mantığı ve komutlar içerir. Programlama dillerinde bu kurallar daha katıdır ve yazılanların derlenmesi ve programa dönüşmesi için programlama dilinin kurallarına uyulması gerekir.
Programlara dillerine ait bir arayüz bulunur ve bu arayüz üzerinde programcı yapmak istediği işleme göre gerekli komutları yazar, gerekli formları oluşturabilir. Bu arayüz, programın komutlarının yazılabileceği bir editör, programlama diline ait araç ve nesneler (tools, object, component) bazı yardımcı programlama araçlarından oluşur. Modern nesneye dayalı programlamada, yani OOP(Object Oriented Programming) tabanlı visual programlamada ,programcı formlar oluşturarak, formlar üzerinden yordamlar oluşturmak, nesnelere özellik vermek, yeni nesneler yaratmak, nesneye ait olayları(event) kontrol etmek gibi çok yönlü ve karmaşık süreçlerle ilgili işlemleri yapabilmektedir. Modern programlama tekniğinde komutlar yukarıdan aşağı çalışan ve sırayla işlem yapan tekdüze bir süreci ifade etmez, oluşturulan nesnelere ait pek çok özellik içerir ve süreç tek yönlü değil, bir ağacın dalları gibi farklı yönlerden farklı şekilde işleyebilir.
Bu arayüz aracılığı ile oluşturulan yazılım derlenerek(compile), bilgisayarın anlayabileceği dile çevrilir ve bilgisayarda çalıştırılabilecek bir dosyaya (exe, dll vb..) dönüştürülür. Özellikle web programlamada, oluşturulan kodlar başka bir dosyaya dönüştürülmeksizin direkt olarak yorumlanabilir. Yani bazı kodlar açıktır(HTML vb..) derlenerek exe vs..gibi dosyaya dönüştürülmeden kullanılır.
Programcı nasıl çalışmalıdır ?
Programcılık her şeyden önce sabırlı olmayı gerektiren bir meslektir. İstenilen sonuçlara ulaşmak çoğu zaman sabırlı ve sistemli bir çabayı gerektirir. Programcı yaratıcı ve araştırmacı olmalı, hızla değişen ve yenilenen yazılım ve bilgisayar-teknoloji dünyasını takip etmeli, yeniliklere açık olmalı, analitik düşünebilmeyi, analiz yapabilmeyi, analizlerden sonuçlar çıkarmayı iyi bilmelidir. Programcılıkta mantık birinci derecede önemli bir öğedir ve mantık kurallarının çok iyi bilinmesi gerekir.
Programcı her şeyi önceden tasarlayamasa da bir projeye başladığında olası adımları önceden planlayarak bir akış diyagramı oluşturmalıdır. Algoritma denen bu akış diyagramı ile işe nereden başlanılması gerektiği, belli adımlarda neler ile karşılaşılabileceği, bu adımların farklı seçeneklerinde nasıl davranılması gerektiği, nerelerde esneklik tanınabileceği, oluşturulan çerçevenin sınırlarının ne olacağı belirlenmelidir. Başlangıçta bu planlama yapılmadığı takdirde, farklı şekilde oluşturulan ve belli bir aşamaya gelmiş bir projeye yeni bir mantığın adapte edilmesi çok külfetli ve zaman alabilen bir işleme dönüşebilir, hatta bazen imkansız hale gelebilir. Bu durumda tekrar başa dönülmesi, yapılan işin ve harcanan zamanın boşa gitmesi istenmeyen ama sık sık karşılaşılan bir durumdur.
Başka bir alandan bir örnek vererek ne söylemek istediği açıklamaya çalışayım. Diyelim ki 10 katlı bir bina yapmak için bir plan hazırladığınızda nasıl temelde kullanacağınız demir ve beton miktarını, kolon genişlikleri ve yerini 10 kata göre hesaplayıp binanın temelini ona göre atıyorsanız, bilgisayar programcılığında da temelde oluşturacağınız altyapıyı, yapının tümünü düşünerek oluşturmak zorundasınız. Temeli 10 katlı binaya göre atıp 100 katlı bina inşa edemezsiniz. Başka bir yönden şöyle düşünelim; 10 katını yaptığınız normal betonarme bir binanın tüm katlarını 3 metre tavan yüksekliğinde inşa ettikten sonra fikir değiştirip 5. ve 6. katlarını 4 metre yapamayacağınız gibi bilgisayar programcılığında da geriye dönüşü çok zor olan yapılarla karşılaşabilirsiniz. Fakat aynı binayı prefabrik olarak değişik malzemelerden oluşturup gerekli vinç mekanizmasını koyarak esnek olarak tasarlarsanız istediğiniz katın yüksekliğini değiştirebilirsiniz. Tasarlanan programın da mümkün olduğu kadar esnek olması ve değişimlere açık bir yapıya sahip olmasında sayısız yarar vardır. Parametrik ve fonksiyonel olarak tanımlayabileceğimiz yapılarla oluşturulan yazılım hep yazılımcı için hem de programı kullanan kullanıcı için çok daha büyük kolaylık ve esneklik sağlayacaktır.
İyi bir programın kıstasları nelerdir ?
Eğer yapılan program kapsamlı ise çok karmaşık ve çok ihtimalli bir yapı üzerinde inşa edilmiş demektir bu kapsamlı ve karmaşık yapının kullanıcıya en basit haliyle yansıtılması gerekir. Yani kullanılan program kullanıcıya yansıyan kısmında karmaşık tasarımlar, gereksiz form ve pencereler, fazla sayıda menü ve buton yerine sade ve anlaşılır bir arayüz oluşturulmalı yani kolay kullanılabilmelidir. .İyi bir program her şeyden önce amaca uygun olmalı, programdan istenilen sonucu verebilmede başarılı olmalıdır. Program parametrik bir yapıda farklı seçeneklerde farklı sonuçlar vererek, kullanıcılara daha fazla sayıda alternatif sunmalı mümkün olduğunca hatalardan arındırılmalıdır. Yukarıda da basedildiği gibi esnek olabilmeli, yeni şart ve durumlara mümkün olduğunca kolay adapte edilebilmelidir.