Ekim 2020 Makrolar (1) 1 0
Türk Dil Kurumu’na göre; makro kelimesi Fransızca ‘macro’ kelimesinden dilimize geçmiş “Büyük, Geniş” anlamında bir kelimedir. Bazı kaynaklarda İngilizceden geçtiği de rivayet edilmektedir. Ayrıca etimolojisinde (kelime bilimi) kökeninin Fransızca, Latince ve Antik Yunan’a dayandığı bahsi de geçmektedir. Bu rivayetlere göre; macro "1. büyük, 2. büyük çaplı, en geniş boyutlu, 3. Kapsam veya ölçekte çok büyük” anlamında olup, Fransızcaya Eski Yunanca “makrós” "uzun, büyük" sözcüğünden alıntılanmıştır. Hint-Avrupa Anadilinde *mak-ro biçiminden evrildiği, *māk- "büyük" kökünden türediği rivayet edilmektedir.
Sonuçta günümüz Türkçesinde yaygın olarak büyük şeyleri ifade etmek için “büyük, kapsamlı” anlamlarında, çoğunlukla da önek olarak kullanılan bir kelimedir. Makro Ekonomi, Makro İktisat, Makroskopik vb. Bizim konumuz olan programlamada ise birden fazla komutun bileşiminden oluşan komut grubunu ifade eden bir terimdir.
“Makro” terimi, programlama dillerinin oluşumundan bu yana var olmuş ve ortak görevleri otomatikleştirmek için kullanılmıştır. Öyle ki bu süreç, yazılım programlarını oluşturmak için Assembly dili programlamanın kullanıldığı 1950'lere kadar uzanır. Makrolar başlangıçta (Dow Chemical Corporation-ABD merkezli Kimya Şirketi- ve Air Material Command-ABD Hava Kuvvetleri Lojistik Komutanlığı- için) IBM 705 bilgisayarı kullanılarak geliştirildi. 1960’ların başlarında ise LISP 1.5 dili ile kullanıldı.
1950'lerin ortalarında, dijital bilgisayarlarla program yazmak için yaygın olarak assembly dili (Makine dili) kullanılırken, makrolar iki ana amaç için kullanılıyordu. Farklı assembly deyimleri oluşturarak yazılması gereken kodları tek bir makro kullanarak azaltmak ve program yazım standartlarını uygulamak, diğeri ise bir ön işlemci olan makro derleyici olarak, programlama dili ile yazılan satırları (her satır bir talimat olup, bir iş yaptırır) yeniden çalıştırılmak için kullanılmıştır.
Değişik ifadeler ile tarif etmek gerekirse;
Örneğin; bir yazılım uygulamasının parçası olarak veya bir programlama dilinin parçası olarak makro yazılabilir. İlk durumda, makrolar, uygulamayı kullanarak görevleri daha az tekrarlı hale getirmek için kullanılır. İkinci durumda ise, bir programcının kodun yeniden kullanımının etkinleştirmesine izin veren bir araçtır.
Diğer örnek ise; oluşturulan kod parçacıklarına bir isim verilir ve bu isim her kullanıldığında, makronun içeriği çalıştırılır. Nesnelere veya fonksiyon çağrılarına benzetilebilir.
Başka bir örnek ise; çeşitli diller ile yazılan programlardaki tekrar eden işleri/bir işi yaptıran talimat satırlarını vb. tekrar tekrar çalıştırmak için, bu diller ile etkileşim içinde olan kod parçacıkları denilebilir.
Günümüzde modern dillerde kullanılan fonksiyon/prosedür/metot benzeri yapılara benzemekle beraber, bunlar ile aynı şey olmayan yapılardır. Buradaki ayırt edici özellik ise makroların özelleştirilebilir olmasına karşın, diğerlerinde böyle değildir. Sonraki yıllarda FORTRAN, COBOL ve C gibi üst düzey programlama dilleri tarafından kullanılmasına karşın, 1970’lerin başlarındaki popülerliğini daha sonraki yıllarda, derleyici teknolojisindeki gelişmelere bağlı olarak kaybetmiştir.
Bir makro dili ile bir programlama dili arasındaki ayrım kesin değildir. Genellikle bir makro dili, belirli bir programı özelleştirmeye izin verecek şekilde tasarlanırken, bir programlama dili tamamen yeni programlar yazmak için tasarlanmıştır.
Makrolar bilgisayar programcılığında farklı alanlarda kullanılmıştır. Bilgisayar oyunları, SEO vb.
Makrolar SEO uzmanları tarafından tekrar eden görevleri otomatik olarak gerçekleştirmek için kullanılır. Örneğin, etkinlik tarihleri, haftalık hatırlatıcılar gibi düzenli olarak bir web sitesine yüklenen içeriği biçimlendirmek için kullanılırlar. Ayrıca, Excel elektronik tablolarını otomatik olarak güncellemek veya bağlantı yerleştirme ve değişim amacıyla ortak web sitelerine düzenli e-postalar göndermek için de kullanılırlar.
Makrolar, 1997'de Ultima Online'ın piyasaya sürülmesinden bu yana, MMORPG'ler (Devasa çok oyunculu çevrimiçi rol yapma oyunları) tarafından video oyunlarında yaygın bir şekilde kullanılarak popüler hale getirildi. Belirli oyun içi becerileri geliştirirken, karakterin tekrar eden eylemlerini gerçekleştirmesi için kullanıldılar. Daha sonraki yıllarda diğer oyunlarda klavye veya fare kısayolu olarak makrolar kullanılmıştır. Bir yeteneği etkinleştirmek için belirli bir sırayla birkaç tuşa tıklamak yerine, bu eylemi tek bir düğmeyle gerçekleştirmek için bir makro kullanılmıştır.
Bir makro, ortak görevleri otomatikleştiren küçük bir program veya komut dosyası da olabilir. Bu komut dosyaları genellikle program içinde çalıştırılır ve genellikle de kullanıcı tarafından oluşturulur. Örneğin, bir kullanıcı, özel bir tuş kombinasyonuna bastığında adresinin tamamını ekleyen Microsoft Word için bir makro kaydedebilir. Bir Microsoft Excel kullanıcısı, bir elektronik tablonun seçilen sütunundaki verileri biçimlendirmek için bir makro kaydedebilir.
Hem Word hem de Excel özel makrolar oluşturmayı kolaylaştırırken, diğer birçok program da kullanıcıların makrolar oluşturmasına imkân tanır. Ancak, tüm programlar otomatik komutlara makro olarak atıfta bulunmaz. Örneğin Photoshop, kullanıcıların bir görüntüde yapılan değişiklikleri kaydetmesine izin verir ve adım/işlem serisini bir eylem olarak kaydeder. Bu eylemler daha sonra diğer görüntülere uygulanabilir. Ne adlandırılırsa adlandırılsın, makrolar tekrarlayan görevleri otomatikleştirerek size çok zaman kazandırabilir. Belirli bir programı kullanırken aynı şeyi tekrar tekrar yaptığınızı fark ederseniz, bir makro kaydederek süreci basitleştirebilirsiniz.
Makrolar aşağıdaki gibi çeşitli sınıflara ayrılabilir.
Klavye ve fare makroları; sık kullanılan veya tekrarlanan, genellikle de çok zaman alan çeşitli tuşlama ve fare eylemlerini birer seriye/diziye dönüştürerek bu seriler/diziler vasıtası ile bu eylemleri/işleri otomatik hale getirir. Bu makroları oluşturmak için kullanılan programlara makro kaydediciler denir.
1980'lerde, makro programlarını (SmartKey, SuperKey, KeyWorks, Prokey); senaryoları otomatik olarak biçimlendirip, ardından çeşitli kullanıcı girdi görevlerinde bir araç olarak kullanmak çok popülerdi.
Bu programlar, TSR (çalış, bitir ve sonra da orda kal-DOS işletim sistemi için kullanılmıştır, sistem çağrısının işlemi bittikten sonra, silinmeyip bellekte kalarak ihtiyaç olduğunda yeniden çağırılması) çalışma moduna dayanıyordu ve hangi şartta meydana gelirse gelsin tüm klavye girişlerine uygulanıyordu. Fare ile çalışan kullanıcı ara yüzleri ile klavye-fare makrolarının kelime işlemciler ve elektronik tablolar gibi uygulamalarda kullanılabilirliğinin ortaya çıkmasının ardından, bir dereceye kadar eskimişse de uygulamaya duyarlı klavye makroları oluşturmayı mümkün kılmıştır.
Uygulama makroları ve komut dosyası oluşturma : Bazen de uygulamanın kendisine ait yerleşik makro özellikleri kullanılarak klavye ve fare makroları oluşturulur ki, bunlara da uygulama makroları denir. Bu makrolar, eylemleri sırayla bir kez gerçekleştirilerek kaydedilmek sureti ile oluşturulur.
Programcıların kullandığı metin editörü Emacs (Makroları Düzenleme’nin kısaltması), bu fikri takip ederek bir sonuca ulaşmış ve aslında, editörün çoğunun makrolardan yapıldığını fark etti. Emacs, ilk olarak TECO Editor (TECO Text Editor & Corrector, 1962'de Digital Equipment Corporation bilgisayarlarında kullanılmak üzere geliştirilmiş ve o zamandan beri PC'lerde ve Unix'te kullanılan, hem karakter odaklı bir metin editörü, hem de bir programlama dilidir) dilinde bir grup makronun bir araya getirilmesi suretiyle tasarlandı ve daha sonra Lisp diline taşındı.
Bir diğer metin editörü olan Vim (Unix için Vi Metin Editörü programına bazı eklemelerle oluşturulan bir versiyonudur) ise metin editörü olmanın yanında, oldukça geniş bir makro uygulanmasına da sahiptir. Bir kullanıcının klavyede yazdıkları kaydedilerek bir makro oluşturulur ve daha sonra ihtiyaç olduğunda tıpkı Microsoft Office için VBA makroları gibi yeniden kullanılabilir.
Visual Basic for Applications (VBA), Office 97'den Office 2019'a kadar Microsoft Office'te bulunan bir programlama dilidir. İlk olarak, makro dillerinin dahil edildiği bu uygulamalardan faydalanılarak geliştirildi ve daha sonraları bugün ki halini aldı.
Komut dosyası dillerinde de makrolar kullanılmış olup, örneğin çoğu yaygın uygulama ve bazı PC'ler, komut dosyası dili olarak Rexx'i kullanır.
Makro virüsleri: VBA, çoğu Microsoft Windows Sistem Dosyasına erişebilir ve belge (Word belgesi, Excel çalışma kitabı) açıldığında çalışır. Bu durum VBA'da bilgisayar virüsü yazmayı oldukça kolaylaştırmış ve yazılan bu virüslere de genellikle makro virüsleri denilmiştir. 1990'ların ortalarında en yaygın bilgisayar virüsü türlerinden biri haline gelmiştir.
Ancak, 1990'ların sonlarından bu yana Microsoft, programlarına çeşitli yamalar ekliyor ve güncelliyor. Ayrıca, mevcut anti-virüs programları bu tür virüslere anında karşı koyabiliyor.
Parametreli makro: Bir parametreli makro, kod satırının/makronun çağrıldığı yerin genişlemesi (satır içi genişletme) kavramına dayalı olarak çalışır. Yani, fonksiyonlardaki gibi çağrıldığında işlemleri fonksiyonun içinde değil de, oluşturulan makronun çağrıldığı yerde işlemek suretiyle çalışan bir makro türüdür. Tabi burada makro çağrılırken değişkenlerde kullanmak üzere parametre eklenmektedir. C, Lisp , PL/I ve Scheme gibi dillerde kullanılmıştır.
Bu makronun sonucu, x bağımsız değişkene atanan değere bağlıdır.
#define pred(x) ((x)-1)
Metin değiştirme makroları : İlkel makro sistemlerine sahip C gibi diller ile bazı makine dillerinde derleyici veya makine dili için önişlemci olarak uygulanan makrolardır. C önişlemci makroları, karakter düzeyinde değil, sözcük düzeyinde, basit metinlerin ikamesi/değiştirilmesi esasına göre çalışır. Bazı önemli uygulamalar ise, diğer uygulamalar tarafından çağrılan metin makroları olarak yazılmıştır. Örneğin, CMS'de XEDIT ile yazılan makrolar gibi.
Gömülebilir makrolar : PHP gibi bazı diller, serbest biçimli metne veya diğer dillerin kaynak koduna gömülebilir. Kod parçaları metinsel makro dile benzer, ancak bunlar tam özellikli çok daha güçlü dillerdir.
Prosedürel makrolar: PL/I (Fortran'ın bilimsel hesaplama yeteneklerine ve COBOL'un ticari veri işleme gücüne sahip olması amaçlanarak 1960'ların başında IBM tarafından icat edilen eski bir programlama dilidir) dilindeki makrolar, PL/I'in bir alt kümesine (yani modern dillerdeki bir nevi prosedür /yordam/fonksiyon) yazılır. Derleyici, derleme zamanında önişlemci deyimlerini yürütür ve bu yürütmenin çıktısı, derlenen kodun bir parçasını oluşturur. Makro dili olarak tanıdık bir prosedürel/yordamsal/fonksiyonumsu dili kullanma yeteneği, daha büyük ve daha yavaş bir derleyiciye sahip olsa da, metin ikame/değiştirme makrolarından çok daha fazla güçlüdür.
Sözdizimsel/Syntactic makrolar: Sözlük simgeleri düzeyinde çalışan makro sistemler (C ön işlemcisi gibi) sözcüksel yapıyı güvenilir bir şekilde koruyamaz. Sözdizimsel/Syntactic (Sözdizimi, kod cümlesindeki kod parçacıklarının dizilim sırası, şeklinde tanımlanabilir) makro sistemler bunun yerine soyut sözdizimi ağaçları düzeyinde çalışır ve orijinal programın sözcüksel yapısını korur. Sözdizimsel makro sistemlerin, en yaygın olarak kullanılan uygulamaları, Lisp benzeri dillerde bulunur. Bu diller, tek tip parantez içine alınmış sözdizimleri nedeniyle özellikle bu makro stili için uygundur. Özellikle, tekdüze sözdizimi, makro çağrılarının belirlenmesini kolaylaştırır. Sözdizimsel makrolar Lisp benzeri dillerde bulunmakla birlikte Prolog, Dylan, Scala, Nemerle, Rust, Elixir, Nim, Haxe ve Julia gibi diğer dillerde de mevcuttur. Sözdizimsel makroların, JavaScript, C # ve Python için üçüncü taraf eklentileri de mevcutturlar.
Makineden bağımsız yazılım için makrolar : Makrolar normalde kısa bir dizeyi/metni (makro çağırma) daha uzun bir talimat dizisine/metnine eşlemek için kullanılır. Makroların diğer, daha az yaygın kullanımı, tersini yapmaktır, yani bir talimat dizisini bir makro dizisine eşlemek. Bu bakış, belirli bir bilgisayarın belirli talimat setini makineden bağımsız makrolara eşlemek için temel bir makro derleyici kullanan STAGE2 Mobil Programlama Sistemi tarafından benimsenen yaklaşımdı. Makineden bağımsız makrolarda yazılan uygulamalar, daha sonra ilkel makro derleyiciye sahip herhangi bir bilgisayarda değişiklik yapılmadan çalıştırılabilir. Derleyicilerin neredeyse tüm bilgisayarlarda mevcut olduğu modern programlama dillerinin, özellikle C'nin ortaya çıkışı, böyle bir yaklaşımı gereksiz hale getirmiştir.
Microsoft Excel, 1982'den beri, ilk olarak çok popüler bir CP/M (Mikro Bilgisayarlar için Kontrol Programı) olan Multiplan olarak tanıtıldı, ancak MS-DOS sistemlerinde Lotus 1-2-3'e göre popülerliğini kaybetti. 1987'de Microsoft, Windows için Excel v2.0'ı piyasaya sürdü ve 1988'de Lotus 1-2-3'ü ve ortaya çıkan QuatroPro'yu geride bırakmaya başladı. 1993 yılında Microsoft, Macros olarak da bilinen VBA (Visual Basic for Applications) içeren Windows için Excel v5.0'ı piyasaya sürdü. Sayıları hesaplamak, süreç otomasyonu ve işletmeler için veri sunmak için tekrarlayan görevlerin otomasyonunda neredeyse sınırsız imkanlar açtı.
Kaynak: Wikipedia ve çeşitli web sitelerinden derlenmiştir.