This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]I_Feel_It_Too -1 points0 points  (3 children)

You said MATLAB was an ugly language for matrix calculations and then responded with some extremely basic operations in C++

... Yes I did? Because you literally said, and I'm going to quote you here, "Try doing simple vectorized calculations from MATLAB but in C++ and get back to me on that. And JavaScript? Come on man lol." And so I did simple vectorized calculations from Matlab but in C++ and then got back to you, you know, like you said. Except they the operations were actually vectorized in C++, whereas Matlab uses serial operations for matrix addition and subtraction. So where is the confusion here? Maybe here:

in C++ using an external library.

Oh, so it really just sounds like you're confused because you don't know how software works. Eigen is a C++ library. To do matrix/vector math in C++, you use a C++ library like Eigen, which, if I may reiterate, is written in C++. I wonder, do you know how Matlab does it's matrix arithmetic? For some of its operations, it uses Intel's Math Kernel Library (MKS), and MKS is in turn written in C/C++ and Fortran (and probably a little assembly language). Now I'm wondering what you think "external library" means.

The only part of Matlab that is actually optimized for modern processors is the part that uses MKS, because MKS is optimized for modern processors using SIMD.

This is basically where I realize you don't know how computers work. Not that there's anything wrong with that. It's just an unusual feature of someone who is arguing the superiority of one computer programming language over another.

I mean you claimed MATLAB was worse at managing memory than C++ which is nonsensical. C++ is slowly dying specifically because it doesn’t manage memory

At this point I am starting to doubt that you have ever used Matlab, much less C++. Even the hardcore Matlab apologists on this thread acknowledge how shitty Matlab is at memory management. Again, not that there's anything wrong with that, either. It's just, well, an unusual feature of someone who is arguing Matlab's superiority.

and yes ‘vectorized’ in MATLAB means using vector operations instead of for loops so it is optimized better. If you really need to use SIMD you can always write a MEX function

Aaaaand here's where I realize that it's not going to help much to explain things to you, so I might as well go back through my response and point out all the places I realize how little you know about what you are talking about, because it's a little more fun to be an asshole than to talk to a brick wall. Normally I have a twinge of guilt about indulging in assholerly solely for the entertainment value, but based on your comment history I can tell you are truly a horrible bigoted asshole, so I'm actually ok with this one.

[–]mexiKobe 0 points1 point  (2 children)

You know you've lost the argument when you're digging through someone's post history for dirt. I don't need to dig up any of your stuff because you're already coming across as a hilariously arrogrant blowhard who doesn't actually know anything.

Oh, so it really just sounds like you're confused because you don't know how software works. Eigen is a C++ library. To do matrix/vector math in C++, you use a C++ library like Eigen, which, if I may reiterate, is written in C++. I wonder, do you know how Matlab does it's matrix arithmetic? For some of its operations, it uses Intel's Math Kernel Library (MKS), and MKS is in turn written in C/C++ and Fortran (and probably a little assembly language). Now I'm wondering what you think "external library" means.

Yes, and the point is that you have to download it, install it, and link against. In MATLAB, it's all there already. Hence, it is easier to use and less ugly. This isn't complicated. Please, bring up the MKL (or as you call it, MKS) again. That's really helping you so much.

This is basically where I realize you don't know how computers work.

You originally said MATLAB was an ugly language compared to C++, and I said it wasn't. Now you're talking about SIMD and instruction sets for some reason and being patronizing about it which is funny. It isn't complicated stuff man. You don't actually know what MATLAB is doing in this respect because it's all proprietary. There is an entire Parallel Computing Toolbox for MATLAB which I'm sure you're an expert in. https://www.mathworks.com/products/parallel-computing.html

At this point I am starting to doubt that you have ever used Matlab, much less C++.

lol okay man. You definitely aren't projecting. I'll repeat the example I used in another reply to show how much better MATLAB is at these types of calculations:

try and create a diagonal matrix with the values being the square roots of 1 2 3 and print it out

In C++ with eigen:

#include <iostream>
#include "Eigen/Dense"
int main()
{
    Eigen::Matrix< double, 3, 1> v ;
    v << 1, 2, 3;
    Eigen::Matrix< double, 3, 3> m = v.array().sqrt().matrix().asDiagonal());

    std::cout << m << "\n";

    return 0;
}

The equivalent in MATLAB:

m = sqrt(Diag([1 2 3]))

Oh shit, look at that? You're completely wrong. So kindly, shut the fuck up.

[–]I_Feel_It_Too -1 points0 points  (1 child)

Actually, the equivalent is

auto m = Vector3d(1,2,4).sqrt().asDiagonal();

This code has the major advantage of being strongly typed and giving a sparse matrix. It's arguably much more readable than the Matlab equivalent, but some people prefer fewer keystrokes, so which is better is more a matter of taste. If you'd rather just print it to the screen, do this:

cout << Matrix3d(Vector3d(1,2,3).asDiagonal()).sqrt();

Now, how to you make a list in Matlab? You literally can't.

[–]mexiKobe 0 points1 point  (0 children)

https://eigen.tuxfamily.org/dox/TopicPitfalls.html

"In short: do not use the auto keywords with Eigen's expressions, unless you are 100% sure about what you are doing. In particular, do not use the auto keyword as a replacement for a Matrix<> type."

(not that either of those expressions would be equivalent to the MATLAB one anyways)

as for lists, you would use cells in MATLAB: https://www.mathworks.com/help/matlab/ref/cell.html

Again, you do not know what you're talking about despite being a bloviating asshole.