Meta programlama ne kadar yaygındır? [kapalı]


10

Meta-programlamanın projelerde ne sıklıkla kullanıldığını gördünüz mü? Uni'de bunun uygulandığını hiç görmedim, ancak bunu bir önceki işimde gördüm (gördüğümde ne kadar etkili olduğundan havaya uçmuştum).

Ama ne kadar yaygın? Her zaman mı yoksa sadece ara sıra mı kullanılıyor?


5
O kadar yaygın olmayabilir; Lisp'te oldukça yaygın olmasına rağmen, Lisp o kadar yaygın değildir - hatta Common Lisp bile.
paul

açık mı, kapalı mı? Java ve C # kullanan bir uçta, derleyicileri daha sonra derlenen veya yorumlanan dil dosyalarını çıkardığı için muhtemelen meta-programlamadır. Diğerinde ise hemen hemen hiç kimse, derleyici oluşturdukları bir dilde kod üretmek için kod yazmaz.
Mó13

Metaprogramlama her yerde bulunur. Autotools'a dayanan herhangi bir açık kaynaklı proje meta programlamayı kullanıyor. Qt dünyasında MOC, LLVM'de tblgen, çok sayıda .NET projesinde T4, JavaScript üreten hemen hemen tüm web projeleri vb.
SK-logic

Yanıtlar:


5

Yansımayı bir tür meta-programlama olarak görüyorsanız, bu nispeten yaygındır. Bazı insanlar için genel programlama (şablonlar ve jenerikler) bile bir meta-programlama şeklidir, bu yüzden daha yaygındır.

Ancak bence, meta-programlama, kod oluşturma dillerinde bile gerçek kod üretimini içeren ve bu nedenle oldukça nadir olan daha karmaşık bir şeydir.


Şablon meta programı neden "gerçek kod üretimi" değildir?!? C ++ şablonları Turing-complete'tadır ve rastgele karmaşık kodlar oluşturabilirsiniz.
SK-logic

@ SK-logic: Yani çalışma zamanında talep üzerine yeni kod üretiliyor. Şablonlar derleyici tarafından işlenir, bunları güçlü bir tür ön derleyici makrosu olarak görebilirsiniz.
Wizard79

neden çalışma zamanında kod oluşturmak istesin? Metaprogramlamanın en güçlü biçimleri (Common Lisp, Racket, Template Haskell vb. Gibi) derleme zamanındadır.
SK-logic

3

Bence hangi dili kullandığınıza bağlı. Yaygın Lisp halkı muhtemelen bunu adil bir şekilde kullanır - Meta-Nesne Protokolü, şeffaf / ortogonal kalıcılık gibi temiz şeylere izin verir - ve Smalltalker'lar bunu sık sık kullanır.


2

Common Lisp projelerinde yaygın ve tutarlı bir şekilde ortaya çıkma eğilimindedir. Bazı açıklamalar / bilgiler için OnLisp ve Let Over Lambda'ya göz atın .

Örneklerden hemen sonraysanız (ve CL'yi biliyorsanız), Antiweb deposuna bakın; kapakların altında devam eden çok sayıda meta-programlama var.


1

Son iki yıldır yeni bir göreve programlamanın ilk biti neredeyse her zaman kod yazmak için kod yazmaktadır. Otomatik komut dosyası oluşturma işlemine kadar basitleştirilebilen bir veritabanı ile etkileşimlerle ilişkili bir ton kazan plakası vardır. Bir nesne oluşturmak için 3 tabloyu sorgulamanız gereken şeyleri düşünün. Gelecekte değişebilecek 10 şey varsa neden kendiniz yazıyorsunuz?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.