Jestem ciekawy - czy programowanie ogólne (GP) jest często używane w przemyśle?
Jest to bardzo szeroko zależne od kontekstu zespołu i projektu.
Na przykład w grach wideo kod jest często „najprostszy” z możliwych (a czasem nawet zbyt prosty), ale w dużych architekturach. Wynika to z faktu, że twórcy gier mają wiele problemów do rozwiązania i nie chcą zawracać sobie głowy meta programowaniem (jest to osobny, bardzo abstrakcyjny i trudny do zrozumienia język wewnątrz C ++).
Jednocześnie podstawowe użycie szablonów jest powszechne nawet w tych sklepach, a niektóre optymalizacje oparte na szablonach można zobaczyć w niektórych bardzo specyficznych funkcjach niektórych silników.
Ale w twórcach gier większość osób po prostu uniknie metaprogramowania.
Teraz, z drugiej strony, niektóre naprawdę złożone lub ciężkie aplikacje przetwarzania, które nie są powszechne, wymagają pewnego rodzaju ciężkiego metaprogramowania ze względu na wymagania dotyczące wydajności i elastyczności (w czasie kompilacji), które nie są powszechne. Pracuję teraz w jednym.
To nie jest powszechne, ale istnieje, a niektóre domeny niszowe (w niektórych osadzonych kontekstach naukowych lub krakujących numery) wymagają od ludzi dużej wiedzy na temat metaprogramowania lub chęci uczenia się.
Pośrodku większość ludzi po prostu użyje metaprogramowania jako „klient”, a nie jako „projektant”. Większość metaprogramowania jest zawarta w bibliotekach, ponieważ biblioteki są narzędziami do kodu i co jest lepszego niż biblioteka, która może dostosować się do niestandardowych typów, z którymi pracujesz do tej pory?
Boost (http://boost.org) to zestaw bibliotek, niektóre z nich są wykonane z ciężkiej czarnej metaprogramowania czarnej magii i są używane w wielu sklepach C ++ jako „STL ++”, rozszerzenie STL (i tak jest). Nie każdy sklep korzysta z niego z kilku powodów, takich jak kompatybilność z kompilatorem (niektóre biblioteki rozszerzeń mogą sprawić, że Twój kompilator będzie błagał o wybaczenie za każdym razem, gdy zranił twoje odczucia ...) i częściej, ponieważ niektórzy programiści nie lubią nie być w stanie zrozumieć jak działa narzędzie w środku (spróbuj zrozumieć Boost.Spirit ...)
Niezależnie od tego, dla jakich firm będziesz pracować, niektórzy wykorzystają ten paradygmat, inni będą mniej lub wcale, a nawet ich zabraniają.
Nie ma zgody, ponieważ nikt nie ma takich samych potrzeb, kontekstu lub zespołu.
Ale nadal, oczywiście, jest używany. Może zapytasz, kto używa boosta na swojej liście mailowej, aby mieć więcej przykładów z prawdziwego świata?