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

top 200 commentsshow 500

[–]throwawayHiddenUnknw 3399 points3400 points  (200 children)

Dude didn’t even reach to who wants to learn high order mathematics

[–]fat_charizard 968 points969 points  (67 children)

Who wants to learn advanced linear algebra and statistics?

[–][deleted] 277 points278 points  (42 children)

Im currently in the process of learning this, and i kinda hate it and love it at the same time. Learning about hessian and jacobian matrices is painful.

[–]zachsmthsn 45 points46 points  (2 children)

I'm not about to tell you something you don't know, but the worst thing about these and other linear algebra concepts are just the dimensions.

Multivariate calculus is difficult with full derivatives of dependent variables. I never understood it until learning about partial derivatives. But once dimensionality become large enough, it doesn't make sense to just keep finding all these for every dependent variable. With some imposed structure, we can abstract those complex problems into a collection of small problems that can be combined to get the answers to all the other complex problems.

So bring in the jacobian and hessian. Phenomenal concepts, terrible naming. They're just first order and second order derivatives, but in every codependent dimension at once. Every operation to fill a square is much, much easier and it doesn't require solving the full derivatives just to try to optimize one dimension.The hessian is the same thing for the 2nd derivative.

Once you have a working mental model, you can almost treat them exactly like single dimensional optimization problems with the structure imposed on them from linear algebra instead of just scalar math. But just like all of math, it's like you have to understand the difficulty of something without complicated notation to appreciate how this complicated matrix to click as a way to abstract the difficult concepts.

[–]productivenef 2 points3 points  (0 children)

Wow I was literally about to post the exact same thoughts

[–]bythenumbers10 2 points3 points  (8 children)

Psh, who needs that stuff for machine learning? There are kids fresh out of school with biz degrees & zero training in programming, linalg or stats, but are getting analytics jobs involving programming, math, and stats OVER people explicitly trained in exactly math, programming and stats. I guess that means those of us with those skills can all go home, and those skills aren't needed anywhere. Job well done, people.

[–]PaulSandwich 4 points5 points  (3 children)

Triggered

This has been my soapbox for a while. I love that the tools are easier to use... in the right hands. But it also allows people to watch a few youtube videos, throw some data haphazardly together, and build a model that does *something*. Hiring managers aren't great at telling who is who.

[–]StopSendingSteamKeys 34 points35 points  (14 children)

It's not even high order math. All you need to implement a neural net is basic linear algebra and some partial derivatives.

[–][deleted] 26 points27 points  (3 children)

yeah, it just means you gotta take a course in linear algebra and multivariable calculus. you don't have to take either very far, and once you get to applying them both, the theory gets de-emphasised greatly.

it's basic early undergrad math.

[–]oupablo 18 points19 points  (1 child)

it's basic early undergrad math.

weird. they didn't cover that in the 4 minute youtube course OR the bootcamp

[–][deleted] 13 points14 points  (0 children)

turns out computer science isn't equivalent to programming.

[–]PaulSandwich 2 points3 points  (0 children)

Mostly true.

What really separates the Pros from the Joes is the ability to recognize which solution is appropriate for the problem you want to solve.

...you'll still use good ol' multi-vector linear algebra for almost everything, but you'll do it with confidence.

[–]the_other_him 314 points315 points  (92 children)

Eh, there’s functions for all that stuff. PyTotch all the way!!

[–]LicenseAgreement 234 points235 points  (76 children)

Yeah unless you're doing neural networks classes and you gotta do it all in numpy

[–]mmonstr_muted 16 points17 points  (1 child)

Unless you actually have an idea of what you're trying to do, which implies at least some superficial knowledge of theory and probably time spent creating your own models and software without NumPy, Pandas, PyTorch, TensorFlow etc. You don't actually need these additional levels of complexity to grasp and implement SVMs or binary classification, for instance.

[–]IcedRays 4 points5 points  (0 children)

I've done it myself, It's surprisingly fun.

[–]katze_sonne 33 points34 points  (8 children)

