6 ms·
Disagree. One of the most generally applicable practices to learn as a developer is the ability to use CLIs effectively, for tasks to which they area best suit
by kafkaesq 10y ago
Disagree. One of the most generally applicable practices to learn as a developer is the ability to use CLIs effectively, for tasks to which they area best suited. Which is the great bulk of them (version control, database admin, most filesys manipulation, etc).
Or to address your point more directly: for many tasks the GUI may seem easier at first, but a modest investment in CLI techniques can yield far greater dividends, over time.
And then there's all the conceptual and dependency bloat that GUIs impose on a project, over time.
- mattmanser 10y agoGUIs are about showing what you can do. CLIs are about memorizing what you can do. One suits computers and the tiny amount of population with aspergers, the other suits normal people.
- kafkaesq 10y agoThe tasks I was referring to are clearly developer-centric tasks. Applications for "normal people" are an entirely different animal of course.
- flukus 10y agoKind of funny that we have initiatives like "everyone should be a programmer" but then we don't even trust "normal people" to learn how to use a CLI.
- kafkaesq 10y agoI think the key distinction is between different kinds of tasks (and importantly, the scale on which those tasks are done) rather than different kinds of people.
- mattmanser 10y agoI'm a developer and a normal person. CLIs are idiotic. Why can't you just click a button and be done, certainly not sit there and spend 20 minutes figuring out what the fuck -g means or if knockut-sortable is missing an o. It's utterly ridiculous that you're discussing this and just shows how many of you are utterly brainwashed by utterly useless trivia that your computer should be memorising for you but your fellow programmers are too lazy to implement GUIs for. I honestly can't comprehend that you so gleefully spend your time so pointlessly, you should be spending your brains on solving actual life and business problems, not memorising the syntax of CLIs you'll use once every 3 months, or worse still, never again, or virtually useless regex syntax.
- Dobbs 10y agoI'm a developer, and an ex-sysadmin. Using the CLI makes my life much simpler. I greatly prefer being able to write scripts, and use things like PDSH to run commands across many boxes. For example, go through every web server, search their logs for occurrences of IP X and then count the number the number of requests per second. Is this something I do every day, nope, but the basics of doing it are the same as the basics of so many other things that I do that there is no issue memorizing the commands. Using guis and managing a server without a CLI is a very annoying situation. There are other things where using a GUI is way nicer, like complicated partial git commits. Also thanks for informing me that I have aspergers, guess I'll have to go have a doctor check that out ;)
- seanyeh 10y agoHow you can tell someone is perfectly normal: they will tell you they are normal. On the topic, some GUIs are idiotic. A command takes a second to type, but a complicated GUI may take multiple buttons, menus, etc. that take almost forever to navigate.
- greenshackle2 10y agoThe day when gui applications have anywhere near the composability of cli applications, I'll think about it. > I'm a developer > useless regex I don't know what kind of developing you do but regexes are massively useful if you do any sort of string handling or input checking. > CLIs you'll use once every 3 months Funny, I spend 90% of my time in a CLI. I don't spend my time memorizing stuff, the commands I use frequently are committed to muscle memory, the rest I look up. If you spend time with the CLI you learn to look stuff up not too inefficiently. Looking for a menu entry in a GUI is more painful to me than reading/grepping a man page. Sounds like you really hate CLIs, I hope you don't have to use them too often, there's no reason why everyone has to use them, but I promise you, there are hundreds of thousands if not millions of productive CLI users out there.
- flukus 10y ago> Why can't you just click a button and be done Because there isn't a button to just do everything I want to do and if there was I'd have to find it amongst a million buttons.
- mattnewton 10y agoCLI's are automatable and scriptable in ways we still haven't achieved with GUIs. They are also usually easier to write and to maintain. There are many, many more reasons too.
- deleted 10y ago[deleted]
- deleted 10y ago[deleted]
- deleted 10y ago[deleted]
- jarman 10y ago>CLIs are about memorizing CMD --help man CMD Tab competition Command line history search
- lozf 10y agoFLAC developer Josh Coalson made the point well: [QUOTE] ... to me, GUIs are like a caveman language where you have to grunt (click) and wave your hands (mouse) at the computer until it does what you want. (imagine the mouse pointer as your hand, then say "ugh" every time you click to mean "ME WANT THAT".) if whoever wrote the gui didn't add a feature that you can specifically communicate with an exact grunt and wave sequence, you're out of luck and have to ask the developer to add that. Shell scripting is like spoken language, a much more natural and powerful way to communicate what you want to do. instead of every developer having to reimplement functionality for crawling a tree and doing something, one guy just writes the 'find' command and it's usable in conjunctions with other commands. [/QUOTE] source: https://hydrogenaud.io/index.php?PHPSESSID=ae25885agmimsrj7679bk3ch85&topic=52757.msg472411#msg472411 https://hydrogenaud.io/index.php?PHPSESSID=ae25885agmimsrj76...
- chriswarbo 10y agoI'm not sure where the "point and grunt" analogy came from, but I first read it from Eben Moglen. I can't remember where, but there are lots of examples floating around, e.g. at http://www.cabinetmagazine.org/issues/1/i_moglen_1.php http://www.cabinetmagazine.org/issues/1/i_moglen_1.php > In 1979, when I was working at IBM, I wrote an internal memo lambasting the Apple Lisa, which was Apple`s first attempt to adapt Xerox PARC technology, the graphical user interface, into a desktop PC. I was then working on the development of APL2, a nested array, algorithmic, symbolic language, and I was committed to the idea that what we were doing with computers was making languages that were better than natural languages for procedural thought. The idea was to do for whole ranges of human thinking what mathematics has been doing for thousands of years in the quantitative arrangement of knowledge, and to help people think in more precise and clear ways. What I saw in the Xerox PARC technology was the caveman interface, you point and you grunt. A massive winding down, regressing away from language, in order to address the technological nervousness of the user. Users wanted to be infantilized, to return to a pre-linguistic condition in the using of computers, and the Xerox PARC technology`s primary advantage was that it allowed users to address computers in a pre-linguistic way. This was to my mind a terribly socially retrograde thing to do, and I have not changed my mind about that. I lost that war in the early 1980s, went to law school, got a history PHD, did other things, because the fundamental turn in the technology - which we see represented in its most technologically degenerate form, which is Windows, the really crippled version. I mean, I use Xwindows every day on my free-software PCs; I have nothing against a windowing environment, but it`s a windowing environment which is network transparent and which is based around the fact that inside every window there`s some dialogue to have with some linguistic entity.
- chipotle_coyote 10y agoI don't think you and the parent are in disagreement if you take their last sentence seriously: "It could make more impact if it actually explained tasks that are harder to do in GUI than in the command line, such as massive renaming of the files, filtering files depending on content and so on." It seemed to me his assertion wasn't "the CLI is bad and we shouldn't use it," but rather that the linked "You Don't Need the GUI" piece doesn't make a particularly good case. And, I admit I agree. There are things that a CLI is much better at, especially if you're a developer, but there are other things that a GUI is arguably better at, sometimes even if you're a developer. If I have a bunch of files that need to be committed to a git repository and I want to commit the changes in multiple commits so they're related by topic, it's faster to select and commit each set of files with GitUp than it is using git's CLI. I find myself switching between the terminal and Finder on a fairly routine basis depending on what the task is. tl;dr: GUI aficionados really should learn the CLI, but the reverse is also true. I can't speak for every GUI out there, but there's a lot you can do in macOS's that I think people don't really take advantage of.
- wruza 10y agoTrue, it would be nice to join both (though I'm fine with only cli). One example is vim's :set guifont=(star char here), where star is a special value that modal-calls system font selection dialog. It would be great if shell also had something like @ wildcard, which would expand into file selector gui, unlike other wildcards. So you could 'svn commit ./path/to/@' and select what you want (or press cancel/esc). It is partially possible via svn commit `select-files ./path/to`, except cancel part.
- sullyj3 10y agoFzf (https://github.com/junegunn/fzf https://github.com/junegunn/fzf) kind of does what you want. If you type svn commit ./path/to/<Star><Star><tab> It launches a fuzzy Finder (within the terminal) that you can use to recursively search through `to`. You can use the arrow keys and enter to navigate and select. Imo it's faster than a gui would be.
- mirkules 10y agoI agree with you in general, but the first two examples you cited are all more comfortable on the GUI for me. TortoiseSVN was a breakthrough for me. After switching to git, it was painful to try to remember all the different commands, wade through commit logs and find the hashes of commits. I see TortoiseGit exists, but since my org is still on SVN i haven't really given it a try. Database admin, same thing. CLI clients such as sqlplus or pgsql are ok, but I'll never be able to commit to memory the various commands to show tables, show all databases, describe a table, etc. The one exception is the mysql client which has sane defaults and easy-to-remember commands. I frequently switch dbs, so this is a must. Pgadmin, sql developer and even the buggy MySql Workbench are all more pleasant to work with than CLI, in most cases. But this are just my preferences. If the CLI works better for everyone else, then great. Maybe I'm missing something, and maybe someone would give me a pointer to unlock the magic of CLI in these scenarios that would make me more productive
- module0000 10y agoMySQL/MariaDB also has really good built-in help. If you can't remember how to re-order columns or add a constraint, it's just a `help alter table` away. `psql` also has decent built-in help, but sqlplus is practically unusable without the manual on your desk.
- mirkules 10y agoTotally agree. I frequently find myself googling things like "postgres equivalent of describe table" and the like. I didn't know you could get operation reference in MySQL. Thanks for the tip!
- maccard 10y agoI don't understand why version control is easier using the command line? I use perforce daily, and struggle with the command line interface. The GUI gives me lots of vital information at a glance without having to query it, and for the most part can do everything I ever want to do in 2-3 clicks. Aside from large integrates, everything that the people working on my project do is drom the GUI.
- maccard 10y agoI don't understand why version control is easier using the command line? I use perforce daily, and struggle with the command line interface. The GUI gives me lots of vital information at a glance without having to query it, and for the most part can do everything I ever want to do in 2-3 clicks. Aside from large integrates, everything that the people working on my project do is drom the GUI.
- GlennS 10y agoI agree with you general point, but I think for your specific examples you may just not have used the best GUIs. Magit https://github.com/magit/magit https://github.com/magit/magit is definitely the best user interface I've tried for version control. I still drop to the command line occasionally, but it's not as productive unless I'm doing something unusual. SQL Server Management Studio is also much better than any command line database tool I've used. For any action you can do in it, you can hit a 'generate script' button which you can use to automate what you just did. This is a fantastic feature, because using the GUI becomes a better way to discover and understand the CLI underlying it.
- chiefalchemist 10y agoI always have a problem with not dog fooding. If we're building UIs and such then we should use them, learn from them, etc. Yes. Absolutely. They sometimes have limits. But scarcity breeds innovation. It's hard to imagine in 2017 that we're accepting CLI as innovation. That's just feels too silly to me.
- yoz-y 10y agoI agree that CLIs have advantages over GUIs in many cases (but the GUIs have advantages over CLIs in many other cases). However, the linked repo in the original article simply presents a few commands for copying, moving and zipping files. This is useless and will not convince anybody that they do not _need_ a GUI. It makes a very poor case. If you know what terminal is and how to launch it you already know way more than that article shows, if you don't then there is no way it will convince you that you do not need something like Finder.