9 ms·
I’m saddened to think that because this industry has an obsession with making programming accessible to the lowest common denominator, expressive and innovative
by booleandilemma 5y ago
I’m saddened to think that because this industry has an obsession with making programming accessible to the lowest common denominator, expressive and innovative languages like Rust will fall by the wayside, and we’ll all be writing code in languages like Go and Python in the future because they’re “easy” and even high schoolers can learn them in a couple days.
It reminds me of the longbow vs crossbow.
One is a technology that anyone can learn to use easily, the other is one that takes longer to master, but is a more efficient weapon in the hands of a skilled soldier.
The analogy isn’t perfect but the parallels are there.
http://www.thebeckoning.com/medieval/crossbow/cross_l_v_c.html http://www.thebeckoning.com/medieval/crossbow/cross_l_v_c.ht...
- t_scytale 5y agoThere is absolutely no evidence to support this assertion. Instead there is plenty of evidence that currently there is a lot innovation in all niches of the programming ecosystem - from low level [Rust] to high level, and a lot of coder interest in all the options. Also talking about "lowest common denominator" comes across as somewhat snobby - many world-class coders use high-level languages when appropriate. It's a matter of choosing the right tool for the job, not dumbing down.
- deleted 5y ago[deleted]
- AnIdiotOnTheNet 5y ago> There is absolutely no evidence to support this assertion. Consider the popularity of Javascript and Electron for Desktop applications.
- Spivak 5y agoBecause it’s a first class development experience, cross-platform by default, V8 is really really fast, and toolkits that support “build your own toolkit” are non-existent outside the web. I don’t want to make a “Windows app”, “A Mac app”, or a “QT app”. I want a rectangle and a high-level enough interface to build my own widgets. People who are single mode users obviously hate that every app looks and behaves different but most people are multi-mode and don’t care. JS is only easy at the most superficial level and gets to be a mess once you go beyond small apps.
- AnIdiotOnTheNet 5y ago> Because it’s a first class development experience [...] I'm going to have to disagree with that. > People who are single mode users obviously hate that every app looks and behaves different but most people are multi-mode and don’t care. I am going to have to strongly disagree with that. If that were true nobody would ever have wanted to do theming, which was a big deal before developers forgot how to make software flexible enough to support it. > JS is only easy at the most superficial level and gets to be a mess once you go beyond small apps. Oh, you mean like BASIC? A language designed specifically to be easy to learn? Lots of applications were made in BASIC because it was easy to get into and people just kinda dealt with the mess. Visual Basic especially has a reputation. Sound familiar?
- ssokolow 5y agoI think that's more a function of "We want to access all demographics without paying to properly comply with the interface design guidelines of each platform individually. What 'write once, run everywhere including the browser' solution have you got for us?"
- AnIdiotOnTheNet 5y agoThat wouldn't explain why even companies like Microsoft use webtech in their OS configuration GUI these days.
- ssokolow 5y agoGood point. It's probably fundamentally a cost-cutting measure in both cases, where Microsoft just found it cheaper and easier for similar reasons. (eg. Win32 isn't a convenient API, Qt has license fees while Electron does not, Microsoft has a history of making successor APIs that even they don't have proper confidence in, etc.)
- bastawhiz 5y agoAnd yet much of Google was built with Python for a very significant chunk of its life. Netflix and Uber were/are heavily leveraging JavaScript for core workloads. The machine learning ecosystem is largely dominated by Python. Stripe, GitHub, and Shopify are still investing heavily in Ruby. Almost none of this is/was for the sake of accessibility to beginners. Your example cherry picks exactly one instance, ignoring the context of that choice. Such an assertion requires more than just anecdotal musings and ignores the tradeoffs that those teams made when choosing a platform.
- johnisgood 5y ago> It's a matter of choosing the right tool for the job, not dumbing down. In some cases, but there is definitely a trend of dumbing down stuff in the name of accessibility or ease of use. As long as the GUI does not limit me and I can still tinker with various stuff under, say, "Advanced", I am okay-ish.
- ttfkam 5y agoEvery time I hear the term "lowest common denominator" applied to programmers, I reflect on the number of network-accessible remote exploits that provide root access via the Linux kernel over the past three decades. And yet the folks maintaining the network stack in the Linux kernel are not anywhere near what I or almost anyone else would consider the lowest common denominator programmer. Sometimes you just have to accept that ALL humans are inherently bad at this, only some are worse than others at various points in their lives. The security and reliability of the product of our output should not be so largely dependent upon our ability to get a full night's sleep, reasonable working hours, and lack of personal conflict. To be sure, we should all strive for those things, but perhaps the choice of tools is correct in prioritizing mitigation of difficulties and vulnerabilities from meatspace. Sometimes that's a borrow checker. Other times it's a garbage collector. And every once in a while, we need to break out an unsafe block (or the entire C language) to get a job done. Considering how much more expensive people are than software or hardware, the trade off for easier/simpler access is increasingly straightforward.
- deleted 5y ago[deleted]
- jkilpatr 5y agoWhile I strongly agree this doesn't seem to match the sentiment of the paper. Which is prioritizing a lower barrier to entry for new programmers at the cost of safety checks that help prevent humans from making mistakes at runtime. It seems to me if our conclusion is humans, no matter how skilled, are flawed, we should be willing to do absolutely anything to lower the barrier to entry except removing checks on correctness.
- bjourne 5y agoWhat makes you say that? What safety or correctness features do you think a garbage collector in Rust eschews? On the contrary, gc should make the language safer since it obviates the need for the "unsafe" escape hatch.
- 5y ago
- ModernMech 5y agoFear not! Experts will always be inclined to make tools that match their skill level. You can still buy longbows today!
- zaptheimpaler 5y agoim not a great programmer but having used Rust and Python/Scala/Java, i have a hard time believing anyone can be as productive in Rust as they would be in a GCed language for many/most applications. Say building a typical backend or prototyping some linear algebra/ML, the memory management is just a very low level that is likely not a concern and takes away focus from the higher level.
- staticassertion 5y agoI am much more productive in Rust vs Python and Java, it's not even close. Memory management in Rust is trivial, it takes up virtually 0% of my time.
- civilized 5y agoBut if equipping Rust with a GC makes it as easy as Python, Rust could become the language of choice because you have the low entry barrier and the option of making your code much more robust within the same language. That seems like a big win for everyone. I think there can be an unproductive temptation to use a language as gatekeeper of a culture. If you want a culture with shared values about how to do things, there are plenty of ways to do that other than keeping the language from accommodating anyone outside of that culture. And your culture will be more accessible to people who genuinely belong in it, if it's visible from the places they already live (e.g. the Rust language). The languages you dislike are popular because they make it easy for everyone to contribute, and as a result they have a bigger community and, perhaps even more importantly, a greater breadth and depth of libraries and packages than competitors. Rust could be competitive with these languages if it had a low floor and a high ceiling of admissible code quality and sophistication.
- ssokolow 5y agoAppealing in theory, but not necessarily attainable in practice. I use Rust to write CPython extensions... it's a well-known fact that GCs are solitary creatures and you're in for a lot of hassle if you want two different GCs to play nicely together. I use Rust for all sorts of things because I like the high floor Rust sets for the crates I depend on, and I pair that with being more likely to rewrite or find an alternative for a dependency that uses `unsafe` in a context I don't feel it's merited. A lot of what the borrow checker brings is fundamentally about requiring the programmer to be more precise about what they intend, rather than patching the cracks with extra CPU/RAM or waiting until runtime and hoping it won't come up. My main concern here is the risk of Rust running into a more minor version of what happened to D, where you effectively had two language ecosystems and the one with a GC and all the libraries wasn't an alternative to C or C++ and wasn't a very appealing alternative to Java.