Assembly
Assembly dilinin kullanışı > Günümüzdeki kullanım

Günümüzde dikkatleri çok az çekse de assembly dilinin yüksek seviyeli dillere göre faydalılığı ve performansı üzerinde sürekli olarak tartışmalar yapılmaktadır. Assembly dili önemli olduğunda kullanılan spesifik uygun bir yere sahiptir: aşağıya bakınız. Ancak genel olarak modern işlemciler etkin elle yapılan optimizasyonu giderek zorlaştırmaktadır. Ayrıca ve verimliliği sevenlerin korkulu umutsuzluklarına karşın artış gösteren işlemci performansı pek çok CPU'ların zamanın çoğunda boş oturduklarını, I/O işlemleri ve çağrı (paging) gibi önceden tahmin edilen sıkıntıların neden olduğu gecikmelerin söz konusu olduğunu ifade etmektedir. Bu pek çok programcılar için ham kodun çalışma hızını bir mesele olmaktan çıkarmıştır. (Böylece âşikâr performans etkisi olmaksızın yorumlanan dillerin kullanımı artırılmıştır.)
Aslında günümüz uzman pratisyenlerin assembly dilini tercih edebileceği sadece çok az durum vardır: şöyle ki:
Tek başına bir ikilinin icra edilmesi gerektiğinde, bir başka deyişle yüksek seviyeli bir dille bağlantılı olarak çalışma süresi elemanlarına veya kütüphanelerine başvurmaya gerek duyulmaksızın icra etmesi kesinlikle şart olan; bu belki de en çok karşılaşılan durumdur.
Donanımla doğrudan etkileşim sağlandığında, örneği: bir cihaz sürücüsünde veya derleyici tarafından kullanılmayan veya derleyicide bulunmayan işlemciye özel komutların kullanılması halinde.
Ekstrem (aşırı) optimizasyonun gerekmesi halinde, örneğin; işlemci yoğun algoritma içindeki bir dahili döngü(loop) içinde.
Sınırlı kaynakların kullanımını maksimize etmek için ciddi kaynak sıkıntısı içindeki bir sistemin (örneğin: bir dahili sistem) elle kodlanması gerektiğinde; ancak işlemci fiyatı/performansı kanıtlamadığından bu daha az yaygın hale gelmektedir.
Yüksek seviyeli dilin mevcut olmaması halinde, örneğin; bir yeni veya uzmanlaşmış işlemcide.
Günümüzde pek az programcı günlük bazda assembly dilini kullanma gereğini duymaktadır. Performans-kritik uygulamalar için C gibi alt seviyeli bir dil genellikle seçilebilecektir. Şimdi, bir assembly dilinde yazılan programdan daha az verimli olan bir C programını yazmak çok güçtür.
Ancak, assembly dili pek çok Bilgisayar Bilimi programlarında hâlâ öğretilmektedir. Bir araç olarak günümüzde az sayıda programcılar düzenli olarak assembly dili ile çalışmaktaysalar da kolayca görülmeyen ancak önemli olan kavramlar hâlâ önemini sürdürmektedir. İkili (binary) aritmetik, bellek tahsisi, “stack” işleme, karakter seti kodlaması, kesme işlemi ve derleyici tasarımı gibi ana konular üzerinde ayrıntılı olarak çalışmak bir bilgisayarın donanım seviyesinde nasıl çalıştığını tam olarak kavramadan çok zor olacaktı. Bir bilgisayarın davranışı esas itibarıyla kendi komut setiyle belirlendiğinden, bu kavramların öğrenilmesindeki mantıksal usul bir assembly dili üzerinde çalışma yapmaktır. Neyse ki, pek çok modern bilgisayarlar benzer komut setlerine sahiptir, böylece tek bir assembly dili üzerindeki çalışma temel kavramları (concepts) öğrenmek, assembly dili kullanımının uygun olabileceği durumları tanımak ve verimli icra edilebilir bir kodun yüksek seviyeli dillerden yaratılabileceğini anlamak için yeterlidir.