Generator (proqramlaşdırma)
Proqramlaşdırmada generatorlar — hər bir icra zamanı əvvəlki dəyərini bərpa edərək, bu dəyəri növbəti dəyərin emalında istifadə edə bilən altproqramdır.
Generator funksiya adi funksiyalara bənzəyir; onun da parametrləri var, adi funksiya kimi çağırılır və məlumatları emal edir. Ancaq generatorun icrası fasiləsiz deyil. Yəni, məsələn hər hansı bir sıranın bütün elementlərinə tətbiq edilməli olan əməliyyatlar, adi funksiyadan fərqli olaraq növbə ilə aparılacaq. Belə olan təqdirdə, daha az yaddaş tələb olunur və əməliyyatlara nəzarət daha rahat olur.
== İşləmə prinsipi ==
Əksər proqramlaşdırma dilləri generator-funksiyaları dəstəkləyir. Ümumi olaraq, hər bir generator-funksiya Iterator interfeysini implementasiya etməklə, aşağıdakı abstraksiyalardan ibarətdir:
Aşağıdakı nümunədə JavaScript proqramlaşdırma dili ilə yazılmış aşağıdakı primitiv generator-funksiya nümunəsini göstərilir:
Göründüyü kimi, counter adlı funksiyanın daxilində sonsuz dövrdə davam edən inkrementasiya əməliyyatı yerinə yetirilir. Analoji alqoritmi adi funksiyalar ilə reallaşdırmaq mümkün deyil. Lakin, generator-funksiyalar icra-kontekstini mərhələli şəkildə apardığı üçün iterasiya əməliyyatı düzgün şəkildə yerinə yetiriləcək. Burada, hər bir icra nəticəsi yield vasitəsilə (əksər proqramlaşdırma dillərində olduğu kimi) geri qaytarılır.