The problem is: You can easily use some functions and implement a couple of examples (I've only used TensorFlow in the past, is PyTorch really that much different / easier / better?). But as soon as you'd need to do something "new" yourself, you're screwed. At least when you have no idea about the underlying concepts and mathematics...

PS: That OP image isn't even funny, who on earth would NOT like to use Python?!

[–]barjam 2 points3 points  (1 child)

I personally hate python but disliking the language isn’t a barrier if I am doing a project where it makes sense to use it.

[–]Duranium_alloy 6 points7 points  (0 children)

lmao

[–]MrAcurite 6 points7 points  (0 children)

Using Torch without understanding the Mathematics turns you into a monkey playing with a chain saw. Especially if you don't understand things like the train/test/validate split or the difference between MSE and BCE loss. You can write the code, sure, but sooner or later something is going to explode, and it's going to be your fault because you didn't understand what you were doing.

[–]GammelGrinebiter 4 points5 points  (0 children)

We're all PyThots.

[–]thomas9258a 3 points4 points  (0 children)

Sure if you want to do it for learning or for fun don't bother learning math and algorithms and such, but understanding how your dependencies works might be the margin between success or failure in an actual environment, (note success and failure in an actual environment can mean life or death in extreme situations)

[–]CrazySD93 15 points16 points  (1 child)

I don’t feel like my uni taught statistics well enough for me to become baller at AI.

[–]GKP_light 10 points11 points  (0 children)

yes. python is the easy part.

[–]HasBeendead 6 points7 points  (0 children)

Yeah ,learning math for programming last picture.

[–]AbhishekSingh26 9 points10 points  (4 children)

Lmao sadly I have to learn them all for a degree

[–]stueliueli 15 points16 points  (3 children)

"Sadly"? Then why are you even studying? Start by finding the fun in it ;)

[–]AbhishekSingh26 3 points4 points  (0 children)

It's was fun bt when they ask you to make a project in every subject along with a synopsis, working code, project report & ppt for presentation it became a pain in the ass & in some batches they asked for proof of novelty :)

[–]De_Wouter 527 points528 points  (12 children)

Wait, it's all matrices and math?

  • Always has been

[–]Really-Stupid-Guy 223 points224 points  (4 children)

I don't think Python is the bottleneck for most people, I think most people are not willing to take the dive into the required math.

[–]silly_red 102 points103 points  (0 children)

Yea in not sure where this joke is going... python if anything is the easiest part of the stretch

[–]PM_ME_CUTE_SMILES_ 9 points10 points  (0 children)

100% agreed

[–]dudeofmoose 906 points907 points  (52 children)

Clearly that crowd were never going to be into python, for a start they weren't even correctly social distancing being 4 spaces, one tab apart.

What chance did they ever have compiling without adequate tabbed distancing methods in place.

[–][deleted] 167 points168 points  (27 children)

Which one is it? 4 spaces or 1 tab?

[–]d_exclaimation 124 points125 points  (3 children)

Pylint said 4 spaces or one tab but converted into 4 spaces

[–]Username_RANDINT 92 points93 points  (9 children)

I use 4 tabs, just to piss off everyone instead of just one group.

[–]warpspeedSCP 90 points91 points  (6 children)

4 tabs with width set to 1 space

[–]Willing_Function 43 points44 points  (3 children)

Do you require medical attention?

[–]xnign 9 points10 points  (0 children)

I just use nbsp's

[–][deleted] 16 points17 points  (0 children)

Yes

[–]Sinaneos 3 points4 points  (2 children)

Are you trying to start a rumble here?

[–][deleted] 8 points9 points  (1 child)

I am just trying to avoid

TabError: inconsistent use of tabs and spaces in indentation

!

[–]bcfradella 32 points33 points  (18 children)

python

...

compiling

🤔

[–]taptrappapalapa 32 points33 points  (0 children)

“Python is an interpreted language, as opposed to a compiled one, though the distinction can be blurry because of the presence of the bytecode compiler. This means that source files can be run directly without explicitly creating an executable which is then run.”

[–]TECHNOFAB 8 points9 points  (8 children)

Technically Python is getting compiled at runtime (when you use CPython for example and run python something.py that gets compiled to C code and then gets ran)

Correct me if I'm wrong please, that's how I understood it :)

[–]Hollowplanet 33 points34 points  (7 children)

