Very long and a little bit of tricky read but certainly interesting observations. As a Scala developer I actually see the problem with static vs dynamic code all the time. A desire to force everything into the static type system so errors are found early is commemerable, but even in places it doesn't necessarily make sense. A common example is taking user input and shoving it in a cats NonEmptyList
. A type which exists soley so that calling .head
won't cause an exception. Apparently using .headOption
is a deal breaker. The other place is the desire to serialise classes into json structures automatically. This is again commendable and makes programming much easier in some constraints, but it then remanifests as a problem when you realise that internal types and external types need to diverge in some way. At runtime it's easy to change mappings between two arbitrary structures and you can inspect the data, but trying to do it via the limited language exposed by a macro is painful.
Ultimately it helps to understand the benefit of the command line: That text is a more effective mechansim for communicating that anything else. That any command you learn can easily to turned into a script an automated. That commands can be copied and pasted and shared with friends much easier than videos or images. Knowing it's benefit motivates you to learn it.
Look at the explanation in Windows for how to change a registry key or how to change a printer setting. It's one long guide full of screenshots thats painful to follow or understand. Where-as Linux users can easily share commands and fixes or tests over a simple irc chat, because the command line reaches the whole system.
The command line is of course a place where lots of apps can be plugged together and mixed up to achieve hundreds of goals, and thus learning awk, grep, sed, wc means you can count, search or perform regexes on any other part of the system, from counting users, or essays, to network connections, or processes or anything.
To be honest, many existing blogs answer exactly this question, which has been asked a million times before.
Bash has Ctrl+R which is a similar feature.
..but does it taste good?