برنامه نویسی مبتنی برجریان
مقایسه با سایر پارادایم‌ها و روش‌ها > برنامه نویسی ساختار یافته جکسون (JSP) و توسعه سیستم جکسون (JSD)

این روش فرض می‌کند که یک برنامه باید به عنوان یک سلسله مراتب رویه ای واحدهای فرعی ساخته شود. نقطه شروع آن توصیف برنامه به عنوان مجموعه ای از "خطوط اصلی"، بر اساس ساختار داده‌های ورودی و خروجی است. سپس یکی از این "خطوط اصلی" برای هدایت کل برنامه انتخاب می‌شود و سایر موارد برای تبدیل آنها به زیرآبی (از این رو نام "وارونگی جکسون") باید "وارونه" شوند. این بعضی اوقات منجر به آنچه که "برخورد" می‌شود، می‌شود که این برنامه به چندین برنامه یا کارنتین تقسیم شود. هنگام استفاده از FBP، این فرایند وارونگی لازم نیست، زیرا هر مؤلفه FBP را می‌توان یک "خط اصلی" جداگانه در نظر گرفت.
FBP و JSP مفهوم درمان یک برنامه (یا برخی مؤلفه‌ها) را به عنوان تجزیه کننده جریان ورودی به اشتراک می‌گذارند.
در کار بعدی جکسون، یعنی توسعه سیستم جکسون (JSD)، ایده‌ها بیشتر توسعه یافت.
در JSD، طراحی به عنوان یک طراحی شبکه تا مرحله اجرای نهایی حفظ می‌شود. سپس این مدل به تعداد پردازنده‌های متوالی به تعداد پردازنده‌های موجود تبدیل می‌شود. جکسون در بخش ۱٫۳ از کتاب خود (اجرای برنامه‌های اضافی) در مورد امکان اجرای مستقیم مدل شبکه ای که قبل از این مرحله وجود دارد بحث می‌کند:
FBP توسط MA Jackson به عنوان رویکردی شناخته شد که از روش وی در مورد «تجزیه برنامه در فرآیندهای پی در پی که توسط یک مکانیزم شبیه به کوروتین ارتباط برقرار می‌شود» پیروی می‌کند.
WB Ackerman یک زبان کاربردی را به عنوان زبان تعریف می‌کند که تمام مراحل پردازش آن را با استفاده از اپراتورهای اعمال شده بر روی ارزش‌ها انجام می‌دهد. اولین زبان کاربردی شناخته شده LISP بود.
یک جزء FBP را می‌توان تابعی دانست که جریان (های) ورودی خود را به جریان (های) خروجی آن تبدیل می‌کند. این توابع سپس برای ایجاد تحولات پیچیده‌تر ترکیب می‌شوند، همان‌طور که در اینجا نشان داده شده‌است:
اگر همان‌طور که نشان داده می‌شود جریان را با حروف کوچکتر نشان دهیم، نمودار فوق می‌تواند به صورت زیر به صورت زیر نشان داده شود:
c = G (F (a) , F (b))؛
همان‌طور که در نماد عملکردی F می‌تواند دو بار استفاده شود زیرا فقط با مقادیر کار می‌کند و بنابراین عوارض جانبی ندارد، در FBP دو مورد از یک جزء خاص ممکن است همزمان با یکدیگر باشد و بنابراین اجزای FBP نباید عوارض جانبی داشته باشند. یا نماد عملکردی به وضوح می‌تواند مورد استفاده قرار گیرد تا حداقل بخشی از یک شبکه FBP را نشان دهد.
سپس این سؤال پیش می‌آید که آیا مؤلفه‌های FBP می‌توانند خودشان با استفاده از نماد عملکردی بیان شوند. WH Burge نشان داد که چگونه می‌توان با استفاده از شیوه برنامه نویسی بازگشتی، برنامه‌ها را تولید کرد، اما این اثر از نظر (جریان) مقادیر اتمی بود. در FBP، لازم است که بتوانید قطعات داده‌های ساخت یافته (IPهای FBP) را توصیف و پردازش کنید.
علاوه بر این، اکثر سیستم‌های کاربردی فرض می‌کنند که تمام داده‌ها در همان زمان در حافظه موجود هستند، در حالی که برنامه‌های FBP باید در عین حال که از منابع محدود استفاده می‌کنند قادر به پردازش جریان‌های طولانی مدت از داده‌ها باشند. فریدمن و ویز با افزودن مفهوم "منفی تنبل" به کارهای Burge راهی برای انجام این کار پیشنهاد دادند. این امر شرط حذف هر دو استدلال "منفی" را در همان لحظه زمان حذف کرد. "منفی تنبل" در واقع جریان ایجاد نمی‌کند تا هر دو استدلال آن محقق شود - قبل از آن به سادگی "وعده" ای را برای انجام این کار ثبت می‌کند. این اجازه می‌دهد تا یک جریان از جلو به صورت پویا تحقق یابد، اما با یک پایان عقب غیر واقعی. پایان جریان تا پایان فرایند غیر واقعی باقی می‌ماند، در حالی که آغاز دنباله ای طولانی مدت از موارد است.