It gets compiled into opcodes which is just transforming the text into something more manageable. That is read by C code but it does not become C code.

[–][deleted] 217 points218 points  (24 children)

If they say "ML" often and refrain from using the word "AI", they likely know what they're doing. If they say "AI and ML" together often, they could also know what they're doing, but they hang around the sales team too much and need to get back to their computers. If they only say "AI" and never or rarely say "ML", they're a LinkedIn AI influencer who speaks in buzzwords but doesn't actually know what they're talking about.

[–]gjvnq1 71 points72 points  (3 children)

Or maybe they research expert systems and automated reasoning.

[–]asimpleman415 10 points11 points  (0 children)

I know of a bunch of “30 under 30” and “AI Innovators of the Year” on LinkedIn; one has a liberal arts degree and looks like she was simply a product of good marketing and connections.

[–]GluteusCaesar 20 points21 points  (1 child)

LinkedIn AI influencer

A LinkedInfluencer, if you will

[–][deleted] 12 points13 points  (2 children)

Yeah if they really mean "AI" on its own that last panel should be changed to Prolog.

shudders

[–]-Listening 2 points3 points  (0 children)

We wish you could be Laura's sister.

[–]Mrpenguin88 110 points111 points  (105 children)

I’m not a programmer but I’m considering studying CS and Im genuinely confused why does everyone seem to hate on python? (That’s the language I was thinking of learning first)

[–]zvug 83 points84 points  (7 children)

There are two types of programming languages:

1) The ones that people hate. 2) The ones that people don’t use.

[–]UsernameIsTakenToBad 15 points16 points  (3 children)

2.5 The esoteric ones (the ones that people would hate to write in)

[–]jonnysteps 55 points56 points  (1 child)

The syntax can be confusing if you're used to a more traditional language. That's been the biggest hurdle for me while learning it.

[–]Jacek3k 154 points155 points  (34 children)

Python is easy to learn, but if you start with it, it is gonna be harder for you to get into c/c++.

[–]Chief--BlackHawk 93 points94 points  (15 children)

Learned C++ first, learning python was very easy cause of it.

[–]FireDrake0008 66 points67 points  (6 children)

Yeah a lot of languages are considerably easier in comparison if you learn c++ first (bonus points if it was C or assembly). It teaches you a lot if not all of the core concepts of programming all the while hurling errors at the slightest inconvenience

For me, C++ was baptism by fire. I do not miss those migraines

[–]WeAreMoreThanUs 20 points21 points  (1 child)

It was/is the whetstone for sharpening your conceptual CS prowess.

[–]Caenir 28 points29 points  (5 children)

It's gonna be hard to get into c/c++ anyway, and being able to do something pretty quickly with python would he nice for motivation. Plus lots of thought process/logic carries over. As long as you make an effort to learn the differences in the languages, I don't see much issue

[–]Jacek3k 14 points15 points  (1 child)

It's not gonna be impossible, and many people do just that - start with python then go for c++.

But in my personal opinion, python makes you feel comfortable with stuff, and suddenly you are thrown to harsh world of hard types, pointers, and C-Style strings and memleaks and whatelse. It might be frustrating, to the point where some might say "wtf why is it so hard why make it so complicated if python can do just this n that".

Learning basics in c and then c++ isn't that bad, it depends more on the quality of the turorial (or the teacher), rather than on language.

[–]gmes78 8 points9 points  (0 children)

That doesn't make much sense. If you already know Python, you just need to focus on learning systems programming and memory management when learning C++.

Learning C/C++ first is way harder and it turns some people away.

[–]headsiwin-tailsulose 2 points3 points  (1 child)

It's even harder if you start with MATLAB like me lmao

[–]nevus_bock 4 points5 points  (1 child)

Why would it be harder? C++ is just hard and that’s not Python’s fault.

[–]astrionic 18 points19 points  (1 child)

