Bilgisayar yazılımı veya basitçe yazılım, bilgisayara nasıl çalışacağını söyleyen bir veri veya bilgisayar talimatları topluluğudur. Bu, sistemin yapıldığı ve gerçekte işi gerçekleştirdiği fiziksel donanımın tersidir. Bilgisayar bilimi ve yazılım mühendisliğinde, bilgisayar yazılımı, bilgisayar sistemleri, programlar ve veriler tarafından işlenen tüm bilgilerdir. Bilgisayar yazılımı, bilgisayar programlarını, kitaplıkları ve çevrimiçi belgeler veya dijital ortamlar gibi ilgili çalıştırılamayan verileri içerir. Bilgisayar donanımı ve yazılımı birbirini gerektirir ve hiçbiri gerçekçi olarak kullanılamaz.
En düşük programlama seviyesinde, çalıştırılabilir kod, bağımsız bir işlemci tarafından desteklenen makine dili talimatlarından oluşur – tipik olarak merkezi bir işlem birimi (CPU) veya bir grafik işlem birimi (GPU). Bir makine dili, bilgisayarın durumunu önceki durumundan değiştiren işlemci talimatlarını gösteren ikili değer gruplarından oluşur. Örneğin, bir talimat, bilgisayardaki belirli bir depolama konumunda depolanan değeri değiştirebilir – kullanıcı tarafından doğrudan gözlemlenmeyen bir etki. Bir talimat ayrıca, örneğin bir bilgisayar ekranında bazı metinler görüntülemek gibi birçok giriş veya çıkış işleminden birini de çağırır; Kullanıcıya görünmesi gereken durum değişikliklerine neden olur. İşlemci, farklı bir yönergeye “atlama” talimatı verilmediği veya işletim sistemi tarafından durdurulduğu belirtilmedikçe, talimatları verilen sırayla yürütür. 2015 itibariyle, çoğu kişisel bilgisayar, akıllı telefon aygıtı ve sunucusu birden fazla yürütme birimine sahip işlemcilere ya da birlikte hesaplama yapan çoklu işlemcilere sahip ve bilgi işlem geçmişte olduğundan çok daha fazla eşzamanlı etkinlik haline geldi.
Yazılımın büyük bir kısmı üst düzey programlama dillerinde yazılmıştır. Programcılar için daha kolay ve daha verimlidirler çünkü doğal dillere makine diline göre daha yakındırlar. Üst düzey diller, bir derleyici veya tercüman veya ikisinin bir kombinasyonu kullanılarak makine diline çevrilir. Yazılım ayrıca, bilgisayarın makine dili yönergelerine güçlü şekilde uyuşan ve bir montajcı kullanılarak makine diline çevrilmiş olan düşük düzeyli bir montaj dilinde de yazılabilir.
İçindekiler
- 1 Tarihçe
- 2 Tipler
- 3 Başlıklar
- 4 Tasarım ve uygulama
- 5 Sanayi ve organizasyonlar
- 6 Referanslar
Tarihçe
İlk yazılımın ne olacağına ilişkin bir taslak (algoritma), 19. yüzyılda planlanan Analitik Motor için Ada Lovelace tarafından yazılmıştır. Motorun Bernoulli Sayıları’nı nasıl hesaplayacağını göstermek için kanıtlar yarattı. Kanıtlar ve algoritma nedeniyle, ilk bilgisayar programcısı olarak kabul edilir.
Yazılım hakkındaki ilk teori – bugün bildiğimiz bilgisayarların oluşturulmasından önce – Alan Turing tarafından 1935 tarihli Bilgisayarlı Sayılar Üzerine makalesinde Entscheidungsproblem Uygulaması (karar sorunu) ile önerildi.
Bu sonuçta bilgisayar bilimi ve yazılım mühendisliği akademik alanlarının oluşturulmasına neden oldu; Her iki alan da yazılımı ve onun oluşumunu inceler. Bilgisayar bilimi, bilgisayar ve yazılımın teorik çalışmasıdır (Turing’in makalesi bilgisayar biliminin bir örneğidir), yazılım mühendisliği ise mühendislik uygulaması ve yazılımın geliştirilmesidir.
Ancak, 1946’dan önce, şimdi anladığımız gibi, yazılım henüz depolanmış dijital bilgisayarların belleğinde depolanan programlar değildi. İlk elektronik hesaplama cihazları bunun yerine “yeniden programlamak” için yeniden kablolandı.
Tipler
Hemen hemen tüm bilgisayar platformlarında, yazılım birkaç geniş kategoride gruplandırılabilir.
Amaç veya kullanım alanı
Uygulama yazılımı
Bilgisayar sistemini, temel işlevleri yapmanın ötesinde özel işlevler gerçekleştirmek veya eğlence işlevleri sağlamak için kullanan bir yazılımdır. Birçok farklı uygulama yazılımı vardır, çünkü modern bir bilgisayarla gerçekleştirilebilecek görevler çok büyüktür.
Sistem yazılımı
Bu, doğrudan bilgisayar donanımını çalıştıran, kullanıcıların ve diğer yazılımların ihtiyaç duyduğu temel işlevleri sağlamak ve uygulama yazılımını çalıştırmak için bir platform sağlamak için kullanılan yazılımdır. Sistem yazılımı şunları içerir:
İşletim sistemleri
Bu, kaynakları yöneten temel yazılım koleksiyonlarıdır ve “üstünde” çalışan diğer yazılımlar için ortak hizmetler sunar. Denetleyici programlar, önyükleyiciler, kabuklar ve pencere sistemleri işletim sistemlerinin temel parçalarıdır. Uygulamada, bir işletim sistemi ek yazılım (uygulama yazılımı dahil) ile birlikte gelir, böylece kullanıcı potansiyel olarak yalnızca bir işletim sistemine sahip bir bilgisayarla bazı işler yapabilir.
Aygıt sürücüleri
bilgisayara bağlı olan belirli bir cihazı çalıştıran veya kontrol eder. Her aygıtın en az bir karşılık gelen aygıt sürücüsüne ihtiyacı vardır; Bir bilgisayar tipik olarak en az bir giriş cihazına ve en az bir çıkış cihazına sahip olduğundan, bir bilgisayar tipik olarak birden fazla cihaz sürücüsüne ihtiyaç duyar.
Araçlar
Bilgisayarların bakımı ve bakımında kullanıcılara yardımcı olmak için tasarlanmış bilgisayar programlarıdır.
Kötü amaçlı yazılım veya kötü amaçlı yazılım
bilgisayarlara zarar vermek ve bozmak için geliştirilmiş bir yazılımdır. Bu nedenle, kötü amaçlı yazılım istenmeyen bir durumdur. Kötü amaçlı yazılımlar, bilgisayarla ilgili suçlarla yakından ilişkilidir, ancak bazı kötü amaçlı programlar pratik şakalar olarak tasarlanmış olabilir.
Uygulama niteliği veya etki alanı
Web tarayıcıları ve Microsoft Office gibi masaüstü uygulamalarının yanı sıra akıllı telefon ve tablet uygulamaları (“uygulamalar” olarak adlandırılır). (Yazılım endüstrisinin bazı bölümlerinde, mobil uygulamaları bir dereceye kadar masaüstü uygulamalarıyla birleştirmek için bir zorlama var. Windows 8 ve daha sonra Ubuntu Touch, aynı uygulama tarzı kullanıcı arayüzü masaüstlerinde, dizüstü bilgisayarlarda kullanılmasına izin vermeye çalıştı. cep.)
JavaScript komut dosyaları, genellikle bir web sayfası bir web tarayıcısı eklentisine gerek olmadan yüklendiğinde doğrudan web tarayıcısının içinde çalışan web sayfalarına gömülü yazılım parçalarıdır. Diğer programlama dillerinde yazılmış yazılımlar, yazılım JavaScript’e çevrilirse veya bu dili destekleyen bir web tarayıcısı eklentisi kuruluysa, web tarayıcısında da çalıştırılabilir; ikincisinin en yaygın örneği, Adobe Flash eklentisi tarafından desteklenen ActionScript komut dosyalarıdır.
Sunucu yazılımı:
Genellikle web sunucusu üzerinde çalışan ve dinamik olarak oluşturulan web sayfalarını web tarayıcılarına çıkaran web uygulamaları; PHP, Java, ASP.NET, hatta sunucuda çalışan JavaScript bile. Modern zamanlarda bunlar genellikle web tarayıcısında çalıştırılacak bazı JavaScript’leri içerir, bu durumda genellikle sunucuda, kısmen web tarayıcısında çalışırlar.
Eklentiler ve uzantılar, başka bir yazılım parçasının işlevselliğini genişleten veya değiştiren bir yazılımdır ve çalışması için bu yazılımın kullanılmasını gerektirir;
Gömülü yazılımlar, gömülü sistemler, tek kullanımlık cihazlar veya araba ve televizyonlar gibi birkaç kullanım için donanım yazılımı olarak bulunur (kablosuz yonga setleri gibi bazı gömülü cihazların PC gibi sıradan, gömülü olmayan bir bilgisayar sisteminin parçası olabileceği halde veya akıllı telefon). Gömülü sistem bağlamında, sistem yazılımı ile uygulama yazılımı arasında bazen net bir ayrım yoktur. Bununla birlikte, bazı gömülü sistemler gömülü işletim sistemlerini çalıştırır ve bu sistemler sistem yazılımı ve uygulama yazılımı arasındaki farkı korur (genellikle her zaman çalışan yalnızca bir sabit uygulama vardır).
Microcode, işlemciye kendi makine kodunu nasıl çalıştıracağını söyleyen, göreceli olarak belirsiz olan özel bir gömülü yazılım türüdür, bu yüzden aslında makine kodundan daha düşük bir seviyedir. Tipik olarak işlemci imalatçısına özeldir ve gerekli olan herhangi bir düzeltici mikrokod yazılımı güncellemesi kullanıcılar tarafından sağlanır (ki bu işlem, yedek işlemci donanımının nakliyesinden çok daha ucuzdur). Dolayısıyla, sıradan bir programcı, bununla baş etmek zorunda kalmayı beklemeyecekti.
Programlama araçları
Programlama araçları ayrıca, yazılım geliştiricilerin (aynı zamanda programcılar, kodlayıcılar, bilgisayar korsanları veya yazılım mühendisleri olarak da bilinir) yazılım oluşturmak, hata ayıklamak, bakımını yapmak (örneğin iyileştirmek veya düzeltmek) veya başka bir şekilde desteklemek için kullandıkları programlar veya uygulamalar şeklinde yazılımdır.
Yazılım bir veya daha fazla programlama dilinde yazılmıştır; var olan birçok programlama dili vardır ve her biri, her biri kendi programlama araçlarından oluşan en az bir uygulamaya sahiptir. Bu araçlar, bir görevi gerçekleştirmek için bir araya getirilebilecek derleyiciler, hata ayıklayıcılar, tercümanlar, bağlayıcılar ve metin düzenleyicileri gibi nispeten bağımsız programlar olabilir; veya kendi kendine yeten araçların işlevselliğinin çoğunu veya tamamını birleştiren entegre bir geliştirme ortamı (IDE) oluşturabilirler. IDE’ler, ilgili bireysel araçları çağırarak veya işlevlerini yeni bir şekilde yeniden uygulayarak yapabilirler. Bir IDE, belirli bir projedeki dosyaları aramak gibi belirli görevleri yapmayı kolaylaştırabilir. Birçok programlama dili uygulaması, hem bireysel araçlar hem de bir IDE kullanma seçeneği sunar.
Başlıklar
Mimari
Kullanıcılar genellikle programcılardan farklı şeyler görürler. Modern genel amaçlı bilgisayarları kullananlar (gömülü sistemler, analog bilgisayarlar ve süper bilgisayarlar yerine) genellikle çeşitli görevleri yerine getiren üç yazılım katmanını görür: platform, uygulama ve kullanıcı yazılımı.
Platform yazılımı
Platform, üretici yazılımı, aygıt sürücüleri, işletim sistemi ve tipik olarak kullanıcının bilgisayarla ve çevre birimleriyle (ilgili ekipman) etkileşime girmesini sağlayan grafiksel bir kullanıcı arayüzü içerir. Platform yazılımı genellikle bilgisayarla birlikte gelir. Bir bilgisayarda genellikle bir platform yazılımı değiştirmek için yeteneği olacaktır.
Uygulama yazılımı
Uygulama yazılımı veya Uygulamalar, çoğu kişinin yazılımı düşündüğü zaman ne düşündüğüdür. Tipik örnekler arasında ofis takımları ve video oyunları yer almaktadır. Uygulama yazılımı genellikle bilgisayar donanımından ayrı olarak satın alınmaktadır. Bazen uygulamalar bilgisayarla birlikte gelir, ancak bu, bağımsız uygulamalar olarak çalıştıkları gerçeğini değiştirmez. Uygulamalar, genellikle belirli platformlar için uyarlanmış olsalar da, genellikle işletim sisteminden bağımsız programlardır. Çoğu kullanıcı derleyicileri, veritabanlarını ve diğer “sistem yazılımlarını” uygulama olarak düşünür.
Yazılımcı tarafından geliştirilen yazılım
Yazılımcı gelişimi, kullanıcıların özel ihtiyaçlarını karşılamak için sistemleri düzenler. Kullanıcı yazılımı, elektronik tablo şablonları ve kelime işlemci şablonları içerir. E-posta filtreleri bile bir tür kullanıcı yazılımıdır. Kullanıcılar bu yazılımı kendileri oluşturur ve ne kadar önemli olduğunu görmezden gelir. Kullanıcı tarafından yazılan yazılımın varsayılan uygulama paketlerine ne kadar yetkin bir şekilde entegre edildiğine bağlı olarak, birçok kullanıcı orijinal paketler arasındaki farkın ve meslektaşların neler eklediğinin farkında olmayabilir.
infaz
Bilgisayar yazılımı, bilgisayarın depolama alanına (sabit sürücü veya bellek gibi) “yüklenmelidir”. Yazılım yüklendikten sonra, bilgisayar yazılımı çalıştırabilir. Bu, uygulama yazılımından, sistem yazılımı aracılığıyla talimatların nihayetinde makine kodu olarak verilen donanıma geçirilmesini içerir. Her komut, bilgisayarın bir işlem yapmasına neden olur – verileri taşır, bir hesaplama yapar veya talimatların kontrol akışını değiştirir.
Veri hareketi tipik olarak bellekteki bir yerden diğerine doğrudur. Bazen, CPU’da yüksek hızlı veri erişimi sağlayan bellek ve kayıtlar arasında veri taşınmasını içerir. Verilerin, özellikle büyük miktarlardaki verilerin taşınması maliyetli olabilir. Bu nedenle, bazen veri yerine “işaretçiler” kullanmaktan kaçınılır. Hesaplamalar, değişken veri elemanının değerini artırmak gibi basit işlemleri içerir. Daha karmaşık hesaplamalar, birçok işlemi ve veri öğesini birlikte içerebilir.
Kalite ve güvenilirlik
Yazılım kalitesi, özellikle Microsoft Office, Microsoft Windows ve Linux gibi ticari ve sistem yazılımları için çok önemlidir. Yazılım hatalıysa (buggy), bir kişinin işini silebilir, bilgisayarı çökertebilir ve diğer beklenmeyen şeyleri yapabilir. Hata ve hatalara, alfa ve beta testi sırasında sıklıkla keşfedilen “hatalar” denir. Yazılım, genellikle yazılımın yaşlanması, görülmeyen hataların bir araya getirilmesinden kaynaklanan artan performans düşüşü olarak bilinen bir kurbandır.
Yazılım testleriyle birçok hata keşfedilir ve giderilir (ayıklanır). Ancak, yazılım testi nadiren (eğer varsa) her hatayı ortadan kaldırır; Bazı programcılar “her programda en az bir hata daha var” (Lubarsky Kanunu). Şelale yazılım geliştirme yönteminde, genellikle ayrı test ekipleri kullanılır, ancak daha yeni yaklaşımlarda, topluca çevik yazılım geliştirme olarak adlandırılan geliştiriciler genellikle kendi testlerini yapar ve geri bildirim almak için yazılımı düzenli olarak kullanıcılara / müşterilere gösterir. Yazılım, birim testi, regresyon testi ve manuel olarak veya en yaygın olarak otomatik olarak yapılan diğer yöntemlerle test edilebilir, çünkü test edilecek kod miktarı oldukça büyük olabilir. Örneğin, NASA, birçok işletim sistemi ve iletişim işlevi için son derece titiz yazılım test prosedürlerine sahiptir. NASA tabanlı işlemlerin çoğu, komut programları aracılığıyla birbirleriyle etkileşime girip birbirlerini tanımlar. Bu, NASA’da çalışan birçok kişinin genel olarak işlevsel sistemleri kontrol etmesini ve değerlendirmesini sağlar. Komut yazılımı içeren programlar, donanım mühendisliği ve sistem işlemlerinin birlikte daha kolay çalışmasını sağlar.
Lisans
Yazılımın lisansı, kullanıcıya yazılımı lisanslı ortamda kullanma hakkı verir ve ücretsiz yazılım lisansları söz konusu olduğunda, kopya yapma hakkı gibi başka haklar da verir.
Özel yazılım iki türe ayrılabilir:
“ücretsiz deneme” yazılımı veya “free trial” yazılımı kategorisini içeren ücretsiz yazılım.
Tasarım ve Uygulama
Yazılımın tasarımı ve uygulanması, yazılımın karmaşıklığına bağlı olarak değişir. Örneğin, Microsoft Word’ün tasarımı ve oluşturulması, Microsoft Not Defteri’ni tasarlayıp geliştirmekten çok daha fazla zaman aldı, çünkü sonuncusu çok daha temel bir işlevselliğe sahipti.
Yazılım genellikle, Eclipse, IntelliJ ve Microsoft Visual Studio gibi entegre geliştirme ortamlarında (IDE), süreci basitleştiren ve yazılımı derleyebilen (varsa) tasarlanır ve yaratılır (kodlanmış / yazılı / programlanmış). Farklı bir bölümde belirtildiği gibi, yazılım genellikle mevcut yazılımın ve altında yatan yazılımın GTK +, JavaBeans veya Swing gibi sağladığı uygulama programlama arabirimi (API) üzerinde oluşturulur. Kütüphaneler (API’ler) amaçlarına göre kategorize edilebilir. Örneğin, Spring Framework kurumsal uygulamaları uygulamak için kullanılır, Windows Forms kitaplığı, Microsoft Word gibi grafiksel kullanıcı arayüzü (GUI) uygulamalarını tasarlamak için kullanılır ve Windows Communication Foundation, web hizmetlerini tasarlamak için kullanılır. Bir program tasarlandığında, API’ye güvenir. Örneğin, bir Microsoft Windows masaüstü uygulaması, uygulamayı kapatmak veya açmak için Form1.Close () ve Form1.Show () [9] gibi .NET Windows Forms kütüphanesinde API işlevlerini çağırabilir. Bu API’ler olmadan, programcının bu işlevleri tamamen kendileri yazması gerekir. Oracle ve Microsoft gibi şirketler, kendi API’lerini sağlarlar; böylece çoğu uygulamada genellikle çok sayıda API bulunan yazılım kütüphaneleri kullanılarak yazılır.
Karma tablolar, diziler ve ikili ağaçlar gibi veri yapıları ve quicksort gibi algoritmalar yazılım oluşturmak için yararlı olabilir.
Bilgisayar yazılımı, tasarımını, yaratılmasını ve dağıtımını diğer birçok ekonomik maldan farklı kılan özel ekonomik özelliklere sahiptir.
Yazılım oluşturan kişiye programcı, yazılım mühendisi veya yazılım geliştirici denir, hepsinin benzer bir anlamı vardır. Programcı için “kodlayıcı” ve “bilgisayar korsanı” gibi daha resmi olmayan terimler de mevcuttur – ikinci sözcüğün kullanılması karışıklığa neden olabilir, çünkü daha sık olarak yasadışı yollardan bilgisayar sistemlerine giren bir kişi için kullanılır.
Sanayi ve organizasyonlar
Dünyadaki çok çeşitli yazılım şirketleri ve programcılar bir yazılım endüstrisinden oluşmaktadır. Yazılım oldukça karlı bir sektör olabilir: Microsoft’un kurucu ortağı Bill Gates, 2009’da, büyük ölçüde Microsoft’ta önemli sayıda hisse sahibi olması nedeniyle, Microsoft Windows ve Microsoft Office’ten sorumlu şirket oldu. yazılım ürünleri – kendi ürün kategorilerinde her iki pazar lideri.
Kar amacı gütmeyen yazılım kuruluşları arasında Özgür Yazılım Vakfı, GNU Projesi ve Mozilla Vakfı bulunmaktadır. W3C, IETF gibi yazılım standardı organizasyonlar, XML, HTTP ve HTML gibi önerilen yazılım standartları geliştirir, böylece yazılım bu standartlar arasında birlikte çalışabilir.
Diğer tanınmış büyük yazılım şirketleri arasında Google, IBM, TCS, Infosys, Wipro, HCL Teknolojileri, Oracle, Novell, SAP, Symantec, Adobe Sistemleri, Sidetrade, Vebigo ve Corel yer almaktadır;
Referanslar
- ^ “Compiler construction”. Archived from the original on 2 November 2013.
- ^ Jump up to:a b Evans 2018, p. 21.
- ^ Fuegi, J.; Francis, J. (2003). “Lovelace & Babbage and the creation of the 1843 ‘notes'”. Annals of the History of Computing. 25 (4): 16–26. doi:10.1109/MAHC.2003.1253887.
- ^ “Ada Lovelace honoured by Google doodle”. The Guardian. December 10, 2012. Retrieved 25 November 2018.
- ^ “System Software”. The University of Mississippi. Archived from the originalon 30 May 2001.
- ^ “Embedded Software—Technologies and Trends”. IEEE Computer Society. May–June 2009. Archived from the original on 28 October 2013. Retrieved 6 November 2013.
- ^ “scripting intelligence book examples”. Archived from the original on 6 November 2015.
- ^ Gerardo Con Díaz, “The Text in the Machine: American Copyright Law and the Many Natures of Software, 1974–1978,” Technology and Culture 57 (October 2016), 753–79.
- ^ “MSDN Library”. Archived from the original on 11 June 2010. Retrieved 14 June 2010.
- ^ v. Engelhardt, Sebastian (2008). “The Economic Properties of Software”. Jena Economic Research Papers. 2 (2008–045.). Archived from the original on 5 January 2016.
- ^ Kaminsky, Dan (1999). “Why Open Source Is The Optimum Economic Paradigm for Software”. Archived from the original on 22 May 2012.
Kaynaklar
- Evans, Claire L. (2018). Broad Band: The Untold Story of the Women Who Made the Internet. New York: Portfolio/Penguin. ISBN 9780735211759.