Deprecated: Return type of Pimple\Container::offsetExists($id) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/vendor-prod/pimple/pimple/src/Pimple/Container.php on line 133

Deprecated: Return type of Pimple\Container::offsetGet($id) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/vendor-prod/pimple/pimple/src/Pimple/Container.php on line 98

Deprecated: Return type of Pimple\Container::offsetSet($id, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/vendor-prod/pimple/pimple/src/Pimple/Container.php on line 79

Deprecated: Return type of Pimple\Container::offsetUnset($id) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/vendor-prod/pimple/pimple/src/Pimple/Container.php on line 143

Deprecated: Return type of iThemesSecurity\Lib\Lockout\Execute_Lock\Context::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/lockout/execute-lock/abstract-context.php on line 60

Deprecated: Return type of iThemesSecurity\Lib\Lockout\Execute_Lock\Context::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/lockout/execute-lock/abstract-context.php on line 66

Deprecated: Return type of iThemesSecurity\Lib\Lockout\Execute_Lock\Context::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/lockout/execute-lock/abstract-context.php on line 72

Deprecated: Return type of iThemesSecurity\Lib\Lockout\Execute_Lock\Context::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/lockout/execute-lock/abstract-context.php on line 76

Deprecated: Return type of iThemesSecurity\Lib\Lockout\Execute_Lock\Context::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/lockout/execute-lock/abstract-context.php on line 56

Deprecated: Return type of ITSEC_Lib_Distributed_Storage_Cursor::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/class-itsec-lib-distributed-storage.php on line 578

Deprecated: Return type of ITSEC_Lib_Distributed_Storage_Cursor::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/class-itsec-lib-distributed-storage.php on line 585

Deprecated: Return type of ITSEC_Lib_Distributed_Storage_Cursor::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/class-itsec-lib-distributed-storage.php on line 606

Deprecated: Return type of ITSEC_Lib_Distributed_Storage_Cursor::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/class-itsec-lib-distributed-storage.php on line 613

Deprecated: Return type of ITSEC_Lib_Distributed_Storage_Cursor::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/class-itsec-lib-distributed-storage.php on line 620

Warning: Cannot modify header information - headers already sent by (output started at /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/class-itsec-lib-distributed-storage.php:545) in /srv/sidawson.com/public/htdocs/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 1544

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/core.php on line 1092

Warning: Cannot modify header information - headers already sent by (output started at /srv/sidawson.com/public/htdocs/wp-content/plugins/better-wp-security/core/lib/class-itsec-lib-distributed-storage.php:545) in /srv/sidawson.com/public/htdocs/wp-includes/feed-rss2-comments.php on line 8
Comments on: The Importance Of Pipes https://sidawson.com/2009/03/importance-of-pipes.html Coding; trickery; magic Thu, 13 Jun 2013 19:47:49 +0000 hourly 1 https://wordpress.org/?v=6.4.6 By: Si Dawson https://sidawson.com/2009/03/importance-of-pipes.html/comment-page-1#comment-11 Tue, 21 Apr 2009 18:54:08 +0000 http://sidawson.com/?p=14#comment-11 In reply to Batch-code Jack.

Ha! How could I not reply to this for so long? Very slack of me, I apologise.

You're quite right – in many unexpected ways, DOS was further ahead than the windows behemoth (which is what I was referring to). The difficulty of piping GUI apps together drastically limited the ability of windows apps to scale with anywhere near the simplicity & flexibility of unix (or even dos, text based) systems.

I believe they've started re-addressing this in the last 5 years or so, with a “power” user version of dos shipping as a support kit for admins, buuut, it's still really bandaids on an architectural limitation. Developing a good GUI O/S, it's not for amateurs :)

]]>
By: Batch-code Jack https://sidawson.com/2009/03/importance-of-pipes.html/comment-page-1#comment-9 Fri, 10 Apr 2009 10:49:43 +0000 http://sidawson.com/?p=14#comment-9 (additional info)

Most people who use DOS batches are probably aware of the redirectors “<” and “>”, which are also tremendously useful, but the true pipe “|” is often misunderstood and not used.

]]>
By: Batch-code Jack https://sidawson.com/2009/03/importance-of-pipes.html/comment-page-1#comment-10 Fri, 10 Apr 2009 10:47:47 +0000 http://sidawson.com/?p=14#comment-10 Great post, as usual Si… I've not checked for a while and just caught up on your other blog as well. Small correction for you though – the “other operating system” you refer to (presumably ms-dos?) also has pipes, and it's had them since version 1.25 as far as I know. Very useful things, too! :) The main problem is that not all applications written for it are able to use them, which is where it all falls down a bit.

As I recall though, you wrote some very small apps for me in the early 1990's when I worked at DIA, which created date-strings for use at command prompt levels. I used pipes to get them where I wanted then. Thanks for those, btw! :)

Looking at what you're describing, having lots of small programs doing small tasks to accomplish the larger task, reminds me of using the OS as a language like FORTH, where you slowly build up the language by creating small commands which do minor tasks, until finally you have one command that does what you want. I guess the OS (DOS or UNIX derivatives, or even CP/M for that matter, if you remember that far back) can be used in the same way…

– Jack

]]>