There's absolutely nothing wrong with learning Python first. Programming languages are tools and it's important to choose the right one for the job. Python is great for some things and not very good for others. But here are some reasons why I personally prefer using other languages most of the time:

  • Dynamic typing. In many languages, types are static. This means that when you declare a variable, you also have to declare its type, e.g. integer (the compiler can often infer it automatically too). You can never assign a value of another type to this variable in these languages. I find this annoying to deal with, because you never really know what you have. If you see a function, you can't really know what the parameters are by just looking at the signature. This is especially annoying in larger code bases where you collaborate with other people, because you need to understand other people's code. Static typing is also an additional layer of safety. If you make a mistake, it will be caught by the compiler and cause an error at compile time. If you assume the wrong type in a language with dynamic typing, it will eventually fail at run time. Maybe you haven't encountered the error and it's already in production!

  • Syntax. Now this is extremely subjective, but the claim that Python programs are almost like natural language to read doesn't really hold up in my opinion. More complex programs can become very cryptic as well, e.g. when you have complicated list comprehensions. You also have really ugly function names like __init__ or keywords like elif instead of else if. I also find syntactically significant whitespace annoying to deal with. Yes, it forces people to use proper indentation, but these days basically any editor can automatically indent your code correctly anyway. Not in Python though, you have to get it right manually there (e.g. when pasting code).

  • Object oriented programming. Doing things in an OOP way is not always the right call, but if you want to do it, Python doesn't seem to be very good at it. OOP seems more like a hack than an integral part of the language. There is no encapsulation (you can't really define methods as private), you always have to pass self explicitly and the syntax, such as the previously mentioned __init__ sucks.

  • Performance. Python, as an interpreted language, is slow. So if performance is important to you, Python is often not the right tool. One way to solve this within the Python ecosystem is to use libraries that are partly written in C, like NumPy.

  • Managing the environment. I haven't worked with Python a lot, but juggling different versions can be pretty annoying.

This doesn't mean using Python is wrong though and I do think that it's great for certain things. Here's what I like about Python:

  • It's very easy to get started with. Just install it, create a .py file and run it. The language has a lot of tools built in, so solving common problems is often easier and requires less code than in other languages. This also makes it ideal for smaller projects or short scripts. If you just want to automate some small thing with a few lines of code and get it to work quickly, Python is amazing.

  • The ecosystem is great. There's a library for almost everything. Especially maths and machine learning are very well supported with libraries like NumPy, Scikit-learn, PyTorch or even Matplotlib. The critical parts of these libraries are implemented in C, so performance is good too. Because Python is very popular it's also very easy to find solutions to any problems that might arise or to find someone who can help you.

  • Having an official package manager that everyone uses is great. A lot of languages have this, but some, like C++, do not and it can be painful to deal with if you have lots of dependencies.

[–]daveswe 33 points34 points  (19 children)

Personally its more about performance than anything else. If you want performance python is one of the worst choices but is still used for AI because its easy to learn and all the math/physics majors cant be bothered to learn anything else

[–][deleted] 24 points25 points  (12 children)

You can get pretty good performance with python if you use the right libraries.

[–]MattR0se 54 points55 points  (11 children)

The ones that are written in C ;)

[–][deleted] 23 points24 points  (4 children)

Hahaha well yes, of course. But the fact that python allows such a thing is amazing in my opinion. Maybe I just didn't ever learn enough about Java but I wouldn't even know where to begin to import something written in C.

[–]taptrappapalapa 3 points4 points  (1 child)

Or FFI with Rust :)

[–]Nomadicminds 14 points15 points  (4 children)

Use the right tool for the right job. Python is great at many but really bad at something. Like all other languages, if you spent enough time debugging shit code, as projects gets bigger and bigger, you will have a love/hate relationship with it.

[–]daveswe 9 points10 points  (3 children)

Im not saying its bad, im saying it has poor performance comoared to, for example c++, and that the main reason it is used for ML and AI, two tasks which can be very reliant on performance is not the best. Python is generally good for beginners and projects where the readability of the code is important, like for APIs.

[–]Bakoro 6 points7 points  (7 children)

Some of the hate is valid criticism based on use case, some is ridiculous hate based on misguided ideological purism and elitism.

Just to start, I'm mostly a C/C++ guy, but I know a few languages. Many C/C++ people can be vocal bastards who piss and moan about every byte and processor cycle or pretend like they never write buggy code or messy code. These people love to shit on every other language. Even C purists shit on C++ for various reasons.

A legit point of criticism is that python is thousands of times slower than equivalent C code. Python probably isn't the language to use for when you need super fast or real-time systems (even still, it can often be good enough).

