Do we really think Javascript is exotic? Hasn't it proved itself over many years now?
That doesn't mean it can't have issues like anything else. And because of the massive scale of the language you'll see a lot of shit. It's a language and ecosystem like anything else - it's what you do with it that matters.
I wouldn't say JavaScript is exotic, it's more to do with what is being done with it.
Traditionally it was used to enhance HTML pages with some DOM manipulation but it's now being used for a million other things too.
So historically, if your JavaScript code broke your page would still render as it was just html but now there are all sorts of build processes and long chains that use JavaScript to create the html in the first place... I'd consider that the exotic bit.
Traditional JS running in the browser manipulating DOM elements is very much a foundational aspect of the web and won't deteriorate with age (with the exception of perhaps deprecated functions in the far-off future) but all these js libraries and tools and build processes with massive dependency-chains are what's being referred to.
It's been used as a general purpose programming language for over a decade. It is a 'boring technology' nowadays and hardly exotic.
Of course, you could decide to do something exotic with it (edge rendering, data programming, whatever) but that's not a problem with the language but people wanting to stretch themselves...
JavaScript has matured massively over the past 10 years. I'm not a Node developer myself, but JS + TS is a very palatable combination to me. I'd pick it over many other languages.
10 years ago I would not have touched JS unless I was forced.
I'd be interested to know which ones, because I can't think of one advantage that Javascript has - aside from the ubiquity of browsers. If we're comparing any other aspect of it though, I just don't know what advantage it has (seriously).
Functions are first class. Async i/o by default. Familiar syntax (I'm sure Haskell or Clojure are better languages, but they sure take some time to get used to. You can be fairly productive in js in very little time). There are packages for anything you can think of, no need to reinvent the wheel most of the times.
And I even like it's single threaded nature. Being able to keep a process waiting without needing to spin a new thread with all that implies is very convenient.
Edit: Original commenter had already mentioned typescript.
So what's the deal with TS? I think on top of adding much needed type safety to Javascript, TS is also one of the best type systems you can ask for.
Firstly, thank you for answering. I think most people would be too defensive (devs are a touchy lot:) to bother or just dismiss my sincere question. I'm going to disagree though (quite gently, I hope:)
> Functions are first class.
Always a good thing to have in a language but I struggle to think of a language that doesn't have this now. Java has it, C#, Python… if a language is being developed and didn't have it then now it does, right? Perhaps C doesn't - I checked, functions may be passed as arguments but does not allw nested functions, but it has callbacks so a type of closure is possible… hard to tell. Still, I'd say not using C was an advantage!:)
> Async i/o by default
I'm not sure which languages this gives an advantage over?
> Familiar syntax
I don't think this is an advantage, most languages are much of a muchness, and there are some serious footguns that still lay around in JS. Is `==` familiar? No, that's a footgun. Automatic semicolon insertion (ASI) rules? No, they're another footgun. Are fat arrow operators familiar? Doubtful. The new backticks? They're the other way round to what I'm used to.
Certainly though, it can be picked up quickly enough.
> There are packages for anything you can think of
This is definitely an advantage over some newer languages, but over those in major use, it's not. Still, the way packages are installed and handled is… eye-opening. That wheel has been reinvented several times, and it still looks wonky.
> I even like it's single threaded nature
Sometimes that's a good thing, true, but it's not an advantage to have it set that way all the time.
> TS is also one of the best type systems you can ask for
I haven't used it, tbh, but I would say that an optional type system (it's optional in that you don't have to use TS, I don't know if it's optional once you start using TS, that would be better) is a definite advantage over some languages. It's not baked in though so that's half a point.
I just don't see it. I think the driving force of the move to Javascript everywhere was because devs were tired of learning at least three languages (JS, something, SQL) and not being very good in all three (usually poor at SQL) and thinking they'd get more control by kicking out the DB guy who'd stop their bad ideas (because they didn't know SQL) and they could become an expert in one language to rule them all. Companies love it because of fungibility and more new devs tend to start with Javascript than anything else.
Perhaps I've just got used to keeping several languages in my head?
> I think the driving force of the move to Javascript
> everywhere was because devs were tired of learning at
> least three languages [...] Companies love it because
> of fungibility [...]
>
> Perhaps I've just got used to keeping several languages in my head?
Another possibility that doesn't involve you being smarter than everybody in the room is that many people that were capable of learning several languages saw that the majority of companies wouldn't care for this and instead would prefer to hire for a fungible language. They specialised in this language and then used their free time to learn other skills so they could become more valuable in the marketplace.
You wrote a lot of words about how others were "tired of learning" and "not being very good" and "kicking out the DB guy who'd stop their bad ideas" and then finished it off by congratulating yourself on keeping several languages in your head. I can be rude but you should think about how this would be perceived by others.
No, you should try to keep your temper, you could’ve provided your objections without resorting to rudeness. As such, I feel that I’ll simply ignore your point of view.
Somehow I suspect this isn't the first time you've ignored other people's points of view and felt righteous about it. But, the way you act, must give the people around you a lot of entertainment so I'd certainly not want you to change!
Mate, there are published guidelines for the site. If you don't want to follow them, that is up to you. People aren't even supposed to be snarky but they are, sometimes I am - we're all human and can be a bit spiky at times - but outright rudeness isn't defensible. Of course I'm going to ignore you because of it.
> But, the way you act, must give the people around you a lot of entertainment so I'd certainly not want you to change!
I wanted to point out to you that there are other reasons for people choosing different choices to you which don't involve them being "tired of learning" and "not being very good".
You described yourself as being "used to keeping several languages in [your] head" as if this was an achievement that others couldn't muster.
I still feel that your derision towards others and self-congratulatory tone were deserving of rudeness and snark.
Anyway, I apologise for being rude since it was hurtful. I thought your comment was bad and let you know this by directly accusing you of exactly what you were doing, instead of finding some non-confrontational way of saying it.
Typescript has a pretty cool type system. A mixture of dynamic and static typing. You can be as dynamic as with js (or python), or stricter than Java (you can state a reference cannot be null for instance), or anything in between (and have dynamic parts and static parts in the same program).
I haven't used Typescript but I've generally heard very good things about it. I didn't know you can mix and match, that might give me a bit more of kick to include it in a project, thanks.
Whether or not it's an advantage of Javascript… I'm not sure. I mean, if someone wrote a transpiler for Java that overlayed stricter typing, would that really be an advantage of Java? Not sure, but of course, worth considering when choosing a language for a project.
Your comment led me to figuring out if Second Life is still really a thing. And I can't really figure it out. Apparently Linden Lab has over 200 employees so there must be some revenue on it. But is the user base growing, and how big is it?
The user base is flat, but the revenue keeps coming in. About 250 employees, down from a peak of 350, and about $66M in revenue.
Linden Labs is developing something new, called "Sansar", for virtual reality users. It's closer to a video game than a simulated world; it's a platform for "experiences", which are essentially third party games. Whether that works out depends on whether VR gets any traction. Second Life also might get a boost when the new Amazon "Snow Crash" series airs. Second Life is the closest thing to the "metaverse" of Snow Crash.
Second Life is interesting because it is an Internet system that isn't the World Wide Web. It's not HTTP based. It doesn't use HTML or Javascript. It's a huge system of its own. It has a social network, with members, groups, and text and voice chat. Strangely, about 40% of avatars never move; they just use the chat functions.
There's a whole world in there that is totally independent of Google and Facebook.
We wanted to see how easy it was to build "native" apps with html/css/javascript today using atom-shell. And it turns out that it's actually quite easy.
A feature we missed from VLC was that you could send video to Chromecast. That feature is now in Playback.
Seems like bittorrent foundation has been doing a lot of closed work source ever since bittorrent has been used across the world and they got very little money out of it.
The idea is to showcase how a large dataset is pretty good at being shared without having central servers. Here using bittorrent.
mafintosh showed how wikipedia could be shared without a central server(s), and instead rely on a network of peers.
subtack did something similar, peermaps, which is a showcase on how you can share geo data over bittorrent. Imagine a google maps without a google servers. https://github.com/substack/peermaps
Of course there's many unsolved questions, like "how do you update?", "how do you manage the data?", etc. But the examples are pretty solid.
I would think that looking at patterns on the CPU level is almost impossible. The overhead would be enormous.
For instance if you look for a magic number. Instead of putting two numbers on the stack, and perform an addition you now have to have a conditional jump before the addition.
Maybe I'm wrong, but at least I think it would be virtually impossible.
You're right, but I meant for bitcoin mining specifically. it's incredibly resource intensive, so it's not something you have to check for all the time, just when something seems to be behaving this way suddenly (and spinning up lots of instances, etc). When there's an obvious huge resource spike, you can just check to see if it's bitcoin mining.
If they want to be neutral and not do introspection like this without permission, they can ask the user on sign-up if they want "Protection from mining processes" where sudden activity spikes will cause them to do introspection and shut down an instance if it seems to be bitcoin mining.
EDIT: plus, bitcoin mining is the same operation over, and over, and over, and over again. You don't have to "catch" it doing a particular operation. A brief sample taken at any time will show the VM doing the same exact thing. (tons of SHA hashes.)
I'm not an expert though so perhaps I'm missing something!
That doesn't mean it can't have issues like anything else. And because of the massive scale of the language you'll see a lot of shit. It's a language and ecosystem like anything else - it's what you do with it that matters.