5 ms·
Bash is a user interface. The fact that you can string together words and symbols and make logic happen is basically just back-porting advanced user functionali
by throwaway892238 3y ago
Bash is a user interface. The fact that you can string together words and symbols and make logic happen is basically just back-porting advanced user functionality into an existing interface.
Having said that, Bash is my favorite programming language, because it is so limiting, and simultaneously not limiting, because it wasn't designed to fulfill what A Real Programmer(TM) thinks a programming language should be.
A computer is supposed to serve a human. Not the other way around. But modern programmers, being wildly unimaginative creatures of habit, think the user is supposed to serve the computer. That the more you type, and the more hoops you jump through, the more "clever" you are with the "way" you tell the machine to do something, that this is superior. Never mind that the end result of all this incantation and tom-foolery doesn't actually result in a good outcome half the time. That the user is often unhappy with the result, if they even factor into the programmer's thinking at all. No, the true purpose of programming is to gratify the programmer and make the machine happy, not to make a human's life easier.
Programming is a mistake. It's a half-measure. A stutter in the evolution of digital computing. We weren't meant to program, we were meant to make a synthetic invention that relieved us of our labor. And what do we have to show for spending 1/3 of our life, and decades of work, for it? A metal and plastic box that can do pretty much exactly the same real work as 30 years ago, but with better graphics, because the hardware people gave us better screens.
- eternityforest 3y agoThere's almost nothing that computers do that isn't easier than the pre-computer way. Look at it from an average user's perspective. They're thinking "Wow, this spreadsheet would have taken hours to do with a calculator and a pencil". Most users are not programmers. Programming IS the act of making a synthetic invention that relieves us of our labor. It's no different from what a plumber does. If we had to connect pipes in a custom arrangement every time we wanted to do the dishes we would argue all day about the best pipes and threads and tapes. But we don't. We use premade fixtures and we don't have to think about plumbing. Those hoops you have to jump through are like the building codes. They make everything consistent. And more importantly, they make things inspectable. There are a million and one ways to plumb or frame a wall or something that would probably be fine. But that would be Real Engineering to do that and show that it's safe. Wheras the codes are designed to not allow for "interesting" stuff that only an engineer would understand. The programming conventions developed over time based on programmers experience of what works and what doesn't when writing software that is so complicated not one person on earth could ever understand it. The difference with programmers is they use programs to make programs. There's no user/designer distinction, and they all want to be creative and clever engineers, not just skilled tradespeople, so they don't see the benefits as much. If most of what you do is coding, you might thing nothing has advanced in the last 30 years, because you used text then and now you have more complicated text. But from a user perspective, we went from drafting tables to CAD. We have Google Keep. We have voice assistants. We have 4k editing for consumers! Bash pretty much just makes it explicit right in the language that there's no user/coder distinction and kind of keeps that mindset around. Newer languages are designed to help people make user facing black boxes, and they do a great job of it it seems.
- throwaway892238 3y agoIf only we had something like building codes, maybe we could stop fucking around trying to re-invent the building all the time, and just make a god damn building that didn't fall down after 3 months. We make shit programs because our industry has no code, no apprentices, no journeymen, no masters. We have kids with no discipline who don't understand how anything works and just fake it 'til they make it. Everything from the shit designs to the inefficient basic programs to the overinflated titles to the lack of basic rigor shows that, generation after generation, we're actually getting worse at our profession, not better. We inherit good foundations and we shit on them. And we look at the people shitting stylistically and imitate them. > we went from drafting tables to CAD. We have Google Keep. We have voice assistants. We have 4k editing for consumers! We had CAD in the fucking 1960s!!! Google Keep is an overcomplicated frontend for RCS. I've literally programmed a better voice assistant in Perl in 1999. 4K isn't even usable on most devices, let alone necessary. I literally knew more about software when I was 18 than any programmer I have met in the last 5 years. And I'm not that smart. > Bash pretty much just makes it explicit right in the language that there's no user/coder distinction Bash makes it explicit that there is no coder. There's only a user. Programmers don't seem to realize it, but the way they act, they don't consider that the user even exists. This is the defining characteristic of 21st century technology. Programmers are self-serving, and users are waiting for someone to make their lives easier. Like children waiting for the chefs to stop fucking around in the kitchen with sourdough starters and hydration ratios, and just bring out some god damn bread.
- eternityforest 3y agoThere was CAD in the 60s, but somewhere they have archives of paper plans for the moon landings. If it tried to use 60s cad I'd probably think it was just a drafting tool with some extras, not like modern cad with solvers, parametric modeling, and 3D views. I don't see how I could make a sketch with constraints on a face back then, modern CAD is slightly slow even on my laptop. Deep learning voice recognition didn't exist in 1999, which is the critical tech that makes Assistant usable, along with the fact that there's now Keep to integrate with and IoT to control. It's true that programmers hate users sometimes, but that's not an issue of tech or skill, that's an issue of programming culture is full of people who would like to go back to tech free simple living and mostly see computers as "bicycles for the mind" rather than "A UI layer for everything manmade we interact with" or "somewhat independent robots". They're in it for the exploration of thought, not because they want paying taxes to be fully automated. But it's the managers and UI designers, and the small percent of programmers that don't hate tech, who actually direct a lot of the experience. Bash is basically incapable of making anything I'd want as a user, because it's not good for managing insane amounts of complexity. It's a tool for directly controlling a computer and using it as a passive tool. Modern languages are tools for essentially using the computer almost as a manager more than an employee, and for creating new models of interaction that the machine is better able to always have your back with. If I want a block to be 35mm tall in total, but there's terraced layers and curves and stuff, I set a constraint. I don't have to worry about the math. I'm not just virtually building stuff like a digital simulation of wood, I'm doing something completely synthetic, that was made up by someone who figured out a model for interacting that puts as much of the hard parts in the CPU instead of in the brain. It can't just be one way "I tell the machine what to do" interaction or the whole thing is limited to my own ability just like paper. It can't be text based or anything else that requires mental translation, or I'd just have an extra task in addition to doing the whole design myself. Modern software's solution is to create a way to think about the task that is inherently something suited for both humans and machines, and then to teach the user that way. Bash is freeform, it says "think how you want then translate it to what machines know". It's great if you want control, not great for computer-led experiences. Sadly it doesn't seem like we are designing many new paradigms of interaction, but I blame lack of interest rather than lack of tech ability. Programmers think about the functionality first, rather than about the interaction model, because they like ideas and dislike software used in the real world when a pencil could have done instead. We do have building codes. Unit tests, memory safe languages, design patterns, DRY, reuse... It's just that lots of devs don't like them.
- SomeCallMeTim 3y ago> Bash is a user interface. Meh. That part is irrelevant in the extreme to the discussion. Fact is that people write `.sh` and `.bash` scripts to get things done. They use conditional logic and loops and everything. Functionally, it's a programming language with a (useful) REPL. And this discussion is 100% about how bash is as a programming language. > Having said that, Bash is my favorite programming language, because it is so limiting, and simultaneously not limiting, because it wasn't designed to fulfill what A Real Programmer(TM) thinks a programming language should be. Umm... Then, yeah, I have to agree with your self-assessment of not being a "real programmer." Sorry, but it's obviously true. You're a scripter. I've known and worked with many scripters. They can do a lot of valuable work and contribute in a lot of ways to various projects. But they're not programmers. Which is fine. Script away. > But modern programmers, being wildly unimaginative creatures of habit, think the user is supposed to serve the computer. After admitting you're not a programmer, you then go on to demonstrate that you don't really understand how programming works. Which I guess follows? That's so far from the reality, that it's Not Even Wrong. > That the more you type, and the more hoops you jump through, the more "clever" you are with the "way" you tell the machine to do something, that this is superior. Programming languages are exactly the level of complexity needed to, with the least effort and most reliability, craft the code that, literally, civilization relies on. It can't be made simpler. The complexity is inherent in the domain. > Programming is a mistake. It's a half-measure. A stutter in the evolution of digital computing. We weren't meant to program, ... YOU weren't meant to program. You admitted that above. Don't speak for the rest of us. Everything significant in software that has been and will be accomplished moving forward will be created by programmers using programming languages. Your rant against programmers and programming is based on a lack of understanding of what programming really is and how programmers really think. It's not even slightly about being clever. It's about the act of primal creation. We're effectively wizards of the modern world. We don't care at all about making a machine happy; we care about building things that work. That the things embody complexity isn't the goal, but it is a thing of beauty when it all works together elegantly.