İçeriğe atla

Erken Eniyileme

Kontrol Edilmiş

Erken eniyileme (prematüre optimizasyon) yazılım tasarımı yapılırken başarımın gözönünde bulundurulmasına verilen addır. Bu yaklaşımda program tasarlanırken nerede yavaş olabileceği gözönünde bulundurulur ve tasarım sürecinde programın hızlı olmasına çaba sarf edilir.

Erken iyilemenin tersi ardıl eniyilemedir. Bu yaklaşımda program başarım şartı olmadan tasarlanır ve programlanır. Elde edilen program yavaş fakat gereksinimleri sağlayan durumdadır. Eniyileme işlemi bu program üzerinde yapılır ve hız kazanımı sağlanacak noktalar yeniden yazılır.

Donald Knuth[1] ve Charles Hoare gibi tanınmış bilgisayar bilimcileri sonradan yapılan eniyilemenin daha yararlı olduğunu belirtmiştir. Savları programların başarım tereddütleriyle tasarlanmasının onları daha karmaşık hale getirdiği, tam olarak sorunların nerede olacağının kestirilememesidir. Sonradan yapılan geliştirmeler elde olan kodda sorun buldukları için sadece sorunlu kısımlar değiştirilerek verimli bir kod elde edilebilir ve programın geri kalanı basit yapısını koruyabilir.

Notlar

  • ^"Küçük iyileştirmelerin %97'sini unutmak gerek. Erken eniyilendirme tüm kötülüklerin anasıdır." (Donald Knuth, Code Complete)

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Linux</span> Bir işletim sistemi çekirdeği

Linux ; Linux çekirdeğine dayalı, açık kaynak kodlu, Unix benzeri bir işletim sistemi ailesidir. GNU Genel Kamu Lisansı versiyon 2 ile sunulan ve Linux Vakfı çatısı altında geliştirilen bir özgür yazılım projesidir. Linux ismi ilk geliştiricisi olan Linus Torvalds tarafından 1991 yılında verilmiştir. Günümüzde süper bilgisayarlarda, akıllı cihazların ve internet altyapısında kullanılan cihazların işletim sistemlerinde yaygın olarak kullanılmaktadır. Bunlardan en popüler olanı Google tarafından geliştirilen Android işletim sistemidir.

<span class="mw-page-title-main">Özgür yazılım</span> belirli kullanıcı kullanım, kopyalama, değiştirme, yeniden dağıtma özgürlüğünün (değiştirilmiş dahil) mevcut olduğu yazılım

Özgür yazılım, kullanıcısına yazılımı herhangi bir amaç için çalıştırma, inceleme, değiştirme ve dağıtma özgürlükleri tanıyan yazılım türüdür. Tersi, özel mülk yazılımdır.

<span class="mw-page-title-main">Tarayıcı savaşları</span>

Tarayıcı Savaşları, elektronik cihazların İnternete bağlanırken kullandıkları yazılımlar olan ağ tarayıcısı üreticisi şirketler arasında yaşanan ve pazar payını elinde tutmak ya da artırmak için girişilen yarış dönemlerine verilen addır.

<span class="mw-page-title-main">Unix</span>

UNIX türevi işletim sistemleri çok işlemcili çok pahalı makinelerden tek işlemcili, basit ve çok ucuz ev bilgisayarlarına kadar pek çok cihaz üzerinde çalışabilen esnek ve sağlamlığı çok değişik koşullarda test edilmiş sistemlerdir. Fakat özellikle kararlı yapısı ve çok kullanıcılı-çok görevli yapısıyla çok işlemcili sunucularda adeta standart haline gelmiştir ve özellikle akademik dünyada iş istasyonları üzerinde çok yaygın bir kullanım alanı bulmuştur. UNIX, Interdata 7/32, VAX ve Motorola 68000 arasında hızla yayıldı.

<span class="mw-page-title-main">GNU Genel Kamu Lisansı</span>

GNU Genel Kamu Lisansı yaygın kullanılan bir özgür yazılım lisansı. İlk sürümü 1989 yılında Richard Stallman tarafından GNU Tasarısı için kaleme alınmıştır. Üçüncü ve son sürüm ise Richard Stallman'ın yöneticisi olduğu Özgür Yazılım Vakfı (FSF), Eben Moglen ve Yazılım Özgürlüğü Hukuk Merkezi tarafından kaleme alındı ve özgür yazılım topluluklarının çeşitli itiraz ve katkılarıyla son hâlini aldı.

<span class="mw-page-title-main">Deneycilik</span> bilginin sadece veya öncelikle duyusal deneyimden geldiğini belirten teori

Deneycilik, empirizm veya ampirizm, bilginin duyumlar sayesinde ve deneyimle kazanılabileceğini öne süren görüştür. Deneyci görüşe göre insan zihninde doğuştan bir bilgi yoktur. İnsan zihni, bu nedenle boş bir levha gibidir.

