52
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
this post was submitted on 01 Apr 2025
52 points (94.8% liked)
Asklemmy
47134 readers
1156 users here now
A loosely moderated place to ask open-ended questions
If your post meets the following criteria, it's welcome here!
- Open-ended question
- Not offensive: at this point, we do not have the bandwidth to moderate overtly political discussions. Assume best intent and be excellent to each other.
- Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
- Not ad nauseam inducing: please make sure it is a question that would be new to most members
- An actual topic of discussion
Looking for support?
Looking for a community?
- Lemmyverse: community search
- sub.rehab: maps old subreddits to fediverse options, marks official as such
- !lemmy411@lemmy.ca: a community for finding communities
~Icon~ ~by~ ~@Double_A@discuss.tchncs.de~
founded 6 years ago
MODERATORS
Do you know how you make good web apps with good performance? You don't listen to people whining and bitching about a language, you go out and start coding something and find out where the actual issues are.
Javascript / Typescript is great. There are little annoyances here and there, like with literally every single language, but anyone who says it sucks overall is a quite frankly, a moron.
You now what all of this says? It says that they focus on building utilities that accomplish some small technical task and ignore their users' actual workflow needs. It's the equivalent of minimalist architects that make unlivable spaces because they're technically nice.
As a casual js user (I build some static sites for fun and personal use), I am under the impression that JavaScript "sucks" mostly because some things really make it look like JavaScript was invented as a quick scripting tool rather than the backbone of the WWW.
I'll bring an example that maybe helps me learning someting. Why in javasctipt "1" == 1? I know the === operator exists, but why isn't the default behaviour the safer one? Especially when the mantra is "don't trust the user".
Like, I get, I am a strongly-typed guy, but I see why weakly-type languges exists, but this feel frankly moronic, and all the answers I've seen are " because that's how it is". That's just copium.
Also when I tried to compile a single Cordova app to play around I needed some 5GB of npm modules that totalled ~200k files! Is that how modern app development is like?
Also, the particular webpage OP linked might be a little extreme, but modern software does suck ass, and is not user-friendly nor efficient. Just look at mobile communication apps, like Teams. The user experience is terrible, the UI is unrespive, the battery drain is crazy and it takes 800MB of space. Is this because it's an electron app, or because it's made by incompetent programmers? I don't know, but we made incredible hardware improvements in personal computing, new software should be even more efficient and use them better, not get more and more bloaty to have the same experience on older and newer hardware
Like, you're not entirely wrong here. The == vs === is entirely just a legacy of a poor early decision in the language's development.
However, the reason that it's still there isn't just "because that's how it is", it's to maintain backwards compatibility. You could break the language and change your equality operators to something more sensible, but to do so would result in:
OR the real answer is C) devs just add linters that check your code for common mistakes. All modern javascript dev environments will include a linter that yells at you if you accidentally use the == sign, right in your IDE as you type it, making it not really a big deal, and autocomplete will automatically use ===.
And maintaining backwards compatibility for the Internet / World Wide Web, is probably the single most important place to maintain backwards compatibility, as it is effectively a continuous archive of information and publications. Putting up with === is honestly not that big of a deal in the context of all the above.
I got my start with Java and C#, then Python, then Javascript, then Typescript / etc. etc. Trust me, I vastly prefer a good type system, which is why I use Typescript for everything I can these days. It is still technically weakly typed in that you don't get type errors at runtime, just at compile time, but it still makes coding in javascript soooo much nicer and more pleasant and more predictable, and it's quite frankly the most flexible and easy to use Type system / syntax of any language that I've used.
I mean, Cordova is not just a web app platform. That's including the toolchain to build a web app, but also do compile it into an Android app, or to compile it into an iOS app. You've basically got large chunks of the android and ios sdks in there.
Yes, because of corporate practices that prioritize feature development instead of addressing tech debt or performance. But that's not always the case. I worked at Meta for a stint as a contract developer, I've seen how they make decisions and they're not uninformed. They will run A/B testing on simulated apps to measure exactly how much of a difference performance makes, and then balance that against the effort it will take vs the effort it will take to develop new features and then they prioritize accordingly.
No where else I've worked does that. Everywhere else just hears a customer or executive yell for a new feature and then the PM just starts working on it without proper research or without giving team's time to go back and address tech debt.
Given that VSCode is made by the same company, is also an electron app, and is generally remarkably performant, I would posit that teams is made by worse programmers since it's a less attractive product to work on, and the team is probably less user focused since users don't buy their software, the users' workplaces do.
VSCode is remarkably performant? For a text editor? Maybe compared to other Electron apps, but not for a text editor, I mean compare to Geany (let alone vim, neovim or Emacs). They had pretty much same useful features before AI assistants
For an IDE.
I can configure VSCode as a full IDE for say C#/.Net development, and it performs pretty much just as well as VS which is written natively.
Ditto for configuring it as a Python IDE vs PyCharm, ditto for Java and Eclipse, ditto for basically everything else.
And I'm sorry but I have to respectfully disagree here: VIM / Neovim / any purely text based editor has never had anywhere near the same feature set as VS Code + it's extensions. They are more performant, run anywhere, and can be configured to be quite powerful, but they're still fundamentally hamstrung by using a typewriter's line by line interface rather than being able to easily draw arbitrary 2d or 3d graphics and use the power of CSS styling.
Like, just drawing out a list of items, and then being able to get more detail on one of those items, is fundamentally a pain in command line, requiring a list command and then an item detail command or a list verbose command, where is in a GUI you just list items and can then expand them or hover on them for more info.