8 ms·
I'm more and more convinced that a language is only as good as its ecosystem. Yes, language features and ergonomics do matter and are what initially draw people
by voidhorse 4y ago
I'm more and more convinced that a language is only as good as its ecosystem. Yes, language features and ergonomics do matter and are what initially draw people, but in the long term without a robust set of supporting tooling, well designed libraries, and a significant standard library, the language will eventually decline.
Neither Java nor Python are incredible languages as far as baseline features and semantics are concerned, but they continue to thrive because their ecosystems are fantastic and they both have really rich standard libraries to start from. Contrarily, quite a few languages I love from a language design perspective fail to gain as much traction for lack of well-developed ecosystems.
- tayo42 4y ago> language is only as good as its ecosystem this is like my biggest problem with rust, why i still lean towards python for getting things done and started learning go
- worldsavior 4y agoRust has a large ecosystem. Cargo, rustup and a big library. Rust stdlib isn't very big deliberately. Rust stdlib aims for a small and more portable standard library. That's why regex isn't in the stdlib.
- mr_00ff00 4y agoI don’t know what projects you are doing where rust vs python are the options.
- theptip 4y agoI think a lot of people would like to use rust for web dev, but IMO it’s not quite there for ORM-backed apps. (Diesel is nowhere near the ergonomicity of Django for example.)
- mr_00ff00 4y agoI’ve said it before and I’ll say it again, although I think it’s an unpopular opinion: Rust introduces unsafe code (at a minimum through crates). The rust community hates that people use C++ when they could use a memory safe language, so why are they introducing memory unsafe to something that a GC works fine? It’s like their opinion of memory safety as a necessity totally flips the second rust is the unsafe one.
- ameliaquining 4y agoAll languages have memory unsafety somewhere in the stack.
- mr_00ff00 4y agoThis just makes no sense to me, then why try to replace C++? After all, all languages are memory unsafe. Rust let’s you write unsafe code, that’s so different than say python.
- rom-antics 4y agoPython lets you write unsafe code. https://wiki.python.org/moin/CrashingPython https://wiki.python.org/moin/CrashingPython Does that mean it's no safer than C++?
- ecshafer 4y agoRust has C libraries which interface easily...
- samwillis 4y agoThis is where TypeScript had a massive leg up, it obviously had access to the whole JS ecosystem. The community then created a type annotation catalog for popular libraries that didn't have them themselves. "Modern JS" has adopted many of the best features from TypeScript, but back when it launched it added so much cleaner syntax and abstractions over JS. Others that have followed a similar route to success are Scala and Elixir for the JVM and Erlang VM.
- treeform 4y agoI use Nim everyday so I am based, but previously I used JS. And it felt like the JS libraries where just not good quality. It seemed NPM was full of old, broken and unmaintained libs. Some of them did trivial things. I was never happy with their quality. For me JS had the quantity, but not the quality? With Nim, yeah there are way less libraries, but the ones it does have some how feel better. Also when there isn't you just write your own code specific to your missing use case. Which is not that not much code and fits better. I think one of the biggest issues we currently suffer in the programming field is the use of libraries upon libraries, layers upon layers, without understanding.
- samwillis 4y agoIt's true there are a lot of low quality js libs, but there is also a vast number of high quality lobs too, you just need to search them out. From my experience, libs written in TS tend to indicate a higher quality. The main issue with JS and Node was the number of small libraries that do one thing, and the over use of them. If you stick to a framework, Lodash (rather than lots of small libs) and any specialist libs you need it all works really well.
- vineyardmike 4y ago> I think one of the biggest issues we currently suffer in the programming field is the use of libraries upon libraries, layers upon layers, without understanding. I think there’s a balance here. We obviously are way better off with all the layers we’ve built, whether it’s compiler optimizations or kernels or VMs or runtimes or.. or.. We have some widely accepted abstractions and layers like “android” or “Linux” where we don’t question the underlying code too much and we just accept and appreciate it. They’re also heavily maintained for us. 20 layers of left pad? Not so much. It’s almost the standardization problem. We need bigger and more feature-rich runtimes and standard libraries as we tackle more complex and bigger problems. But if every dev has to chart their own path through 1000000 combinations of libraries and runtimes and components, we can’t -as a society- maintain them and battle test them with the same rigor. Like containers, we’ve started to build established norms and tools (docker, oci, etc) freeing us from all the details, when the abilities were always there within Linux.
- revskill 4y agoJava is for enterprise software. Python is for scripting software for quick playground. The worst happen when you use the wrong tool for the job.
- nine_k 4y ago> Java is for enterprise software. Android developers beg to differ. > Python is for scripting software for quick playground. Youtube begs to differ, along with hundreds more larger sites.
- revskill 4y agoWait tills PWA apps is everywhere on mobile stores. Wait till Youtube migrated to something else. Just change before too late. It's an alert, not warning.
- jeremyjh 4y agoThere are hundreds of sites larger than YouTube?
- hnlmorg 4y agoI think they meant “hundreds more [comma] larger [than average] sites” Rather than “hundreds more larger [than YouTube] sites”
- jeremycarter 4y agoWhy so defensive?
- zelphirkalt 4y agoAnother way the worst happens is, when one does the wrong job. (like a typical exhibit of enterprise software)
- revskill 4y agoThere's difference between "software for enterprise business" and "enterprise software" (which means heavy weight).
- valenterry 4y agoYou're making a mistake that many people make: treating the language and the ecosystem as two (almost) orthogonal things. But in reality the language has severe impact on how the ecosystem can and will develop. For instance, when looking at statically typed languages, it makes a huge difference if they offer a solution to the expression problem. That allows two author's to write two completely separate libraries (e.g. a library for an http server and a library for json-(de)serialization) which don't know anything about each other and then allows a third author to write another completely separate library that connects the other two libraries together, so that the http library can use the other library for json. The end user then just has to important all three libraries and has compile time guarantees that it works. If the language does not support that, then people will find workarounds. But it is still heavily impacting the ecosystem.
- cube2222 4y ago> But in reality the language as severe impact on how the ecosystem can and will develop. This so much. One, often omitted, property is also simplicity of the language. If the language is straightforward, then there's a much larger audience who can be potential contributors. Being opinionated in code style is also if value, as it's easy to contribute to others' libraries. It's one of the reasons I think why Go did quite well as far as quick library ecosystem creation goes. It's fairly simple, at least as far as the basics go, and diving into/contributing to third party libraries is very easy, due to opinionated tools like gofmt and the overall language simplicity. Whenever I need something in a library that's not supported yet, I'm able to achieve it in less than a few hours, by quickly diving in and making the changes, even in an unknown codebase. The magic is that this works for the vast majority of libraries.
- elcritch 4y agoI really enjoy Nim for this. It’s also really easy to dive into most any library quickly. Especially for implementations of cool algorithms where sometimes the only other implementation is a C++ version. There’s a cool sub-ecosystem of people who fiddle with algorithms in Nim. They’re often not even in the package manager, just someone who implemented some paper or whatnot.
- spamizbad 4y agoAnd those Python and Java ecosystems are the result of years of effort from their respective communities. When I first started learning Python, the question people would raise was “Why not just use Perl? cpan has just about anything you could want!” A language needs to be good enough for developers to enjoy using it. Java was a breath of fresh air compared to 90s C/C++ code, so people were very motivated to build with it. Likewise, Python had a reputation for “Looking like pseudo code” which made it attractive to devs who needed a language that would let them build out ideas quickly.
- bsder 4y ago> A language needs to be good enough for developers to enjoy using it. That's too far. A language simply needs to not be actively bad. Perl, unfortunately, was actively bad because everybody had their own subset of Perl that they knew and none of them overlapped. When I was interveiwing for VLSI positions back in the mid 1990's, everybody would ask if you knew Perl. I would start whiteboarding and invariably would write something in Perl that the interviewer wouldn't know--which would effectively derail the interview. This is actively bad. Python, by constrast, never had that problem. I used to carry to interviews printouts of a reasonably simple program in both Perl and Python (verilog VCD parser) so I could discuss them with the interviewer. The interviewer would always like the Python program better even if they didn't know Python. (although, to be fair, it seems that Python has now grown that subsetting problem recently--how times change ...)
- drewcoo 4y ago> Java nor Python I thought that Java used to be the main language CS courses in college were taught in and Python is the new standard teaching language. That means lots of cheap new labor pumping out of colleges everywhere with Java and Python skill. Businesses will take advantage of that.