I actively avoid using JS not because its bad (i mean, syntax wise its pretty awful but workable), but because I know its going to be a total mess to maintain.
I actively avoid using JS not because its bad (i mean, syntax wise its pretty awful but workable), but because I know its going to be a total mess to maintain.
I'm not sure you know what you are saying. It's basically just C/C++ without the chaotical Template shit from C++.
Syntax wise JavaScript is one of the best. If only it had types.
That's just the React crowd, which happens to be most of the market.
Over here in Angular land you could have a person come back from parental leave and there would be maybe one major version change which is major only by name, as few things actually differ between them.
That was a horrible time to live in.
I've made decent money on helping those who were late to the party as someone who started out with AngularJS.
Fortunately everyone involved understood this meant a complete rewrite and all the wanted was people being able to read AngularJS code.
Fun times as Google was sounding the alarm for years already and Angular 2+ was also fairly mature.
And what are your main issues with js?
I've used javascript/typescript as well as rust and java. Each have their quirks.
In FP land: Erlang, Elixir
In C-like land: C#
> And what are your main issues with js?
Google stomping all over standards processes with shit no one needs. That's mostly in HTML-land, but it bleeds into JS land as well. Like the "requirement" for JS to have C++-like classes (it doesn't) that mesh really poorly with prototype-based inheritance and still causes lots of problems (have they solved auto-binding instance methods and private fields yet?).
No standard library, none. That is why you get so many libraries doing the same thing and people importing left-pad.
Abysmal rate of development. That is, however, the result of being developed in the open (somewhat) and needing consensus on new features. This is preferable to browsers and runtimes just doing whatever the hell they want.
NIH-syndrome. Mostly from the frontend crowd, but node.js-ers are bad, too. The audacity to think that no one ever in the history in the world made better UI systems, better backend systems etc. All while painfully re-implementing and re-discovering the last 30-40 years of computer science and engineering.
Beating a dead horse: weak dynamic typing is the worst typing, and Javascript is that. Strong dynamic typing I could accept.
In terms of private members, you prefix # for that...
class MyClass {
#myValue = 6;
...
}
Plenty of languages don't have a "standard library" including, for example, rust... there are benefits and disadvantages to this. The benefit is you also aren't stuck with a poor interface for certain things. You can use Deno/jsr std if you prefer.As for the rate of development... abysmal is not the word I'd use. JS in general has been prolific to say the least and nearly exponential in pratice.
In terms of reinventing UI... if it's just a retread, then why is it there hasn't been a better cross-platform UI toolkit developed? You can do more with HTML+CSS in terms of layout than any other UI native toolkit and even then, most fall short and are limited to only one or two platforms. That doesn't even capture accessibility needs and requirements.
Weak dynamic typing I can somewhat agree with. However, given the origin of JS was mostly for input validation, it makes a twisted bit of sense. Just looking at how falsy behavior works in JS makes a lot of sense, the only minor outlier is 0, but that being falsy in nature comes more from other languages than the subject area of JS itself. I do think that sometimes dealing with undefined, undefined as a value and null is a bit of a pain, and kind of wish that the concept of Option<T> was more prevalent when JS was created.
In terms of your favorites, I've used C# since before the first release and am very familiar with it. There's a lot to like. That said, it doesn't stop the environments that use it from turning it into a twisted, byzantine mess of layers of abstraction and indirection that destroy every bit of performance it's capable of in the name of "Enterprise" practices. I also like the C# language. I just hate most of the C# codebases I've had the displeasure to work in. It's far from exclusive to JS.
Except this:
> you can do more with HTML+CSS in terms of layout than any other UI native toolkit
I cannot in my life understand how this worldview is so common. It's like no one has ever seen a native app before the primitive Electron and web apps that struggle to display a few lines of text.
Turbo Vision from mid-1990s was arguably a more powerful GUI toolkit than HTML+CSS. Most of the things HTML+CSS for which pat themselves on the back were available in Qt in early 2000s.
HTML+CSS have nothing on native UI toolkits: https://x.com/dmitriid/status/1424052288205856773
As long as you don't do anything fancy on the page, accessibility is now great for HTML, too.
However, since it lacks everything that makes a UI useful [1], all the custom components everyone is busy re-making from scratch make the web a miserable place from accessibility point of view [2]. Much worse than native frameworks which often enjoy deep integration with the underlying OS's accessibility features.
[1] See the work by https://open-ui.org and the many, many, many UI components most UI toolkits take for granted and have out of the box
[2] And some of the work in the browsers made it worse: https://nolanlawson.com/2022/11/28/shadow-dom-and-accessibil...
Also, browser tech was changing very fast 10 years ago. Now it is quite slow and the JS ecosystem is consolidating the usage of modern features like ES modules, importmaps, web components.
The build and abandon mentality of JS development as a whole, combined with what is an extremely immature and convoluted package management system is half the problem with modern frontend development.
You don't even have to go far for a comparison. Take a look at composer for PHP. It turned the language around and helped foster a very strong and stable ecosystem.
NPM being the "Biggest" isn't something to be proud of. It's something to question - why is it the biggest? Is it because theres so many fantasticly useful packages? Or is it because everyone insists on reinventing the wheel or creating what are frankly idiotic packages that should neve have been created in the first place (left-pad anyone?).