<span class="mw-page-title-main">Mavi ekran</span> Windows işletim sisteminin çözemeyeceği bir problem ile karşılaştığınıda kullanıcının sorun hakkında bilgilenmesini sağlayan, monitöre iletilen ekran

Mavi ekran ya da BSoD Microsoft Windows'un bir şekilde üstesinden gelemediği sorunlarda kilitlenip ekrana getirdiği, üzerine birçok esprinin yapıldığı hata ekranı. Windows 98, tanıtıldığı ve tüm dünyada canlı olarak yayınlanan toplantıda bilgisayara bir tarayıcı takılması ile kilitlenmiş ve mavi ekran vererek daha piyasaya sürülmeden herkesin gözü önünde çöken ilk işletim sistemi unvanını almıştı.

Objective-C, C'nin üzerine yazılmış, yansımalı, nesne yönelimli bir programlama dilidir. ObjC, Objective C ve Obj-C olarak da anılır.

<span class="mw-page-title-main">Doğal dil işleme</span> bilgisayar bilimi ve dil bilimi alanı

Doğal Dil İşleme, yaygın olarak NLP olarak bilinen yapay zekâ ve dilbilim alt kategorisidir. Türkçe, İngilizce, Almanca, Fransızca gibi doğal dillerin işlenmesi ve kullanılması amacı ile araştırma yapan bilim dalıdır.

Eksiltili cümle ya da kesik cümle, tam bir cümle kurulabilmesi için gereken ana unsurları içermeyen cümledir. Türkçenin eklemeli yapısı nedeniyle yüklemler tek başına cümle kurmaya yettiği için, "yüklemi olmayan cümle" olarak da tanımlanabilir. Eksiltili cümleler bazen cümleleri pratik gerekçelerle kısaltmak amacıyla, bazen de edebî amaçlarla kullanılırlar.

-Okula.
-Bu kadar erken mi?

Veri modelleme, bir işletmenin, kurumun hatırlamaya değer bulduğu verilerin şekil ve metin olarak ifade edilmesidir. Diğer bir deyişle bir işletmede teknik ve teknik olmayan herkesin bilişim ihtiyaçlarını ifade etmeye çalışırken birbirini anlamada kullanabileceği görsel bir iletişim dilidir. Yazılım geliştirmenin en önemli süreçlerinden biri olan veri modelleme bilişim ihtiyaçlarının keşfedilmesi ve herkesin anlayabileceği bir şekilde belgelenmesi işlemidir. Bilişim ihtiyaçları, veriler ve işletme ihtiyaçlarını destekleyen işletme kurallarıdır. Bir veri modeli herhangi bir işletmenin veya bir yazılımın karmaşık bilişim ihtiyaçlarının tümünü yeterince ifade edebilmek için kullanılabilecek bir araçtır. Bir bilişim sistemi başlıca 3 ihtiyacı karşılar; çeşitli verilerin saklanması, işlenmesi ve görüntülenmesi. Görüldüğü gibi bilişim sistemlerinin temelinde veri yer almaktadır. Veri Tabanı sistemleri ise en basit ifadeyle; verinin saklanması ve işlenmesi ile ilgili olarak geliştirilen genel amaçlı çeşitli yazılımlardır. Kısaca bilginin işlenmemiş hali olarak tanımlanan verinin modellenmesi herhangi bir bilişim sistemi geliştirmede neredeyse işin yarısını oluşturur. Verinin gerçek sahibi kullanıcıdır. Durum böyle olunca bilişim sistemlerinin geliştirilmesi sırasında kullanıcı temelli bir yaklaşım önem kazanmaktadır. Kullanıcı yönelimli bu yaklaşımın bazı yararları aşağıda sıralanmaktadır.

<span class="mw-page-title-main">Casus yazılım</span>

Casus yazılım veya spyware, başlıca zararlı yazılım (malware) türlerinden biridir. Casus yazılımların sanıldığından da yaygın olduğu aşağıdaki birkaç istatistikte de görülmektedir.

<span class="mw-page-title-main">Çekirdek (bilgisayar bilimi)</span>

İşletim sistemi çekirdeği, kısaca çekirdek (kernel), işletim sistemindeki her şeyin üzerinde denetimi olan merkezi bileşenidir. Uygulamalar ve donanım seviyesindeki bilgi işlemleri arasında bir köprü görevi görür. Çekirdeğin görevleri sistemin kaynaklarını yönetmeyi de kapsamaktadır. Genellikle çekirdek, işletim sisteminin temel bir elemanı olarak, yazılımın fonksiyonunu yerine getirebilmesi için kontrol etmesi gereken kaynaklar için düşük seviye soyutlama katmanı sağlayabilir. İşletim sistemi görevleri, tasarımları ve uygulanmalarına göre farklı çekirdekler tarafından farklı şekillerde yapılır. Sistem açılırken belleğe yüklenir ve sistem kapatılıncaya kadar ana bellekte kalır.

