Languages Are More Than Just Tools
Published
Very often I hear people say something along the lines of "languages are just tools". I find this view very sterile and disconnected from how tools can affect how we feel and how we function.
Yes, languages are tools that, in the end, crunch numbers and automate tasks. Languages from Python to C to Rust to Zig can all complete the same task (I also extend this idea to different libraries and frameworks). This ignores a very human aspect that no one works in the same way and that other tools can be better suited for other people. I would find it very disingenuous if people are using the "languages are just tools" as a dismissive way to shut down an argument. Acknowledging the aspects you of each language you encounter can be beneficial as it can elevate all languages to adapt an interesting feature from one language into their own. Addressing the good and the bad feedback is important to making these tools better and for finding good solutions. Swift seems to have taken some cues from Rust and I think it's great that I also think that Zig has a lot to offer and its error messages, particularly around leaking memory (18:16-19:43), which I think many other languages can be improved with this alone.
Before I continue, I must clarify and emphasize that getting overly attached to languages or libraries (to the extent of treating them as the be-all and end-all solution) is irrational and not something you should bring to a technical discussion.
Rust is known for being hard and some people click with it and others struggle with it or find the syntax ugly (also) (though I feel that some of it can be fixed by restructuring the code a bit). For me, I don't use it for its memory safety, which is often a reason cited for choosing it. I use it for its powerful type system that is required by the compiler that I don't get from Python, no matter how much tooling I add on top of them such as mypy. In my personal experience, opaque types or type errors is something I've encountered more than I'd wish when working with Python. This isn't to say I never use Python; on the contrary, I find it great for small projects!
I regularly cook my own meals and find that if I didn't have the better quality equipment that I have, I might find cooking to be tedious and frustrating. To someone that doesn't regularly cook or cooks simply as a means to an end, they might think that a knife will cut food and a pan will interface between a stove. With this thought, they might see that all knives and pans prepare food so the there is little reason for choosing other options. America's Test Kitchen has a fantastic article on why upgrading kitchen equipment is important (note: paywalled). I've provided some exerpts below:
As a longtime ATK fan, I was no stranger to our equipment recommendations. [...] I can attest to how well they’ve held up and how effectively they perform. But I still held on to some less-than-stellar kitchen basics that I’d had for years, thinking that they weren’t worth replacing. They got the job done, so I couldn’t justify removing them from my arsenal.
[...]
Then I started working in the test kitchen. I got to use the equipment we keep on hand, and it all stood out in stark relief from the lackluster essentials that peppered my kitchen cabinets. I never realized how truly wonderful it is to have a dry measuring cup set that doesn’t scatter when you push in a drawer, or a wooden spoon that stays smooth and comfortable even after countless washings. I realized it was time to up my game.
[...]
Three years later, these tools have improved my time in the kitchen considerably and continue to perform admirably. I think any home cook would benefit from them as well.
Note the "these tools have improved my time in the kitchen considerably"! Good tools work with you and enhances your experience with solving the problems you are trying to address. With a tool that doesn't fit you, it can be discouraging and leave you feeling dismayed like your skills are lacking and are not improving. For example, if you're new to cooking, you probably don't need something like a butcher's cleaver, but if you end up preparing a lot of hard vegetables like squashes or break down a lot of meat, a cleaver can make it easier over a general-purpose chef's knife. In that vein, you might try a language and not find it suits you but later on, you may come around to it when it does fit your needs and after you've grown your skills.
Not every tool fits everyone's needs but it is important to acknowledge the good and bad of each tool. This doesn't mean that when we prefer some tools over others that we should be engaging in "holy wars". It is okay when a language doesn't feel right, even for reasons as simple as it feels awkward (ergonomics).
Addendum: I don't have any expertise on these other areas but I figured I'd make these analogies.
- A decent soldering iron can "have a direct impact on the quality and joyment of the work".
- Is a more expensive musical instrument worth it if they generally provide the same result? It depends but generally yes.
- Any motor vehicle will transport things from point A to B but their value, features, and ergonomics are valued differently from one person to the next.