Diğer insanlar verilere DAG uyguladılar, ancak kodlamanın en azından uygulanabilir olduğunu düşünüyorum. Mahbubur R Aaman bundan bahseder, yani gerçekten bu, cevabına kendi başına tamamlanmış bir cevaptan ziyade bir zeyilnamedir.
Bana sonsuz döngülerden yoksun olan zorunlu bilgisayar programlarından daha çok rastlanır (teşekkürler @AndresF.), Directed Acyclic Graph (DAG). Anlamı, kodun olası çalıştırma yollarının yönlendirilmesi (önce bunu, sonra da) ve asiklik (sonsuz döngüler oluşturmama) olmasıdır. Bunlar bir grafik çünkü herhangi bir önemli koddan geçen yol nadiren liste veya ağaç kadar basittir.
XSLT'de 4 yıl çalıştım. Bunun neden iyi bir genel amaçlı programlama dili olmadığını açıklamaya çalışırken çok kötü bir zaman geçirdim, ancak DAG bunun nedeni. Özellikle, XSLT veri odaklı bir dildir. İşlevleri tanımlarsınız (evet, işlevsel programlama anlamında) ancak bu işlevleri kodunuzdan çağırmanız gerekmez. Aksine, XSLT, bir giriş XML belgesinin düğümlerinin seçim ve yineleme kombinasyonunu ayarlar. Bu, giriş verilerinin yapısının hangi fonksiyonların çağrılacağını ve hangi sırayla olduğunu belirlemenizi sağlar.
Programınız 2: 30'da test etmediğiniz bir veri koşulu ile karşılaşıncaya kadar bu çok ilginç ve çok havalıydı ve uyanıp düzeltmeniz gerekiyordu. Verilerin DAG'yi tanımlamasına izin verdiğinizde, DAG'ın tanımı tüm olası giriş koşulları olur - önemsiz olmayan herhangi bir ticari uygulama için hesaplanamaz; onlar düşünülemez.
İlk başta, işlevsel programlamanın bir DAG olamayacağını düşündüm çünkü yürütme sırası bazen programcı tarafından açıkça anlaşılmıyor, hatta düşünülüyordu. Ancak işlevsel bir program bağımlılıkları tanımlar. Aslında, işlevsel programlamanın bildirim niteliği, yürütme sırasını belirtmeden ('b' veya 'c' nin karesi olup olmadığı önemli değildir) sadece bağımlılıkları tanımlamak olarak düşünülebilir (a ^ 2 = b ^ 2 + c ^ 2). , ikisi birlikte eklenmeden önce kareler olduğu sürece).
Ancak, İşlevsel programlama, ayrıntılı bir düzeyde işlemlerin sırası hakkında kasıtlı olarak belirsiz olsa da, bağımlılıklar hakkında kesin olarak anlaşılır. Bunlar eşzamanlılık için elverişli kılan özelliklerdir. Her durumda, kod boyunca yolların bir grafiği hala vardır ve bu grafik hala yönlendirilir (bağımlılıklar bağımlı görevlerden önce değerlendirilmelidir), bu yüzden DAG'nin orada da geçerli olduğunu düşünüyorum.
Güzel soru - gönderdiğiniz için teşekkürler!