Atik yazılım geliştirme ya da çevik yazılım geliştirme, basit prensiplere dayanan yazılım geliştirme metotları gruplarının genel adıdır. Bu metotlar genelde alışılmış denetim ve uyum süreçlerini teşvik eden proje yönetim işlemlerine önayak olurlar. Bu yaklaşım; takım çalışmasıyla gelen liderlik psikolojisi, kendi kendini düzene sokma (örgütleme), sorumluluk, yüksek kalitedeki yazılımların hızlı dağıtımını onaylayan en iyi mühendislik örnekleri ve iş yaşamında müşteri ihtiyaçlarıyla şirketlerin temel amaçlarını, vizyonlarını koordine etme işlevi de görmektedir.

<span class="mw-page-title-main">GNU Kısıtlı Genel Kamu Lisansı</span> Özgür yazılım lisansı

LGPL veya bir başka deyişle GNU Kısıtlı Genel Kamu Lisansı, GPL bir kitaplığı kullanan bir eserin, GPL'deki şartları daraltıcı bir lisansa sahip olmaması zorunluluğunu taşımayan büyük ölçüde pragmatik bir özgür lisans türüdür. LGPL şu gayelere matufen GPL'e tercih edilebilecek bir lisanstır:

Yazılım tasarımı, bir sorunun yazılım çözümü için, sorun giderme ve planlama aşamasıdır. Yazılımın özellikleri kararlaştırıldıktan sonra yazılım geliştiricileri sorun için bir çözüm geliştirir. Bu aşama mimarisel görünüm kadar, alt düzey algoritma gerçeklemeyi de içerir. Yazılım tasarımı için programlamanın ilk aşaması da diyebiliriz. Programlama işlemine başlamadan önce mutlaka ön çalışma yapmak ve programın nasıl işleyeceğini ortaya koymak gerekir. Programlama makine dili veya yüksek seviyeli bir programlama dili kullanılarak yapılır.

<span class="mw-page-title-main">Yazılım yaşam döngüsü</span>

Yazılım yaşam döngüsü, bilgisayar yazılımlarının ilk geliştirme aşamalarından başlayarak; yayındaki mevcut sürümün hatalarının giderilmesi, iyileştirme odaklı yeni ara sürümlerin yayınlarak yazılımın güncellenmesi de dâhil olmak üzere nihai (kararlı) sürüme ulaşana dek geçen geliştirme ve olgunlaştırma aşamalarının tamamını ifade etmek için kullanılan terimdir.

<span class="mw-page-title-main">Özgür ve açık kaynak kodlu yazılım</span> hem kullanımı özgür olan hem de açık kaynak kodlu olan yazılım

Özgür ve açık kaynak kodlu yazılım, kullanıcılara yazılımı ve kaynak kodunu herhangi bir amaç için kullanma, inceleme, değiştirme ve dağıtma özgürlükleri veren bir lisans kapsamında yayınlanan bilgisayar yazılımıdır.

<span class="mw-page-title-main">GNU Projesi</span> Özgür yazılım projesi

GNU Tasarısı, toplu işbirliğini temel alan bir özgür yazılım tasarısıdır. Richard Stallman tarafından Massachusetts Teknoloji Enstitüsü'nde 27 Eylül 1983 tarihinde kamuoyuna duyurulmuştur. Tasarının hedefi işbirliği yoluyla özgür yazılımlar geliştirip dağıtarak bilgisayar kullanıcılarının bilgisayarlarını ve benzeri araçlarını kendi istekleri doğrultusunda özgürce kullanmalarını sağlamaktır. Bu tasarının temelinde kullanıcıların yazılımı çalıştırma, paylaşma, inceleme ve değiştirme konularında özgür olmaları yatar. GNU yazılımları bu özgürlükleri dağıtıldıkları lisans ile yasal olarak güvence altına alır, dolayısıyla GNU yazılımları özgür yazılımlardır.

Sistem analisti veya İş teknolojisi analisti, analist ve bilgi teknolojisi (BT) uzmanıdır. Sistemlerin küçük değişiklikler yoluyla etkin hale getirilmesi veya yeniden planlanmasını sağlamak amacıyla analiz edilmesiyle ilgilenen kişidir ". Bir sistem analisti tipik olarak atanmış veya verilen bir sistemle sınırlıdır ve genellikle bir iş analisti ile birlikte çalışır. "Sistem analist; insanların, metotların ve bilgisayar teknolojisinin işleri en iyi şekilde yerine getirebilmeleri için, organizasyonun problem ve gereksinimleri üzerinde çalışır".Bir sistem analistin, deneyimi ve bilgisi dışındaki en önemli aracı, öncelikle sistemin bir üyesi olan insandır. Ardından gözlem gücü ve dokümanlar gelir.