Hacker News new | ask | show | jobs
by __b__ 3625 days ago
The following comment could apply to hundreds of similar submissions to HN in recent years.

Many people -- many of them young people I suspect -- have invested a lot of time learning Javascript. It has become a very popular language.

But it remains to be seen whether Javascript will be as long lasting as the UNIX shell and standard utilties. Historically speaking, computer languages have been known to fall into and out of popular usage.

For people who invested a lot of time learning the shell and ubiquitous utilties such as AWK, it appears the investment has paid off. I'm not too worried about the terminal disappearing any time soon.

How long until the next submission that aims to abtract away the need to learn how to use a UNIX terminal -- directly.

There are probably hundreds more on Github alone. What if we conslidated them all in one place: 1001 attempts to abstract away the need to learn UNIX.

By no means am I suggesting these attempts have not been successful.

What I'm suggesting is that the need for them will not abate. It could be that UNIX terminals, and programs like AWK, are not just a fad.

4 comments

Perhaps there are features from other programming languages that should exist in shell programming?

For example, I've always felt that the fact that almost everything in shell programming is a gigantic string is really bad. It would be much nicer if all commands had type signatures, and therefore piping commands into each other could throw type errors if it does not make sense.

This would also allow much better feedback when stringing together commands, since the shell IDE would be able to recommend commands that act upon a particular type. For example, if a command produces output that could be considered to be N > 1 lines long then `wc -l` would be available, however if this isn't the case it does not make much sense for it to be recommend to the user.

I'd suggest reading http://www.catb.org/esr/writings/taoup/html/ to better understand why UNIX is the way that it is.
I've read it before.

So I know that:

> Write programs to handle text streams, because that is a universal interface

But I also think that:

> To build it out of simple parts connected by well-defined interfaces.

Many text representations are vastly different, and neither simple or well-defined.

The interface is not necessarily the content of the message conveyed by the interface. Lines of text std(in|out) is a well-defined interface. Some programs may go further and specify the format of messages passed on that interface. https://github.com/synacor/dtk is one such system that specifies (for most of its commands) tab-delimited records as the message format. It interfaces well with other elements of the UNIX ecosystem, however, because its interface is simply lines of text on std(in|out).
Like in PowerShell?
I've not used it before and I presume it is Microsoft Windows only.
Well, I think, trying to abstract something away does not mean it's a fad, but totally the opposite: It means it's something people think they'll have to deal with a lot, but for whatever reason find it too much of a burden to deal with it directly.

It's like the ORMs. None of them mean SQL is a fad, it's just that some people seem to dislike SQL in a programming context.

You missed the point. The comment suggests the opposite of what you think it suggests. I guess I need to work on my communication skills.
They're going to continue to pop up, just like JavaScript frameworks will. Because they're not popping up due to any necessity, but because someone (1) learned JavaScript, (2) learned some shell commands, (3) had the epiphany that they could abstract shell commands away using JavaScript, and (4) isn't aware of the previous thousand attempts by others to do the same thing.
That's incredibly dismissive.

AWK isn't perfect (nothing is). So that means that there are still improvements that can be made to it. One of the improvements to AWK (or something awk-like) would be to make it have a more familiar syntax to those who don't already know awk.

I'll admit, the only thing I use awk for currently is to pull out columns of the output to pass on to the next tool. I know it can do more, but I don't have time to really learn and understand the langauge.

While I don't like many things about this project, I really like some of the ideas that it's suggesting. I'd love a "awk but with javascript" where you can use a subset of javascript to work like awk where you can pipe in data and have it output "regular" lines that can be passed to the next tool on the command line.

letting me use familiar javascript functions and syntax to map/reduce/filter over lines of input and output plaintext would be amazing. This doesn't quite do that in the way I want, but it's a cool thing nonetheless.

Just gonna leave this here. https://github.com/synacor/dtk

Its filter functions are Perl, but you could do something similar with JS if you were a masochist. No need to build a new shell, though.

What mainstream languages, especially if standardized or open sourced, have you seen be completely abandoned?

Even Cobol, Fortran and Lisp are still active.

Javascript as this moment probably has the highest number of programmers using it. It is standardized and has several competing state-of-the-art OSS implementations. It's going go be with us, at least as legacy code, for decades :)

Agree. Legacy code.