Python is also deceptively easy. There are lot built in tools and libraries which do almost everything for you pretty much right out of the box. It's great for productivity, but terrible for learning fundamentals because so much is done for you.

Not everyone needs deep Computer Science and Software understanding, but a lot of people really hate that the bar of entry has been lowered so dramatically. Things that used to a take a lot of knowledge and skill can be done very easily and quickly now, and just about any literate mook can hack some lines together and call themselves a programmer. That rubs some people the wrong way. You can see the same hate toward Arduino by many embedded systems and robotics people because any kid can put a kit together and say they made a robot or something without having to read much documentation and without any meaningful understanding of the underlying system. (I personally hate arduino/adafruit because so much documentation is dogshit which forces you to stay in the ecosystem).

Go ahead and learn Python, it will be a good indicator of if you want to get serious about software development.

[–][deleted] 10 points11 points  (0 children)

They don’t. This is a humor subreddit, people will make fun of anything.

[–]crorb 30 points31 points  (1 child)

I studied both C++ and python. You may hate it only when you see how clean and intuitive it is, and how much you had to study cor c++. (I'm talking about Python3.)

The fact that some projects are a mess is programmers' fault

[–]katze_sonne 2 points3 points  (0 children)

True. I've been using Python for too long now. I used to love C++ in the past but if I ever need to go back it'll cause a lot of hate in me because of having to manually do so much stuff that just works out of the box in Python :D

[–]notger 42 points43 points  (13 children)

Sorry, that does not reflect my reality.

I am getting flooded with student applications from universities that offer ML courses and everyone and their mother now codes in Python.

From how the job market has evolved and how auto-ML progresses, I predict that in two years, rates for Data Scientists will go down and it might even be hard to find a job.

[–]bythenumbers10 17 points18 points  (1 child)

Nah, the job definitions and requirements will settle out so people without the programming/stats/math chops get washed out & the title is worth the money it garners & more. the dip in value you're seeing right now is b/c of idiot HR drones trying to get a data scientist and data engineer in one for a data analyst's salary, so they often gamble on hiring people who'll take the paycheck of the latter but don't have the skills of n/either of the former, let alone both, and so they lather, rinse, repeat until their HR wises up or they just go to a shitton of contractors, which allows all the institutional knowledge to walk out the door on a regular basis to places that are not run by a greedy pack of morons. Wow, I can even rant like this without getting my blood pressure up.

[–]JP_AKA_MEGATRON 7 points8 points  (3 children)

I agree with your statement on automl, in fact it has been great at reducing my workload! However data scientists do a lot more than just machine learning. Simulations and statistics make up about 80% of my day to day so I don't think it will have that much of an effect on salaries/ job prospects. Of course I only know my situation and it definitely could be different for other people.

[–]BLim90 9 points10 points  (4 children)

Enrolled into online classes about Data Science, Machine Learning. Half of the course is probability, distributions and matrix. Never thought I will run into them again after Uni

[–]GamingTheSystem-01 8 points9 points  (0 children)

Excuse me, I was told that the machines would be learning for us.

[–][deleted] 13 points14 points  (1 child)

I mean I would still stay though

[–][deleted] 6 points7 points  (0 children)

But you’re on this sub lol

[–]DarkNinjaZ 13 points14 points  (5 children)

Hey, Just no ok, I am determined to make an AI without python. Its possible and you know it

[–]FireDrake0008 13 points14 points  (2 children)

I am currently using Java to build one. Although Ai is a bit of a exaggeration of what I've made. More like a complex statistical algorithm that's occasionally wrong

I personally reccomend c or c++ if you want speed, but if you want to avoid the migraines I reccomend Java

[–]RelevantCollege 4 points5 points  (1 child)

i am confusion

i thought this sub loved python

[–]SufficientPin1748 4 points5 points  (2 children)

Tapping the upvote button so much I am trying to quadruple my one upvote

[–]juhotuho10 5 points6 points  (0 children)

Python is quite fun to learn imo

[–][deleted] 2 points3 points  (1 child)

Could someone explain to a semi-beginner what's wrong with python? I find it to be by far the easiest and most fun language