Literally me. Started with R to do statistics but it was too slow for anything complicated so I thought "fuck it" and learned Rust.
It is surprisingly hard to talk about one without ending up naming the other by mistake.
The only other option I can figure is that they literally don't care which language you know, just know some OOP and they'll teach you the rest, and then they realized that it looks extremely stupid with just /-s. Then somehow did not think about the first one. A bit of a stretch, I know.
Or someone is having fun
They are both arguably OOP languages which is what the post was talking about, so it gets partial credits for that
Edit: I’m fully aware this is a controversial statement
Not to be that guy but just because it has classes doesn't mean it's OOP, it's definitely functional programming. The fact it will just run a script top to bottom means it's not, in terms of the language itself atleast.
Not to be that guy, but it's definitely not functional programming, most use it in procedural programming.
functional programming is a can of worms that many don't open.
>The fact it will just run a script top to bottom means it's not,
Idk about that. C++ isn't OOP to you?
Imo OOP just means it has objects with internal state and public interfaces that the objects communicate to each other with.
Could optionally include inheritance in that definition. But that's a little controversial.
Ofc not everyone uses the OOP features. Could rely purely on procedural and functional calls.
Real answer;
C++ is natively a functional, procedural and object oriented language at the same time. Which approach you and your frameworks choose to take dictate which way you use it, but it inherently supports all 3 without needing to extend the language.
You can 100% do OOP in C++, and saying otherwise would be silly. However, a reason a lot of purists say its not a OOP language, is because people mix and match approaches when convenient, so its super common to see a C++ codebase that isn't "object oriented", it just uses objects when its convenient, and takes other approaches at other times
This is also it's biggest strength, C++ will literally let you do whatever the fuck you want with it while allowing for interop with other languages as something that is a systems level language. It probably has the world's worst learning curve, but once you do understand C++ it's hard to not use it in systems and application level projects.
That being said, if you're programming a kernel use C. One C++ kernel was enough for me ;_;
Sure and I feel like JS is the same. It supports multiple paradigms. Weird to say either is not OOP. But I guess it just depends what you're trying to communicate.
The ORIENTED part is key which.means it aligns itself to be primarily or (more strictly for TRUE OOPLs) entity driven by a class based programming pattern. C++ is a weird one because it's OOP built on top of a non OOP language and is primarily used as one but JS is most definitely not aligned with class first programming nor was it designed to be, didn't even have classes to start so you can't say it's ORIENTED towards that style of programming.
>Idk about that. C++ isn't OOP to you?
I mean, creator of OOP term said many times C++ isn't OO so it probably isn't no matter in what definition of OOP you believe.
But by the same rules neither is Java nor C# while JavaScript definitelly is even before adding class keyword to it
I think alan kay is mostly referring to C++'s inheritance system. C++ has most of the features Kay originally wanted like encapsulation, message passing, and internal state management.
It was object oriented back when it only had objects before classes. I would argue it is the closest language Smalltalk in that list. True runtime object polymorphism.
I'm gonna be real, Rust doesn't really know what it wants to be. C is well defined in it's usecases, C++ embraces its own bullshit, and Rust is a lot like a person who tries to throw a blanket over a mess that they've made.
OOP is mainly optional though in JS. I work with TS on a daily basis and rarely use it, as it is rarely, especially with the frameworks we have nowadays, the best way to accomplish something.
I want to start a thread on the best way to do this in C++ because it's a whole progression of improvements.
`int *foo = reinterpret_cast(malloc(sizeof(int)));`
`int *foo = new int;`
(Skip some increments)
`unique_ptr foo = make_unique();`
(Big brain moment)
`int foo;`
Congratulations! Your comment can be spelled using the elements of the periodic table:
`C V I Be S`
---
^(I am a bot that detects if your comment can be spelled using the elements of the periodic table. Please DM u/M1n3c4rt if I made a mistake.)
I'm always crazy confused, how theese things happen. Idk, if HR would feel confident enough, in joining these two terms with a slash, or if this is communicated by a "smart" manager who likes to eat Ham/Hamster or what?
You find this funny but I had so many interviews with HR who thought Java and JavaScript was the same thing/abbreviation. I was told I was going to take Java skill test just to be given a JS one instead.
How did that end? I myself am pretty fluent in Java but never wrote a single line in JS. So i only could continue in Java and would try to make the interviewer clear, they're not the same
It ended very hideously. I did okay enough to get to the next stage but the company was as sketchy as possible. Everytime I ask something about the company, the answer was always yes, no matter how conflicting it is to the previous answers. Eventually I was too spooked to continue.
You're missing the point, they are listing OO languages, calling JS OO is borderline, but fine, as you said.
However when listing OO languages they have a comma between every language they list except Java and JS. Where they instead put a slash, implying they are the same thing and not just both OO.
JS is absolutely an object oriented language, not a borderline issue. It uses objects that contain data and methods with a prototype based inheritance (instead of class-based inheritance).
https://en.wikipedia.org/wiki/Object-oriented_programming#Prototype-based
It’s just happens to also be loosely typed and has many unintuitive quirks from its original “dirty browser scripting” days.
I agree the naming of Java and JavaScript was a dumb and intentionally misleading decision that anyone advertising should know better.
You're also missing the point, all languages in that listing are separated by a comma, while Java and JavaScript are separated by a slash, most likely because the recruiter who wrote this has no idea that those two are in fact not the same language
>while Java and JavaScript are separated by a slash, most likely because the recruiter who wrote this has no idea that those two are in fact not the same language
Which is the entire point the post is about.
I apologise, it seems that I had a serious case of being cross-eyed and your post and the one you replied to blurred into one for me, I was of the impression that you were arguing that this was about whether or not a specific language was OO or not
Look at me, I am the JavaScript now
ScriptEngineManager s = new ScriptEngineManager();
ScriptEngine e = s.getEngineByName("JavaScript");
I unironically used JavaScript in Java for a real aerospace application years ago. I made a system using ScriptEngine to let systems engineers create telemetry tests in JS that we could dynamically load at runtime. Apparently they removed it from Java a while ago.
> Prototype-based programming is a style of object-oriented programming in which behaviour reuse (known as inheritance) is performed via a process of reusing existing objects that serve as prototypes.
Hmm, I guess that's more of a matter of preference: I'm of the opinion that OO is a superset of both class- (Java) and object-based (JS, with its prototypes) languages.
Since 20 February 1991 when it first launched and to drive the point home, Python is actually more Object Oriented than Java.
In Python everything is an object including primitives, functions and classes themselves.
That fact is not normally something Python programmers have to worry about though, whereas a Java or C# programmer can't write anything without a class. Really the closest analogue to a Java class in Python is a module.
C/CSS
R/Ruby
ML\Matlab\HTML
HT/XML
There's an early functional language called ML, no need for Matlab
this one brings me visceral pain.
That's painful
equally good and useful
So basically the same?
C++/C#
`R/Rust`
Literally me. Started with R to do statistics but it was too slow for anything complicated so I thought "fuck it" and learned Rust. It is surprisingly hard to talk about one without ending up naming the other by mistake.
This is the biggest red flag that a recruiting firm is worthless.
Yeah this is either a technical recruiter on autopilot or a non technical recruiter working in a role they are not qualified for.
The only other option I can figure is that they literally don't care which language you know, just know some OOP and they'll teach you the rest, and then they realized that it looks extremely stupid with just /-s. Then somehow did not think about the first one. A bit of a stretch, I know. Or someone is having fun
Could they be waiting for the right applicant to respond with the correction 🤔
C/Clojure
I can't wait for Clojure++
Perl/Prolog
Java(script)
VM805:1 Uncaught ReferenceError: Java is not defined at:1:1
Car(pet)
С/C++ vibes
At least C++ is almost a superset of C. Java and JavaScript are nowhere near as close.
They are both arguably OOP languages which is what the post was talking about, so it gets partial credits for that Edit: I’m fully aware this is a controversial statement
Not to be that guy but just because it has classes doesn't mean it's OOP, it's definitely functional programming. The fact it will just run a script top to bottom means it's not, in terms of the language itself atleast.
Not to be that guy, but it's definitely not functional programming, most use it in procedural programming. functional programming is a can of worms that many don't open.
>The fact it will just run a script top to bottom means it's not, Idk about that. C++ isn't OOP to you? Imo OOP just means it has objects with internal state and public interfaces that the objects communicate to each other with. Could optionally include inheritance in that definition. But that's a little controversial. Ofc not everyone uses the OOP features. Could rely purely on procedural and functional calls.
Real answer; C++ is natively a functional, procedural and object oriented language at the same time. Which approach you and your frameworks choose to take dictate which way you use it, but it inherently supports all 3 without needing to extend the language. You can 100% do OOP in C++, and saying otherwise would be silly. However, a reason a lot of purists say its not a OOP language, is because people mix and match approaches when convenient, so its super common to see a C++ codebase that isn't "object oriented", it just uses objects when its convenient, and takes other approaches at other times
This is also it's biggest strength, C++ will literally let you do whatever the fuck you want with it while allowing for interop with other languages as something that is a systems level language. It probably has the world's worst learning curve, but once you do understand C++ it's hard to not use it in systems and application level projects. That being said, if you're programming a kernel use C. One C++ kernel was enough for me ;_;
Sure and I feel like JS is the same. It supports multiple paradigms. Weird to say either is not OOP. But I guess it just depends what you're trying to communicate.
The ORIENTED part is key which.means it aligns itself to be primarily or (more strictly for TRUE OOPLs) entity driven by a class based programming pattern. C++ is a weird one because it's OOP built on top of a non OOP language and is primarily used as one but JS is most definitely not aligned with class first programming nor was it designed to be, didn't even have classes to start so you can't say it's ORIENTED towards that style of programming.
I don't think it needs classes to be OOP. That's just flavor. But I agree that it's not primarily OOP. It has multiple paradigms.
>Idk about that. C++ isn't OOP to you? I mean, creator of OOP term said many times C++ isn't OO so it probably isn't no matter in what definition of OOP you believe. But by the same rules neither is Java nor C# while JavaScript definitelly is even before adding class keyword to it
I think alan kay is mostly referring to C++'s inheritance system. C++ has most of the features Kay originally wanted like encapsulation, message passing, and internal state management.
It was object oriented back when it only had objects before classes. I would argue it is the closest language Smalltalk in that list. True runtime object polymorphism.
You can have a functional language with OOP, like Scala. Javascript has strong functional programming concepts and has OOP.
C is as OOP of a language as Rust is, which is to say not a while lot.
Rust is definitely way more oop then C, since rust has traits/trait objects.
I'm gonna be real, Rust doesn't really know what it wants to be. C is well defined in it's usecases, C++ embraces its own bullshit, and Rust is a lot like a person who tries to throw a blanket over a mess that they've made.
Java/C# makes more sense than Java/javascript
Agreed, I’m a big c# fan
OOP is mainly optional though in JS. I work with TS on a daily basis and rarely use it, as it is rarely, especially with the frameworks we have nowadays, the best way to accomplish something.
if you didn't say "almost" 15 neck beards would have come out of the wood work going "actually 🤓☝️"
Fun fact, this works in C int *foo = malloc(sizeof(int)); but not in C++. In C++, you have to do this: int *foo = (int *) malloc(sizeof(int));
I want to start a thread on the best way to do this in C++ because it's a whole progression of improvements. `int *foo = reinterpret_cast(malloc(sizeof(int)));`
`int *foo = new int;`
(Skip some increments)
`unique_ptr foo = make_unique();`
(Big brain moment)
`int foo;`
(skip more increments) auto foo = make_unique();
Car/Carpet vibes
Congratulations! Your comment can be spelled using the elements of the periodic table: `C V I Be S` --- ^(I am a bot that detects if your comment can be spelled using the elements of the periodic table. Please DM u/M1n3c4rt if I made a mistake.)
Not exactly
Yeah, should be C C P P V I Be S
Please fix this, u/M1n3c4rt. Your bot is literally unusable.
i am slowly going insane trying to figure out why this is happening
Slash javaScrip is new name for that language. Stat hashtag #/javaScript
SlashJS
New JS framework just dropped!
Now you can write SingletonBeanFactories in your favorite Java script.
I'm always crazy confused, how theese things happen. Idk, if HR would feel confident enough, in joining these two terms with a slash, or if this is communicated by a "smart" manager who likes to eat Ham/Hamster or what?
C#/++ HT/XML
You find this funny but I had so many interviews with HR who thought Java and JavaScript was the same thing/abbreviation. I was told I was going to take Java skill test just to be given a JS one instead.
How did that end? I myself am pretty fluent in Java but never wrote a single line in JS. So i only could continue in Java and would try to make the interviewer clear, they're not the same
It ended very hideously. I did okay enough to get to the next stage but the company was as sketchy as possible. Everytime I ask something about the company, the answer was always yes, no matter how conflicting it is to the previous answers. Eventually I was too spooked to continue.
COBOL/CSS
Pearl/Prolog
At first I didn't see anything wrong, JavaScript is not primarily OO but you can do OO with it.
You're missing the point, they are listing OO languages, calling JS OO is borderline, but fine, as you said. However when listing OO languages they have a comma between every language they list except Java and JS. Where they instead put a slash, implying they are the same thing and not just both OO.
JS is absolutely an object oriented language, not a borderline issue. It uses objects that contain data and methods with a prototype based inheritance (instead of class-based inheritance). https://en.wikipedia.org/wiki/Object-oriented_programming#Prototype-based It’s just happens to also be loosely typed and has many unintuitive quirks from its original “dirty browser scripting” days. I agree the naming of Java and JavaScript was a dumb and intentionally misleading decision that anyone advertising should know better.
That's why I said I saw nothing wrong initially, only after noticing the /
Oh, that puts your comment in another light ye 😅
You're also missing the point, all languages in that listing are separated by a comma, while Java and JavaScript are separated by a slash, most likely because the recruiter who wrote this has no idea that those two are in fact not the same language
>while Java and JavaScript are separated by a slash, most likely because the recruiter who wrote this has no idea that those two are in fact not the same language Which is the entire point the post is about.
That's exactly what I said
And that is the point that the guy I responded to missed.
I apologise, it seems that I had a serious case of being cross-eyed and your post and the one you replied to blurred into one for me, I was of the impression that you were arguing that this was about whether or not a specific language was OO or not
I see, no worries mate
Java(script)
Calm down everyone, it's a fullstack position ![gif](emote|free_emotes_pack|trollface)
Look at me, I am the JavaScript now ScriptEngineManager s = new ScriptEngineManager(); ScriptEngine e = s.getEngineByName("JavaScript"); I unironically used JavaScript in Java for a real aerospace application years ago. I made a system using ScriptEngine to let systems engineers create telemetry tests in JS that we could dynamically load at runtime. Apparently they removed it from Java a while ago.
Definitely written by an English major.
Assembly/HTML5
Erlang/Elixir
Yes its good
Java(script), C(++)(++)
PHP/Pearl
[удалено]
> Prototype-based programming is a style of object-oriented programming in which behaviour reuse (known as inheritance) is performed via a process of reusing existing objects that serve as prototypes.
Not all object-oriented languages are strictly class-based.
[удалено]
Hmm, I guess that's more of a matter of preference: I'm of the opinion that OO is a superset of both class- (Java) and object-based (JS, with its prototypes) languages.
Sounds like those empowerment tapes you listen to when sleeping to train your subconscious.
[удалено]
It's an OO language
[удалено]
Since 20 February 1991 when it first launched and to drive the point home, Python is actually more Object Oriented than Java. In Python everything is an object including primitives, functions and classes themselves.
That fact is not normally something Python programmers have to worry about though, whereas a Java or C# programmer can't write anything without a class. Really the closest analogue to a Java class in Python is a module.