this post was submitted on 23 Aug 2024
109 points (98.2% liked)
Linux
47929 readers
1223 users here now
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
As other's have said, have a goal. A computer is a tool, use it to accomplish something, try to get something working for yourself that currently doesn't. If your PC aleady does everything you need it to, great, you're ahead of everyone else 😅.
Don't think of the command line as a good option, it's archaic, and its capabilities are objectively rudimentary, it's just often the least bad option because no one has made a convenient GUI for what you're trying to do (or if they have, they did it poorly, and somehow the command line is still less bad). So you will inevitably have to interact with it.
I think it's the opposite, GUIs are often convoluted and rudimental compared to the power of the terminal. The terminal can be very sophsticated.
Just because it's how we used to do things in the past it doesn't mean it's archaic, quite the opposite it's a very powerful and useful tool that no GUI can ever possibly match, in fact generally GUIs are either for noobs (and I don't mean this in a derogatory way) and/or convenience, but you can't really match the ease of automating, power, and freedom a terminal provides when in the hands of someone who understands what they're doing.
I'm talking about a properly made GUI, you're talking about most GUIs. I believe I covered this in my original comment: poorly made GUIs are worse than a terminal interface.
But don't act like a linear string of characters, typed in one-by-one is the optimal way to interface with a computer. Obviously, a non-invasive neuralink implant that is able to interpret your intentions with 100% accuracy without uploading any of your data to Elon Musk is the ideal Human Interface Device, but we're not quite there yet.
In the meantime, I assume you run a window manager of some kind. Why? Do you regularly browse the internet from the terminal? Unlikely. Why not? Have you ever tried non-linear video editing, image manipulation, or 3D modeling in a terminal? How about debugging multi threaded code, or visualizing allocation patterns? Pored over profiling metrics to root cause a performance issue? And if VR/AR is part of your workflow, trying to use a terminal in concert feels sillier than the hacking montage from Hackers.
Terminals are objectively more limited than a GUI, because that's literally the definition of a terminal: a very limited graphical user interface. The advantage of a terminal is that it's easy (especially for programmers who don't have an artistic/UX-bone in their body, and are thinking in terms of functions and operands) to make a primitive interface that adheres to a set of expectations. But no one commits every parameter for every command line tool to memory, and even if they did, people don't want to type out a novel when moving a cursor to a specific region of the screen feels more natural and takes a fraction of the time. (Not that it always feels more natural in every circumstance, but in the times when it does, that's what every sane person should prefer to do).
So just like I told OP, the goal shouldn't be to use a terminal; you should instead focus on solving a problem. The terminal is just often the least bad tool that currently exists to solve a lot of problems.
Terminals are only limited in tasks that require graphics content, what a shocker.
For all other cases they're vastly more powerful than any GUI can be, because no developer can (or should, it's unrealistic to ask them to do this) match the amount of complex operations terminal commands can reach with one string or script. With GUIs you also have to deal with different sets and toolkits, like GTK, Qt, etc etc.
There's use-cases where GUIs work better and cases where terminals work better and which ones belong where also depends on the user, but saying terminals are more limited than GUIs and bad is flat out wrong and dishonest.
I think you and I are using two different definitions of the word "powerful", or are at least applying them to subtly different aspects of the discussion.
I don't know if you are familiar with basic finite automata theory, but a Finite State Machine is provably less "powerful" than a Turing Machine. This is the definition of "power" that I'm using, "power" as in "expressiveness". i.e. The fact that you can literally create a terminal as a sub-element within a GUI if you wanted means that a GUI is provably more "powerful" (or more expressive) than a TUI. And thus the best GUI for a tool will always be better than the best TUI for the same tool. (Comparing the worst GUI vs the best TUI is a waste of time).
But you're using the definition of "powerful" as in a "powerful programming language". This is a common use of the term, but is much more fuzzy and harder to quantify. It's no longer synonymous with "expressiveness". Generally a language is "powerful" if you can get "a lot done" with relatively few characters or operations. Ex. Python is often considered more "powerful" than C because you can do in a single line what would take dozens or hundreds of lines in C. Similarly, you're saying that a developer can make a comprehensive TUI using less time and effort than it would take for them to make a GUI that's at least as good (including integration with other tools afforded by pipes and redirects).
And I agree with you. But hopefully you also agree with me that a GUI is objectively more "expressive" than a TUI, and in that sense has a higher ceiling for how useful it can be to a user.