В программном обеспечении Unix оболочки оператор является чрезвычайно мощным инструментом. С небольшим набором основных утилит, системным языком (например, C) и языком сценариев (например, Python) вы можете создавать чрезвычайно компактные и мощные сценарии оболочки, которые автоматически распараллеливаются операционной системой.
Очевидно, что это очень мощная парадигма программирования, но я не видел трубы как абстракции первого класса на любом языке, кроме оболочки script. Код, необходимый для репликации функциональности скриптов с использованием труб, кажется, всегда будет довольно сложным.
Итак, мой вопрос: почему я не вижу что-то похожее на трубы Unix на современных языках высокого уровня, таких как С#, Java и т.д.? Существуют ли языки (кроме сценариев оболочки), которые поддерживают протоколы первого класса? Разве это не удобный и безопасный способ выражения параллельных алгоритмов?
На всякий случай кто-то его подведет, я посмотрел на оператора прямой линии F # (оператор прямой трубы) и больше похож на оператор приложения функции. Насколько я могу судить, он применяет функцию к данным, а не соединяет два потока вместе, но я открыт для исправлений.
Postscript. Проводя некоторые исследования по внедрению сопрограмм, я понимаю, что есть определенные параллели. В блоге Мартин Вольф описывает аналогичную проблему для моего, но с точки зрения сопрограмм вместо труб.