9 Reasons People Hate JavaScript
Вставка
- Опубліковано 17 чер 2024
- Why does everyone HATE JavaScript? We expose its flaws, quirks, and why it's still the king of the web!
✋ Stay connected
- Twitter: / moshhamedani
- Facebook: / programmingwithmosh
- Instagram: / codewithmosh.official
- LinkedIn: / codewithmosh
📖 What's covered
00:00 - Introducing JavaScript
00:14 - History of JavaScript
00:32 - Coercion
00:59 - Equality operators
01:29 - Array.sort
01:50 - Null and undefined
02:08 - The this keyword
02:23 - Classes
02:38 - Module system
03:16 - TypeScript
03:47 - Ecosystem
04:28 - Why JavaScript is the king
#javascript #programming #webdevelopment #coding
If companies or developers stopped releasing new JavaScript libraries or frameworks every nanosecond, maybe I wouldn't hate it.
EDIT: I dont want to use any of them, as the tech layoff wave is spreading, overrule of AI and ridiculous demands from employers, I stop learning new non sense tech just to please my (future)employers or clients so they can pay me less while having a fullstack. I'm now focus in ReactJS/Angular/Nest and hope those skills can buy me 2-3 years more while I'm learning new skills and start over with diff job, away from tech job for good.
😅😅
It's kinda your problem if you can't pick one and use it tbh.
Just ignore them. Focus on JavaScript, not the libraries.
Or just creat your own library 😁😜
Don't worry AI will replace these useless languages.
Null actually means null pointer. Values that contain objects are actually pointers to the object rather than containing the object themself, and null is pointer to nothing. Which is why typeof null is 'object'.
How dare you educate people, they want us to leave them confused and angry.
Thanks for your amazing content Mosh. You videos are not only very engaging and useful, but also very therapeutic and refreshing 😊
I just started a full stack JS job w/ data analysis job duties too. Seeing this video has made my heart skip a beat.
I know PHP, I know Rust, I know SQL, I know Shell-script, I even once knew C and C++, but I have never managed to get comfortable with Javascript. I don't think I ever will. It never ceases to confuse me.
Similar here. I had to learn c# just so I could avoid js. I hate sql too.
I eventually managed to get it stuck in. I can use JS now. try Mosh's course on modern js.
@Terminus265 yeah.. it's not like I can't code in Javascript all. I've been a programmer for well over two decades, so I have had plenty of exposure to it. It's more that Javascript, IMHO, is so inconsistent and has so many nasty surprises that I feel I'm ridiculously unproductive in it.
@@dschledermann yeah, typescript is much better (tho it's just a linter 😂 that eventually is converted to js)
@@dschledermann Learning to code in JavaScript feels a little like unlearning to program.
It has so many quirks and inconsistencies it gives you bad programming habits to get around them
hello sir, its great to see you again
Good. to see you back.
JavaScript is the chaotic language something like the internet deserves to represent it.
meanwhile im 46yo,self taught and still learning JS >HTML>CSS>React with vite for the last one year, im having fun learning JS because i want to be front end dev for my freelance journey
You too huh
I decided to take JavaScript seriously because of Dash's clientside callbacks.
And I recently got hired into a web development firm that wanted a Python developer just like me. So I decided to learn JavaScript.
That undefined vs null causes a little bit of problems.
Once I knew the distinction:
const, let, var
undefined, null
object, array, map, set.
I also knew JavaScript classes were fake.
I was ready.
Don't forget about prototypes
Great video Mosh, the video was great! You are the best programming professor in the world!!!
I was a C# developer for 4 years and then a node/react dev for the next 6 and I can say, most of these are really non-issues... Sure they "exist" but they aren't really issues. No one is trying to add an empty object to the string "0" in production. We have linters that prevent you from using == and most of the time we don't even use the "this" keyword. Module systems are set up once and forgotten about. Also the "chasing shiny frameworks" rhetoric is not something I've seen in reality, I'm not sure why it's being perpetuated so much. These frameworks come out fast but they don't get adopted fast. The fact that JS has given so many devs the ability to create frameworks in the first place should speak to it's it's flexibility.
If you're new to programming and want to learn JS, do it. It's a flexible language that can run in many places and is easy to learn. It has issues, but so do all the other languages. Anyone that says otherwise, wants to waste their time arguing rather than getting code shipped.
Thanks for sharing.that is informative
Honestly I kinda love the speed to prototype in JavaScript, even knowing the risk of accruing insane technical debt is a perpetual risk with how quiet the language is about the dev's mistakes.
I dunno, I'd rather just take the type coersions in JS than C segmentation faults and Java verbosity.
I'm deeply learning html and css right now next it's javascript, I want to be frontend developer
I have an awesome video for you! Coming next week!
@@programmingwithmoshinteresting I am also in same shoes as him
@@programmingwithmosh do you Any plan for flutter?
@@programmingwithmosh آقا مشفق افتخار مایی
same! my latest project requires me to learn all of them, so I hope it won't be a drastic change from the desktop languages
Okay where does 2:17 come from?? It seems hilarious
Doing great. Here's a dare for you: Make a tutorial video of half an hour in QBasic Language.
I went through BASIC, C++, Pascal (later Delphi) and finally settled on C# for 2 decades. Once over lunch we were discussing JS with colleagues who used it. I said I hate it. They asked why. Not that they were surprised; they just wanted to hear my version. I said: "I feel like coding in JS compared to C# is like going to a ballroom party in your pyjamas. Not that it can't be done. It just doesn't ever feel right".
For the short while I was sentenced to using JS, I remember I spent more than half a day once just chasing a bug due to null checking errors. That's criminal if you ask me. Horrible thing JS. I will not dignify it by calling it a language.
You and I have a lot in common. JavaScript is a colossal mistake.
Matter of preference. Some when they see complications they stop learn that thing. But i think developers should be vast knowledgeable in every tool out there. But who I'm i but people choose what they like
All very good points. I want to add poor coding conventions to the mix as well. I do not like the we need to write code in one event to update code in another.
Great ❤❤❤
Pro tip: if your language need the triple equality operator=== that's a huge red flag. Honestly, I consider the vice of casting everything in everything else the worst sin of JavaScript.
I prefer much more a statically and strongly typed language like Ada. If you use it correctly, you save yourself a huge amount of stupid bugs (and let's face it: most bugs are due to just stupid errors)
Hey mosh, are we expecting new courses from you, I asked you because I love your courses 😊
I just started learning js this month
The main problem with JavaScript is that it handles too many things under the hood. When we learn C, we struggle with pointers and must overcome this to make our programs run. In JavaScript, we don’t need to know how it automatically converts your values behind your back, nor do we need to understand the event loop, or that keeping elements in an array of the same type can make it faster… Our app just works until it doesn’t, and then we’re left bewildered because we missed this kind of information from the beginning.
I find TS helpful. Especially libraries built with ts.
Thanks for this. I'd also add the screwball syntax. Seems like you can't write a function without tossing in some blank pairs of parens and braces. What a mess.
JS is just chaotic, there is no structure to it. Someone said JS is like the C++ of the web and I agree. Unlike C++, JS says: "Do it, but I won't help when it goes wrong". Typescript tried fixing JS but if you are going to declare your types as any what is the point of using Typescript.
This video is amazingly well put and accurate.
I would just have said that the fact it is so popular is because it's the ONLY language that runs in the browser. It's not a matter of choice over other languages, it's literally the only one, for legacy reasons.
Wasm
@@aaronmark3930 It still relies on JS to glue the code together and WASM still can't manipulate the DOM without doing JS interop
So it's still the only language that is supported by browsers natively, you can't juste write a and get going, and it doesn't support all the languages yet, Dart got stable only a few weeks ago
But maybe one day ?
@@Soleryth u r right. but it still is a lang that runs in the browser
Hey Mosh could you do a caching course, like redis
The chaos is what makes it beautiful
Now make a video with how to cope with these shortcomings
I hate that i can't do anything without creating a promise to keep Javascript from trampling over it and breaking my project.
That's why I love it! hahah
Do you think it is worth learning javascript to use it in frontend and backend if not what do you recommend
Unless you're compiling to Web Assembly you need to use JS or something that compiles to JS.
I use TypeScript front and back.
if you want to do frontend and backend development then Javascript is a necessity, but you have to learn atleast one more backend language like python,c#,java etc. along with HTML,CSS and a few other frontend frameworks
@@DigitalCanineGames_ "you have to learn atleast one more backend language like python,c#,java etc."
Nonsense. You can do full stack javascript with nodejs backends.
@@Sebastian-hg3xc I know you can that's why I said "if you want to do FRONTEND adn BACKEND development JS is a necessity", but just because you can do frontend and backend with JS doesn't mean you should or every company's code base has NodeJs on the backend, so it's good to know more, especially Java and C#
Where did u get that meme, can u share with us
There is another alternative to JavaScript, beside TypeScript: Dart/Flutter. When compiled/run for the web it is automatically translated to JavaScript. And Dart if a safe and consistent language. Both type-safe, and null-safe. So a lot of bugs are simply prevented by the language itself.
Of course, a scricter language requires greater design and programming skills; therefore you need to be a pro.
Mr mosh man I love you ❤
Is it popular or is it simply the default for front end?
JavaScript is the default for front end web dev.
sir you better update your course in your website about React native because is it so old version of documentation React Native 0.62 and now React Native 0.72
Is it possible talk about world strtengthest chess software Sockfish 16.1 heard part of software uses C++???
I like JavaScript + HTML because you don’t need to spend several hours smashing your head on the keyboard just to open up a window
Can we get a full Sveltekit course please? I'll give you all my money.
Also tools like Babel and Typescript wreak havoc on your debugging experience.
Web sites demand more resources than video games these days
How?
@@shaheermansoor2560 i can play video games on 1.3ghz CPU but youtube runs good on 4ghz. i underclock my CPU to keep the CPU cool.
@@shaheermansoor2560well I am a computer engineering student who’s mostly done C, and I would say logic is far easier to learn than syntax. A lot of these front end languages to me at least feel overwhelming with syntax whereas something like C is purely logic based.
@@lesterivan282862 Nah you just don't know javascript and talk shit ...
@@lesterivan282862 are you really trying to argue that c is easier to learn/code in than javascript?
l am busy with HTML & CSS, and after that going straight JavaScript!!!!
My first paid project was a telegram bot which I created using NodeJS. So I assigned price as number, but admin entered it with comma. All the posts he created had undefined on price 😂😂
🤣🤣🤣
Number(price.replacace(",", ""))
You mean the admin send those "numbers" via http, possibly as query string, which is.... string values? Parsing numbers locally aware is a challenge not just for javascript, but in general. This isn't an issue with javascript.
@@Sebastian-hg3xc The person who paid money(Admin), yes skill issue from my side😁😁. But I fixed it and did some validation using regex.
I hated learning JS and web when forced to work on an internal webapp that was built on bootstrap when Jquery was underpinning it. It made it so confusing and all these frameworks that popup with syntax baggage just made it hell. After that nightmare project I remade their stupid BS template and theme widgets in raw HTML5, CSS, and JS6. Not only did I learn real web dev the website was lean and fast and maintainable by any competent programmer. Those frameworks seem great but the time it appears to save gets paid for later tracing odd bugs or security issues back to your 10 megs of black-box lib imports because FOSS is assumed to be reliable too often.
One reason to hate JavaScript less these days, is AI like ChatGPT.
Teaching and reminding of language quirks is a pretty good feature.
Not that they are always right, but I've found great help when exploring new languages so far.
JS is complicated for beginners or messy developers. You can do things in hundreads of ways and more than half of them are wrong. The hard part of JS is just about learning discipline, cleaness and simplicity. You can do everything with a functional approach without classes and without using this and its contexts.
An average developer typically write crap with JS. An advanced one would write very elegant code. Mastering JS is not easy, this is why people hate it. A well written JS code is thousands of time more concise and elegant than a python one.
What is your upcoming course mosh
Flutter
JavaScript is weird, but somehow I love it so much.
I agree. It's a lovely language like C.
same
do you know any different language?
@@paca3107 yes
Stockholm syndrome 😅
Typing always gets me. I can assign a variable as a string, then make it a boolean, then finally a date. I know TypeScript fixes this, but you can still sign multiple types to variables in TypeScript. So your variables can be unpredictable when debugging someone else's code.
Well, then don't. What's the problem?
Don't debug other's code? Interesting take.
After seeing the list of weird stuff it has, it is surprising people call it a “programming language” ))
`this` is a menace
And this doesn't even touch on it's biggest issues...
1. It is interpreted. You have to worry about performance, run-time errors, error handling in ways you don't in compiled languages, pre-compiling (which may or may not work at work on individual machines), etc.
2. It is typeless meaning runtime errors confusion, TypeScript (which is only a partial solution and still has lots of anys when detailing with the outside world, etc.), etc.
3. It is too tied to DOM, browsers, versions, OS's, etc. in ways you have no control over.
4. It is too tied to HTML/CSS, including all the browser issues, libraries to get around it, rendering, page states, browser versions, security, etc.
5. Too many parts of it are synchronous with all sorts of non-linear behavior for fairly simply communications, I/O, all require massive complexity when you simply want to application the code to simply wait until a call is made and then continue to the next line.
6. It relies on libraries to try to manage the above -- from JQuery, to React, etc. All these add complexity, change far too often, are rarely complete, add additional complexity beyond the language itself and are pretty much necessary for anything with complexity.
7. It's non-local. Things like a file system, local storage, direct access to things, etc. is doesn't typically exist resulting in massively complex work arounds, etc.
etc.
MySQL has the motto "garbage in, garbage out" , and no one complains about that. You cant add objects, you should expect to get nonsense back in a scripting language that aims to keep running.
The real reason devs hate JS is because it doesn't tell them exactly what to do and how to do it. If you keep removing flexibility, you'll end up with a tool that's so terse, it'll make more sense to automate it than let you toy with it.
I love JavaScript❤
Where is @2:16 from?😂
I find this video very funny cause of how true it is, but bruh, I love JavaScript, I do everything with it, typescript is a good one though, since learning typescript, it’s been the go-to, still JavaScript under the hood 😂
Hell.. I thought I was a disgruntled engineer unable to establish myself in the industry.. now I learnt why something is not right with this lang
I used to like Python more than JavaScript (The 2 interpreted language that I used the most) . There's 2 turning point that made me become like JS more than Python
- I hate Python's concept where indentation as a block since I worked with python in many environment
- JSDocs
using javascript since 1998 for DHTML website, but never use it as primary/main language programming.
website is chaotic thing, you'll never can build it only using javascript without HTML and CSS.
I don't care full stack or front-end or whatever it called, just used whatever you want to write.
I didnt like it because the intellisense wasnt there and troubleshooting it was needed a browser that dont give all the data... but could do all programming though... but if someone writes in html javascript and you need to change it, it is headache as you cant troubleshoot and have to do fast code reading like me and fix it or make it better
I use wysiwyg and I don't have to program in html anymore
I only know C and C++ (they are not the same thing, and learning to write idiomatic C and C++ is like learning a different language, but they do work very similarly under the hood)
the idea that null and undefined are two different things ... or that a can equal b and b can equal c but a does not equal c as explained above , yikes ... i dont think i ever wanna learn JS ...
I mainly use C# for backend development and learning JavaScript was a breeze after learning C#. I honestly don’t get the hate. Debugging is not horrible if you use console.log along with your browser dev tools
Over the years it’s become fashionable to hate JS. The rules, with some admitted quirks, are very easy to absorb. Everyone who has ever cited some of those quirks I’ve asked how often they’ve been affected which is almost never. The loose and strict equality is probably the greatest real world quirk
I love javascript, I have used it for years, almost two decades now. I just don't like to use it on the server.
You forgot to mention the incredibly resource consumption
Guess what, my 1 programming language is JavaScript and still using it with typescript 😮
Hey, lets bring jQuery back. It was fun to use and it was easy. Update that to the date. It had all the capabilities the UI could need. Some improvements here and there and it would have been a good alternative to current library set of javascript library jumble.
Excuse me. Sorry if it bothers you, can you recommend data recovery software for Android with a 100% success rate?
Personally, I hate OOP so classes means fuck all to me. I work as a Senior DevOps Engineer anyway and we use Python (without OOP).
I love you Mosh
i dont mind js too much, but i prefer typed languages in general, so i prefer typescript. In general though, I prefer compiled languages because I get to worry about how it'll be broken on somebody elses machine and work fine on mine 🤣
It's the only language that has a book with this ridiculous title, "Javascript : the good parts". You mean there are bad parts? Yes, there are bad parts. That's why JQuery was invented.
JavaScript is not clear about a lot of stuff but I love it.
JS isn't perfect (no language is), but people hate on it because they think hating it will in-group them, or for content-creator clout -- contributing to the previous. Coming from JS to Python, there are some nice things about it, but I mostly prefer JS (and TS even more -- it's not that hard to pick up if you know JS). If I'd mostly worked with Python before, though, I suspect I'd have a different opinion. In the future I want to pick up languages like Go and Elixir, and I fully expect to have substantial dislike for parts of the experience.
Typescript should be merged into Javascript. The lack of rules in js destroys the language.
It's not a good thing that despite all these issues js is used everywhere, but rather a curse.
I hope someday python would replace js. Or browsers' get the flexibility to use any language.
mosh you are just making it complex, in real world, who the hell would add empty arrays and empty array and objects?
Who wouldn't? It's extremely useful
No one will lol@@xitaris5981
@@xitaris5981useful in what sense? Lol. Im a software engineer for almost 10 years, i have experienced building various backend services and web applications
Who the hell would add empty objects and empty array for what use cases? 😂
Before such empty objects go to your backend to process, should be validated, in real world scenario, no one would ever process empty objects or empty arrays
Get your facts straight
maybe a member in the team who introduce a bug that difficult to trace.
@@xitaris5981 "It's extremely useful"
Okay, then use the right syntax. If it's arrays, use concat. If it's objects, use Object.assign or the newer spread operator. The plus operator is used for numbers and strings, not for arrays and objects.
I don't hate JavaScript, but I can't say the same about the ecosystem
the technology that enables bloatware and all those trackers.
Oh yeah
So many non-issues. How is [ ] + { } = ? an issue you could possibly run into??? Why would you want to add an empty array to an empty object? I don't understand a real world application of this. Can someone explain why this video includes it?
Sure, there is no point in using such expressions intentionally. However, if one tries to add values that come from functions that play loose with type conversions, such things can happen and catch a developer unawares.
@@barbidou If ur functions make your code add an object to an array, they can't be valid functions in real world scenarios.
If you want to be a frontend wizard, you have no choice to master js html css. That is life.
It's true that JavaScript got some weird behaviours that would sometimes make you scratch your head for hours.
whener one is coding,one should be very carefull thats why i love typescript
Its typescript who stopped me quitting Javascript 😐
I saw a lot of memes about JavaScript being trash but I never used it myself. I went straight to TypeScript and honestly I like it. Python and TypeScript are my top languages.
i hate it and it doesn't pay my bills yet :(
i know a lot about python and i can say JS is really bad, and i built a few stuff in JS
Same.lol!
😂😂 love the illustrations.
Javascript is that sticky goop that makes webpages slow. Youmostly think about it when it's doing something bad.
This validate my hate🤣 but i gat to learn it for my bills😭
Lol
There's no thumbs-up button :-/ ... not sure what's going on with YT these days. Learning JS right now, agree on all points you make, coming from Java/Python/C# this languages has lot of strange "rules".
These are what make Javascript the best programming language.
I love it more than I hate it
I might be somehow wrong , but I just logged the outputs of these , both in the browser and in a server env , here is what I get : [] + [] => ' ' ; [] + {} => [object Object] ; [] + {} => [object Object] ; {} + {} => [object Object][object Object]
Yes, mosh is wrong on this one.
PHP has suffered hate for decades and survived, its JavaScript turn! Like JavaScript they both put food on the table.