6 ms·
> but I bet the original creators would be the ones most shocked that it's still a thing in 2019. Couldn't we say the same thing about bash or basically most t
by jolmg 8y ago
> but I bet the original creators would be the ones most shocked that it's still a thing in 2019.
Couldn't we say the same thing about bash or basically most tools in your typical Unix-based OS? Old code is solid code. If they're to be shocked it's for doing something so right that it's persisted all this time.
- DonHopkins 8y agoExcept that X11 isn't doing something so right -- it's still terrible, and it always has been, and we knew it was terrible at the time it was standardized. But it's funny that you would bring up something as terrible as a shell scripting language like bash to compare to how terrible X-Windows is. Have you ever read through a gnu configure file yourself, or do you just close your eyes and type "./configure"? Who in their right mind would ever write a shell script, when there are so many real scripting languages that don't terribly suck universally available, that don't shit themselves when they encounter a file name with a space in it? These quotes about X-Windows apply to bash as much as they do to X-Windows: "Using these toolkits is like trying to make a bookshelf out of mashed potatoes." -Jamie Zawinski "Programming X-Windows is like trying to find the square root of pi using roman numerals." -Unknown https://medium.com/@donhopkins/the-x-windows-disaster-128d398ebd47 https://medium.com/@donhopkins/the-x-windows-disaster-128d39...
- jolmg 8y ago> as terrible as a shell scripting language That's a strong opinion. I'm not going to argue for lack of time, but suffice to say that 99% of my interactions with my computer and sometimes with my phone is with a shell scripting language. Shell scripting is awesome. > Have you ever read through a gnu configure file yourself, Yes. Generated scripts make for a boring read. > or do you just close your eyes and type "./configure"? I do, from people I chose to trust, whether by running the package build scripts written by the package maintainers of my distribution or from github accounts that I judge as trustworthy. There is a lot of trust involved in using a computer. I mean, if something nefarious might be in the ./configure script, it's more likely to also be in a precompiled program, since more people touched it. > Who in their right mind would ever write a shell script, I do. > when there are so many real scripting languages that don't terribly suck universally available, Each language is good for different reasons. Shell languages are meant primarily to be used interactively, as opposed to languages like python or ruby. The fact that you can put your everyday interactions in a file and run that is an added bonus. > that don't shit themselves when they encounter a file name with a space in it? I rather not have filenames with spaces if it means having a language that allows me to communicate with my machine in a terse manner, allowing for super-easy automation of all sorts of interactions. I mean, are you really suggesting to mandate quoting of all strings in a shell language? The quotes are optional. That's good! In a shell language, files are basically your variables, so why would you want more syntax around your variables when working interactively?
- deleted 8y ago[deleted]
- deleted 8y ago[deleted]
- njepa 8y ago> That's a strong opinion. I'm not going to argue for lack of time, but suffice to say that 99% of my interactions with my computer and sometimes with my phone is with a shell scripting language. Shell scripting is awesome. It really isn't though. (It certainly can be fun however). Switching from shell scripts, and avoiding to do things manually (like ssh), likely increases your success rate at managing *nix by orders of magnitude. All these "configuration management" tools like Puppet, Chef, SaltStack, Ansible etc. are pretty much just to avoid shell scripts and interactive ssh.
- jolmg 8y ago> All these "configuration management" tools like Puppet, Chef, SaltStack, Ansible etc. are pretty much just to avoid shell scripts and interactive ssh. That's only true if your only use of the shell is for configuration, which isn't really intended to be the case. The shell was meant for any use of the computer, not just configuration. For example, I use ssh/scp when I copy some music files from my computer to my phone, or mpv when I want to play some music files. Indeed, I use the shell for nearly everything.
- overgard 8y agoOh god there's so many easy reasons why bash is terrible. * Significant whitespace in surprising ways (a=1 vs a = 1 or spaces following square brackets) * Word splitting * No data structures of note, nor any way to create them in any sort of non-hacky way * No data types, really, for that matter * Can't really deal with binary data * Awful error handling * Weak math * Weird scoping rules Honestly as soon as I have to do anything that involves a conditional I abandon bash and use one of the many ubiquitous scripting languages that has great library support for doing all the system stuff you could do from the command line anyway. Here's a great list of BASH pitfalls: https://mywiki.wooledge.org/BashPitfalls https://mywiki.wooledge.org/BashPitfalls I can't think of any language other than maybe Perl or C++ that comes close to that
- stormbrew 8y agoShell scripting languages generally make certain common tasks easy that most other scripting languages do not. Namely, process management and especially piping information through those processes. If that's most of what a program is doing I would 10000 times rather read a script written in bash doing it than a python script that pulls in 800 dependencies just to get halfway to making these sorts of tasks take less than 5 lines for each invocation of a thing that takes less than 1 line in bash. That's not to say that bash is perfect, but it is very good at what it does.
- codedokode 8y agoShell script also has dependencies: specific version of shell and CLI utilities. Shell script is a good thing when you need to write something quickly with hacks but it is not a good foundation for init system or build system. They easily break if you redefine variables like IFS, add command aliases or use names with spaces or special characters.
- grumpydba 8y ago> Shell script also has dependencies: specific version of shell and CLI utilities. Just use posix stuff. And move on.
- hdfbdtbcdg 8y agoI'm curious. How do you for example parse command line arguments in your shell scripts? Do you regard sed, grep and awk as dependencies when bash scripting? With regards Python. The subprocess, os, sys etc modules are standard library modules. There is no dependency overhead in using them. Most smaller Python scripts manage very nicely with the standard library.
- int_19h 8y agoFor the kind of thing you've just described, a Python script would need just one dependency to do it all in roughly the same number of lines: https://amoffat.github.io/sh/ https://amoffat.github.io/sh/
- bsder 8y ago> Except that X11 isn't doing something so right -- it's still terrible, and it always has been, and we knew it was terrible at the time it was standardized. And, yet, in ALL this time, not a single substitute arose? We have multiple web browsers, GUI toolkits, IDE's, etc. all with far larger codebases and yet X11 never got replaced properly. And some really brilliant minds worked on it. So the question you need to ask is "If X is so bad, WHY hasn't it been replaced?"
- DonHopkins 8y agoThat's like asking "If Trump is so bad, WHY hasn't he been impeached?" Just because something's hard to remove, doesn't mean it's not doing something bad.
- WillPostForFood 8y agoOTOH, Linux desktop marketshare hovers around 1-2%. So maybe the replacement for X11 has effectively been buying Windows or a Mac.
- michaelmrose 8y agoThere is zero reason to suppose that the reason people don't use linux is X11.
- WillPostForFood 8y agoSure there is, starting with the difficulty in setting up, getting it to output the correct resolution with your monitor, correct refresh rate, etc..
- throwaway2048 8y agothis hasn't been an issue in almost 20 years.
- int_19h 8y ago
- walshemj 8y agoI am very thank full that the plan to convert our entire engineering centre to some awful x windows tool set fell though at BT. Though I still use the training I got in the accelerated 1 weekcrash course in unix we all did.
- asveikau 8y ago> Except that X11 isn't doing something so right -- it's still terrible Yet your windows render and take input, life goes on, etc. I am pretty happy with it on systems where it runs. Some of the old criticisms like it being a resource hog - might have made sense in the specs of, say, 1993 or earlier, but even restricting the comparison to what most of us have loaded in Javascript at any moment it's pretty lightweight. > Have you ever read through a gnu configure file yourself ... Who in their right mind would ever write a shell script I really don't think it's fair to use machine-generated code as an example of why you shouldn't use a particular language. All of those alleged universally available, "real" scripting languages that don't terribly suck would also look pretty bad if you turned them into a target language for GNU autotools.
- deleted 8y ago[deleted]
- bfrydl 8y ago> Who in their right mind would ever write a shell script I quite enjoy writing fish scripts. Largely because I can actually remember the syntax for conditionals and loops.
- torqueTorrent 8y agoOn one hand, there are some things that are simply too complex to attempt implementation with bash a script. otoh, there are many things that could or even ideally should be kept simple such that a bash script is the best practice, most simple, proven, reliable solution.
- mondoshawan 8y agoTBH, even humans shit themselves when they encounter monikers with spaces in them. Can you spot the moniker with spaces in it in this sentence easily without having to go back and re-read? Without context, did I mean "moniker" or "moniker with spaces in it"? Spaces are a terrible idea in monikers.